/* ── styles.css ── */
:root {
  --ink: #17221f;
  --green: #17372f;
  --green-2: #214c40;
  --paper: #f5f1e9;
  --paper-2: #ebe6dd;
  --white: #fffdf8;
  --blue-gray: #87958f;
  --gold: #d3ad62;
  --line: rgba(23, 34, 31, 0.2);
  --line-light: rgba(255, 253, 248, 0.22);
  --serif: "Songti SC", "STSong", "Noto Serif SC", Georgia, serif;
  --sans: "Microsoft YaHei", "PingFang SC", "Noto Sans CJK SC", sans-serif;
  --wrap: min(1180px, calc(100vw - 48px));
}

* { box-sizing: border-box; }
[hidden] { display: none !important; }
html { scroll-behavior: smooth; }
body { margin: 0; color: var(--ink); background: var(--paper); font-family: var(--sans); font-size: 16px; line-height: 1.75; -webkit-font-smoothing: antialiased; }
body::selection { background: var(--gold); color: var(--ink); }
a { color: inherit; text-decoration: none; }
button, input, select, textarea { font: inherit; }
img { max-width: 100%; display: block; }
.wrap { width: var(--wrap); margin-inline: auto; }
.skip-link { position: fixed; left: 1rem; top: -5rem; z-index: 1000; background: var(--white); color: var(--ink); padding: .7rem 1rem; }
.skip-link:focus { top: 1rem; }

.site-header { position: sticky; top: 0; z-index: 50; background: rgba(245, 241, 233, .96); border-bottom: 1px solid var(--line); backdrop-filter: blur(12px); }
.header-inner { min-height: 80px; display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 2rem; }
.brand { display: inline-flex; align-items: center; gap: .7rem; }
.brand-mark { width: 38px; height: 38px; display: grid; place-items: center; background: var(--green); color: var(--white); font-family: var(--serif); font-size: 1.25rem; }
.brand-copy { display: grid; line-height: 1.15; }
.brand-copy b { letter-spacing: .08em; }
.brand-copy small { margin-top: .25rem; font-size: .62rem; text-transform: uppercase; letter-spacing: .16em; color: #5a6762; }
.site-nav { display: flex; justify-content: center; align-items: center; gap: clamp(.7rem, 1.35vw, 1.5rem); }
.site-nav a { position: relative; padding: .3rem 0; font-size: .88rem; color: #3e4a46; }
.site-nav a::after { content: ""; position: absolute; left: 0; right: 100%; bottom: 0; height: 1px; background: var(--green); transition: right .2s ease; }
.site-nav a:hover::after, .site-nav a[aria-current="page"]::after { right: 0; }
.header-cta { padding: .65rem 1rem; background: var(--green); color: var(--white); font-size: .88rem; }
.menu-toggle { display: none; border: 0; background: transparent; color: var(--ink); cursor: pointer; }
.mobile-cta { display: none; }

.breadcrumbs { display: flex; flex-wrap: wrap; align-items: baseline; gap: .55rem; padding-top: 1.25rem; font-size: .78rem; color: #65706c; }
.breadcrumbs > * { white-space: nowrap; }
/* 末项是页面名，长短不定。窄屏下让它单行省略，不要把“首页”“案例”挤成竖排单字。 */
.breadcrumbs > [aria-current="page"] { flex: 0 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; }
.breadcrumbs a:hover { color: var(--green); }

.section { padding: clamp(5rem, 8vw, 8.5rem) 0; }
.section-dark { color: var(--white); background: var(--green); }
.section-stone { background: var(--paper-2); }
.eyebrow { margin: 0 0 1.1rem; font-size: .72rem; line-height: 1.4; letter-spacing: .18em; font-weight: 700; color: var(--green-2); }
.eyebrow.light { color: #c9d5cf; }
h1, h2, h3, p { margin-top: 0; }
h1, h2 { font-family: var(--serif); font-weight: 500; letter-spacing: -.035em; }
h1 { margin-bottom: 1.8rem; font-size: clamp(2.9rem, 6.4vw, 6rem); line-height: 1.06; }
h1 em { color: #e3c98f; font-style: normal; }
h2 { margin-bottom: 1.4rem; font-size: clamp(2.15rem, 4.2vw, 4.3rem); line-height: 1.12; }
h3 { margin-bottom: .75rem; font-size: 1.25rem; line-height: 1.35; }
.hero { min-height: calc(100vh - 80px); display: grid; align-items: stretch; padding: 0; overflow: hidden; }
.hero-grid { display: grid; grid-template-columns: minmax(0, 1.3fr) minmax(300px, .7fr); gap: clamp(3rem, 7vw, 8rem); align-items: center; padding-block: clamp(5rem, 9vw, 9rem); }
.hero-copy { max-width: 820px; }
.hero-lead { max-width: 710px; margin-bottom: 2.1rem; color: #d9e1dc; font-size: clamp(1.05rem, 1.4vw, 1.25rem); }
.button-row { display: flex; flex-wrap: wrap; gap: .85rem; }
.button { min-height: 48px; display: inline-flex; align-items: center; justify-content: center; gap: .7rem; padding: .75rem 1.1rem; border: 1px solid currentColor; font-weight: 700; }
.button-light { background: var(--white); color: var(--green); border-color: var(--white); }
.button-line { color: var(--white); border-color: var(--line-light); }
.button:hover { transform: translateY(-1px); }
.hero-system { align-self: stretch; display: flex; flex-direction: column; justify-content: center; border-left: 1px solid var(--line-light); padding-left: clamp(1.4rem, 3vw, 3rem); }
.hero-system-title { font-family: var(--serif); font-size: 1.35rem; }
.hero-system ol { position: relative; margin: 1rem 0 0; padding: 0; list-style: none; }
.hero-system ol::before { content: ""; position: absolute; left: 19px; top: 1.3rem; bottom: 1.3rem; width: 1px; background: var(--line-light); }
.hero-system li { position: relative; display: grid; grid-template-columns: 42px 1fr; align-items: center; min-height: 58px; }
.hero-system b { z-index: 1; width: 39px; height: 39px; display: grid; place-items: center; border: 1px solid #769087; background: var(--green); font-size: .7rem; letter-spacing: .08em; }
.hero-system span { padding-left: 1rem; letter-spacing: .14em; }

[data-reveal] { opacity: 1; }
.js [data-reveal] { opacity: 0; transform: translateY(18px); transition: opacity .65s ease, transform .65s ease; }
.js [data-reveal][data-visible="true"] { opacity: 1; transform: translateY(0); }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } .js [data-reveal] { opacity: 1; transform: none; transition: none; } }

.split-heading { display: grid; grid-template-columns: .9fr 1.1fr; gap: clamp(3rem, 9vw, 10rem); align-items: start; }
.prose { max-width: 690px; }
.prose p { color: #46534f; }
.prose.large { font-size: clamp(1.1rem, 1.6vw, 1.38rem); }
.text-link { display: inline-flex; gap: .5rem; align-items: center; margin-top: .8rem; padding-bottom: .2rem; border-bottom: 1px solid currentColor; color: var(--green); font-weight: 700; }
.section-heading { max-width: 720px; margin-bottom: 3.5rem; }
.section-heading > p:last-child { color: #5a6762; }
.section-heading.row { max-width: none; display: flex; justify-content: space-between; gap: 2rem; align-items: end; }
.editorial-list { border-top: 1px solid var(--line); }
.editorial-list article { display: grid; grid-template-columns: 70px minmax(200px, .7fr) 1fr; gap: 2rem; align-items: baseline; padding: 2rem 0; border-bottom: 1px solid var(--line); }
.editorial-list article > span { font-family: var(--serif); color: var(--blue-gray); }
.editorial-list article p { margin-bottom: 0; color: #5a6762; }

.resource-grid { display: grid; grid-template-columns: .8fr 1fr .8fr; gap: clamp(2.5rem, 6vw, 6rem); align-items: center; }
.resource-orbit { min-height: 380px; display: grid; grid-template-columns: repeat(2, 1fr); border: 1px solid var(--line); }
.resource-orbit > * { min-height: 94px; display: grid; place-items: center; border-bottom: 1px solid var(--line); border-right: 1px solid var(--line); }
.resource-orbit > *:nth-child(even) { border-right: 0; }
.resource-orbit > *:nth-last-child(-n+2) { border-bottom: 0; }
.resource-orbit strong { grid-column: 1 / -1; min-height: 98px; border-right: 0; background: var(--green); color: var(--white); font-family: var(--serif); font-size: 1.45rem; }

.intro-line { max-width: 720px; margin-bottom: 3rem; color: #5d6965; }
.destination-wordmark { display: grid; grid-template-columns: 1fr 1fr 1.4fr; border-block: 1px solid var(--line); }
.destination-wordmark span { min-height: 170px; display: flex; align-items: end; padding: 1.5rem; border-right: 1px solid var(--line); font-family: var(--serif); font-size: clamp(1.8rem, 3.5vw, 3.8rem); }
.destination-wordmark span:last-child { border-right: 0; }

.method-grid { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(3rem, 8vw, 9rem); }
.method-grid ol { margin: 0; padding: 0; list-style: none; border-top: 1px solid var(--line-light); }
.method-grid li { display: grid; grid-template-columns: 52px 1fr; gap: 1.2rem; padding: 1.55rem 0; border-bottom: 1px solid var(--line-light); }
.method-grid li > span { color: #a8bbb3; font-size: .75rem; }
.method-grid li p { margin: 0; color: #c9d5cf; }
.about-strip { background: var(--white); }
.cta-band { color: var(--white); background: #20342f; }
.cta-grid { display: grid; grid-template-columns: 1.25fr .75fr; gap: 5rem; align-items: end; }
.cta-grid h2 { margin: 0; }
.cta-grid p { color: #ced9d4; }

.page-hero { padding: clamp(5rem, 9vw, 9rem) 0 clamp(4rem, 7vw, 7rem); border-bottom: 1px solid var(--line); }
.page-hero-dark { color: var(--white); background: var(--green); border-bottom-color: var(--line-light); }
.page-hero-grid { display: grid; grid-template-columns: 1.25fr .75fr; gap: clamp(3rem, 8vw, 9rem); align-items: end; }
.page-hero h1 { margin: 0; }
.page-intro { margin: 0 0 .55rem; color: #55635e; font-size: clamp(1.05rem, 1.55vw, 1.3rem); }
.page-hero-dark .page-intro { color: #d4ded9; }
.entity-grid { display: grid; grid-template-columns: .7fr 1.3fr; gap: clamp(3rem, 8vw, 9rem); }
.fact-ledger { margin: 0; border-top: 1px solid var(--line); }
.fact-ledger div { display: grid; grid-template-columns: 150px 1fr; gap: 2rem; padding: 1.45rem 0; border-bottom: 1px solid var(--line); }
.fact-ledger dt { color: #66736e; font-size: .86rem; }
.fact-ledger dd { margin: 0; font-weight: 700; }
.audience-grid { display: grid; grid-template-columns: repeat(4, 1fr); border: 1px solid var(--line); }
.audience-grid > div { min-height: 260px; padding: 1.5rem; border-right: 1px solid var(--line); }
.audience-grid > div:last-child { border-right: 0; }
.audience-grid span, .stage-grid article > span { color: var(--blue-gray); font-family: var(--serif); }
.audience-grid h3 { margin-top: 5rem; }
.audience-grid p { color: #5b6863; }
.principles-list { border-top: 1px solid var(--line-light); }
.principles-list p { display: grid; grid-template-columns: 48px 1fr; gap: 1rem; margin: 0; padding: 1.35rem 0; border-bottom: 1px solid var(--line-light); font-size: 1.1rem; }
.principles-list span { color: #9aafa6; font-size: .75rem; }
.principles-list.dark-text { border-color: var(--line); }
.principles-list.dark-text p { border-color: var(--line); }
.fact-block { padding: clamp(2rem, 5vw, 4.5rem); border: 1px solid var(--line); background: var(--white); }
.fact-block h2 { margin-bottom: 2.5rem; }
.fact-block > div { display: grid; grid-template-columns: repeat(3, 1fr); border-top: 1px solid var(--line); }
.fact-block > div p { margin: 0; padding: 1.2rem 1.2rem 0 0; }
.fact-block b { display: block; margin-bottom: .35rem; color: #63706b; font-size: .75rem; letter-spacing: .1em; }

.stage-grid { display: grid; grid-template-columns: repeat(4, 1fr); border-block: 1px solid var(--line); }
.stage-grid article { min-height: 250px; padding: 1.5rem; border-right: 1px solid var(--line); }
.stage-grid article:last-child { border-right: 0; }
.stage-grid h3 { margin-top: 4.5rem; }
.stage-grid p { color: #5b6863; }
.stage-grid.three { grid-template-columns: repeat(3, 1fr); }
.services-grid { display: grid; grid-template-columns: .7fr 1.3fr; gap: clamp(3rem, 8vw, 9rem); align-items: start; }
.sticky-heading { position: sticky; top: 120px; }
.sticky-heading > p:last-child { color: #58655f; }
.capability-list { border-top: 1px solid var(--line); }
.capability-list article { display: grid; grid-template-columns: 54px 1fr; gap: 1.3rem; padding: 1.55rem 0; border-bottom: 1px solid var(--line); }
.capability-list b { color: var(--blue-gray); font-size: .75rem; }
.capability-list p { margin: 0; color: #596660; }
.complexity-grid { display: grid; grid-template-columns: .8fr 1.2fr; gap: clamp(3rem, 8vw, 9rem); align-items: center; }
.formula { display: grid; grid-template-columns: 1fr auto 1fr auto 1fr; gap: .65rem; align-items: center; }
.formula span { min-height: 96px; display: grid; place-items: center; border: 1px solid var(--line); text-align: center; }
.formula i { color: var(--blue-gray); font-style: normal; }
.dark-columns { display: grid; grid-template-columns: repeat(3, 1fr); border-block: 1px solid var(--line-light); }
.dark-columns article { min-height: 220px; padding: 1.5rem; border-right: 1px solid var(--line-light); }
.dark-columns article:last-child { border-right: 0; }
.dark-columns p { color: #c6d2cc; }
.cta-light { background: var(--white); }
.cta-light .cta-grid p { color: #5b6863; }
.button-dark { color: var(--white); background: var(--green); border-color: var(--green); }
.button-outline-dark { color: var(--green); background: transparent; border-color: var(--green); }

.destination-rows { border-top: 1px solid var(--line); }
.destination-rows article { display: grid; grid-template-columns: .7fr 1.5fr auto; gap: 2rem; align-items: center; padding: 2.2rem 0; border-bottom: 1px solid var(--line); }
.destination-rows article > div { display: flex; align-items: baseline; gap: 1rem; }
.destination-rows article span { color: var(--blue-gray); font-size: .75rem; }
.destination-rows h3 { margin: 0; font-family: var(--serif); font-size: clamp(1.8rem, 3vw, 3rem); font-weight: 500; }
.destination-rows p { margin: 0; color: #56635e; }
.destination-rows a { padding-bottom: .15rem; border-bottom: 1px solid currentColor; font-weight: 700; }
.numbered-questions { margin: 0; padding: 0; list-style: none; border-top: 1px solid var(--line); }
.numbered-questions li { display: grid; grid-template-columns: 50px 1fr; gap: 1rem; padding: 1.2rem 0; border-bottom: 1px solid var(--line); }
.numbered-questions span { color: var(--blue-gray); font-size: .75rem; }
.network-mark { display: grid; grid-template-columns: repeat(3, 1fr); border: 1px solid var(--line); }
.network-mark span { min-height: 115px; display: grid; place-items: center; border-right: 1px solid var(--line); }
.network-mark strong { grid-column: 1 / -1; min-height: 90px; display: grid; place-items: center; color: var(--white); background: var(--green); }

.project-rows { border-top: 1px solid var(--line); }
.project-rows article { display: grid; grid-template-columns: 160px 1fr auto; gap: 3rem; align-items: start; padding: 2.3rem 0; border-bottom: 1px solid var(--line); }
.project-rows header span { display: block; margin-bottom: .35rem; font-family: var(--serif); font-size: 2.5rem; color: var(--green); }
.project-rows header p, .project-rows article > div p { margin: 0; color: #5b6863; }
.project-rows article > a { align-self: center; padding-bottom: .15rem; border-bottom: 1px solid currentColor; }

.category-line { display: grid; grid-template-columns: 60px .7fr 1fr; gap: 2rem; align-items: baseline; padding: 1.45rem 0; border-top: 1px solid var(--line); }
.category-line:last-child { border-bottom: 1px solid var(--line); }
.category-line span { color: var(--blue-gray); font-size: .75rem; }
.category-line p { margin: 0; color: #596660; }
.guide-grid { display: grid; grid-template-columns: repeat(3, 1fr); border: 1px solid var(--line); }
.guide-grid a { min-height: 350px; display: flex; flex-direction: column; padding: 1.6rem; border-right: 1px solid var(--line); }
.guide-grid a:last-child { border-right: 0; }
.guide-grid span { color: var(--blue-gray); font-size: .72rem; letter-spacing: .14em; }
.guide-grid h3 { margin-top: 5rem; font-family: var(--serif); font-size: 1.65rem; font-weight: 500; }
.guide-grid p { color: #5b6863; }
.guide-grid b { margin-top: auto; color: var(--green); }
.graph-line { display: flex; flex-wrap: wrap; gap: .8rem; align-items: center; margin-bottom: 2rem; font-family: var(--serif); font-size: clamp(1.25rem, 2vw, 1.8rem); }
.graph-line i { color: var(--gold); font-style: normal; }
.light-prose { color: #c9d5cf; }

.contact-grid { display: grid; grid-template-columns: .65fr 1.35fr; gap: clamp(3rem, 8vw, 9rem); align-items: start; }
.contact-guide { position: sticky; top: 120px; }
.contact-guide > p, .contact-guide li { color: #5c6964; }
.contact-guide ul { margin: 1.8rem 0 0; padding-left: 1.2rem; }
.project-form { display: grid; gap: 1.25rem; padding: clamp(1.4rem, 4vw, 3rem); border: 1px solid var(--line); background: var(--white); }
.project-form fieldset { margin: 0; padding: 0; border: 0; }
.project-form legend, .project-form label > span { display: block; margin-bottom: .45rem; color: #4d5a55; font-size: .84rem; font-weight: 700; }
.project-form label > span b { color: #9b472f; }
.choice-row { display: grid; grid-template-columns: 1fr 1fr; gap: .7rem; }
.choice-row label { position: relative; }
.choice-row input { position: absolute; opacity: 0; pointer-events: none; }
.choice-row span { display: grid; place-items: center; min-height: 48px; margin: 0 !important; border: 1px solid var(--line); cursor: pointer; }
.choice-row input:checked + span { color: var(--white); background: var(--green); border-color: var(--green); }
.field-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
.project-form input, .project-form select, .project-form textarea { width: 100%; min-height: 48px; padding: .75rem .85rem; color: var(--ink); background: var(--paper); border: 1px solid transparent; border-bottom-color: #aab3af; border-radius: 0; }
.project-form textarea { resize: vertical; }
.project-form input:focus, .project-form select:focus, .project-form textarea:focus { outline: 2px solid var(--green); outline-offset: 2px; }
.form-submit { justify-self: start; margin-top: .5rem; cursor: pointer; }
.form-error { margin: 0; color: #9b472f; }
.summary-panel { display: grid; grid-template-columns: .7fr 1.3fr; gap: 3rem; padding: clamp(2rem, 5vw, 4rem); border: 1px solid var(--line); background: var(--white); }
.summary-panel pre { margin: 0; padding: 1.5rem; overflow: auto; white-space: pre-wrap; background: var(--paper-2); font-family: var(--sans); line-height: 1.8; }
.summary-panel .button-row, .summary-panel .copy-status { grid-column: 2; }
.copy-status { margin: 0; color: var(--green); }
.not-found { min-height: 70vh; display: grid; align-items: center; padding: 6rem 0; }
.not-found p { max-width: 580px; }

.site-footer { padding: 5rem 0 1.5rem; color: var(--white); background: #101a17; }
.footer-grid { display: grid; grid-template-columns: 1.2fr .6fr 1fr; gap: 4rem; padding-bottom: 3.5rem; }
.footer-grid h2 { font-size: clamp(2rem, 3vw, 3.25rem); }
.footer-nav { display: grid; align-content: start; gap: .6rem; }
.footer-nav a, .footer-entity { color: #b9c7c1; }
.footer-nav a:hover { color: var(--white); }
.footer-entity p { margin-bottom: .45rem; }
.footer-bottom { display: flex; justify-content: space-between; gap: 1rem; padding-top: 1.2rem; border-top: 1px solid rgba(255,255,255,.12); color: #7f918a; font-size: .78rem; }

@media (max-width: 1040px) {
  .header-inner { grid-template-columns: auto auto 1fr; }
  .menu-toggle { display: inline-flex; grid-column: 2; align-items: center; gap: .6rem; }
  .menu-toggle i { width: 18px; height: 10px; border-block: 1px solid currentColor; }
  .site-nav { position: absolute; inset: 80px 0 auto; display: none; padding: 1.25rem 24px 1.6rem; background: var(--paper); border-bottom: 1px solid var(--line); }
  .site-nav[data-open="true"] { display: grid; }
  .site-nav a { padding: .65rem 0; font-size: 1rem; border-bottom: 1px solid var(--line); }
  .header-cta { justify-self: end; }
  .resource-grid { grid-template-columns: 1fr 1fr; }
  .resource-grid .prose { grid-column: 1 / -1; }
  .audience-grid { grid-template-columns: 1fr 1fr; }
  .audience-grid > div:nth-child(2) { border-right: 0; }
  .audience-grid > div:nth-child(-n+2) { border-bottom: 1px solid var(--line); }
  .stage-grid { grid-template-columns: 1fr 1fr; }
  .stage-grid article:nth-child(2) { border-right: 0; }
  .stage-grid article:nth-child(-n+2) { border-bottom: 1px solid var(--line); }
  .formula { grid-template-columns: 1fr auto 1fr; }
}

@media (max-width: 760px) {
  :root { --wrap: min(100% - 32px, 680px); }
  body { padding-bottom: 58px; }
  .header-inner { min-height: 68px; grid-template-columns: 1fr auto; gap: 1rem; }
  .brand-mark { width: 34px; height: 34px; }
  .menu-toggle { grid-column: 2; }
  .header-cta { display: none; }
  .site-nav { inset: 68px 0 auto; }
  .mobile-cta { position: fixed; left: 0; right: 0; bottom: 0; z-index: 60; display: grid; place-items: center; min-height: 58px; background: var(--gold); color: #122019; font-weight: 800; }
  .hero { min-height: auto; }
  .hero-grid, .split-heading, .method-grid, .cta-grid, .footer-grid { grid-template-columns: 1fr; }
  .page-hero-grid, .entity-grid, .services-grid, .complexity-grid, .contact-grid, .summary-panel { grid-template-columns: 1fr; }
  .sticky-heading, .contact-guide { position: static; }
  .hero-grid { gap: 4rem; padding-block: 5rem; }
  .hero-system { border-left: 0; border-top: 1px solid var(--line-light); padding: 2rem 0 0; }
  .section { padding: 4.5rem 0; }
  .section-heading.row { display: block; }
  .editorial-list article { grid-template-columns: 42px 1fr; gap: 1rem; }
  .editorial-list article p { grid-column: 2; }
  .resource-grid { grid-template-columns: 1fr; }
  .resource-grid .prose { grid-column: auto; }
  .resource-orbit { min-height: 320px; }
  .destination-wordmark { grid-template-columns: 1fr; }
  .destination-wordmark span { min-height: 116px; border-right: 0; border-bottom: 1px solid var(--line); }
  .destination-wordmark span:last-child { border-bottom: 0; }
  .footer-bottom { display: grid; }
  .fact-ledger div { grid-template-columns: 1fr; gap: .25rem; }
  .fact-block > div { grid-template-columns: 1fr; }
  .stage-grid, .stage-grid.three, .dark-columns, .guide-grid { grid-template-columns: 1fr; }
  .stage-grid article, .dark-columns article, .guide-grid a { min-height: auto; border-right: 0; border-bottom: 1px solid var(--line); }
  .stage-grid h3, .guide-grid h3 { margin-top: 2rem; }
  .dark-columns article { border-color: var(--line-light); }
  .destination-rows article, .project-rows article, .category-line { grid-template-columns: 1fr; gap: 1rem; }
  .destination-rows article > a, .project-rows article > a { justify-self: start; }
  .project-rows header { display: flex; align-items: baseline; gap: 1rem; }
  .project-rows header span { margin: 0; }
  .summary-panel .button-row, .summary-panel .copy-status { grid-column: 1; }
}

@media (max-width: 430px) {
  h1 { font-size: 2.65rem; }
  .brand-copy small { display: none; }
  .button-row, .button { width: 100%; }
  .hero-system li { min-height: 52px; }
  .resource-orbit { grid-template-columns: 1fr; }
  .resource-orbit > * { min-height: 64px; border-right: 0; }
  .resource-orbit > *:nth-last-child(-n+2) { border-bottom: 1px solid var(--line); }
  .resource-orbit > *:last-child { border-bottom: 0; }
  .audience-grid, .stage-grid { grid-template-columns: 1fr; }
  .audience-grid > div, .stage-grid article { border-right: 0; border-bottom: 1px solid var(--line); }
  .audience-grid > div:last-child, .stage-grid article:last-child { border-bottom: 0; }
  .formula { grid-template-columns: 1fr; }
  .formula i { text-align: center; }
  .field-grid, .choice-row { grid-template-columns: 1fr; }
}

/* Controller-authorized homepage visual prototype. Other pages retain the V2 shell. */
.prototype-hero { position: relative; display: flex; align-items: center; min-height: min(820px, calc(100svh - 80px)); overflow: hidden; color: var(--white); background: #14241e; }
.prototype-hero-image { position: absolute; inset: 0; width: 100%; height: 100%; max-width: none; object-fit: cover; object-position: center 56%; animation: hero-push-in 12s ease-out both; }
.prototype-hero-scrim { position: absolute; inset: 0; background: linear-gradient(90deg, rgba(8,24,19,.86) 0%, rgba(9,27,21,.69) 35%, rgba(14,28,22,.25) 70%, rgba(13,27,21,.1) 100%); }
.prototype-hero-inner { position: relative; z-index: 1; padding-block: clamp(7rem, 12vw, 10rem) 6rem; }
.hero-overline { margin-bottom: clamp(1.5rem, 4vw, 3.2rem); color: #e1e6da; font-size: .79rem; font-weight: 700; letter-spacing: .18em; animation: hero-rise .85s ease-out .08s both; }
.hero-overline span { padding-inline: .65rem; color: #d7bd84; }
.prototype-hero h1 { max-width: 930px; margin-bottom: 1.7rem; font-size: clamp(3.25rem, 6.5vw, 7rem); line-height: 1.11; text-wrap: balance; animation: hero-rise .95s ease-out .18s both; }
.prototype-hero h1 em { color: #f5e5bd; }
.prototype-hero-lead { max-width: 720px; margin-bottom: 2.25rem; color: #f0f2e8; font-size: clamp(1.02rem, 1.3vw, 1.18rem); line-height: 1.9; animation: hero-rise .95s ease-out .32s both; }
.prototype-hero .button-row { animation: hero-rise .95s ease-out .45s both; }
.prototype-hero .button-line { background: rgba(16,35,27,.2); }
.hero-image-note { margin: 2.5rem 0 0; color: rgba(255,255,255,.7); font-size: .7rem; letter-spacing: .05em; }
.hero-scroll { position: absolute; z-index: 2; right: max(24px, calc((100vw - 1180px) / 2)); bottom: 2rem; color: #f3f3e9; font-size: .72rem; letter-spacing: .12em; writing-mode: vertical-rl; }
.hero-scroll span { margin-top: .65rem; }
@keyframes hero-push-in { from { transform: scale(1.045); } to { transform: scale(1); } }
@keyframes hero-rise { from { opacity: 0; transform: translateY(24px); } to { opacity: 1; transform: translateY(0); } }

.prototype-worlds { padding: clamp(5.5rem, 8vw, 9rem) 0 0; background: var(--paper); }
.prototype-section-head { display: grid; grid-template-columns: 1.25fr .75fr; gap: clamp(2rem, 7vw, 8rem); align-items: end; margin-bottom: clamp(2.5rem, 4vw, 4rem); }
.prototype-section-head h2 { margin-bottom: 0; }
.prototype-section-head > p { max-width: 410px; margin: 0 0 .35rem; color: #56635d; font-size: 1.06rem; }
.world-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); }
.world { position: relative; min-height: clamp(470px, 45vw, 660px); overflow: hidden; color: var(--white); isolation: isolate; }
.world-visual { position: absolute; inset: 0; background-repeat: no-repeat; background-size: cover; background-position: center; transition: transform 1s ease; }
.world-study .world-visual { background-image: url('/assets/business-study-v1.webp'); background-position: 52% center; }
.world-custom .world-visual { background-image: url('/assets/business-custom-v1.webp'); background-position: 52% center; }
.world-group .world-visual { background-image: url('/assets/business-group-v1.webp'); background-position: 55% center; }
.world:hover .world-visual { transform: scale(1.045); }
.world-shade { position: absolute; inset: 0; background: linear-gradient(180deg, transparent 30%, rgba(4,18,14,.8) 100%); }
.world-content { position: absolute; inset: auto clamp(1.4rem, 2.8vw, 3.5rem) 2.5rem; z-index: 1; }
.world-index { display: block; margin-bottom: 1.5rem; color: #e8e3d5; font-size: .68rem; letter-spacing: .17em; }
.world h3 { max-width: 8em; margin-bottom: 1rem; font-family: var(--serif); font-size: clamp(2.2rem, 3.1vw, 4rem); font-weight: 500; }
.world p { max-width: 22em; margin-bottom: 1.5rem; color: #eff0e8; font-size: .97rem; }
.world a { display: inline-flex; align-items: center; gap: .55rem; padding-bottom: .3rem; border-bottom: 1px solid rgba(255,255,255,.7); font-weight: 700; }
.world-image-note { margin: 0; padding: .75rem max(24px, calc((100vw - 1180px) / 2)); color: #52645b; background: var(--paper); font-size: .72rem; }

.prototype-journey { padding: clamp(6rem, 10vw, 10rem) 0; color: var(--white); background: #17372f; }
.journey-layout { display: grid; grid-template-columns: minmax(0, .82fr) minmax(0, 1.18fr); gap: clamp(4rem, 11vw, 11rem); align-items: start; }
.journey-lead { position: sticky; top: 120px; }
.journey-lead h2 { margin-bottom: 1.8rem; }
.journey-lead > p:not(.eyebrow) { max-width: 440px; color: #cfddd3; font-size: 1.05rem; }
.journey-link { display: inline-flex; gap: .7rem; margin-top: 1.3rem; padding-bottom: .25rem; border-bottom: 1px solid #bdcfc3; color: var(--white); font-weight: 700; }
.journey-steps { margin: 0; padding: 0; list-style: none; border-top: 1px solid rgba(255,255,255,.26); }
.journey-steps li { display: grid; grid-template-columns: 6rem 1fr; gap: 1.2rem; min-height: 170px; padding: 2.1rem 0; border-bottom: 1px solid rgba(255,255,255,.26); transition: padding-left .3s ease, background-color .3s ease; }
.journey-steps li.is-in-view { padding-left: .7rem; background: rgba(255,255,255,.035); }
.journey-steps li > span { color: #adc1b6; font-family: var(--serif); font-size: 1.2rem; }
.journey-steps h3 { margin: -.25rem 0 .55rem; font-family: var(--serif); font-size: clamp(2rem, 2.8vw, 3.4rem); font-weight: 500; }
.journey-steps p { max-width: 28em; margin: 0; color: #d0ded5; }

.prototype-network { padding: clamp(5.5rem, 9vw, 9rem) 0 6rem; background: #eeeae1; }
.network-head { margin-bottom: 2.5rem; }
.network-filter { display: none; gap: .6rem; overflow-x: auto; padding-bottom: 1.35rem; border-bottom: 1px solid var(--line); scrollbar-width: thin; }
.js .network-filter-desktop { display: flex; }
.network-filter button { flex: none; min-height: 44px; padding: .55rem 1.1rem; border: 1px solid #aab6ae; border-radius: 999px; color: var(--green); background: transparent; font-size: .84rem; cursor: pointer; }
.network-filter button[aria-pressed="true"] { border-color: var(--green); color: var(--white); background: var(--green); }
.network-selector { display: flex; gap: .6rem; overflow-x: auto; padding-block: 1.4rem; scrollbar-width: thin; }
.network-selector a { flex: none; padding: .3rem .75rem; color: #55635e; white-space: nowrap; font-size: .85rem; }
.network-selector a.is-active { color: var(--green); border-bottom: 2px solid var(--green); font-weight: 800; }
.network-layout { display: grid; grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr); min-height: 650px; border: 1px solid var(--line); background: var(--white); }
.geo-stage { position: relative; min-height: 650px; overflow: hidden; color: #ebf0e9; background: #193c33; }
.geo-stage-grid { position: absolute; inset: 0; opacity: .28; background-image: linear-gradient(rgba(220,233,221,.19) 1px, transparent 1px), linear-gradient(90deg, rgba(220,233,221,.19) 1px, transparent 1px); background-size: 58px 58px; }
.geo-stage::after { content: ""; position: absolute; inset: 14% 10%; border: 1px solid rgba(234,241,227,.25); border-radius: 50%; transform: rotate(-25deg) scaleX(1.2); pointer-events: none; }
.geo-stage-label { position: absolute; z-index: 2; left: 2rem; top: 2rem; display: grid; gap: .5rem; pointer-events: none; }
.geo-stage-label span { color: #bbd0bf; font-size: .68rem; letter-spacing: .2em; }
.geo-stage-label strong { max-width: 12em; font-family: var(--serif); font-size: clamp(1.35rem, 1.8vw, 2rem); font-weight: 500; }
.geo-points { position: absolute; inset: 3.5rem 1.5rem 2rem; }
.network-node { position: absolute; z-index: 3; left: var(--node-x); top: var(--node-y); display: grid; place-items: center; width: 33px; height: 33px; border: 1px solid #f4e9cb; border-radius: 50%; color: #18392e; background: #eee1bf; font-size: .72rem; font-weight: 900; transform: translate(-50%, -50%); box-shadow: 0 0 0 5px rgba(238,225,191,.16); transition: transform .2s ease, opacity .2s ease, background-color .2s ease; }
.network-node:hover, .network-node.is-active { z-index: 4; color: var(--white); background: #ad7b39; transform: translate(-50%, -50%) scale(1.28); }
.network-node.is-dimmed { opacity: .24; }
.geo-attribution { position: absolute; z-index: 2; left: 1.5rem; bottom: .6rem; margin: 0; color: #c1d0c4; font-size: .62rem; }
.destination-stage { min-width: 0; padding: clamp(2rem, 3.3vw, 3.8rem); scroll-margin-top: 80px; }
.destination-editorial { position: relative; height: 180px; margin: 0 0 1.7rem; overflow: hidden; color: var(--white); background: #263d30; }
.destination-editorial img { width: 100%; height: 100%; object-fit: cover; object-position: center 56%; }
.destination-editorial::after { content: ""; position: absolute; inset: 45% 0 0; background: linear-gradient(transparent, rgba(7,25,18,.72)); pointer-events: none; }
.destination-editorial figcaption { position: absolute; z-index: 1; left: 1rem; bottom: .7rem; font-size: .68rem; letter-spacing: .05em; }
.destination-panel + .destination-panel { margin-top: 4rem; padding-top: 3rem; border-top: 1px solid var(--line); }
.js .destination-panel { display: none; }
.js .destination-panel.is-active { display: block; }
.destination-panel-head { display: flex; justify-content: space-between; gap: 1rem; color: #65746a; font-size: .68rem; letter-spacing: .12em; }
.destination-panel h3 { margin: 1rem 0 .6rem; font-family: var(--serif); font-size: clamp(2.9rem, 4vw, 5rem); font-weight: 500; }
.destination-panel-intro { max-width: 38em; color: #5c6860; font-size: .92rem; }
.network-products { margin-top: 2rem; border-top: 1px solid var(--line); }
.network-product { padding: 1.05rem 0 1.1rem; border-bottom: 1px solid var(--line); }
.network-product-meta { display: flex; justify-content: space-between; gap: 1rem; color: #718077; font-size: .68rem; letter-spacing: .08em; }
.network-product h4 { margin: .55rem 0 .25rem; font-family: var(--serif); font-size: 1.34rem; font-weight: 500; }
.network-product p { margin: 0; color: #5b6860; font-size: .84rem; line-height: 1.55; }
.network-more { margin-top: 1.5rem; }
.network-more summary { color: var(--green); font-weight: 800; cursor: pointer; }
.network-more .network-products { margin-top: 1rem; }
.network-inquiry { display: inline-block; margin-top: 2rem; padding-bottom: .3rem; border-bottom: 1px solid var(--green); color: var(--green); font-weight: 800; }
.network-caveat { padding-top: 1.6rem; }
.network-caveat p { max-width: 63em; margin: 0; color: #657169; font-size: .74rem; }
.js .network-selector [data-region-link].is-dimmed { display: none; }
.js .network-product.is-filtered-out { display: none; }

:focus-visible { outline: 3px solid #bd8c38; outline-offset: 3px; }
@media (max-width: 1040px) {
  .prototype-section-head { grid-template-columns: 1fr 1fr; }
  .network-layout { grid-template-columns: .85fr 1.15fr; }
  .world { min-height: 540px; }
}
@media (max-width: 760px) {
  .prototype-hero { min-height: 690px; }
  .prototype-hero-image { object-position: 66% center; }
  .prototype-hero-scrim { background: linear-gradient(90deg, rgba(8,24,19,.86), rgba(8,24,19,.48)), linear-gradient(0deg, rgba(8,24,19,.68), transparent 72%); }
  .prototype-hero-inner { padding-block: 6rem 5rem; }
  .hero-scroll { display: none; }
  .prototype-section-head, .journey-layout, .network-layout { grid-template-columns: 1fr; }
  .prototype-section-head { gap: 1.25rem; }
  .world-grid { grid-template-columns: 1fr; }
  .world { min-height: 510px; }
  .world-content { inset-inline: 1.5rem; }
  .journey-lead { position: static; }
  .journey-layout { gap: 3rem; }
  .journey-steps li { grid-template-columns: 3.5rem 1fr; min-height: 132px; padding-block: 1.6rem; }
  .geo-stage { min-height: 245px; }
  .geo-stage-label { left: 1rem; top: 1rem; }
  .geo-stage-label strong { display: none; }
  .geo-points { inset: 1.5rem .65rem 1.5rem; }
  .network-node { width: 20px; height: 20px; font-size: .55rem; box-shadow: 0 0 0 3px rgba(238,225,191,.16); }
  .geo-attribution { left: .65rem; bottom: .2rem; font-size: .52rem; }
  .destination-stage { padding: 1.5rem; }
  .destination-editorial { height: 210px; margin-bottom: 1.5rem; }
  .js .network-filter-desktop { display: none; }
  .js .network-filter-mobile { display: flex; margin-bottom: 1.5rem; }
}
@media (max-width: 430px) {
  .prototype-hero { min-height: 650px; }
  .prototype-hero h1 { font-size: clamp(2.55rem, 10.5vw, 3.4rem); }
  .prototype-hero-lead { font-size: .93rem; line-height: 1.75; }
  .hero-overline { font-size: .68rem; }
  .hero-image-note { margin-top: 1.5rem; }
  .prototype-section-head h2 { font-size: 2.55rem; }
  .world { min-height: 475px; }
  .world h3 { font-size: 2.7rem; }
  .journey-steps h3 { font-size: 2.3rem; }
  .destination-panel h3 { font-size: 3rem; }
}
@media (prefers-reduced-motion: reduce) {
  .prototype-hero-image, .hero-overline, .prototype-hero h1, .prototype-hero-lead, .prototype-hero .button-row { animation: none; }
  .world-visual, .journey-steps li, .network-node { transition: none; }
  .world:hover .world-visual { transform: none; }
}

/* V1.1 controlled prototype refinements. Visual asset slots remain explicit until reviewed. */
.site-header { transition: background-color .3s ease, box-shadow .3s ease; }
body[data-route="/"] .site-header { background: rgba(245, 241, 233, .9); }
.site-header.is-scrolled, body[data-route="/"] .site-header.is-scrolled { background: rgba(250, 248, 242, .98); box-shadow: 0 8px 28px rgba(16, 33, 26, .08); }
.brand-mark { display: block; width: 47px; height: 40px; object-fit: contain; background: transparent; }
.brand-copy b { font-size: .95rem; }
body[data-route="/"] { padding-bottom: 0; }

.prototype-journey { position: relative; color: var(--ink); background: #e7e3d9; }
.prototype-journey::before { content: ""; position: absolute; inset: 0 52% 0 0; background: linear-gradient(135deg, #f5f1e8 0%, #e8e5d9 100%); pointer-events: none; }
.journey-layout { position: relative; gap: clamp(3rem, 7vw, 8rem); }
.journey-lead { top: 130px; }
.journey-lead > p:not(.eyebrow) { color: #58655d; }
.journey-link { color: var(--green); border-color: var(--green); }
.journey-chapter { display: grid; gap: .15rem; margin-top: 3rem; padding: 1.25rem 0; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.journey-chapter span { color: #69766c; font-size: .68rem; letter-spacing: .2em; }
.journey-chapter strong { font-family: var(--serif); font-size: clamp(2rem, 3.4vw, 4.2rem); font-weight: 500; line-height: 1.15; }
.journey-chapter i { width: 18%; height: 2px; margin-top: .9rem; background: #8d6334; transition: width .65s ease; }
.prototype-journey[data-active-step="3"] .journey-chapter i { width: 48%; }
.prototype-journey[data-active-step="5"] .journey-chapter i { width: 82%; background: #52796a; }
.journey-steps { border-color: var(--line); }
.journey-steps li { min-height: 190px; padding: 2.35rem 1.4rem; border-color: var(--line); border-left: 2px solid transparent; transition: border-color .6s ease, background-color .6s ease, transform .6s ease; }
.journey-steps li.is-in-view { padding-left: 1.4rem; background: transparent; }
.journey-steps li.is-current { border-left-color: #547a6b; background: rgba(255, 253, 248, .78); transform: translateX(5px); }
.journey-steps li > span { color: #62766b; }
.journey-steps p { color: #536259; }

.network-layout { grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr); }
.geo-stage { min-height: 690px; color: var(--ink); background: #e7eadf; }
.geo-stage::after, .geo-stage-grid { display: none; }
.geo-stage-label { left: 2rem; top: 1.6rem; }
.geo-stage-label span { color: #4f6658; }
.geo-stage-label strong { color: #223a2e; }
.geo-map-area { position: relative; width: calc(100% - 2rem); max-width: 720px; margin: 8.5rem auto 4rem; }
.china-map-frame { position: relative; width: 100%; aspect-ratio: 720 / 460; }
.china-map { width: 100%; height: 100%; display: block; }
.map-province { fill: #d1d9cc; stroke: #f4f2e8; stroke-width: .75; vector-effect: non-scaling-stroke; transition: fill .3s ease; }
.map-province.is-available { fill: #aec6b4; }
.map-province.is-active { fill: #719783; }
.china-islands { position: absolute; right: 1%; bottom: -3%; width: 17%; height: 26%; border: 1px solid #9eaca1; background: rgba(250, 249, 243, .62); }
.china-islands svg { display: block; width: 100%; height: 78%; }
.china-islands path { fill: #aebfb0; stroke: #a0b09e; stroke-width: .7; }
.china-islands span { display: block; text-align: center; font-size: .48rem; color: #64776a; }
.geo-points { position: absolute; inset: 0; }
.network-node { width: 32px; height: 32px; padding: 0; border: 1px solid #335747; color: #244538; background: #faf7ed; font-size: .7rem; box-shadow: 0 0 0 4px rgba(250, 247, 237, .7); cursor: pointer; }
.network-node:hover, .network-node.is-active { color: #fff; background: #285943; box-shadow: 0 0 0 4px rgba(248, 247, 236, .8); transform: translate(-50%, -50%) scale(1.13); }
.network-node:disabled { cursor: not-allowed; opacity: .18; box-shadow: none; }
.geo-attribution { left: 1.2rem; right: 1.2rem; bottom: .6rem; color: #586b5d; font-size: .62rem; }
.destination-stage { position: relative; overflow: hidden; }
.destination-editorial { height: 265px; margin-bottom: 1.4rem; color: #fff; }
.destination-visual-pending { display: flex; flex-direction: column; justify-content: flex-start; height: 100%; padding: 1.3rem; background: linear-gradient(125deg, #466d5c, #91a98e 50%, #d1c3a5); }
.destination-visual-pending span { font-size: .64rem; letter-spacing: .2em; }
.destination-visual-pending strong { align-self: center; margin: auto 0; font-family: var(--serif); font-size: clamp(3rem, 4.5vw, 5rem); font-weight: 500; line-height: 1; }
.destination-visual-pending small { font-size: .7rem; }
.destination-visual-snow .destination-visual-pending { background: linear-gradient(120deg, #53646c, #a2b5b7, #dbe2db); }
.destination-visual-forest .destination-visual-pending { background: linear-gradient(120deg, #263d35, #708b6d, #bdc0a8); }
.destination-visual-jiangxi .destination-visual-pending { background: linear-gradient(120deg, #29453e, #718f79, #a9aa86); }
.destination-visual-yunnan .destination-visual-pending { background: linear-gradient(120deg, #516567, #99aaa4, #d1b794); }
.destination-visual-guizhou .destination-visual-pending { background: linear-gradient(120deg, #334c40, #778e6c, #bdc4a5); }
.destination-visual-gansu .destination-visual-pending { background: linear-gradient(120deg, #795e45, #b29265, #d8c29b); }
.destination-visual-guangxi .destination-visual-pending { background: linear-gradient(120deg, #3e5e58, #7d9d86, #bac2a0); }
.destination-visual-shanxi .destination-visual-pending { background: linear-gradient(120deg, #6d5e4d, #a39177, #c8bd9f); }
.destination-visual-shandong .destination-visual-pending { background: linear-gradient(120deg, #456577, #8faab1, #c6cdbf); }
.destination-visual-zhejiang .destination-visual-pending { background: linear-gradient(120deg, #4d6961, #93aaa0, #c0c4ad); }
.destination-visual-hainan .destination-visual-pending { background: linear-gradient(120deg, #386d70, #8ab8b3, #d4c79d); }
.destination-visual-shaanxi .destination-visual-pending { background: linear-gradient(120deg, #6f604e, #a48b70, #c8b693); }
.destination-visual-beijing .destination-visual-pending { background: linear-gradient(120deg, #605b54, #9e8d7a, #d0bba1); }
.destination-visual-ghost { position: absolute; z-index: 8; margin: 0; pointer-events: none; opacity: 1; transition: opacity 1s ease; }
.destination-visual-ghost.is-leaving { opacity: 0; }
.destination-panel + .destination-panel { margin-top: 3.5rem; }
.destination-panel h3 { margin: .5rem 0; }
.destination-business-tabs { display: none; gap: .5rem; overflow-x: auto; margin: 1.5rem 0 0; }
.js .destination-business-tabs { display: flex; }
.destination-business-tabs button { flex: none; min-height: 44px; padding: .45rem .8rem; border: 1px solid #bdc6bc; color: var(--green); background: transparent; font-size: .75rem; cursor: pointer; }
.destination-business-tabs button[aria-pressed="true"] { border-color: var(--green); color: #fff; background: var(--green); }
.network-product-menu { display: none; gap: .7rem; overflow-x: auto; margin-top: 1.25rem; border-bottom: 1px solid var(--line); scrollbar-width: thin; }
.js .network-product-menu { display: flex; }
.network-product-tab { flex: 0 0 auto; display: grid; gap: .18rem; min-width: 160px; max-width: 230px; min-height: 72px; padding: .65rem .45rem; border: 0; border-bottom: 2px solid transparent; color: #607068; background: transparent; text-align: left; cursor: pointer; }
.network-product-tab span { font-size: .88rem; font-weight: 700; white-space: normal; }
.network-product-tab small { font-size: .68rem; }
.network-product-tab[aria-selected="true"] { border-bottom-color: #a57038; color: #203f31; }
.network-product-previews { margin-top: 1.3rem; }
.product-preview { padding: 1.2rem 0; border-top: 1px solid var(--line); }
.js .product-preview { border-top: 0; }
.product-preview h4 { margin: .6rem 0 .35rem; font-family: var(--serif); font-size: clamp(1.4rem, 2vw, 2rem); font-weight: 500; }
.product-preview p { max-width: 34em; margin: 0; color: #58675d; font-size: .9rem; }
.preview-status { display: inline-block; margin-top: 1rem; color: #788478; font-size: .7rem; }

.about-v11-hero { padding-block: clamp(3rem, 5vw, 6rem); }
.about-v11-grid { display: grid; grid-template-columns: .8fr 1.2fr; gap: clamp(2rem, 6vw, 6rem); align-items: center; }
.about-v11-grid h1 { margin-bottom: 1.3rem; }
.about-v11-grid .page-intro { max-width: 28em; }
.about-v11-grid figure { margin: 0; }
.about-v11-grid figure img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; object-position: center; }
.about-v11-grid figure figcaption, .services-visual-spread figcaption { margin-top: .6rem; color: #68756c; font-size: .7rem; }
.subpage-prototype-note { margin: 2rem 0 0; color: #69776d; font-size: .7rem; letter-spacing: .03em; }
.about-logo-sheet { margin: 2.5rem 0 0; padding: 1.1rem; border: 1px solid var(--line); background: #fff; }
.about-logo-sheet img { width: 100%; height: auto; }
.about-logo-sheet figcaption { margin-top: .7rem; color: #6f7b72; font-size: .68rem; }
.services-v11-hero { position: relative; overflow: hidden; isolation: isolate; }
.services-v11-hero::before { content: ""; position: absolute; z-index: -1; inset: 0; background: linear-gradient(90deg, rgba(10, 29, 24, .94), rgba(10, 29, 24, .78) 48%, rgba(10, 29, 24, .3)); }
.services-v11-image { position: absolute; z-index: -2; inset: 0; width: 100%; height: 100%; max-width: none; object-fit: cover; object-position: center 54%; }
.services-v11-hero .page-hero-grid { position: relative; }
.services-v11-hero .subpage-prototype-note { color: #dce8db; }
.services-visual-spread { display: grid; grid-template-columns: 1.08fr .92fr; align-items: center; min-height: 550px; background: #e4e5dc; }
.services-visual-spread figure { align-self: stretch; display: flex; flex-direction: column; margin: 0; padding-bottom: 1rem; }
.services-visual-spread figure img { flex: 1; width: 100%; min-height: 450px; object-fit: cover; object-position: center; }
.services-visual-spread figure figcaption { padding-inline: 1.5rem; }
.services-visual-spread > div { max-width: 570px; padding: clamp(2rem, 6vw, 7rem); }
.services-visual-spread > div p:not(.eyebrow) { color: #52645a; }

@media (max-width: 760px) {
  .brand-mark { width: 39px; height: 35px; }
  .network-layout { grid-template-columns: 1fr; }
  .about-v11-grid, .services-visual-spread { grid-template-columns: 1fr; }
  .about-v11-grid figure img { aspect-ratio: 4 / 3; }
  .services-v11-hero .page-hero-grid { grid-template-columns: 1fr; }
  .services-visual-spread figure img { min-height: 280px; max-height: 430px; }
  .prototype-journey::before { inset: 0; }
  .journey-lead { position: static; }
  .journey-chapter { display: none; }
  .journey-steps li { min-height: 145px; padding-inline: .7rem; }
  .journey-steps li.is-current { transform: none; }
  .geo-stage { min-height: 0; }
  .geo-stage-label { position: static; padding: 1.1rem 1.2rem 0; }
  .geo-map-area { width: calc(100% - 1.1rem); margin: .6rem auto 1.4rem; }
  .geo-points { display: none; }
  .geo-attribution { position: static; padding: 0 1rem 1rem; font-size: .58rem; }
  .destination-stage { padding: 1.3rem; }
  .destination-editorial { height: 230px; }
  .network-product-tab { min-width: 145px; }
}
@media (max-width: 430px) {
  .brand-copy b { font-size: .87rem; }
  .destination-editorial { height: 205px; }
  .destination-visual-pending strong { font-size: 3rem; }
  .destination-panel h3 { font-size: 2.8rem; }
}
@media (prefers-reduced-motion: reduce) {
  .site-header, .journey-steps li, .journey-chapter i, .map-province, .destination-visual-ghost { transition: none; }
  .journey-steps li.is-current { transform: none; }
}

/* ── v12.css ── */
/* V1.2 controlled editorial prototype. Kept separate from the inherited site foundation. */
:root { --v12-paper: #f1eee6; --v12-ink: #1d2925; --v12-fog: #dfe5db; --v12-line: rgba(27, 44, 36, .22); }
body { background: var(--v12-paper); }
.js .header-inner { grid-template-columns: 1fr auto auto; }
.js .menu-toggle { display: inline-flex; align-items: center; gap: .7rem; grid-column: 2; padding: .6rem .2rem; font-size: .76rem; letter-spacing: .14em; text-transform: uppercase; }
.menu-toggle i { display: block; width: 18px; height: 10px; border-block: 1px solid currentColor; }
.mega-links { display: contents; }
.mega-editorial { display: none; }
.js .site-nav { display: none; position: absolute; inset: 80px 0 auto; width: 100%; padding: 0 max(24px, calc((100vw - 1180px) / 2)); background: #f1eee6; border-bottom: 1px solid var(--v12-line); box-shadow: 0 25px 45px rgba(12, 30, 22, .14); }
.js .site-nav[data-open="true"] { display: grid; grid-template-columns: minmax(0, 1fr) minmax(320px, .8fr); gap: clamp(2rem, 6vw, 7rem); }
.js .mega-links { display: grid; align-content: center; padding: 2.4rem 0 3rem; }
.js .site-nav .mega-links a { display: flex; align-items: baseline; min-height: 55px; padding: .2rem 0; border-bottom: 1px solid var(--v12-line); font-family: var(--serif); font-size: clamp(1.35rem, 2.3vw, 2.3rem); font-weight: 500; color: var(--v12-ink); }
.js .site-nav .mega-links a::after { display: none; }
.js .site-nav .mega-links a:hover { padding-left: .35rem; color: #63816d; }
.js .mega-editorial { display: block; position: relative; min-height: 435px; margin: 1.5rem 0; overflow: hidden; color: #fff; background: #29483a; }
.mega-editorial img { width: 100%; height: 100%; object-fit: cover; position: absolute; inset: 0; }
.mega-editorial::after { content: ""; position: absolute; inset: 30% 0 0; background: linear-gradient(transparent, rgba(10, 26, 19, .85)); }
.mega-editorial > div { position: absolute; z-index: 1; inset: auto 2rem 1.7rem; display: grid; gap: .6rem; }
.mega-editorial span { font-size: .65rem; letter-spacing: .2em; }
.mega-editorial strong { font-family: var(--serif); font-size: clamp(1.9rem, 3vw, 3.3rem); line-height: 1.2; font-weight: 500; }
.mega-editorial a { justify-self: start; border-bottom: 1px solid currentColor; font-size: .84rem; }
.world-study .world-visual { background-image: url('/assets/business-study-v2.webp'); }
.world-custom .world-visual { background-image: url('/assets/business-custom-v2.webp'); }
.world-group .world-visual { background-image: url('/assets/business-group-v2.webp'); }
.world-actions { display: flex; flex-wrap: wrap; gap: .8rem 1.25rem; }
.world-actions a { font-size: .83rem; }
.prototype-worlds .world { min-height: clamp(520px, 49vw, 720px); }
.prototype-worlds .prototype-section-head { margin-bottom: 3.5rem; }

.delivery-cinema { background: #dfe5db; }
.delivery-opening { padding-block: clamp(5rem, 9vw, 10rem) clamp(3rem, 6vw, 6rem); }
.delivery-opening h2 { max-width: 900px; font-size: clamp(2.9rem, 6vw, 6rem); }
.delivery-opening h2 em { font-style: normal; color: #6f8979; }
.delivery-opening > p:last-child { max-width: 41em; color: #4d6055; font-size: clamp(1rem, 1.3vw, 1.2rem); }
.delivery-chapters { counter-reset: chapter; }
.delivery-chapter { position: relative; isolation: isolate; display: flex; align-items: center; min-height: min(84svh, 760px); overflow: hidden; border-top: 1px solid rgba(14, 39, 29, .19); background: #edf0e8; }
.delivery-chapter:nth-child(2) { background: #e6e6da; }
.delivery-chapter:nth-child(3) { background: #d6e0d5; }
.delivery-chapter:nth-child(4) { background: #d7d9cc; }
.delivery-chapter:nth-child(6) { background: #e7e8df; }
.delivery-chapter-inner { position: relative; display: grid; grid-template-columns: .6fr 1.4fr; align-items: center; gap: clamp(2rem, 7vw, 9rem); min-height: inherit; padding-block: 6rem; }
.delivery-chapter-index { align-self: start; color: #65816e; font-family: var(--serif); font-size: clamp(4.5rem, 11vw, 11rem); line-height: 1; letter-spacing: -.07em; }
.delivery-chapter-index span { display: block; margin-top: 1.5rem; font-family: var(--sans); font-size: .72rem; letter-spacing: .18em; }
.delivery-chapter-name { color: #577565; font-size: .73rem; font-weight: 700; letter-spacing: .3em; }
.delivery-chapter-copy h3 { margin: 1.2rem 0 1.4rem; font-family: var(--serif); font-size: clamp(2.8rem, 5.4vw, 6.4rem); font-weight: 500; letter-spacing: -.04em; line-height: 1.17; }
.delivery-chapter-copy p { max-width: 29em; margin: 0; color: #485a50; font-size: clamp(1rem, 1.4vw, 1.3rem); }
.delivery-chapter-5 { min-height: 100svh; color: #fff; background: #172c22; }
.delivery-field-image { position: absolute; z-index: 0; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center; }
.delivery-field-scrim { position: absolute; z-index: 1; inset: 0; background: linear-gradient(90deg, rgba(7,24,17,.92), rgba(7,24,17,.55) 62%, rgba(7,24,17,.18)); }
.delivery-chapter-5 .delivery-chapter-inner { z-index: 2; }
.delivery-chapter-5 .delivery-chapter-index, .delivery-chapter-5 .delivery-chapter-name, .delivery-chapter-5 .delivery-chapter-copy p { color: #e5eadd; }
.delivery-field-note { position: absolute; bottom: 1.5rem; right: 0; font-size: .7rem; color: #e9ece4; }
.delivery-outro { padding-block: 4rem 6rem; }
.delivery-outro a { display: inline-block; border-bottom: 1px solid; padding-bottom: .4rem; font-weight: 700; }
.js .delivery-chapter-copy { opacity: 1; transform: none; }

.atlas-explorer { padding-block: clamp(5.5rem, 9vw, 10rem) 5rem; background: var(--v12-paper); }
.atlas-heading { display: grid; grid-template-columns: .4fr 1fr; gap: 2rem; align-items: start; margin-bottom: 3.5rem; }
.atlas-heading h2 { font-size: clamp(3rem, 5.7vw, 6rem); }
.atlas-heading > div p { max-width: 40em; color: #59675e; }
.atlas-layout { display: grid; grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr); min-height: 760px; border-top: 1px solid var(--v12-line); border-bottom: 1px solid var(--v12-line); transition: grid-template-columns .7s ease; }
.atlas-layout.has-selection { grid-template-columns: minmax(0, .62fr) minmax(0, 1.38fr); }
.atlas-map-stage { min-width: 0; padding: 2rem 1.8rem 1rem 0; border-right: 1px solid var(--v12-line); background: #e8ebe1; }
.atlas-map-heading { display: flex; justify-content: space-between; gap: 2rem; align-items: start; }
.atlas-map-heading span { color: #667b6a; font-size: .63rem; letter-spacing: .18em; }
.atlas-map-heading strong { color: #254437; font-family: var(--serif); font-size: clamp(1.3rem, 1.7vw, 2rem); font-weight: 500; line-height: 1.35; }
.atlas-map-frame { margin: clamp(2rem, 4vw, 4rem) auto 2rem; }
.atlas-map-frame .china-map { overflow: visible; }
.atlas-map-frame .map-province { fill: #b9cabc; stroke: #ecf1e8; stroke-width: 1; transition: fill .25s ease; }
.atlas-province[data-status="AVAILABLE_FOR_INQUIRY"] .map-province { fill: #729a80; }
.atlas-province:hover .map-province, .atlas-province:focus .map-province, .atlas-province.is-active .map-province { fill: #244e3a; }
.atlas-province { cursor: pointer; }
.atlas-province:focus-visible { outline: none; }
.atlas-province:focus-visible .map-province { stroke: #d19639; stroke-width: 2.2; }
.map-boundary { fill: none; stroke: #617869; stroke-width: .7; pointer-events: none; }
.atlas-text-index { margin-top: 1.7rem; color: #315341; font-size: .82rem; }
.atlas-text-index summary { display: inline-block; cursor: pointer; border-bottom: 1px solid; }
.atlas-text-index > div { display: flex; flex-wrap: wrap; gap: .35rem .9rem; margin-top: 1rem; }
.atlas-text-index a { padding: .2rem 0; border-bottom: 1px solid #adbdad; }
.atlas-mobile-selector { display: none; }
.atlas-map-source { margin: 2.5rem 0 0; color: #748278; font-size: .68rem; }
.atlas-stage { min-width: 0; padding: clamp(2rem, 3vw, 3.3rem); background: #faf8f2; scroll-margin-top: 80px; }
.atlas-opening { display: grid; align-content: center; min-height: 645px; }
.atlas-opening > p:first-child { color: #75917c; font-size: .7rem; letter-spacing: .2em; }
.atlas-opening h3 { margin: 1.4rem 0 3rem; font-family: var(--serif); font-size: clamp(2.5rem, 4vw, 4.5rem); font-weight: 500; }
.atlas-opening span { color: #4e6d57; border-top: 1px solid var(--v12-line); padding-top: 1rem; font-weight: 700; }
.atlas-opening > p:last-child { margin: 1rem 0 0; color: #64746a; }
.js .atlas-layout.has-selection .atlas-opening { display: none; }
.js .atlas-province-panel { display: none; }
.js .atlas-province-panel.is-active { display: block; }
.js .atlas-province-panel.is-active { margin-top: 0; padding-top: 0; border-top: 0; }
.atlas-province-panel + .atlas-province-panel { margin-top: 5rem; padding-top: 5rem; border-top: 1px solid var(--v12-line); }
.atlas-destination-visual { position: relative; margin: 0 0 1.4rem; height: clamp(260px, 26vw, 430px); overflow: hidden; background: #8c9d87; }
.atlas-destination-visual img { width: 100%; height: 100%; object-fit: cover; }
.atlas-destination-visual figcaption { position: absolute; left: 1rem; bottom: .7rem; padding: .25rem .45rem; color: #fff; background: rgba(13, 27, 19, .65); font-size: .65rem; }
.atlas-no-visual { display: flex; align-items: end; height: 240px; padding: 1rem; background: #d2ded2; color: #506b57; font-size: .67rem; letter-spacing: .18em; }
.atlas-panel-meta { display: flex; justify-content: space-between; gap: 1rem; color: #718579; font-size: .67rem; letter-spacing: .13em; }
.atlas-province-panel h3 { margin: 1rem 0 .4rem; font-family: var(--serif); font-size: clamp(3.3rem, 5vw, 6rem); font-weight: 500; }
.atlas-panel-summary { max-width: 38em; color: #55675b; }
.atlas-line-switch { display: flex; flex-wrap: wrap; gap: .65rem; margin: 2rem 0 1rem; border-bottom: 1px solid var(--v12-line); }
.atlas-line-switch button { min-height: 44px; padding: .4rem .25rem .7rem; margin-right: .85rem; border: 0; border-bottom: 2px solid transparent; color: #697b6b; background: transparent; cursor: pointer; }
.atlas-line-switch button[aria-pressed="true"] { border-bottom-color: #294c38; color: #213b2d; font-weight: 700; }
.atlas-product-row { border-bottom: 1px solid var(--v12-line); }
.atlas-product-trigger { display: grid; grid-template-columns: 2rem minmax(0, 1fr) auto 1.5rem; gap: 1rem; align-items: center; width: 100%; min-height: 88px; padding: .8rem 0; border: 0; background: transparent; color: var(--v12-ink); text-align: left; cursor: pointer; }
.atlas-product-number { align-self: start; color: #839483; font-size: .68rem; }
.atlas-product-title { font-family: var(--serif); font-size: clamp(1.1rem, 1.6vw, 1.65rem); line-height: 1.45; }
.atlas-product-title small { display: block; margin-top: .25rem; color: #657569; font-family: var(--sans); font-size: .68rem; }
.atlas-product-duration { color: #768377; font-size: .7rem; }
.atlas-product-arrow { transition: transform .3s ease; }
.atlas-product-trigger[aria-expanded="true"] .atlas-product-arrow { transform: rotate(45deg); }
.atlas-product-detail { padding: .2rem 2rem 1.6rem 3rem; color: #596b5f; font-size: .9rem; }
.atlas-product-detail p { margin-bottom: .55rem; }
.atlas-product-caveat { color: #8c795c; font-size: .72rem; }
.atlas-product-actions { display: flex; flex-wrap: wrap; gap: .7rem 1.5rem; margin-top: 1.1rem; }
.atlas-product-actions a, .atlas-province-inquiry { color: #244e36; border-bottom: 1px solid; padding-bottom: .2rem; font-weight: 700; }
.atlas-no-offer { padding: 1rem 0; color: #67766a; border-top: 1px solid var(--v12-line); }
.atlas-province-inquiry { display: inline-block; margin-top: 2rem; }
.atlas-sheet-controls { display: none; }
.atlas-beyond { margin-top: 2.5rem; border-top: 1px solid var(--v12-line); border-bottom: 1px solid var(--v12-line); }
.atlas-beyond summary { display: flex; justify-content: space-between; gap: 1rem; padding: 1.6rem 0; cursor: pointer; font-family: var(--serif); font-size: clamp(1.45rem, 2.2vw, 2.4rem); }
.atlas-beyond details > div { display: flex; flex-wrap: wrap; gap: 1rem 2rem; padding-bottom: 2rem; }
.atlas-beyond details p { flex-basis: 100%; color: #657466; }
.atlas-beyond details a { border-bottom: 1px solid; padding-bottom: .25rem; color: #27523c; font-weight: 700; }

.contact-v12-hero { padding-block: 6rem 8rem; }
.contact-hero-grid { max-width: 1000px; }
.contact-hero-grid .page-intro { max-width: 35em; }
.contact-v12-entry { display: grid; grid-template-columns: 1fr 1fr; margin-top: -4rem; position: relative; z-index: 2; background: #faf8f2; box-shadow: 0 18px 45px rgba(20, 40, 29, .13); }
.contact-v12-entry a { position: relative; display: grid; align-content: start; gap: .55rem; min-height: 220px; padding: 2rem 2.4rem; border-right: 1px solid var(--v12-line); }
.contact-v12-entry a:last-child { border-right: 0; }
.contact-v12-entry a[aria-current="true"] { background: #e2e9df; }
.contact-v12-entry a span { color: #6b856f; font-size: .68rem; letter-spacing: .16em; }
.contact-v12-entry a strong { font-family: var(--serif); font-size: clamp(2rem, 3vw, 3.2rem); font-weight: 500; }
.contact-v12-entry a small { max-width: 29em; color: #607166; }
.contact-v12-entry a b { position: absolute; top: 1.5rem; right: 2rem; }
.contact-workspace { scroll-margin-top: 80px; }
.contact-v12-summary { background: #e5eae2; }
.contact-v12-summary .summary-panel { padding: 0; }
.contact-next-list { max-width: 900px; margin-top: 2rem; border-top: 1px solid var(--v12-line); }
.contact-next-list p { display: flex; gap: 2rem; padding: 1.1rem 0; margin: 0; border-bottom: 1px solid var(--v12-line); }
.contact-next-list span { color: #738976; }

.about-v11-hero, .services-v11-hero { min-height: 580px; }
.about-v11-grid figure img { aspect-ratio: 5 / 4; }
.audience-grid > div, .stage-grid article { background: transparent; }
.audience-grid h3, .stage-grid h3 { font-family: var(--serif); font-size: clamp(1.7rem, 2vw, 2.3rem); font-weight: 500; }
.capability-list article { min-height: 125px; }
.services-visual-spread img { max-height: 680px; }
html:not(.js) .site-nav { display: flex; position: static; width: auto; padding: 0; box-shadow: none; }
html:not(.js) .atlas-product-detail[hidden] { display: block !important; }
html:not(.js) .atlas-product-trigger { cursor: default; }

@media (max-width: 1040px) {
  .js .site-nav { inset: 80px 0 auto; }
  .atlas-layout, .atlas-layout.has-selection { grid-template-columns: .92fr 1.08fr; }
  .atlas-map-stage { padding-right: 1rem; }
}
@media (max-width: 760px) {
  html:not(.js) .header-inner { display: flex; flex-wrap: wrap; justify-content: space-between; gap: .2rem; padding-block: .5rem; }
  html:not(.js) .menu-toggle { display: none; }
  html:not(.js) .site-nav { order: 3; flex-basis: 100%; }
  html:not(.js) .mega-links { display: flex; flex-wrap: wrap; gap: .15rem 1rem; }
  html:not(.js) .site-nav a { padding: .25rem 0; border: 0; white-space: nowrap; font-size: .78rem; }
  .js .header-inner { grid-template-columns: 1fr auto; }
  .js .menu-toggle { grid-column: 2; }
  .js .site-nav { inset: 68px 0 auto; max-height: calc(100svh - 68px); overflow: auto; }
  .js .site-nav[data-open="true"] { grid-template-columns: 1fr; }
  .js .mega-editorial { display: none; }
  .js .mega-links { padding: 1rem 0 2rem; }
  .js .site-nav .mega-links a { min-height: 50px; font-size: 1.5rem; }
  .prototype-worlds .world { min-height: 540px; }
  .delivery-opening { padding-block: 5rem 3rem; }
  .delivery-chapter, .delivery-chapter-5 { min-height: 450px; }
  .delivery-chapter-inner { display: grid; grid-template-columns: 1fr; align-content: center; gap: 1rem; padding-block: 5rem; }
  .delivery-chapter-index { font-size: 5rem; }
  .delivery-chapter-index span { display: inline; margin-left: .8rem; }
  .delivery-chapter-copy h3 { font-size: clamp(2.7rem, 9vw, 4.4rem); }
  .delivery-chapter-5 { min-height: 80svh; }
  .delivery-field-scrim { background: linear-gradient(0deg, rgba(7,24,17,.94), rgba(7,24,17,.3)); }
  .delivery-field-note { left: 0; bottom: 1rem; }
  .atlas-heading { grid-template-columns: 1fr; gap: .4rem; }
  .atlas-layout, .atlas-layout.has-selection { display: block; min-height: 0; }
  .atlas-map-stage { padding: 1.2rem 1rem; border-right: 0; }
  .atlas-map-heading strong { font-size: 1.35rem; }
  .atlas-map-frame { max-width: 560px; margin: .2rem auto; }
  .atlas-mobile-selector { display: flex; gap: .35rem; overflow-x: auto; padding: .7rem 0; scrollbar-width: thin; }
  .atlas-mobile-selector a { flex: 0 0 auto; padding: .45rem .8rem; border-bottom: 1px solid #698474; color: #31533d; white-space: nowrap; font-size: .8rem; }
  .atlas-text-index { display: none; }
  .atlas-map-source { margin: .5rem 0 0; }
  .atlas-opening { min-height: 230px; }
  .atlas-opening h3 { margin: .5rem 0 1rem; font-size: 2.5rem; }
  .js .atlas-stage { position: fixed; z-index: 102; inset: auto 0 0; max-height: 85svh; overflow: auto; padding: 1rem 1.1rem 2rem; border-radius: 18px 18px 0 0; box-shadow: 0 -15px 45px rgba(12, 26, 19, .24); visibility: hidden; pointer-events: none; transform: translateY(110%); transition: transform .45s ease, visibility .45s ease; }
  .js .atlas-layout.is-sheet-open .atlas-stage { visibility: visible; pointer-events: auto; transform: translateY(0); }
  .js .atlas-layout.is-sheet-expanded .atlas-stage { max-height: 96svh; }
  .atlas-sheet-controls { display: flex; justify-content: space-between; gap: .5rem; margin-bottom: .8rem; }
  .atlas-sheet-controls button { min-height: 44px; padding: .4rem .6rem; border: 0; background: #edf1e8; color: #244630; }
  .atlas-sheet-backdrop:not([hidden]) { position: fixed; z-index: 101; inset: 0; background: rgba(11, 28, 20, .55); }
  .atlas-destination-visual { height: 220px; }
  .atlas-province-panel h3 { font-size: 3.2rem; }
  .atlas-product-trigger { grid-template-columns: 1.5rem minmax(0, 1fr) 1.5rem; }
  .atlas-product-duration { display: none; }
  .atlas-product-detail { padding-left: 2.5rem; }
  .contact-v12-entry { grid-template-columns: 1fr; margin-top: -2rem; }
  .contact-v12-entry a { min-height: 150px; padding: 1.3rem 1.5rem; border-right: 0; border-bottom: 1px solid var(--v12-line); }
  .about-v11-hero, .services-v11-hero { min-height: 0; }
}
@media (max-width: 430px) {
  .prototype-worlds .world { min-height: 500px; }
  .world-actions { display: grid; gap: .6rem; justify-items: start; }
  .atlas-heading h2 { font-size: 2.8rem; }
  .atlas-map-heading strong { display: none; }
  .atlas-destination-visual { height: 195px; }
  .contact-v12-hero { padding-block: 4.5rem 5rem; }
}
@media (prefers-reduced-motion: reduce) {
  .delivery-chapter-copy, .atlas-layout, .js .atlas-stage, .atlas-map-frame .map-province, .atlas-product-arrow { animation: none !important; transition: none !important; transform: none !important; opacity: 1 !important; }
  .js .atlas-stage { display: none; }
  .js .atlas-layout.is-sheet-open .atlas-stage { display: block; }
}

/* ── v121.css ── */
/* V1.2.1 final visual gate: editorial navigation, Brand Archive, Operating Manual. */
:root { --display-leading: 1.13; --text-measure: 36em; }
h1, h2, h3 { text-wrap: balance; overflow-wrap: anywhere; }
h1 { line-height: var(--display-leading); }
h2 { line-height: 1.19; }
.page-hero h1 { font-size: clamp(2.7rem, 5.8vw, 5.4rem); }
.section-heading h2 { max-inline-size: 17ch; }
.site-nav .mega-links a { text-wrap: nowrap; }

/* A navigation stage: numbered editorial ledger plus image/copy that follows focus and hover. */
body.menu-open { overflow: hidden; }
.js .site-nav { top: 80px; bottom: auto; max-height: calc(100svh - 80px); overflow-y: auto; }
.js .site-nav[data-open="true"] { grid-template-columns: minmax(0, 1.08fr) minmax(0, .92fr); gap: clamp(2rem, 5vw, 6rem); align-items: stretch; }
.js .mega-links { padding: clamp(1.5rem, 3vw, 3rem) 0; }
.js .site-nav .mega-links a { display: grid; grid-template-columns: 2.5rem minmax(0, 1fr) 1.5rem; gap: .5rem; align-items: baseline; min-height: clamp(58px, 6.2svh, 92px); padding: .35rem .4rem .35rem 0; font-size: clamp(1.4rem, 2.35vw, 2.8rem); transition: color .3s, opacity .3s, transform .3s; transform-origin: left center; }
.js .site-nav .mega-links:has(a:hover) a:not(:hover), .js .site-nav .mega-links:has(a:focus) a:not(:focus) { opacity: .43; }
.js .site-nav .mega-links a.is-active, .js .site-nav .mega-links a:hover, .js .site-nav .mega-links a:focus-visible { color: #315e45; transform: scale(1.25); }
.mega-index { color: #7a8d7d; font-family: var(--sans); font-size: .66rem; letter-spacing: .08em; }
.mega-item-arrow { font-family: var(--sans); font-size: .9rem; opacity: 0; }
.mega-links a.is-active .mega-item-arrow, .mega-links a:hover .mega-item-arrow, .mega-links a:focus-visible .mega-item-arrow { opacity: 1; }
.js .mega-editorial { min-height: min(68svh, 680px); margin: clamp(1rem, 2vw, 2rem) 0; }
.mega-editorial .mega-stage-images, .mega-stage-images img { position: absolute; inset: 0; width: 100%; height: 100%; }
.mega-editorial .mega-stage-images { display: block; }
.mega-stage-images img { object-fit: cover; opacity: 0; transform: scale(1.04); transition: opacity .45s ease, transform 1s ease; }
.mega-stage-images img.is-active { opacity: 1; transform: scale(1); }
.mega-editorial::after { pointer-events: none; }
.mega-editorial::after { z-index: 1; inset: 0; background: linear-gradient(180deg, rgba(6, 24, 15, .06) 4%, rgba(6, 24, 15, .78) 65%, rgba(6, 24, 15, .96)); }
.mega-editorial .mega-stage-content { position: absolute; z-index: 2; inset: auto clamp(1.2rem, 3vw, 3rem) clamp(1rem, 3vw, 3rem); display: grid; gap: .65rem; }
.mega-stage-content strong { max-width: 13ch; font-size: clamp(1.6rem, 2.9vw, 3rem); }
.mega-stage-links { display: flex; flex-wrap: wrap; gap: .55rem 1.5rem; }
.mega-stage-links a, .mega-stage-cta { width: fit-content; padding-bottom: .2rem; border-bottom: 1px solid currentColor; color: #fff; font-size: .84rem; }
.mega-stage-cta { margin-top: .4rem; }
.mega-stage-content small { color: #d9dfd9; font-size: .64rem; }
.mega-stage-links a::after, .mega-stage-cta::after { display: none; }

/* The About page is a brand archive, not a destination postcard. */
.brand-archive-hero { padding-block: 0; background: #f4f0e7; overflow: hidden; }
.brand-archive-hero .about-v11-grid { width: min(100%, 1440px); grid-template-columns: minmax(0, .42fr) minmax(0, .58fr); gap: 0; min-height: min(83svh, 760px); }
.brand-archive-copy { position: relative; z-index: 2; align-self: center; padding: clamp(3rem, 7vw, 7rem) clamp(1.5rem, 3vw, 3rem) clamp(3rem, 7vw, 7rem) max(24px, calc((100vw - 1180px) / 2)); }
.brand-archive-copy h1 { max-width: none; margin: 0 0 2rem; font-size: clamp(3.2rem, 5.2vw, 5.8rem); line-height: 1.08; letter-spacing: -.05em; }
.brand-archive-copy h1 span { display: block; white-space: nowrap; }
.brand-archive-copy .page-intro { max-width: 24em; font-size: clamp(1rem, 1.38vw, 1.24rem); }
.brand-archive-hero figure { position: relative; align-self: stretch; min-height: 620px; }
.brand-archive-hero figure img { width: 100%; height: 100%; aspect-ratio: auto; object-fit: cover; object-position: 55% center; }
.brand-archive-hero figure figcaption { position: absolute; right: 1.5rem; bottom: 1rem; margin: 0; padding: .25rem .5rem; color: #fff; background: rgba(13, 28, 21, .7); }
.audience-section { background: #ede9df; }
.audience-section .section-heading h2 { max-width: 16ch; }
.audience-editorial { display: grid; grid-template-columns: minmax(0, 1.24fr) minmax(0, .76fr); gap: clamp(2rem, 4vw, 5rem); align-items: stretch; border-top: 1px solid var(--v12-line); }
.audience-ledger { align-self: stretch; }
.audience-ledger button { display: grid; grid-template-columns: 2.5rem minmax(0, 1fr) 1.5rem; gap: 1rem; align-items: start; width: 100%; min-height: 118px; padding: 1.35rem 0; border: 0; border-bottom: 1px solid var(--v12-line); background: transparent; color: var(--v12-ink); text-align: left; cursor: pointer; transition: opacity .3s; }
.audience-ledger:has(button:hover) button:not(:hover), .audience-ledger:has(button:focus) button:not(:focus) { opacity: .46; }
.audience-ledger button > span:first-child { padding-top: .5rem; color: #748779; font-size: .68rem; }
.audience-ledger strong { display: inline-block; font-family: var(--serif); font-size: clamp(1.6rem, 2.5vw, 2.7rem); line-height: 1.2; font-weight: 500; transition: transform .3s; transform-origin: left center; }
.audience-ledger button.is-active strong, .audience-ledger button:hover strong, .audience-ledger button:focus-visible strong { transform: scale(1.15); color: #315842; }
.audience-ledger small { display: block; margin-top: .55rem; color: #617168; font-size: .86rem; }
.audience-ledger i { font-style: normal; opacity: .3; }
.audience-ledger button.is-active i { opacity: 1; }
.audience-image-stage { position: relative; min-height: 480px; margin: 1.6rem 0; overflow: hidden; background: #758474; }
.audience-image-stage img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: 0; transform: scale(1.035); transition: opacity .4s, transform .75s; }
.audience-image-stage img.is-active { opacity: 1; transform: scale(1); }
.audience-image-stage figcaption { position: absolute; z-index: 1; right: .6rem; bottom: .6rem; padding: .2rem .45rem; color: #fff; background: rgba(12, 28, 19, .68); font-size: .65rem; }

/* Services is an operating manual: rules, sequence, and expandable detail. */
.services-manual-hero { min-height: min(78svh, 740px); }
.services-manual-hero::before { background: linear-gradient(90deg, rgba(11, 29, 24, .96), rgba(11, 29, 24, .78) 52%, rgba(11, 29, 24, .18)); }
.services-manual-hero .page-hero-grid { min-height: 500px; align-items: end; }
.services-manual-hero h1 { max-width: none; font-size: clamp(3rem, 4.8vw, 4.8rem); }
.services-entry-ledger { display: block; border-block: 1px solid var(--v12-line); }
.services-entry-ledger article { display: grid; grid-template-columns: 4rem minmax(0, .9fr) minmax(0, 1.1fr); gap: 1rem; align-items: center; min-height: 100px; padding: 1rem .5rem; border: 0; border-bottom: 1px solid var(--v12-line); }
.services-entry-ledger article:last-child { border: 0; }
.services-entry-ledger h3 { margin: 0; }
.services-entry-ledger p { max-width: 33em; margin: 0; }
.service-capabilities { background: #e2e8dd; }
.service-capabilities .services-grid { grid-template-columns: minmax(0, .85fr) minmax(0, 1.15fr); }
.service-capabilities .sticky-heading h2 { max-width: none; font-size: clamp(2.6rem, 3.5vw, 3.9rem); }
.services-visual-spread h2 { font-size: clamp(2.3rem, 3.2vw, 3.3rem); }
.network-principle .resource-title h2 { font-size: clamp(2rem, 2.7vw, 2.9rem); }
.contact-guide h2 { font-size: clamp(2.4rem, 3.4vw, 3.6rem); }
.capability-spine { display: flex; flex-wrap: wrap; gap: .5rem; margin-top: 2.5rem; }
.capability-spine span { padding: .22rem .45rem; border: 1px solid #9eafa0; color: #47624e; font-size: .65rem; letter-spacing: .12em; }
.capability-ledger details { border-bottom: 1px solid var(--v12-line); }
.capability-ledger summary { display: grid; grid-template-columns: 2rem minmax(0, 1fr) 1.5rem; gap: 1rem; align-items: center; min-height: 104px; padding: 1.25rem 0; cursor: pointer; list-style: none; }
.capability-ledger summary::-webkit-details-marker { display: none; }
.capability-ledger summary span { font-family: var(--serif); font-size: clamp(1.55rem, 2.5vw, 2.5rem); line-height: 1.25; }
.capability-ledger summary i { font-style: normal; font-size: 1.5rem; transition: transform .3s; }
.capability-ledger details[open] summary i { transform: rotate(45deg); }
.capability-ledger details[open] summary span { color: #356044; }
.capability-ledger details p { max-width: 31em; margin: -.4rem 0 1.5rem 3rem; color: #4d6255; }

/* The atlas remains source-stable; visual emphasis follows user choice. */
.atlas-layout.has-selection { grid-template-columns: minmax(0, .32fr) minmax(0, .68fr); }
.atlas-map-stage { padding-left: clamp(.8rem, 1.5vw, 1.4rem); }
.atlas-product-row:hover .atlas-product-title, .atlas-product-row:focus-within .atlas-product-title { color: #286048; }
.atlas-province-panel:has(.atlas-product-row:hover) .atlas-destination-visual img, .atlas-province-panel:has(.atlas-product-row:focus-within) .atlas-destination-visual img { transform: scale(1.035); }
.atlas-destination-visual img { transition: transform .5s ease, opacity .35s ease; }
.atlas-product-row:hover .atlas-product-trigger, .atlas-product-row:focus-within .atlas-product-trigger { padding-left: .35rem; }
.atlas-product-trigger { transition: padding .3s; }

/* The six stages vary by composition, not by hiding their HTML content. */
.js .delivery-chapter-copy { opacity: .18; transform: translateY(2.4rem); transition: opacity .65s ease, transform .65s ease; }
.js .delivery-chapter.is-in-view .delivery-chapter-copy { opacity: 1; transform: translateY(0); }
.delivery-chapter:nth-child(2) .delivery-chapter-inner, .delivery-chapter:nth-child(4) .delivery-chapter-inner { grid-template-columns: 1.28fr .72fr; }
.delivery-chapter:nth-child(2) .delivery-chapter-index, .delivery-chapter:nth-child(4) .delivery-chapter-index { grid-column: 2; grid-row: 1; align-self: end; text-align: right; }
.delivery-chapter:nth-child(2) .delivery-chapter-copy, .delivery-chapter:nth-child(4) .delivery-chapter-copy { grid-column: 1; grid-row: 1; }
.delivery-chapter:nth-child(3) .delivery-chapter-copy { padding-left: clamp(0rem, 5vw, 5rem); border-left: 1px solid #9db29f; }
.delivery-chapter:nth-child(6) .delivery-chapter-index { color: #b5b6a6; }

.custom-contact-layer { display: grid; grid-template-columns: minmax(0, .85fr) minmax(0, 1.15fr); gap: clamp(2rem, 5vw, 6rem); align-items: center; }
.custom-contact-layer h2 { max-width: 13ch; }
.custom-contact-layer p:not(.eyebrow) { max-width: 34em; color: #5c6b61; }
.custom-contact-layer figure { margin: 0; }
.custom-contact-layer img { width: 100%; max-height: 560px; object-fit: cover; }
.custom-contact-layer figcaption { margin-top: .45rem; color: #6d7d72; font-size: .68rem; }
.contact-pending-tag { width: fit-content; margin-top: 2rem; border-top: 1px solid var(--v12-line); padding-top: .7rem; font-size: .72rem; letter-spacing: .08em; }

@media (max-width: 1040px) {
  .brand-archive-copy { padding-left: 24px; }
  .js .site-nav[data-open="true"] { gap: 2rem; }
  .atlas-layout.has-selection { grid-template-columns: minmax(0, .38fr) minmax(0, .62fr); }
}
@media (max-width: 900px) {
  .contact-grid { grid-template-columns: 1fr; }
  .contact-guide { position: static; }
  .destination-rows article { grid-template-columns: 1fr; }
}
@media (max-width: 760px) {
  body.menu-open { overflow: hidden; }
  .js .site-nav { top: 68px; max-height: calc(100svh - 68px); padding-inline: 16px; }
  .js .site-nav[data-open="true"] { display: grid; grid-template-columns: 1fr; gap: 0; min-height: calc(100svh - 68px); }
  .js .mega-links { padding: 1rem 0 .5rem; }
  .js .site-nav .mega-links a { min-height: 52px; font-size: clamp(1.35rem, 5vw, 1.8rem); }
  .js .site-nav .mega-links a.is-active, .js .site-nav .mega-links a:hover, .js .site-nav .mega-links a:focus-visible { transform: scale(1.04); }
  .js .mega-editorial { display: block; min-height: 240px; margin: .5rem 0 1rem; }
  .mega-editorial .mega-stage-content { inset: auto 1rem 1rem; gap: .25rem; }
  .mega-stage-content strong { font-size: 1.35rem; }
  .mega-stage-content small { font-size: .57rem; }
  .brand-archive-hero .about-v11-grid { grid-template-columns: 1fr; }
  .brand-archive-copy { padding: 4.5rem 16px 2.5rem; }
  .brand-archive-copy h1 { font-size: clamp(3rem, 11vw, 5.2rem); }
  .brand-archive-hero figure { min-height: 390px; }
  .audience-editorial { grid-template-columns: 1fr; gap: 1rem; }
  .audience-ledger button { min-height: 100px; }
  .audience-image-stage { min-height: 350px; margin: 0 0 1rem; }
  .services-manual-hero { min-height: 520px; }
  .services-manual-hero .page-hero-grid { min-height: 440px; }
  .services-entry-ledger article { grid-template-columns: 2rem minmax(0, 1fr); gap: .4rem 1rem; }
  .services-entry-ledger p { grid-column: 2; }
  .service-capabilities .services-grid { grid-template-columns: 1fr; }
  .custom-contact-layer { grid-template-columns: 1fr; }
  .atlas-layout.has-selection { display: block; }
  .delivery-chapter:nth-child(2) .delivery-chapter-inner, .delivery-chapter:nth-child(4) .delivery-chapter-inner { grid-template-columns: 1fr; }
  .delivery-chapter:nth-child(2) .delivery-chapter-index, .delivery-chapter:nth-child(4) .delivery-chapter-index, .delivery-chapter:nth-child(2) .delivery-chapter-copy, .delivery-chapter:nth-child(4) .delivery-chapter-copy { grid-column: 1; grid-row: auto; text-align: left; }
  .delivery-chapter:nth-child(3) .delivery-chapter-copy { padding-left: 0; border-left: 0; }
  .audience-ledger button.is-active strong, .audience-ledger button:hover strong, .audience-ledger button:focus-visible strong { transform: none; }
}
@media (max-width: 430px) {
  .brand-archive-copy h1 { font-size: clamp(2.9rem, 11vw, 4rem); }
  .audience-ledger strong { font-size: 1.55rem; }
  .audience-ledger button { grid-template-columns: 2rem minmax(0, 1fr) 1rem; gap: .5rem; }
  .audience-image-stage { min-height: 280px; }
  .capability-ledger summary { min-height: 88px; }
}
@media (prefers-reduced-motion: reduce) {
  .mega-stage-images img, .audience-image-stage img, .audience-ledger strong, .site-nav .mega-links a, .capability-ledger summary i, .atlas-destination-visual img, .delivery-chapter-copy { transition: none !important; transform: none !important; }
  .js .delivery-chapter-copy { opacity: 1 !important; }
}

/* ── v122.css ── */
/* V1.2.2 final visual polish: image-led navigation and relational UI. */

/* The navigation is a continuous brand scene, not a list next to a card. */
body.menu-open .site-header { background: #f2eee6; backdrop-filter: none; }
.js .site-nav { position: fixed; inset: 80px 0 0; width: 100vw; max-height: none; padding: 0; overflow: hidden; border: 0; box-shadow: none; isolation: isolate; background: #e9e5db; }
.js .site-nav[data-open="true"] { display: block; }
.js .site-nav .mega-links { position: relative; z-index: 4; display: grid; align-content: center; width: min(54vw, 730px); min-height: calc(100svh - 80px); margin: 0 0 0 max(24px, calc((100vw - 1180px) / 2)); padding: clamp(2rem, 5svh, 4rem) 0; }
.js .site-nav .mega-links a { position: relative; grid-template-columns: 2.4rem minmax(0, 1fr) 1.4rem; min-height: clamp(58px, 8svh, 78px); padding: .4rem 1rem .4rem 0; border-bottom: 1px solid rgba(27, 54, 40, .19); color: #274635; font-size: clamp(1.55rem, 2.42vw, 2.75rem); line-height: 1.25; transition: opacity .28s ease, transform .35s ease, color .28s ease; }
.js .site-nav .mega-links a::after { content: ""; position: absolute; left: 0; right: 100%; bottom: -1px; height: 2px; background: #32634b; transition: right .34s ease; }
.js .site-nav .mega-links a.is-active { transform: translateX(.9rem) scale(1.08); color: #143c2a; }
.js .site-nav .mega-links:has(a:hover) a.is-active, .js .site-nav .mega-links:has(a:focus) a.is-active { opacity: 1; }
.js .site-nav .mega-links a.is-active::after, .js .site-nav .mega-links a:focus-visible::after { right: 18%; }
.js .site-nav .mega-links a:focus-visible { outline: 2px solid #276b51; outline-offset: 4px; }
.js .site-nav .mega-links .mega-index { color: #6c8471; font-size: .62rem; }
.js .site-nav .mega-links .mega-item-arrow { align-self: center; font-size: 1rem; }
.js .mega-editorial { position: absolute; z-index: 1; inset: 0; min-height: 0; margin: 0; overflow: hidden; background: #254638; }
.mega-editorial .mega-stage-images { position: absolute; inset: 0 0 0 17%; width: auto; height: auto; overflow: hidden; }
.mega-editorial .mega-stage-images img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center; transform: scale(1.035); transition: opacity .48s ease, transform .95s ease; }
.mega-editorial .mega-stage-images img.is-active { transform: scale(1); }
.mega-editorial::after { content: ""; position: absolute; z-index: 1; inset: 0; pointer-events: none; background: linear-gradient(90deg, #eeeae1 0%, rgba(238, 234, 225, .97) 25%, rgba(238, 234, 225, .77) 41%, rgba(238, 234, 225, .05) 66%), linear-gradient(0deg, rgba(6, 22, 15, .84), transparent 39%); }
.mega-editorial .mega-detail-images { position: absolute; z-index: 2; inset: 10% auto auto 54%; display: none; width: clamp(150px, 18vw, 255px); height: min(41svh, 350px); overflow: hidden; border: 7px solid #f0ece3; box-shadow: 0 22px 55px rgba(8, 27, 17, .25); }
.mega-detail-images img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 72% center; opacity: 0; transition: opacity .5s ease; }
.mega-detail-images img.is-active { opacity: 1; }
.mega-editorial .mega-stage-serial { position: absolute; z-index: 2; inset: clamp(2rem, 5svh, 4rem) max(24px, calc((100vw - 1180px) / 2)) auto auto; color: #f8f5ee; font-family: var(--serif); line-height: 1; text-shadow: 0 1px 15px rgba(4, 24, 16, .5); }
.mega-stage-serial strong { font-size: clamp(4rem, 8vw, 8rem); font-weight: 400; letter-spacing: -.08em; }
.mega-stage-serial span { font-family: var(--sans); font-size: .72rem; letter-spacing: .16em; }
.mega-editorial .mega-stage-content { position: absolute; z-index: 3; left: auto; right: max(24px, calc((100vw - 1180px) / 2)); bottom: clamp(2rem, 7svh, 5rem); width: min(31vw, 440px); display: grid; gap: .55rem; color: #fff; text-shadow: 0 1px 17px rgba(1, 20, 12, .35); }
.mega-stage-content strong { max-width: 14ch; font-size: clamp(2rem, 3.2vw, 3.7rem); line-height: 1.25; }
.mega-stage-content [data-menu-mode] { font-size: .64rem; letter-spacing: .23em; }
.mega-stage-links { gap: .5rem 1.2rem; margin-top: .5rem; }
.mega-stage-links a, .mega-stage-cta { color: #fff; opacity: 1; border-bottom-color: rgba(255,255,255,.78); font-weight: 700; text-shadow: none; }
.site-nav .mega-stage-links a, .site-nav .mega-stage-cta { color: #fff; }
.mega-stage-links a:hover, .mega-stage-links a:focus-visible, .mega-stage-cta:hover, .mega-stage-cta:focus-visible { color: #f3ddab; }
.mega-stage-content small { margin-top: 1rem; color: #dce5dc; font-size: .63rem; }
.mega-editorial[data-layout="DIPTYCH"] .mega-stage-images { inset-inline-start: 35%; }
.mega-editorial[data-layout="DIPTYCH"] .mega-stage-images img { object-position: 60% center; }
.mega-editorial[data-layout="DIPTYCH"] .mega-detail-images { display: block; }
.mega-editorial[data-layout="DIPTYCH"]::after { background: linear-gradient(90deg, #e9e9df 0%, rgba(233,233,223,.98) 23%, rgba(233,233,223,.8) 42%, rgba(233,233,223,.05) 64%), linear-gradient(0deg, rgba(6,24,17,.84), transparent 45%); }
.mega-editorial[data-layout="ATLAS"] .mega-stage-images { inset-inline-start: 27%; }
.mega-editorial[data-layout="ATLAS"] .mega-stage-images img { object-position: 58% center; }
.mega-editorial[data-layout="ATLAS"] .mega-detail-images { display: block; inset: 12% 8% auto auto; width: clamp(130px, 15vw, 215px); height: min(36svh, 290px); transform: rotate(3deg); }
.mega-editorial[data-layout="ATLAS"] .mega-detail-images img { object-position: 77% 70%; }
.mega-editorial[data-layout="ATLAS"] .mega-stage-serial { top: 2.3rem; right: 7%; padding: .55rem .7rem; background: #f0ebe1; color: #254331; text-shadow: none; transform: rotate(3deg); }
.mega-editorial[data-layout="ATLAS"] .mega-stage-serial strong { font-size: 2.1rem; }
.mega-editorial[data-layout="ATLAS"]::after { background: linear-gradient(90deg, #e9e4d9 0%, rgba(233,228,217,.97) 24%, rgba(233,228,217,.76) 43%, rgba(233,228,217,.03) 67%), linear-gradient(0deg, rgba(20,27,20,.78), transparent 46%); }
.mega-editorial[data-layout="QUIET"] .mega-stage-images { inset-inline-start: 33%; }
.mega-editorial[data-layout="QUIET"] .mega-stage-images img { object-position: 66% center; }
.mega-editorial[data-layout="QUIET"]::after { background: linear-gradient(90deg, #eeeae1 0%, rgba(238,234,225,.96) 25%, rgba(238,234,225,.68) 43%, rgba(238,234,225,.03) 68%), linear-gradient(0deg, rgba(10,25,17,.82), transparent 45%); }

/* Site-wide click language uses one active rule rather than boxed controls. */
.audience-ledger button, .capability-ledger summary { position: relative; }
.audience-ledger button::after, .capability-ledger summary::after { content: ""; position: absolute; left: 0; right: 100%; bottom: -1px; height: 2px; background: #3c6d4e; transition: right .35s ease; }
.audience-ledger button.is-active::after, .audience-ledger button:focus-visible::after, .capability-ledger details[open] summary::after, .capability-ledger summary:focus-visible::after { right: 0; }
.audience-ledger button:focus-visible, .capability-ledger summary:focus-visible { outline: 2px solid #386a4d; outline-offset: 3px; }
.capability-ledger details[open] { background: rgba(255,255,255,.22); }
.capability-ledger details[open] summary { padding-inline: .7rem; }
.capability-ledger details p { margin: .3rem 0 1.8rem 3.2rem; padding-right: 1rem; line-height: 1.75; }
.brand-archive-hero figure img { object-position: 62% center; }
.audience-image-stage { margin: -1.7rem 0 -1.7rem -2.2rem; min-height: 530px; }
.audience-image-stage img { object-position: center 42%; }
.services-manual-hero .services-v11-image { object-position: center 57%; }
.services-entry-ledger article:nth-child(2), .services-entry-ledger article:nth-child(4) { padding-left: clamp(.5rem, 2vw, 2rem); }
.services-entry-ledger article h3 { font-size: clamp(1.8rem, 2.7vw, 2.75rem); }
.services-entry-ledger article > span { color: #688372; font-family: var(--serif); font-size: 1.4rem; }
.complexity .formula { display: flex; flex-wrap: wrap; gap: .3rem .7rem; align-items: baseline; align-content: center; }
.complexity .formula span { display: inline-block; min-height: 0; padding: .45rem .15rem .55rem; border: 0; border-bottom: 1px solid #9eafa3; color: #294633; font-family: var(--serif); font-size: clamp(1.55rem, 2.25vw, 2.35rem); line-height: 1.25; white-space: nowrap; }
.complexity .formula i { color: #8b9e90; font-size: 1.35rem; }
.world-grid { grid-template-columns: 1.04fr .96fr 1.04fr; }
.world-study .world-visual { background-position: 52% center; }
.world-custom .world-visual { background-position: 48% center; }
.world-group .world-visual { background-position: 55% center; }
.world-shade { background: linear-gradient(180deg, rgba(7,24,17,.08) 23%, rgba(7,24,17,.32) 53%, rgba(7,24,17,.84) 100%); }
.world-visual { filter: saturate(.85) contrast(.98); }
.world-actions a { position: relative; border-bottom: 1px solid rgba(255,255,255,.52); }
.world-actions a:hover, .world-actions a:focus-visible { color: #f5dfab; border-bottom-color: currentColor; }
.delivery-opening { padding-bottom: clamp(4rem, 7vw, 7rem); }
.delivery-chapter-inner { gap: clamp(3rem, 7vw, 9rem); }
.atlas-map-heading { display: grid; gap: .5rem; }
.atlas-map-heading strong { max-width: 11ch; }
.atlas-opening { position: relative; isolation: isolate; padding: 3rem 1.5rem; }
.atlas-opening::before { content: ""; position: absolute; z-index: -1; inset: 0; opacity: .2; background: url('/assets/nav-destinations-network-v122.webp') center / cover; }
.atlas-opening h3 { max-width: none; font-size: clamp(2.4rem, 3.15vw, 3.6rem); line-height: 1.35; }
.atlas-line-switch button, .atlas-mobile-selector a { transition: color .25s ease, border-color .25s ease; }

@media (max-width: 1040px) {
  .js .site-nav .mega-links { width: min(58vw, 670px); margin-left: 24px; }
  .mega-editorial .mega-stage-content { right: 24px; width: 32vw; }
  .mega-stage-serial { right: 24px; }
  .mega-detail-images { left: 55%; width: 16vw; }
}
@media (max-width: 760px) {
  .js .site-nav { inset: 68px 0 0; max-height: calc(100svh - 68px); overflow-y: auto; }
  .js .site-nav[data-open="true"] { display: block; min-height: 0; }
  .js .site-nav .mega-links { z-index: 3; width: auto; min-height: 0; margin: 0; padding: 1.1rem 16px .7rem; background: #f1ede5; }
  .js .site-nav .mega-links a { min-height: clamp(46px, 5.8svh, 58px); padding: .25rem 0; font-size: clamp(1.28rem, 5vw, 1.75rem); }
  .js .site-nav .mega-links a:not(.is-active) { opacity: 1; color: #627368; }
  .js .site-nav .mega-links a.is-active { transform: translateX(.35rem) scale(1.02); }
  .js .site-nav .mega-links a.is-active::after { right: 40%; }
  .js .mega-editorial { position: relative; min-height: 420px; margin: 0; }
  .mega-editorial .mega-stage-images, .mega-editorial[data-layout="DIPTYCH"] .mega-stage-images, .mega-editorial[data-layout="ATLAS"] .mega-stage-images, .mega-editorial[data-layout="QUIET"] .mega-stage-images { inset: 0; }
  .mega-editorial .mega-stage-images img { object-position: center; }
  .mega-editorial::after, .mega-editorial[data-layout="DIPTYCH"]::after, .mega-editorial[data-layout="ATLAS"]::after, .mega-editorial[data-layout="QUIET"]::after { background: linear-gradient(0deg, rgba(6,22,15,.93) 0%, rgba(6,22,15,.46) 51%, rgba(6,22,15,.02) 100%); }
  .mega-detail-images, .mega-editorial[data-layout="DIPTYCH"] .mega-detail-images, .mega-editorial[data-layout="ATLAS"] .mega-detail-images { display: none; }
  .mega-editorial .mega-stage-serial { inset: .8rem 1rem auto auto; }
  .mega-editorial[data-layout="ATLAS"] .mega-stage-serial { inset: .8rem 1rem auto auto; }
  .mega-stage-serial strong { font-size: 3.5rem; }
  .mega-editorial .mega-stage-content { inset: auto 1rem 1.1rem; width: auto; gap: .2rem; }
  .mega-stage-content strong { font-size: clamp(1.4rem, 6vw, 2rem); }
  .mega-stage-links { margin-top: .3rem; }
  .mega-stage-content small { margin-top: .45rem; }
  .world-grid { grid-template-columns: 1fr; }
  .world-visual { filter: saturate(.88); }
  .audience-image-stage { margin: .5rem 0 0; min-height: 310px; }
  .brand-archive-hero figure img { object-position: 59% center; }
  .services-entry-ledger article:nth-child(2), .services-entry-ledger article:nth-child(4) { padding-left: .5rem; }
  .complexity .formula { margin-top: 1.5rem; }
  .complexity .formula span { font-size: clamp(1.25rem, 5.5vw, 1.7rem); }
  .delivery-chapter-inner { gap: 1.5rem; }
  .atlas-opening { min-height: 430px; }
  .atlas-opening h3 { font-size: clamp(2rem, 8vw, 2.6rem); }
}
@media (prefers-reduced-motion: reduce) {
  .mega-editorial .mega-stage-images img, .mega-detail-images img, .audience-ledger button::after, .capability-ledger summary::after, .js .site-nav .mega-links a { transition: none !important; transform: none !important; }
}

/* ── v130.css ── */
/* V1.3 — 目的地全量索引 + 六幕信息密度 */

/* 六幕：关键动作与产出物 */
.delivery-chapter-copy h3 { font-size: clamp(2.2rem, 4.2vw, 4.6rem); }
.delivery-actions { list-style: none; margin: 1.7rem 0 0; padding: 0; display: grid; gap: .5rem; max-width: 34rem; }
.delivery-actions li { position: relative; padding: .5rem 0 0 1.2rem; border-top: 1px solid rgba(23, 34, 31, .12); font-size: clamp(.88rem, 1.05vw, 1rem); line-height: 1.6; color: #3d4c45; }
.delivery-actions li::before { content: "—"; position: absolute; left: 0; color: #9aa89f; }
.delivery-output { display: inline-flex; align-items: baseline; gap: .7rem; margin-top: 1.4rem; padding: .42rem .85rem; border: 1px solid rgba(23, 34, 31, .18); font-size: .84rem; color: var(--green); }
.delivery-output span { font-size: .64rem; letter-spacing: .16em; color: #7d8b84; }
.delivery-chapter-5 .delivery-actions li { color: #dfe5d8; border-top-color: rgba(255, 253, 248, .2); }
.delivery-chapter-5 .delivery-actions li::before { color: #b9c4b4; }
.delivery-chapter-5 .delivery-output { color: #e5eadd; border-color: rgba(255, 253, 248, .3); }
.delivery-chapter-5 .delivery-output span { color: #b9c4b4; }

/* 目的地总览 */
.dest-overview { padding-bottom: 0; }
.dest-kpis { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 1px; background: var(--line); border: 1px solid var(--line); }
.dest-kpis > div { background: var(--white); padding: 1.15rem 1.2rem; }
.dest-kpis b { display: block; font-family: var(--serif); font-size: 2.2rem; font-weight: 400; line-height: 1.05; }
.dest-kpis span { font-size: .71rem; letter-spacing: .1em; color: #65706c; }
.dest-kpis .warn b { color: #9b3a2c; }
.dest-kpi-note { max-width: 64em; margin: 1.3rem 0 0; font-size: .85rem; line-height: 1.9; color: #4a5651; }
.dest-kpi-note strong { color: var(--green); font-weight: 600; }

/* 大区索引 */
.dest-network .section-heading { margin-bottom: 2.6rem; }
.dest-region + .dest-region { margin-top: 3rem; }
.dest-region-head { display: flex; align-items: baseline; gap: .9rem; padding-bottom: .55rem; border-bottom: 1px solid var(--green); }
.dest-region-head h3 { margin: 0; font-family: var(--serif); font-size: 1.35rem; font-weight: 500; letter-spacing: .02em; }
.dest-region-head p { margin: 0; font-size: .73rem; letter-spacing: .08em; color: #65706c; }

.dest-row { display: grid; grid-template-columns: 8.4rem 1.05fr 1.65fr 1fr; gap: 1.4rem; padding: 1rem 0; border-bottom: 1px solid rgba(23, 34, 31, .1); align-items: start; }
.dest-thumb { position: relative; width: 100%; aspect-ratio: 3 / 2; overflow: hidden; background: #e6e9e4; }
.dest-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; filter: saturate(.86) contrast(1.02); transition: transform .6s cubic-bezier(.2, .7, .2, 1); }
.dest-row:hover .dest-thumb img { transform: scale(1.04); }
.dest-row[data-destination-status="INQUIRY_ONLY"] { opacity: .72; }
.dest-head { display: flex; align-items: baseline; flex-wrap: wrap; gap: .45rem; }
.dest-index { font-family: var(--serif); font-size: .78rem; color: #8b968f; min-width: 1.4rem; }
.dest-head h4 { margin: 0; font-family: var(--serif); font-size: 1.08rem; font-weight: 500; }
.dest-count { padding: .04rem .4rem; border: 1px solid rgba(23, 34, 31, .16); font-size: .67rem; color: #65706c; white-space: nowrap; }
.dest-produce { margin: 0 0 .32rem; font-size: .85rem; line-height: 1.7; color: #26332e; }
.dest-produce.muted { color: #7d8b84; }
.dest-source { margin: 0; font-size: .72rem; color: #7d8b84; }
.dest-side { display: flex; flex-wrap: wrap; gap: .35rem; align-items: center; justify-content: flex-end; }
.dest-tag { padding: .1rem .45rem; border: 1px solid rgba(23, 34, 31, .18); font-size: .67rem; color: #3e4a46; white-space: nowrap; }
.dest-link { margin-left: .3rem; border-bottom: 1px solid currentColor; font-size: .75rem; color: var(--green); white-space: nowrap; }
.dest-link:hover { color: var(--green-2); }

@media (max-width: 900px) {
  .dest-row { grid-template-columns: 1fr; gap: .55rem; padding: .9rem 0; }
  .dest-thumb { width: 100%; max-width: none; aspect-ratio: 16 / 9; }
  .dest-side { justify-content: flex-start; }
  .dest-kpis b { font-size: 1.8rem; }
}

/* ── v131.css ── */
/* V1.3.1 — 目的地地图交互：方案 D（静息全幅地图，点后侧栏滑入、地图让位）
   仅作用于 ≥761px。≤760px 继续沿用 v12.css 的底部抽屉，不受本文件影响。 */

@media (min-width: 761px) {
  .js .atlas-layout {
    display: flex;
    align-items: stretch;
    gap: 0;
    min-height: 780px;
    transition: gap .45s cubic-bezier(.22, .9, .28, 1);
  }
  .js .atlas-layout.has-selection { gap: 22px; }

  .js .atlas-layout .atlas-map-stage {
    flex: 1 1 auto;
    min-width: 0;
    border-right: 0;
    transition: padding .4s ease;
  }

  .js .atlas-layout .atlas-stage {
    flex: 0 0 0px;
    width: 0;
    height: 0;
    max-height: 0;
    padding: 0;
    opacity: 0;
    overflow: hidden;
    border: 0;
    transition: flex-basis .45s cubic-bezier(.22, .9, .28, 1),
                width .45s cubic-bezier(.22, .9, .28, 1),
                max-height .45s cubic-bezier(.22, .9, .28, 1),
                opacity .26s ease,
                padding .35s ease;
  }

  .js .atlas-layout.has-selection .atlas-stage {
    flex: 0 0 396px;
    width: 396px;
    height: auto;
    padding: 1.1rem 1.45rem 1.5rem;
    opacity: 1;
    align-self: flex-start;
    max-height: min(770px, calc(100vh - 120px));
    overflow-y: auto;
    overscroll-behavior: contain;
    scrollbar-width: thin;
    border-left: 1px solid var(--v12-line);
  }

  /* 侧栏内部按 396px 重排 */
  .js .atlas-layout.has-selection .atlas-destination-visual { height: 148px; margin-bottom: .9rem; }
  .js .atlas-layout.has-selection .atlas-no-visual { height: 108px; }
  .js .atlas-layout.has-selection .atlas-panel-meta { font-size: .6rem; letter-spacing: .1em; }
  .js .atlas-layout.has-selection .atlas-province-panel h3 { font-size: 2rem; line-height: 1.12; margin: .45rem 0 .35rem; }
  .js .atlas-layout.has-selection .atlas-panel-summary { font-size: .78rem; line-height: 1.65; max-width: none; }
  .js .atlas-layout.has-selection .atlas-line-switch { margin: 1rem 0 .5rem; gap: .2rem; }
  .js .atlas-layout.has-selection .atlas-line-switch button {
    min-height: 34px; padding: .15rem .1rem .4rem; margin-right: .55rem; font-size: .76rem;
  }
  .js .atlas-layout.has-selection .atlas-product-trigger {
    grid-template-columns: 1.35rem minmax(0, 1fr) 1.1rem; gap: .5rem; min-height: 58px; padding: .55rem 0;
  }
  .js .atlas-layout.has-selection .atlas-product-duration { display: none; }
  .js .atlas-layout.has-selection .atlas-product-number { font-size: .62rem; }
  .js .atlas-layout.has-selection .atlas-product-title { font-size: .98rem; line-height: 1.42; }
  .js .atlas-layout.has-selection .atlas-product-title small { font-size: .6rem; margin-top: .15rem; }
  .js .atlas-layout.has-selection .atlas-product-detail { padding: .1rem 0 1rem 1.85rem; font-size: .76rem; line-height: 1.7; }
  .js .atlas-layout.has-selection .atlas-product-actions { gap: .5rem .9rem; margin-top: .8rem; font-size: .78rem; }
  .js .atlas-layout.has-selection .atlas-province-inquiry { margin-top: 1.1rem; font-size: .82rem; }
  .js .atlas-layout.has-selection .atlas-opening { min-height: 0; }

  /* 桌面只留「关闭」，移动端的「展开产品」不出现 */
  .js .atlas-layout .atlas-sheet-controls { display: none; }
  .js .atlas-layout.has-selection .atlas-sheet-controls {
    display: flex; justify-content: flex-end; margin: 0 0 .2rem;
  }
  .js .atlas-layout.has-selection .atlas-sheet-controls [data-atlas-expand] { display: none; }
  .js .atlas-layout.has-selection .atlas-sheet-controls [data-atlas-close] {
    min-height: 32px; padding: .1rem .1rem; border: 0; background: transparent;
    color: #5c6a64; font-size: .76rem; letter-spacing: .04em; cursor: pointer;
  }
  .js .atlas-layout.has-selection .atlas-sheet-controls [data-atlas-close]:hover { color: #17372f; }

  /* 静息态：地图铺满，给一句话提示 */
  .atlas-pick-hint {
    display: flex; align-items: center; gap: .5rem;
    margin: 0 0 .2rem; color: #3d5a48; font-size: .82rem;
  }
  .atlas-pick-hint::before {
    content: ""; width: 6px; height: 6px; border-radius: 50%; background: #4e7a5c; flex: 0 0 auto;
  }
  .js .atlas-layout.has-selection .atlas-pick-hint { display: none; }

  .js .atlas-layout .atlas-map-frame svg { transition: transform .45s ease; }
}

/* 产品分组（研学 / 小包团 / 团队旅游）——桌面与移动端通用 */
.atlas-product-group + .atlas-product-group { margin-top: 1.15rem; }
.atlas-group-head {
  display: flex; align-items: baseline; gap: .5rem;
  margin: 0 0 .15rem; padding-bottom: .45rem;
  border-bottom: 1px solid var(--v12-line);
}
.atlas-group-head b { font-size: .84rem; letter-spacing: .04em; color: #213b2d; }
.atlas-group-head i {
  font-style: normal; font-size: .58rem; letter-spacing: .12em;
  text-transform: uppercase; color: #839483;
}
.atlas-group-head em { font-style: normal; margin-left: auto; font-size: .62rem; color: #718579; }
.atlas-groups { margin-top: .9rem; }

/* 标杆方案：每省一条标杆产品 + 一条标杆研学 */
.atlas-benchmark {
  margin: 1rem 0 .2rem; padding: .85rem .95rem;
  background: #edf1e8; border-left: 2px solid #294c38;
}
.atlas-benchmark-head {
  display: flex; align-items: baseline; gap: .5rem;
  margin: 0 0 .55rem; font-size: .74rem; letter-spacing: .06em; color: #213b2d; font-weight: 700;
}
.atlas-benchmark-head em {
  font-style: normal; font-size: .55rem; letter-spacing: .16em; color: #7d9284;
}
.atlas-benchmark-row { display: grid; grid-template-columns: 2.1rem minmax(0, 1fr); gap: .5rem; }
.atlas-benchmark-row + .atlas-benchmark-row {
  margin-top: .55rem; padding-top: .55rem; border-top: 1px solid rgba(39, 76, 56, .12);
}
.atlas-benchmark-row > span { font-size: .6rem; letter-spacing: .1em; color: #4e7a5c; padding-top: .2rem; }
.atlas-benchmark-row b { display: block; font-size: .8rem; line-height: 1.4; color: #1d3328; font-weight: 600; }
.atlas-benchmark-row small { display: block; margin-top: .2rem; font-size: .66rem; line-height: 1.5; color: #54685c; }

/* 案例页：项目类型的构成与交付物说明 */
.case-meta { margin: .45rem 0 0; font-size: .8rem; line-height: 1.6; color: #46584e; }
.case-meta + .case-meta { margin-top: .15rem; color: #6b7a70; font-size: .76rem; }

/* ── v132.css ── */
/* V1.3.2 — 地图拆成两个视图：完整行程 / 目的地
   完整行程：几天几晚 + 逐日，按 私家定制 / 定制团队 / 定制研学 三板块陈列，跨省线路在涉及省份都出现。
   目的地：季节窗口、资源条件、标杆方案与样品陈列。 */

/* 视图切换 */
.atlas-viewswitch {
  display: flex;
  align-items: flex-end;
  gap: 2.2rem;
  margin: 0 auto 1.1rem;
  border-bottom: 1px solid rgba(23, 34, 31, .16);
}
.atlas-viewswitch button {
  display: grid;
  gap: .1rem;
  min-height: 56px;
  padding: .5rem .1rem .7rem;
  border: 0;
  border-bottom: 2px solid transparent;
  margin-bottom: -1px;
  background: transparent;
  color: #6c7a73;
  text-align: left;
  cursor: pointer;
  transition: color .2s ease, border-color .2s ease;
}
.atlas-viewswitch button b {
  font-family: var(--serif);
  font-size: clamp(1.05rem, 1.5vw, 1.3rem);
  font-weight: 500;
  letter-spacing: .02em;
}
.atlas-viewswitch button span { font-size: .68rem; letter-spacing: .06em; color: #83918a; }
.atlas-viewswitch button:hover { color: #17372f; }
.atlas-viewswitch button[aria-selected="true"] { color: #17372f; border-bottom-color: #17372f; }
.atlas-viewswitch button[aria-selected="true"] span { color: #4e6a5b; }

/* 三板块分组 */
.atlas-itn-groups { margin-top: 1rem; }
.atlas-itn-group + .atlas-itn-group { margin-top: 1.35rem; }
.atlas-itn-group .atlas-group-head { margin-bottom: .5rem; }
.atlas-itn-group.is-empty .atlas-group-head em { color: #9b8b6a; }
.atlas-itn-empty { margin: .2rem 0 0; font-size: .74rem; line-height: 1.6; color: #83918a; }
.atlas-itn-list { display: grid; gap: .1rem; }

/* 一条完整行程 */
.itn-card { border-bottom: 1px solid rgba(23, 34, 31, .1); }
.itn-card:first-child { border-top: 1px solid rgba(23, 34, 31, .1); }
.itn-head {
  display: grid;
  grid-template-columns: 3.1rem minmax(0, 1fr) auto;
  gap: .7rem;
  width: 100%;
  padding: .8rem 0;
  border: 0;
  background: transparent;
  text-align: left;
  cursor: pointer;
  align-items: start;
}
.itn-card.is-open .itn-head { background: rgba(39, 76, 56, .04); }
.itn-duration { display: flex; align-items: baseline; flex-wrap: wrap; gap: .1rem; padding-top: .1rem; }
.itn-duration b { font-family: var(--serif); font-size: 1.45rem; font-weight: 500; line-height: 1; color: #1d3328; }
.itn-duration i { font-style: normal; font-size: .66rem; color: #4e6a5b; }
.itn-duration em { flex: 0 0 100%; font-style: normal; font-size: .6rem; letter-spacing: .04em; color: #83918a; }
.itn-headline { display: grid; gap: .18rem; min-width: 0; }
.itn-title { font-size: .94rem; line-height: 1.42; font-weight: 600; color: #17221f; }
.itn-route { font-size: .72rem; line-height: 1.5; color: #5b6b62; }
.itn-badges { display: flex; flex-wrap: wrap; gap: .3rem; margin-top: .1rem; }
.itn-badge { padding: .04rem .38rem; border: 1px solid rgba(39, 76, 56, .3); font-size: .6rem; letter-spacing: .04em; color: #2d5340; }
.itn-badge.cross { border-color: #2d5340; background: #e6ece1; font-weight: 600; }
.itn-badge.ghost { border-style: dashed; border-color: rgba(23, 34, 31, .22); color: #6c7a73; }
.itn-open { padding-top: .18rem; font-size: .62rem; letter-spacing: .06em; color: #6c7a73; white-space: nowrap; }
.itn-head:hover .itn-open { color: #17372f; }
.itn-card.is-open .itn-open { color: #17372f; }

.itn-detail { padding: .1rem 0 1.25rem .1rem; }
.itn-summary { margin: 0 0 .9rem; font-size: .78rem; line-height: 1.75; color: #3d4c45; }
.itn-days { list-style: none; margin: 0 0 1rem; padding: 0; display: grid; gap: .55rem; }
.itn-days li { display: grid; grid-template-columns: 1.9rem minmax(0, 1fr); gap: .5rem; padding-top: .5rem; border-top: 1px dashed rgba(23, 34, 31, .14); }
.itn-day { font-family: var(--serif); font-size: .7rem; letter-spacing: .04em; color: #2d5340; padding-top: .1rem; }
.itn-day-body b { display: block; font-size: .8rem; font-weight: 600; color: #17221f; }
.itn-day-body p { margin: .1rem 0 0; font-size: .72rem; line-height: 1.6; color: #4a5a51; }
.itn-day-body small { display: block; margin-top: .15rem; font-size: .64rem; letter-spacing: .03em; color: #83918a; }
.itn-facts { margin: 0 0 .8rem; display: grid; gap: .4rem; }
.itn-facts > div { display: grid; grid-template-columns: 2.6rem minmax(0, 1fr); gap: .5rem; }
.itn-facts dt { font-size: .62rem; letter-spacing: .08em; color: #83918a; padding-top: .12rem; }
.itn-facts dd { margin: 0; font-size: .72rem; line-height: 1.6; color: #3d4c45; }
.itn-caveat { margin: 0 0 .7rem; padding-left: .6rem; border-left: 2px solid rgba(155, 58, 44, .35); font-size: .66rem; line-height: 1.6; color: #7a4a3f; }
.itn-cta { display: inline-block; padding-bottom: .05rem; border-bottom: 1px solid currentColor; font-size: .76rem; color: #17372f; }

/* 行程视图里的目的地缩略图压低高度，把空间留给行程 */
.atlas-itn-visual { height: 118px; margin-bottom: .85rem; }
.atlas-itn-visual figcaption { font-size: .56rem; }

/* 样品陈列：折叠，明确不是完整行程 */
.atlas-samples { margin-top: 1.1rem; border-top: 1px solid rgba(23, 34, 31, .16); }
.atlas-samples > summary {
  display: flex;
  align-items: baseline;
  gap: .5rem;
  padding: .7rem 0 .5rem;
  cursor: pointer;
  list-style: none;
}
.atlas-samples > summary::-webkit-details-marker { display: none; }
.atlas-samples > summary span { font-size: .8rem; font-weight: 700; letter-spacing: .04em; color: #213b2d; }
.atlas-samples > summary em { font-style: normal; margin-left: auto; font-size: .62rem; color: #83918a; }
.atlas-samples > summary::after { content: "＋"; font-size: .78rem; color: #6c7a73; }
.atlas-samples[open] > summary::after { content: "－"; }
.atlas-samples-note { margin: 0 0 .6rem; font-size: .7rem; line-height: 1.65; color: #7d8b84; }

/* 桌面侧栏（396px）内的密度收紧 */
@media (min-width: 761px) {
  .js .atlas-layout.has-selection .itn-head { grid-template-columns: 2.7rem minmax(0, 1fr); gap: .55rem; padding: .65rem 0; }
  .js .atlas-layout.has-selection .itn-open { display: none; }
  .js .atlas-layout.has-selection .itn-duration b { font-size: 1.3rem; }
  .js .atlas-layout.has-selection .itn-title { font-size: .88rem; }
  .js .atlas-layout.has-selection .atlas-itn-visual { height: 96px; }
}

/* 移动端：抽屉里单列，天数横排更易扫读 */
@media (max-width: 760px) {
  .atlas-viewswitch { gap: 1.5rem; margin-bottom: .9rem; }
  .atlas-viewswitch button { min-height: 50px; }
  .itn-head { grid-template-columns: 2.6rem minmax(0, 1fr); gap: .55rem; padding: .7rem 0; }
  .itn-open { display: none; }
  .itn-detail { padding-left: 0; }
  .itn-days li { grid-template-columns: 1.7rem minmax(0, 1fr); }
  .atlas-itn-visual { height: 104px; }
}

/* ── 检索：省份 / 城市 / 主题 / 行程名 / 跨省组合 ───────────────── */
.atlas-toolbar {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 1.6rem;
  margin: 0 auto 1.1rem;
  border-bottom: 1px solid rgba(23, 34, 31, .16);
}
.atlas-toolbar .atlas-viewswitch { margin: 0; border-bottom: 0; }
.atlas-search { display: flex; align-items: center; gap: .6rem; padding-bottom: .6rem; flex: 0 1 auto; }
.atlas-search > label { font-size: .62rem; letter-spacing: .16em; color: #83918a; white-space: nowrap; }
.atlas-search-field { position: relative; display: flex; align-items: center; }
.atlas-search input {
  width: clamp(190px, 24vw, 290px);
  padding: .44rem 2.6rem .44rem .8rem;
  border: 1px solid rgba(23, 34, 31, .2);
  background: #fbf8f1;
  font-size: .8rem;
  color: #17221f;
  appearance: none;
}
.atlas-search input::placeholder { color: #97a39c; }
.atlas-search input:focus { outline: 2px solid rgba(23, 55, 47, .35); outline-offset: 1px; border-color: #17372f; }
.atlas-search [data-atlas-search-clear] {
  position: absolute;
  right: .35rem;
  padding: .1rem .35rem;
  border: 0;
  background: transparent;
  font-size: .64rem;
  color: #6c7a73;
  cursor: pointer;
}
.atlas-search [data-atlas-search-clear]:hover { color: #17372f; }

.atlas-search-panel { margin: 0 auto 1.2rem; }
.atlas-search-meta { margin: 0 0 .55rem; font-size: .74rem; letter-spacing: .02em; color: #3d5a48; }
.atlas-search-results { display: flex; flex-wrap: wrap; gap: .4rem; }
.atlas-search-chip {
  display: inline-flex;
  align-items: baseline;
  gap: .42rem;
  padding: .3rem .7rem;
  border: 1px solid rgba(23, 34, 31, .18);
  background: #fffdf8;
  cursor: pointer;
  transition: border-color .18s ease, background .18s ease;
}
.atlas-search-chip b { font-size: .82rem; font-weight: 600; color: #17221f; }
.atlas-search-chip span { font-size: .62rem; color: #83918a; }
.atlas-search-chip:hover,
.atlas-search-chip:focus-visible { border-color: #17372f; background: #eef1e8; }

.atlas-search-empty {
  padding: 1rem 1.15rem 1.05rem;
  border: 1px dashed rgba(23, 34, 31, .3);
  background: #f8f5ed;
}
.atlas-search-empty > p { margin: 0 0 .75rem; font-size: .8rem; line-height: 1.7; color: #3d4c45; }
.atlas-search-empty > p b { font-weight: 700; color: #17221f; }
.atlas-search-empty-actions { display: flex; flex-wrap: wrap; align-items: center; gap: .9rem; }
.atlas-search-empty-actions .button { padding: .5rem .9rem; font-size: .78rem; }
.atlas-search-empty-alt { padding-bottom: .05rem; border-bottom: 1px solid currentColor; font-size: .76rem; color: #17372f; }
.atlas-search-empty-note { margin: .75rem 0 0 !important; font-size: .7rem !important; color: #7d8b84 !important; }

/* 检索命中的省份在地图上加深，未命中的淡出 */
.atlas-map-frame .atlas-province.is-match .map-province { fill: #1f4a37; }
.atlas-map-frame .atlas-province.is-dim { opacity: .26; }

@media (max-width: 900px) {
  .atlas-toolbar { flex-direction: column; align-items: stretch; gap: .2rem; }
  .atlas-search { padding-bottom: .7rem; }
  .atlas-search input { width: 100%; }
}

/* ── 目的地页：三板块标记、检索、跨省线路 ───────────────────────── */
.dest-tag.is-empty { opacity: .42; border-style: dashed; }
.dest-search { display: flex; align-items: center; gap: .6rem; flex-wrap: wrap; margin: 0 0 .7rem; }
.dest-search label { font-size: .64rem; letter-spacing: .14em; color: #7d8b84; }
.dest-search input {
  width: min(340px, 100%);
  padding: .5rem .9rem;
  border: 1px solid rgba(23, 34, 31, .22);
  background: #fffdf8;
  font-size: .84rem;
  color: #17221f;
}
.dest-search input:focus { outline: 2px solid rgba(23, 55, 47, .32); outline-offset: 1px; border-color: #17372f; }
.dest-search button { padding: .2rem .3rem; border: 0; background: transparent; font-size: .72rem; color: #6c7a73; cursor: pointer; }
.dest-search button:hover { color: #17372f; }
.dest-search-meta { margin: 0 0 .9rem; min-height: 1.1em; font-size: .74rem; color: #3d5a48; }
.dest-search-empty { margin-bottom: 1.3rem; padding: 1rem 1.15rem; border: 1px dashed rgba(23, 34, 31, .3); background: #f8f5ed; }
.dest-search-empty p { margin: 0 0 .75rem; font-size: .82rem; line-height: 1.7; color: #3d4c45; }
.dest-search-empty .button { padding: .5rem .9rem; font-size: .78rem; }

.cross-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(272px, 1fr));
  gap: 1px;
  margin-top: 2.2rem;
  background: var(--line);
  border: 1px solid var(--line);
}
.cross-line { background: var(--white); padding: 1rem 1.1rem 1.15rem; }
.cross-line-head { display: flex; align-items: baseline; gap: .5rem; padding-bottom: .5rem; border-bottom: 1px solid rgba(23, 34, 31, .14); }
.cross-line-head b { font-family: var(--serif); font-size: 1.05rem; font-weight: 500; letter-spacing: .02em; }
.cross-line-head span { margin-left: auto; font-size: .64rem; color: #83918a; }
.cross-line ul { list-style: none; margin: .65rem 0 0; padding: 0; display: grid; gap: .6rem; }
.cross-line li { display: grid; grid-template-columns: 3.2rem minmax(0, 1fr); gap: .5rem; }
.cross-days { padding-top: .12rem; font-family: var(--serif); font-size: .68rem; letter-spacing: .02em; color: #2d5340; }
.cross-line a { font-size: .8rem; line-height: 1.45; color: #17221f; border-bottom: 1px solid rgba(23, 34, 31, .24); }
.cross-line a:hover { border-bottom-color: #17372f; color: #17372f; }
.cross-line small { display: block; margin-top: .15rem; font-size: .63rem; color: #83918a; }

@media (max-width: 760px) {
  .cross-grid { grid-template-columns: 1fr; }
  .dest-search input { width: 100%; }
}

/* 深链跳转不被吸顶导航遮住标题 */
#destination-network, .atlas-explorer, .dest-region, .cross-lines { scroll-margin-top: 92px; }

/* 深链跳转不被吸顶导航遮住标题 */
#destination-network, .atlas-explorer, .dest-region, .cross-lines { scroll-margin-top: 92px; }

/* 避免浏览器原生清除按钮与自绘「清除」重叠 */
.atlas-search input::-webkit-search-cancel-button,
.atlas-search input::-webkit-search-decoration,
.dest-search input::-webkit-search-cancel-button,
.dest-search input::-webkit-search-decoration { -webkit-appearance: none; appearance: none; }

/* 跨省卡片：独立描边，避免末行空格露出底色 */
.cross-grid { gap: 12px; background: transparent; border: 0; }
.cross-line { border: 1px solid var(--line); }
.cross-line li { grid-template-columns: 3.7rem minmax(0, 1fr); }
.cross-days { white-space: nowrap; }

/* ── v133.css ── */
/* ── 月份滑轨：WHEN TO GO ──────────────────────────────────────────
   设计意图：不做普通滑块，而是一条 12 个月的「适游标尺」。
   柱子高度 = 当月适合出行的省级区域数量；拖动指针或点击柱子即切换月份，
   地图按评级重新着色，非适游区域淡出但不隐藏。
   ───────────────────────────────────────────────────────────────── */

.atlas-season {
  margin: 0 auto 1.5rem;
  padding: 1.1rem 0 1rem;
  border-top: 1px solid rgba(23, 34, 31, .14);
  border-bottom: 1px solid rgba(23, 34, 31, .14);
  background: linear-gradient(180deg, rgba(251, 248, 241, .72), rgba(251, 248, 241, 0));
}

.season-head {
  display: grid;
  grid-template-columns: minmax(96px, auto) auto minmax(0, 1fr) auto;
  align-items: end;
  gap: 1.4rem;
}

.season-kicker {
  margin: 0 0 .25rem;
  font-size: .58rem;
  letter-spacing: .2em;
  color: #83918a;
  white-space: nowrap;
}
.season-kicker span {
  display: block;
  margin-top: .42rem;
  font-size: .72rem;
  letter-spacing: .06em;
  color: #2d5340;
}

.season-readout {
  display: flex;
  align-items: baseline;
  gap: .55rem;
  margin: 0;
  font-family: var(--serif);
  line-height: 1;
}
.season-readout b {
  min-width: 2.1ch;
  font-size: 3.5rem;
  font-weight: 400;
  line-height: .82;
  letter-spacing: -.04em;
  color: #17372f;
  font-variant-numeric: tabular-nums;
  transition: opacity .22s ease, transform .22s ease;
}
.season-readout span { display: flex; flex-direction: column; gap: .24rem; padding-bottom: .2rem; }
.season-readout em {
  font-style: normal;
  font-size: .9rem;
  letter-spacing: .1em;
  color: #17221f;
}
.season-readout i {
  font-style: normal;
  font-size: .55rem;
  letter-spacing: .24em;
  color: #97a39c;
}
.atlas-season.is-swap .season-readout b { opacity: .25; transform: translateY(3px); }

.season-line {
  margin: 0 0 .45rem;
  font-size: .79rem;
  line-height: 1.7;
  color: #3d4c45;
}
.season-line b { font-weight: 600; color: #17372f; }

.season-actions { display: flex; align-items: center; gap: .5rem; padding-bottom: .3rem; }
.season-play,
.season-reset {
  display: inline-flex;
  align-items: center;
  gap: .45rem;
  padding: .4rem .72rem;
  border: 1px solid rgba(23, 34, 31, .26);
  background: #fffdf8;
  font: inherit;
  font-size: .68rem;
  letter-spacing: .04em;
  color: #17221f;
  cursor: pointer;
  transition: border-color .2s ease, background .2s ease, color .2s ease;
}
.season-play:hover,
.season-reset:hover { border-color: #17372f; background: #eef1e8; }
.season-play:focus-visible,
.season-reset:focus-visible { outline: 2px solid #d19639; outline-offset: 2px; }
.season-play-glyph {
  width: 0;
  height: 0;
  border-left: 6px solid #17372f;
  border-top: 4px solid transparent;
  border-bottom: 4px solid transparent;
  transition: all .2s ease;
}
.season-play[aria-pressed="true"] .season-play-glyph {
  width: 7px;
  height: 8px;
  border: 0;
  background: #17372f;
}
.season-reset { border-color: transparent; background: transparent; color: #5c6b64; }
.season-reset:hover { border-color: rgba(23, 34, 31, .26); }

/* 标尺本体 */
.season-rail {
  position: relative;
  height: 88px;
  margin: 1.15rem 0 .25rem;
  padding: 0 24px;
}
/* 选中月份后的柔和光柱，给标尺一点纵深 */
.season-spot {
  position: absolute;
  bottom: 0;
  left: calc(24px + (100% - 48px) * var(--p, .79));
  width: 74px;
  height: 100%;
  transform: translateX(-50%);
  background: radial-gradient(52% 62% at 50% 100%, rgba(23, 55, 47, .1), rgba(23, 55, 47, 0) 72%);
  pointer-events: none;
  transition: left .38s cubic-bezier(.4, 0, .2, 1), opacity .25s ease;
}
.atlas-season.is-dragging .season-spot { transition: left .08s linear; }
.atlas-season[data-season-active="false"] .season-spot { opacity: 0; }
.season-rail::before {
  content: "";
  position: absolute;
  left: 24px;
  right: 24px;
  bottom: 7px;
  height: 1px;
  background: rgba(23, 34, 31, .16);
}
.season-bars {
  position: absolute;
  inset: 0 24px;
  display: grid;
  grid-template-columns: repeat(12, 1fr);
  align-items: end;
  padding-bottom: 7px;
}
.season-bar {
  position: relative;
  display: flex;
  align-items: flex-end;
  justify-content: center;
  height: 100%;
}
.season-bar i {
  display: block;
  width: 3px;
  height: var(--h);
  background: rgba(23, 34, 31, .17);
  transition: background .3s ease, transform .3s ease;
  transform-origin: bottom;
}
/* 深色段 = 当月评级为「最佳」的区域数量，浅色全高 = 适合出行（最佳 + 适宜） */
.season-bar s {
  position: absolute;
  left: 50%;
  bottom: 0;
  width: 3px;
  height: var(--hb);
  background: #4f7a5d;
  transform: translateX(-50%);
  transition: background .3s ease;
}
.season-bar .season-dot {
  position: absolute;
  bottom: calc(var(--h) + 5px);
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: #17372f;
  opacity: 0;
  transform: translateY(4px) scale(.6);
  transition: opacity .25s ease, transform .25s ease;
}
.season-bar.is-active i { background: rgba(23, 34, 31, .32); }
.season-bar.is-active s { background: #17372f; }
.season-bar.is-active .season-dot { opacity: 1; transform: translateY(0) scale(1); }
.season-bar.is-past i { background: rgba(23, 34, 31, .26); }

.season-thumb {
  position: absolute;
  top: 6px;
  bottom: 7px;
  left: calc(24px + (100% - 48px) * var(--p, .79));
  width: 1px;
  background: linear-gradient(180deg, rgba(23, 55, 47, 0), rgba(23, 55, 47, .55));
  pointer-events: none;
  transition: left .38s cubic-bezier(.4, 0, .2, 1), opacity .25s ease;
}
.season-thumb span {
  position: absolute;
  bottom: -4px;
  left: 50%;
  width: 9px;
  height: 9px;
  border-radius: 50%;
  background: #17372f;
  transform: translateX(-50%);
  box-shadow: 0 0 0 4px rgba(23, 55, 47, .1);
}
.atlas-season.is-dragging .season-thumb { transition: left .08s linear; }
.atlas-season[data-season-active="false"] .season-thumb { opacity: .25; }
.atlas-season[data-season-active="false"] .season-bar i { background: rgba(23, 34, 31, .16); }

.season-range {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  margin: 0;
  background: transparent;
  appearance: none;
  -webkit-appearance: none;
  cursor: ew-resize;
  border: 0;
}
/* 兜底：滑轨是整条标尺上的透明覆盖层，任何状态（含 focus/active）都不得上底色。
   特异性 (0,2,0) 高于 body input:focus 的 (0,1,2)，即使全局表单样式再变也盖不住它。
   焦点可见性由下面的 outline 承担，不用背景色。 */
.season-range,
.season-range:hover,
.season-range:active,
.season-range:focus,
.season-range:focus-visible {
  background: transparent;
  background-color: transparent;
  border: 0;
  box-shadow: none;
}
.season-range:focus-visible { outline: 2px solid rgba(23, 55, 47, .45); outline-offset: 3px; }
.season-range::-webkit-slider-runnable-track { height: 100%; background: transparent; border: 0; }
.season-range::-webkit-slider-thumb {
  -webkit-appearance: none;
  width: 46px;
  height: 46px;
  margin-top: 0;
  border-radius: 50%;
  background: transparent;
  border: 0;
}
.season-range::-moz-range-track { height: 100%; background: transparent; border: 0; }
.season-range::-moz-range-thumb { width: 46px; height: 46px; border: 0; border-radius: 50%; background: transparent; }

.season-scale {
  display: grid;
  grid-template-columns: repeat(12, 1fr);
  padding: 0 24px;
  margin-top: .1rem;
}
.season-scale span {
  text-align: center;
  font-size: .64rem;
  letter-spacing: .02em;
  color: #a3ada7;
  font-variant-numeric: tabular-nums;
  transition: color .2s ease;
}
.season-scale span.is-active { color: #17372f; font-weight: 700; }

.season-foot {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 1.6rem;
  margin-top: .85rem;
  padding-top: .72rem;
  border-top: 1px dashed rgba(23, 34, 31, .13);
}
.season-legend { display: flex; flex-wrap: wrap; align-items: center; gap: .9rem; margin: 0; font-size: .63rem; color: #5c6b64; }
.season-legend em { font-style: normal; padding-left: .9rem; border-left: 1px solid rgba(23, 34, 31, .16); color: #83918a; }
.season-legend span { display: inline-flex; align-items: center; gap: .34rem; }
.season-legend .lv { width: 8px; height: 8px; border-radius: 50%; display: inline-block; }
.season-legend .lv-3 { background: #1c4a35; }
.season-legend .lv-2 { background: #6d9478; }
.season-legend .lv-1 { background: #c9d2c4; }
.season-legend .lv-0 { background: #e6e3d6; }
.season-legend .lv-n { background: #b9cabc; }
.season-source { margin: 0; max-width: 46ch; font-size: .61rem; line-height: 1.65; color: #a3ada7; text-align: right; }

/* 地图按月份重新着色（未选月份时保持原样） */
.atlas-explorer[data-season-active="true"] .atlas-province.season-3 .map-province { fill: #1c4a35; }
.atlas-explorer[data-season-active="true"] .atlas-province.season-2 .map-province { fill: #6d9478; }
.atlas-explorer[data-season-active="true"] .atlas-province.season-1 .map-province { fill: #c9d2c4; }
.atlas-explorer[data-season-active="true"] .atlas-province.season-0 .map-province { fill: #e6e3d6; }
/* 未评级（中国台湾）：保留中性底色，不参与四级着色，避免被误读为「最佳」 */
.atlas-explorer[data-season-active="true"] .atlas-province:not([class*="season-"]) .map-province { fill: #b9cabc; }
.atlas-explorer[data-season-active="true"] .atlas-province:not([class*="season-"]) { opacity: .7; }
.atlas-explorer[data-season-active="true"] .atlas-province.season-1,
.atlas-explorer[data-season-active="true"] .atlas-province.season-0 { opacity: .62; }
.atlas-explorer[data-season-active="true"] .atlas-province { transition: opacity .35s ease; }
.atlas-explorer[data-season-active="true"] .atlas-province:hover,
.atlas-explorer[data-season-active="true"] .atlas-province:focus,
.atlas-explorer[data-season-active="true"] .atlas-province.is-active { opacity: 1; }
.atlas-explorer[data-season-active="true"] .atlas-province:hover .map-province,
.atlas-explorer[data-season-active="true"] .atlas-province:focus .map-province,
.atlas-explorer[data-season-active="true"] .atlas-province.is-active .map-province { fill: #244e3a; }

/* 省份面板上的当月评级 */
.atlas-panel-season {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: .4rem;
  margin: .5rem 0 0;
  font-size: .68rem;
  line-height: 1.6;
  color: #3d5a48;
}
.atlas-panel-season .chip {
  padding: .1rem .46rem .12rem;
  border: 1px solid currentColor;
  border-radius: 999px;
  font-size: .59rem;
  letter-spacing: .04em;
}
.atlas-panel-season .chip.lv-3 { color: #1c4a35; background: rgba(28, 74, 53, .08); }
.atlas-panel-season .chip.lv-2 { color: #3f6c52; background: rgba(109, 148, 120, .12); }
.atlas-panel-season .chip.lv-1 { color: #7d7460; background: rgba(201, 210, 196, .3); }
.atlas-panel-season .chip.lv-0 { color: #8d8776; background: rgba(230, 227, 214, .5); }

@media (max-width: 900px) {
  .season-head {
    grid-template-columns: auto 1fr auto;
    grid-template-areas:
      "readout line actions"
      "kicker kicker kicker";
    align-items: center;
    row-gap: .6rem;
  }
  .season-kicker { grid-area: kicker; margin: 0; }
  .season-kicker span { display: inline; margin-left: .5rem; }
  .season-readout { grid-area: readout; }
  .season-readout b { font-size: 2.9rem; }
  .season-line { grid-area: line; margin: 0; text-align: right; }
  .season-actions { grid-area: actions; }
  /* 窄屏优先保留状态开关（看全年 / 回到本月），播放动画让位 */
  .season-play { display: none; }
  .season-foot { flex-direction: column; gap: .55rem; }
  .season-source { text-align: left; }
}

@media (max-width: 560px) {
  .season-head {
    grid-template-columns: auto 1fr;
    grid-template-areas:
      "kicker kicker"
      "readout actions"
      "line line";
    align-items: center;
  }
  .season-kicker { margin: 0 0 .1rem; }
  .season-readout b { font-size: 2.6rem; }
  .season-line { text-align: left; font-size: .74rem; }
  .season-rail { height: 76px; }
  .season-kicker span { display: block; margin: .18rem 0 0; }
  .season-scale span { font-size: .5rem; letter-spacing: 0; }
  .season-scale span.is-active { font-size: .64rem; }
}

@media (prefers-reduced-motion: reduce) {
  .season-thumb,
  .season-readout b,
  .season-bar i,
  .season-bar .season-dot,
  .atlas-explorer .atlas-province { transition: none !important; }
}

/* 核心区域：卡片徽章 + 面板覆盖说明 */
.itn-badge.area {
  border: 1px solid rgba(23, 55, 47, .22);
  background: rgba(23, 55, 47, .06);
  color: #2d5340;
}
.atlas-area-line {
  margin: .5rem 0 .2rem;
  font-size: .63rem;
  line-height: 1.65;
  color: #83918a;
  letter-spacing: .01em;
}

/* 核心区域：卡片徽章 + 面板覆盖说明 */
.itn-badge.area {
  border: 1px solid rgba(23, 55, 47, .22);
  background: rgba(23, 55, 47, .06);
  color: #2d5340;
}
.atlas-area-line {
  margin: .5rem 0 .2rem;
  font-size: .63rem;
  line-height: 1.65;
  color: #83918a;
  letter-spacing: .01em;
}

/* ── v134.css ── */
/* V1.4 · 目的地清单与「按需求」第三个板块
   —— 目的地：一个省只列值得去的几处，看完直接进咨询
   —— 按需求：滑轨换成 8 类需求，柱高 = 可承接省份数，地图按目的地条数分档着色 */

/* ── 视图切换器：三个页签 ───────────────────────────────────── */
.atlas-viewswitch { gap: clamp(1rem, 2.2vw, 2.2rem); }
.atlas-viewswitch button span { white-space: nowrap; }

/* ── 滑轨双模式 ─────────────────────────────────────────────── */
.season-mode { display: block; }
.season-mode[hidden] { display: none; }
.season-readout-cjk b {
  font-family: var(--serif);
  font-size: clamp(1.7rem, 2.6vw, 2.4rem);
  font-weight: 500;
  letter-spacing: .06em;
  line-height: 1.15;
}
.season-scale { grid-template-columns: repeat(var(--cols, 12), 1fr); }
/* 需求横轴只有 8 格，柱条容器必须跟着改成 8 列，否则会和刻度错位 */
[data-need-bars] { grid-template-columns: repeat(8, 1fr); }
[data-need-scale] span { font-size: .6rem; letter-spacing: 0; color: #8b9691; }
[data-need-scale] span.is-active { color: #17372f; font-weight: 700; }

/* 二级需求收窄 */
.season-subs { margin: .55rem 0 0; min-height: 2rem; }
.season-subgroup { display: flex; flex-wrap: wrap; gap: .38rem; }
.season-subgroup[hidden] { display: none; }
.season-sub {
  display: inline-flex;
  align-items: center;
  gap: .32rem;
  padding: .26rem .58rem;
  border: 1px solid rgba(23, 34, 31, .18);
  border-radius: 999px;
  background: transparent;
  color: #5c6b64;
  font-size: .68rem;
  letter-spacing: .02em;
  cursor: pointer;
  transition: color .2s ease, border-color .2s ease, background .2s ease;
}
.season-sub em { font-style: normal; font-variant-numeric: tabular-nums; font-size: .62rem; color: #9aa49e; }
.season-sub:hover { border-color: #17372f; color: #17372f; }
.season-sub.is-on { border-color: #17372f; background: #17372f; color: #f4f1e8; }
.season-sub.is-on em { color: rgba(244, 241, 232, .72); }
.season-sub:focus-visible { outline: 2px solid #d19639; outline-offset: 2px; }

/* ── 标杆目的地清单 ─────────────────────────────────────────── */
.dest-list {
  list-style: none;
  margin: .9rem 0 0;
  padding: 0;
  border-top: 1px solid rgba(23, 34, 31, .14);
}
.dest-item {
  display: grid;
  grid-template-columns: 1.9rem 1fr;
  gap: .55rem;
  padding: .62rem 0;
  border-bottom: 1px solid rgba(23, 34, 31, .09);
}
.dest-item[hidden] { display: none; }
.dest-index {
  font-family: var(--serif);
  font-size: .66rem;
  font-variant-numeric: tabular-nums;
  letter-spacing: .08em;
  color: #a8b1ab;
  padding-top: .18rem;
}
.dest-head { display: flex; align-items: baseline; flex-wrap: wrap; gap: .45rem; margin: 0; }
.dest-head b {
  font-family: var(--serif);
  font-size: .98rem;
  font-weight: 500;
  letter-spacing: .02em;
  color: #17372f;
}
.dest-head em {
  font-style: normal;
  font-size: .61rem;
  letter-spacing: .04em;
  color: #8a7a58;
  padding: .06rem .34rem;
  border: 1px solid rgba(138, 122, 88, .34);
  border-radius: 2px;
  white-space: nowrap;
}
.dest-note { margin: .18rem 0 0; font-size: .76rem; line-height: 1.6; color: #5c6b64; }
.dest-tags {
  margin: .26rem 0 0;
  font-size: .6rem;
  letter-spacing: .08em;
  color: #93a09a;
  text-transform: none;
}

/* 目的地视图底部：转去看完整行程 */
.atlas-dest-foot {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: .45rem;
  margin: .85rem 0 0;
  font-size: .7rem;
  color: #83918a;
}
.atlas-dest-jump {
  padding: 0;
  border: 0;
  border-bottom: 1px solid rgba(23, 34, 31, .3);
  background: transparent;
  color: #17372f;
  font: inherit;
  font-size: .74rem;
  cursor: pointer;
}
.atlas-dest-jump:hover { border-bottom-color: #17372f; }
.atlas-dest-jump:focus-visible { outline: 2px solid #d19639; outline-offset: 2px; }

/* ── 需求视图的面板 ─────────────────────────────────────────── */
.atlas-need-summary {
  margin: .35rem 0 0;
  font-size: .78rem;
  line-height: 1.65;
  color: #4e6a5b;
}
.atlas-need-empty {
  margin: .7rem 0 0;
  padding: .7rem .8rem;
  border-left: 2px solid #d19639;
  background: rgba(209, 150, 57, .07);
  font-size: .74rem;
  line-height: 1.65;
  color: #7a6a48;
}
.need-itn-block { margin: 1.05rem 0 0; }
.need-itn-block .atlas-group-head { margin-bottom: .3rem; }
.need-itn-list { display: grid; gap: 0; border-top: 1px solid rgba(23, 34, 31, .12); }
.need-itn {
  display: grid;
  grid-template-columns: 2.2rem 1fr auto;
  grid-template-areas: "days name go" "days route go";
  align-items: center;
  gap: 0 .55rem;
  width: 100%;
  padding: .5rem .1rem;
  border: 0;
  border-bottom: 1px solid rgba(23, 34, 31, .08);
  background: transparent;
  text-align: left;
  cursor: pointer;
  transition: background .18s ease, padding-left .18s ease;
}
.need-itn[hidden] { display: none; }
.need-itn:hover { background: rgba(23, 55, 47, .04); padding-left: .35rem; }
.need-itn:focus-visible { outline: 2px solid #d19639; outline-offset: -2px; }
.need-itn-days {
  grid-area: days;
  font-family: var(--serif);
  font-size: .78rem;
  color: #17372f;
  border-right: 1px solid rgba(23, 34, 31, .12);
  padding-right: .5rem;
  text-align: center;
  line-height: 1.1;
}
.need-itn-days b { display: block; font-size: 1rem; font-weight: 500; font-variant-numeric: tabular-nums; }
.need-itn-days i { font-style: normal; font-size: .58rem; color: #83918a; }
.need-itn-name { grid-area: name; font-size: .8rem; color: #17372f; letter-spacing: .01em; }
.need-itn-route { grid-area: route; font-size: .66rem; color: #8b9691; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.need-itn-go { grid-area: go; font-size: .7rem; color: #a3ada7; }
.need-itn:hover .need-itn-go { color: #17372f; }
.need-itn-all {
  margin: .6rem 0 0;
  padding: .34rem .7rem;
  border: 1px dashed rgba(23, 34, 31, .24);
  border-radius: 2px;
  background: transparent;
  color: #4e6a5b;
  font: inherit;
  font-size: .68rem;
  cursor: pointer;
}
.need-itn-all[hidden] { display: none; }
.need-itn-all:hover { border-color: #17372f; color: #17372f; }

/* 需求视图下地图沿用季节四档色，只换图例口径 */
.atlas-explorer[data-atlas-view="need"] .atlas-pick-hint { color: #4e6a5b; }

@media (max-width: 900px) {
  .atlas-viewswitch { gap: .9rem; }
  .atlas-viewswitch button b { font-size: 1rem; }
  .atlas-viewswitch button span { font-size: .6rem; letter-spacing: .02em; }
  .season-subs { margin-top: .45rem; }
}
@media (max-width: 560px) {
  .atlas-viewswitch { gap: .55rem; }
  .atlas-viewswitch button { padding: .4rem .1rem .55rem; min-height: 48px; }
  .atlas-viewswitch button b { font-size: .9rem; }
  .atlas-viewswitch button span { display: none; }
  [data-need-scale] span { font-size: .5rem; }
  [data-need-scale] span.is-active { font-size: .62rem; }
  .season-sub { font-size: .62rem; padding: .22rem .48rem; }
  .dest-item { grid-template-columns: 1.4rem 1fr; gap: .4rem; }
  .dest-head b { font-size: .92rem; }
  .need-itn { grid-template-columns: 1.9rem 1fr auto; }
}
@media (prefers-reduced-motion: reduce) {
  .season-sub,
  .need-itn { transition: none !important; }
}

/* 从「按需求」跳转到具体行程时的定位提示 */
.itn-card.is-flash { animation: itn-flash 1.4s ease; }
@keyframes itn-flash {
  0% { background: rgba(209, 150, 57, .16); }
  100% { background: transparent; }
}
@media (prefers-reduced-motion: reduce) {
  .itn-card.is-flash { animation: none; }
}

/* 从「按需求」跳转到具体行程时的定位提示 */
.itn-card.is-flash { animation: itn-flash 1.4s ease; }
@keyframes itn-flash {
  0% { background: rgba(209, 150, 57, .16); }
  100% { background: transparent; }
}
@media (prefers-reduced-motion: reduce) {
  .itn-card.is-flash { animation: none; }
}

/* ── v140.css ── */
/* ============================================================================
   V1.40 · 设计治理层（token 收敛，不是又一层补丁）
   ----------------------------------------------------------------------------
   诊断（2026-10-23，1440 实测）：
   · 字号 40 档：9.28 / 9.44 / 9.6 / 9.76 / 9.92 / 10.08 / 10.24 / 10.56 / 10.88 /
     11.2 / 11.52 / 11.68 / 11.84 / 12.16 / 12.48 / 12.64 / 12.8 …相邻差 0.3px
   · 底色 11 种：6 种米白（245/241/233、241/238/230、248/245/237、250/248/242、
     232/235/225、223/229/219）+ 3 种墨绿（37/70/56、20/36/30、16/26/23）
   · 正文 p 默认 12.8px；dd 11.52px；标签 9.6px 对纸 2.56:1（低于 4.5:1 下限）
   · 六幕区块一章一个底色，5 种浅色相邻 → 拼布感

   本层做三件事，不改 HTML、不改布局结构：
   1. 收成一套色板：纸 3 阶 + 苔 2 阶 + 墨 5 阶，全部走变量
   2. 收成 10 档字号：12 / 13 / 14 / 15 / 16 / 20 / 28 / 40 / 56 / 72
   3. 所有次要文字抬到 ≥4.5:1；六幕统一为一纸到底，只保留 05 深色章作对比
   ========================================================================== */

:root {
  /* 纸：只有三阶，按功能分，不按心情分 */
  --paper: #f4f1e8;      /* 页面纸 */
  --paper-2: #eae6da;    /* 交替带（section-stone / audience） */
  --paper-3: #fbf9f3;    /* 卡面、面板、可读区 */

  /* 苔：唯一的浅绿带，两阶 */
  --moss-1: #e4e9dc;
  --moss-2: #d7dfd0;

  /* 墨：五阶，文字与深色块共用 */
  --ink: #16211d;
  --ink-2: #1e332a;
  --ink-3: #3f564a;
  --ink-4: #5e6f64;      /* 次要文字：对纸 4.8:1 */
  --ink-5: #7a8a7e;      /* 只允许用于 ≥14px 或纯装饰 */

  --line: rgba(22, 33, 29, .16);
  --line-soft: rgba(22, 33, 29, .09);
  --line-paper: rgba(255, 253, 248, .18);

  /* 十档字号 */
  --fs-1: .75rem;    /* 12 标签、序号、徽章 */
  --fs-2: .8125rem;  /* 13 说明、标签行、脚注 */
  --fs-3: .875rem;   /* 14 次要正文 */
  --fs-4: .9375rem;  /* 15 正文（小屏也是 15，不再掉到 12.8） */
  --fs-5: 1rem;      /* 16 强调正文 */
  --fs-6: 1.25rem;   /* 20 小标题 */
  --fs-7: 1.75rem;   /* 28 条目标题 */
  --fs-8: 2.5rem;    /* 40 章节标题 */
  --fs-9: 3.5rem;    /* 56 大标题 */
  --fs-10: 4.5rem;   /* 72 首屏 */

  --lh-tight: 1.16;
  --lh-body: 1.72;
  --track-cjk: .01em;

  /* 节奏：8px 基准 */
  --sp-1: .5rem; --sp-2: 1rem; --sp-3: 1.5rem; --sp-4: 2rem;
  --sp-5: 3rem; --sp-6: 4.5rem; --sp-7: 6.5rem;

  --ease: cubic-bezier(.22, .61, .36, 1);
}

/* 旧变量重新指向新色板：v12 那套 --v12-* 不再自己长颜色 */
:root {
  --v12-paper: var(--paper);
  --v12-ink: var(--ink);
  --v12-fog: var(--moss-1);
  --v12-line: var(--line);
  --green: #1b3a30;
  --green-2: #2a5040;
  --white: #fffdf8;
  --blue-gray: var(--ink-5);
  --line-light: var(--line-paper);
}

/* ── 1. 底色收敛：11 种 → 5 种 ─────────────────────────────────────────── */

body,
.atlas-explorer,
.brand-archive-hero,
.site-header {
  background: var(--paper);
}

.section-stone,
.audience-section {
  background: var(--paper-2);
}

/* 六幕：一纸到底。原先每章一个色号（#edf0e8 / #e6e6da / #d6e0d5 / #d7d9cc / #e7e8df），
   五块浅色相邻，读起来像拼布。现在只留「开篇苔色 → 正文一纸 → 05 深色章」三段节奏。 */
.delivery-cinema { background: var(--paper); }
.delivery-opening { background: var(--moss-1); }
.delivery-chapter,
.delivery-chapter:nth-child(2),
.delivery-chapter:nth-child(3),
.delivery-chapter:nth-child(4),
.delivery-chapter:nth-child(6) {
  background: var(--paper);
  border-top: 1px solid var(--line-soft);
}
.delivery-chapter-5 { background: var(--ink-2); }

.service-capabilities,
.atlas-map-stage { background: var(--moss-1); }
.atlas-stage,
.contact-v12-entry,
.dest-kpis > div { background: var(--paper-3); }
.contact-v12-entry a[aria-current="true"],
.contact-v12-summary { background: var(--moss-2); }
.atlas-no-visual { background: var(--moss-2); color: var(--ink-3); }
.dest-thumb { background: var(--moss-1); }
.atlas-sheet-controls button { background: var(--moss-1); color: var(--ink-2); }

/* 行线统一：原先 .2 / .22 / .18 / .12 四种粗细混用 */
.atlas-map-stage { border-right: 1px solid var(--line); }
.delivery-actions li,
.atlas-product-row,
.itn-card { border-color: var(--line); }

/* ── 2. 字号收敛：40 档 → 按角色归入 10 档 ────────────────────────────── */

/* 正文：默认 p / dd / li 一律 15px。原先 12.8px，是「潦草感」的第一来源。 */
body p,
body dd,
body dt,
body li {
  font-size: var(--fs-4);
  line-height: var(--lh-body);
  letter-spacing: var(--track-cjk);
}

/* 说明级：13px */
body .itn-caveat,
body .itn-route,
body .need-itn-route,
body .dest-tags,
body .atlas-area-line,
body .atlas-itn-empty,
body .atlas-need-empty,
body .atlas-search-empty-note,
body .atlas-dest-foot,
body .atlas-dest-jump,
body .atlas-panel-season,
body .season-source,
body .delivery-output,
body .world-image-note { font-size: var(--fs-2); }

/* 正文级：14px（真正要读的段落） */
body .itn-summary,
body .dest-note,
body .atlas-need-summary,
body .delivery-actions li { font-size: var(--fs-3); }

/* 标签级：12px（纯索引信息，允许小，但不许低于 12） */
body .itn-badge,
body .itn-open,
body .eyebrow,
body .season-kicker,
body .atlas-panel-meta,
body .atlas-map-source,
body .hero-image-note,
body figcaption,
body small,
body .season-legend em,
body .delivery-chapter-name,
body .chip,
body .dest-index,
body .season-scale span { font-size: var(--fs-1); }

body .itn-cta,
body .need-itn-all,
body .season-sub,
body .atlas-group-head i { font-size: var(--fs-2); }
body .need-itn-name,
body .itn-day { font-size: var(--fs-2); }

/* 标题：非整数字号（44.64 / 60.48 / 93.6 / 83.52）回到刻度 */
h1 { font-size: clamp(2.6rem, 5.6vw, var(--fs-10)); line-height: 1.04; }
h2 { font-size: clamp(2rem, 3.8vw, var(--fs-9)); line-height: 1.12; }
h3 { font-size: var(--fs-7); line-height: 1.25; }
.atlas-province-panel h3,
.atlas-opening h3,
.delivery-chapter-copy h3 { font-size: clamp(2.1rem, 3.4vw, 3.25rem); line-height: 1.14; }
.page-hero h1 { font-size: clamp(2.4rem, 4.6vw, var(--fs-9)); }
.delivery-opening h2 { font-size: clamp(2.4rem, 4.6vw, var(--fs-9)); }
.atlas-heading h2 { font-size: clamp(2.2rem, 4vw, 3.5rem); }

/* ── 3. 对比度：所有次要文字抬到 ≥4.5:1 ───────────────────────────────── */

body .dest-tags,
body .atlas-area-line,
body .itn-caveat,
body .atlas-panel-meta,
body .season-source,
body .atlas-map-source,
body .world-image-note,
body .hero-image-note,
body figcaption,
body small,
body .itn-badge,
body .itn-open,
body .atlas-dest-foot,
body .delivery-field-note {
  color: var(--ink-4);
}

body .dest-note,
body .itn-route,
body .need-itn-route,
body .atlas-need-summary,
body .delivery-actions li { color: var(--ink-3); }

/* 深色章里的反向色 */
.delivery-chapter-5,
.delivery-chapter-5 .delivery-chapter-copy p,
.delivery-chapter-5 .delivery-chapter-name,
.delivery-chapter-5 .delivery-chapter-index { color: #eef1e8; }
.delivery-chapter-5 .delivery-actions li { color: #dfe6d9; border-top-color: var(--line-paper); }
.delivery-chapter-5 .delivery-field-note { color: #dfe6d9; }

/* ── 4. 节奏与细节统一 ─────────────────────────────────────────────────── */

/* 六幕：84svh/760px + 6rem 内边距 → 空得多。压到 72svh/660px，文字块不再漂在两座孤岛上 */
.delivery-chapter { min-height: min(72svh, 660px); }
.delivery-chapter-inner {
  grid-template-columns: minmax(6rem, .42fr) minmax(0, 1.58fr);
  gap: clamp(2rem, 4.2vw, 5rem);
  padding-block: var(--sp-6);
}
.delivery-chapter-index { font-size: clamp(4rem, 8.4vw, 8rem); color: var(--ink-5); }
.delivery-chapter-copy p { max-width: 34em; }
.delivery-opening { padding-block: var(--sp-7) var(--sp-5); }
.delivery-opening > p:last-child { max-width: 36em; font-size: var(--fs-3); color: var(--ink-3); }

/* 段落measure：中文一行的极限是 34–38 字，超过就读不下去 */
.atlas-panel-summary,
.itn-summary,
.dest-note,
.network-caveat p { max-width: 38em; }

/* 细线：统一 1px，统一透明度，不再有四档 */
.itn-card,
.atlas-product-row,
.delivery-actions li,
.dest-item,
.cross-line { border-color: var(--line-soft); }

/* 交互态：原先各组件各写一套 hover，统一到一处 */
a:focus-visible,
button:focus-visible,
summary:focus-visible,
input:focus-visible {
  outline: 2px solid var(--green-2);
  outline-offset: 3px;
}

.itn-card,
.need-itn,
.dest-item { transition: background .18s var(--ease), border-color .18s var(--ease); }
.itn-card:hover,
.need-itn:hover { background: rgba(27, 58, 48, .035); }

/* 逐日安排：全站最密的一块文字（1679 条），原来 b 12.8 / p 11.52 / small 10.24。
   这是「潦草感」最重的地方——客户要看的就是这几天怎么走，不该是全站最小字。 */
.itn-days .itn-day-body b { font-size: var(--fs-4); font-weight: 600; line-height: 1.4; }
.itn-days .itn-day-body p { font-size: var(--fs-3); line-height: 1.66; color: var(--ink-3); }
.itn-days .itn-day-body small { font-size: var(--fs-1); color: var(--ink-4); }
.itn-facts dt { font-size: var(--fs-1); color: var(--ink-4); }
.itn-facts dd { font-size: var(--fs-3); line-height: 1.66; color: var(--ink-3); }
.itn-duration i { font-size: var(--fs-1); }
.itn-duration em { font-size: var(--fs-1); color: var(--ink-4); }
.need-itn-days i { font-size: var(--fs-1); }
.need-itn-go { font-size: var(--fs-2); }
.dest-head em { font-size: var(--fs-1); }
.atlas-group-head em { font-size: var(--fs-1); color: var(--ink-4); }
.atlas-destination-visual figcaption,
.atlas-destination-visual figcaption span { font-size: var(--fs-1); color: #fff; }
.atlas-panel-season span { font-size: var(--fs-1); }
.dest-search-empty b { font-size: var(--fs-5); }
.network-caveat p { font-size: var(--fs-2); color: var(--ink-4); }

/* 索引号、箭头、分组提示：原本 2.0–3.1:1，等于印在纸上没墨 */
.dest-index,
.need-itn-days i,
.need-itn-go,
.atlas-group-head i,
.season-scale span,
.season-sub em,
.atlas-opening > p:first-child,
.atlas-itn-empty,
.atlas-need-empty,
.atlas-search label,
.atlas-search-empty-note { color: var(--ink-4); }

/* 季节窗口小标：金色在纸面上只有 3.9:1，压深一档到 5:1 */
.dest-head em { border-color: rgba(107, 92, 60, .34); color: #6b5c3c; }

/* 压在图上的说明文字：深色底必须用反向色，不能跟着纸面色走 */
.hero-image-note { color: rgba(255, 253, 248, .74); }
.delivery-field-note { color: rgba(255, 253, 248, .78); }
.atlas-destination-visual figcaption,
.atlas-destination-visual figcaption span { color: #fff; }

/* 分组表头：「私家定制旅行」原先被挤成「私家定制旅 / 行」，中文断在词中间最伤专业感。
   改成 auto / 1fr / auto 三栏，标签与条数不换行，说明文字自己让位。 */
.atlas-group-head {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: baseline;
  gap: .5rem;
}
.atlas-group-head b { font-size: var(--fs-2); font-weight: 700; white-space: nowrap; letter-spacing: .02em; color: var(--ink-2); }
.atlas-group-head i { min-width: 0; overflow-wrap: anywhere; letter-spacing: .06em; text-transform: none; }
.atlas-group-head em { margin-left: 0; white-space: nowrap; }

/* 滑轨里的辅助文字：原先 .58rem (#83918a) 对苔色只有 2.9:1，读不出也看不清 */
.atlas-season .season-kicker,
.atlas-season .season-kicker span,
.atlas-season .season-legend,
.atlas-season .season-legend em,
.atlas-season .season-foot p,
.atlas-season .season-source { color: var(--ink-4); }
.atlas-season .season-kicker { font-size: var(--fs-1); letter-spacing: .16em; }
.atlas-season .season-kicker span { font-size: var(--fs-1); letter-spacing: .04em; }
/* 英文副标原先 8.8px，等于排版噪音；给到 11px 只为可读，不参与信息层级 */
.atlas-season .season-readout i { font-size: 11px; letter-spacing: .14em; color: var(--ink-4); }
.atlas-season .season-readout em { font-size: var(--fs-2); color: var(--ink-3); }
.atlas-season .season-legend i.lv { /* 图例色块保留档位配色，不被上面的文字色覆盖 */ }

/* 最后三处 9–10px 的残留：季节 chip、二级需求计数、图例文字 */
.atlas-panel-season .chip { font-size: var(--fs-1); padding: .1rem .38rem; }
.season-sub em { font-size: 11px; }
.season-legend span { font-size: var(--fs-1); }

/* ── 5. 小屏：正文不许缩到 15 以下 ─────────────────────────────────────── */

@media (max-width: 900px) {
  body p, body dd, body dt, body li { font-size: var(--fs-3); }
  body .itn-summary, body .dest-note, body .atlas-need-summary { font-size: var(--fs-3); }
  .itn-days .itn-day-body b { font-size: var(--fs-4); }
  .itn-days .itn-day-body p, .itn-facts dd { font-size: var(--fs-3); }
  h2 { font-size: clamp(1.7rem, 6vw, 2.4rem); }
  .atlas-province-panel h3,
  .atlas-opening h3 { font-size: clamp(1.9rem, 7vw, 2.6rem); }
  .delivery-chapter,
  .delivery-chapter-5 { min-height: 0; padding-block: var(--sp-5); }
  .delivery-chapter-index { font-size: 4.5rem; }
  .delivery-chapter-inner { gap: var(--sp-3); padding-block: var(--sp-4); }
  .season-scale span { font-size: 11px; }
}

@media (max-width: 560px) {
  body p, body dd, body dt, body li { font-size: var(--fs-3); line-height: 1.66; }
  .atlas-panel-summary, .itn-summary, .dest-note { max-width: none; }
}

/* ── v141.css ── */
/* ============================================================================
   V1.41 · 交互组件层（微 UI 校准，A 制版感方向）
   ----------------------------------------------------------------------------
   诊断（2026-10-23，playwright 取 computed style，8 页 × 1440）：
   全站 22 种可交互签名，其中五种语义完全不同的小件——
     主按钮 / 次按钮 / 章节产出框 / 业务形态计数 / 省份 meta 标签——
   统统是「1px 实线 + border-radius 0 + 深色字」同一种容器。
   语义分不出主次，视觉上就只剩一堆框。

   另有一批不在截图里、但同样在漏的地方：
   · 内联链接 142 处是 700 字重，全站到处都是"加粗"，强调失效
   · 输入框 12.8px（0.8rem）——低于 16px，iOS Safari 聚焦时会强制放大页面
   · select 用原生箭头，且 49px 高与同表单里 38px 的 input 不齐
   · 表单 padding 12px 13.6px、标签 padding .04rem .4rem、滑轨按钮 6.4px 11.52px
     ——全是 rem 乘出来的小数，永远对不齐 8px 网格
   · 「菜单」「向下探索」这类中文小标被加了 0.14em 字距，散成一排单字
   · 55 个可点元素高度不足 36px，手指点不准

   本层只做一件事：把「一种容器打天下」换成「按语义分配容器」。
     主操作 → 实底 + 无边框 + 2px 切边
     次操作 → 描边（26%）+ hover 到 55%
     元信息 → 不加框，靠字号与灰度分层
     并列计数 → 竖线分隔，数字加深
   不改信息架构、不改布局列数、不改任何数据口径。
   ========================================================================== */

:root {
  /* 圆角：只三档。0 不再出现在可点元素上 */
  --r-1: 2px;    /* 按钮、输入、标签 */
  --r-2: 4px;    /* 卡片、面板 */
  --r-pill: 999px;

  /* 交互动效：前段快、后段缓，反馈在 0.26s 内完成 */
  --ease-ui: cubic-bezier(.22, .9, .28, 1);
  --dur-ui: .26s;

  /* 焦点环 */
  --ring: #4c6d57;
  --ring-inv: #cfe0d2;

  /* 描边三档 */
  --line-hair: rgba(22, 33, 29, .13);
  --line-edge: rgba(22, 33, 29, .26);
  --line-edge-inv: rgba(244, 241, 232, .26);
  --line-edge-inv-hover: rgba(244, 241, 232, .55);
}

/* ── 01 按钮：500 字重、8px 网格内边距、2px 切边 ───────────────────────── */

body .button {
  min-height: 52px;
  padding: 14px 24px;
  font-size: var(--fs-4);
  font-weight: 500;
  line-height: 1.2;
  letter-spacing: .04em;
  border-radius: var(--r-1);
  border-width: 1px;
  transition: background-color var(--dur-ui) var(--ease-ui),
              border-color var(--dur-ui) var(--ease-ui),
              box-shadow var(--dur-ui) var(--ease-ui);
}

/* 原来只有 translateY(-1px)，人眼感知不到 */
body .button:hover { transform: none; }
body .button-light:hover { background: #fff; box-shadow: 0 2px 16px rgba(12, 26, 20, .2); }
body .button-line {
  background: rgba(16, 35, 27, .14);
  border-color: var(--line-edge-inv);
}
body .button-line:hover {
  background: rgba(244, 241, 232, .08);
  border-color: var(--line-edge-inv-hover);
}
body .button-dark:hover { background: #26503f; box-shadow: 0 2px 16px rgba(12, 26, 20, .18); }
body .button-outline-dark:hover { background: rgba(27, 58, 48, .06); }

/* 导航栏按钮：原来 14.08px / radius 0 / padding 10.4px 16px */
body .header-cta {
  padding: 12px 18px;
  border-radius: var(--r-1);
  font-size: var(--fs-3);
  font-weight: 500;
  letter-spacing: .03em;
  transition: background-color var(--dur-ui) var(--ease-ui);
}
body .header-cta:hover { background: #26503f; }

body .skip-link { border-radius: var(--r-1); padding: 12px 16px; }

/* ── 02 箭头：字符 ↘ 收小一档，悬停时挪 2px ───────────────────────────── */

:where(.button, .header-cta, .world-actions a, .text-link, .dest-link,
       .atlas-province-inquiry, .atlas-dest-jump, .atlas-dest-foot a,
       .delivery-outro a) > span[aria-hidden="true"] {
  display: inline-block;
  font-size: .82em;
  transform: translateY(-.02em);
  transition: transform var(--dur-ui) var(--ease-ui);
}

:where(.button, .world-actions a, .text-link, .dest-link,
       .atlas-province-inquiry, .atlas-dest-jump,
       .delivery-outro a):hover > span[aria-hidden="true"] {
  transform: translate(2px, -2px);
}

/* hero 主按钮换成矢量箭头：字符 ↗ 会随字号变大、和中文基线对不齐 */
body .button > .ui-arrow {
  flex: none;
  transition: transform var(--dur-ui) var(--ease-ui);
}
body .button:hover > .ui-arrow { transform: translate(2px, -2px); }

/* ── 03 链接：下划线离开基线，700 降到 500 ────────────────────────────── */

/*
   原来用 border-bottom 当下划线，它紧贴文字底部（padding-bottom 3.2px），
   落在字里而不是基线下的呼吸区。改用 text-decoration + underline-offset。
*/
body .world-actions a,
body .text-link,
body .dest-link,
body .atlas-province-inquiry,
body .atlas-dest-jump,
body .delivery-outro a {
  border-bottom: 0;
  padding-bottom: 0;
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 5px;
  text-decoration-color: rgba(27, 58, 48, .28);
  transition: text-decoration-color var(--dur-ui) var(--ease-ui),
              color var(--dur-ui) var(--ease-ui);
}
body .world-actions a:hover,
body .text-link:hover,
body .dest-link:hover,
body .atlas-province-inquiry:hover,
body .atlas-dest-jump:hover,
body .delivery-outro a:hover { text-decoration-color: currentColor; }

/* 卡片上的次级入口：原来 13.28px / 700，六处全站最黑 */
body .world-actions a {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-height: 36px;
  padding: 8px 0;
  font-size: var(--fs-2);
  font-weight: 500;
  letter-spacing: .02em;
}

body .text-link {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-height: 40px;
  padding: 8px 0;
  font-size: var(--fs-3);
  font-weight: 500;
  letter-spacing: .02em;
}

body .dest-link {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  min-height: 36px;
  padding: 7px 0;
  font-size: .78rem;
  font-weight: 500;
}

body .atlas-province-inquiry {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-height: 40px;
  padding: 10px 0;
  font-size: var(--fs-2);
  font-weight: 500;
  letter-spacing: .03em;
}

body .atlas-dest-jump {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  min-height: 34px;
  font-size: var(--fs-2);
  font-weight: 500;
}

body .delivery-outro a {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  min-height: 40px;
  padding: 8px 0;
  font-size: var(--fs-3);
  font-weight: 500;
  letter-spacing: .02em;
}

/* ── 04 元信息标签：不加框，靠字号与灰度分层 ──────────────────────────── */

/* 原来是 .04rem .4rem 的上下内边距 —— 0.64px，文字几乎贴着边框。
   元信息不加框，靠字号与灰度分层：这里是「8 条完整行程 · 3–6 天」 */
body .dest-count {
  display: inline;
  padding: 0;
  border: 0;
  border-radius: 0;
  font-size: var(--fs-1);
  font-weight: 400;
  line-height: 1.45;
  letter-spacing: .01em;
  color: var(--ink-4);
  font-variant-numeric: lining-nums;
  white-space: nowrap;
}

/* 并列计数改成竖线分隔、数字加深 —— 它是一组读数，不是三个按钮 */
body .dest-tags {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
}

body .dest-tag {
  display: inline-flex;
  align-items: baseline;
  gap: 4px;
  padding: 0 11px;
  border: 0;
  border-left: 1px solid rgba(22, 33, 29, .2);
  border-radius: 0;
  font-size: .75rem;
  font-weight: 400;
  line-height: 1.5;
  letter-spacing: .01em;
  color: var(--ink-4);
  background: transparent;
  white-space: nowrap;
}
body .dest-tags .dest-tag:first-child {
  padding-left: 0;
  border-left: 0;
}
body .dest-tags .dest-tag:last-child { padding-right: 0; }
body .dest-tag b {
  font-weight: 500;
  font-size: .75rem;
  color: var(--ink-2);
  font-variant-numeric: tabular-nums;
}
body .dest-tag.is-empty {
  opacity: .5;
  border-left-style: dashed;
}

/* 书名号一样的 20px 省名紧跟 12px 计数，去框后容易连读，拉开一点 */
body .dest-head { gap: 10px; }
body .dest-count { margin-left: 2px; }

/* 桌面端：计数与入口分两行右对齐，不再挤成一行 */
@media (min-width: 900px) {
  body .dest-side {
    flex-direction: column;
    flex-wrap: nowrap;
    align-items: flex-end;
    justify-content: flex-start;
    gap: 7px;
  }
  body .dest-tags { width: auto; }
}

body .dest-index {
  font-variant-numeric: lining-nums;
  letter-spacing: .06em;
}

/* 12px 配 0.13em 字距，中文必散。字距只留给英文小标 */
body .atlas-panel-meta {
  font-size: var(--fs-1);
  letter-spacing: .01em;
  color: var(--ink-4);
  font-variant-numeric: lining-nums;
}
body .atlas-panel-meta span + span { letter-spacing: .01em; }

/* 分组表头：标签与条数不换行，数字用等宽 */
body .atlas-group-head em {
  font-variant-numeric: tabular-nums;
  letter-spacing: .02em;
}

/* ── 05 表单：修掉 iOS 放大，统一高度与圆角 ───────────────────────────── */

body input[type="text"],
body input[type="search"],
body input[type="email"],
body input[type="tel"],
body input[type="url"],
body input[type="number"],
body select,
body textarea,
body .project-form select,
body .project-form textarea,
body .project-form input {
  min-height: 46px;
  padding: 12px 14px;
  /* 移动端 16px 是 iOS 不放大页面的硬门槛；桌面再降到 15 */
  font-size: 16px;
  line-height: 1.5;
  border: 1px solid var(--line-hair);
  border-radius: var(--r-1);
  background-color: var(--paper-3);
  color: var(--ink);
  transition: border-color var(--dur-ui) var(--ease-ui),
              background-color var(--dur-ui) var(--ease-ui);
}
body textarea,
body .project-form textarea { min-height: 132px; padding: 13px 14px; }

@media (min-width: 900px) {
  body input[type="text"],
  body input[type="search"],
  body input[type="email"],
  body input[type="tel"],
  body input[type="url"],
  body input[type="number"],
  body select,
  body textarea,
  body .project-form select,
  body .project-form textarea,
  body .project-form input { font-size: var(--fs-4); }
}

body input:not([type="range"]):hover,
body select:hover,
body textarea:hover { border-color: var(--line); }

/* 聚焦态：只给「会填字的框」上纸色底。
   [type="range"] 必须排除——月份/需求滑轨是一层 inset:0 的全宽透明覆盖层，
   一旦被画上不透明底色，整条标尺会被一块纸色盖住（表现为「一拖动就全白」）。 */
body input:not([type="range"]):focus,
body select:focus,
body textarea:focus {
  border-color: var(--ring);
  background-color: var(--paper-3);
}

/* 原生下拉箭头在纸色底上不协调，换成一枚细线箭头 */
body select,
body .project-form select {
  appearance: none;
  -webkit-appearance: none;
  padding-right: 42px;
  background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12' fill='none'%3E%3Cpath d='M2.5 4.5L6 8l3.5-3.5' stroke='%235e6f64' stroke-width='1.3' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 14px center;
  background-size: 12px 12px;
  cursor: pointer;
}

/* 检索框：右侧留给"清除"，不留到箭头那一档 */
body .atlas-search-field input { padding-right: 44px; }

/* 字段名：中文 700 在 13px 上会糊，降到 500 */
body .project-form label > span {
  font-size: var(--fs-2);
  font-weight: 500;
  letter-spacing: .02em;
  line-height: 1.5;
  color: var(--ink-2);
}

/* 原生日期图标的紫黑色与纸色不搭，淡化到 45% */
body input[type="date"]::-webkit-calendar-picker-indicator {
  opacity: .45;
  cursor: pointer;
  transition: opacity var(--dur-ui) var(--ease-ui);
}
body input[type="date"]::-webkit-calendar-picker-indicator:hover { opacity: .85; }

body input::placeholder,
body textarea::placeholder { color: #8a968c; opacity: 1; }

/* ── 06 其余控件 ──────────────────────────────────────────────────────── */

/* 「菜单」两个字被加了 0.14em 字距（v12 的 .js .menu-toggle） */
html.js body .menu-toggle,
body .menu-toggle {
  font-size: var(--fs-1);
  letter-spacing: .06em;
}

/* 「向下探索」11.52px + 1.38px 字距 */
body .hero-scroll {
  font-size: var(--fs-1);
  letter-spacing: .1em;
}

/* 滑轨两个小按钮：原来 10.88px、padding 6.4px 11.52px、34px 高 */
body .season-play,
body .season-reset {
  min-height: 36px;
  padding: 8px 14px;
  border-radius: var(--r-1);
  font-size: var(--fs-1);
  font-weight: 500;
  letter-spacing: .02em;
  border: 1px solid var(--line-hair);
  transition: background-color var(--dur-ui) var(--ease-ui),
              border-color var(--dur-ui) var(--ease-ui),
              color var(--dur-ui) var(--ease-ui);
}
body .season-play { background: var(--paper-3); border-color: var(--line-hair); }
body .season-play:hover { background: var(--paper-2); }
body .season-reset:hover { border-color: var(--line); color: var(--ink-2); }

/* 三视图切换：20.8 对 10.88，比例 2:1 断裂，副标还带 0.06em 字距 */
body .atlas-viewswitch button {
  border-radius: 0;
  padding: 8px 2px 12px;
  transition: border-color var(--dur-ui) var(--ease-ui),
              color var(--dur-ui) var(--ease-ui);
}
body .atlas-viewswitch b {
  font-family: var(--serif);
  font-size: 1.0625rem;
  font-weight: 400;
  letter-spacing: .04em;
  transition: color var(--dur-ui) var(--ease-ui);
}
body .atlas-viewswitch span {
  font-size: var(--fs-1);
  letter-spacing: .01em;
  font-variant-numeric: lining-nums;
}
body .atlas-viewswitch button:hover b { color: var(--ink-2); }
body .atlas-viewswitch button[aria-selected="true"] b { color: var(--ink); }
/* 未选中的 tab 悬停时给一条淡底线，提示"这里可以切" */
body .atlas-viewswitch button[aria-selected="false"]:hover { border-bottom-color: var(--line); }
body .atlas-viewswitch button[aria-selected="true"] { border-bottom-color: var(--moss); }

/* 面板里的"展开详情 / 关闭"小钮 */
body .atlas-sheet-controls button {
  border-radius: var(--r-1);
  transition: background-color var(--dur-ui) var(--ease-ui);
}

/* 文字版省份索引的可点行 */
body .atlas-text-index summary {
  min-height: 36px;
  display: flex;
  align-items: center;
  border-bottom: 0;
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 4px;
  text-decoration-color: rgba(49, 83, 65, .3);
}
body .atlas-text-index summary:hover { text-decoration-color: rgb(49, 83, 65); }

/* 关于页的人群账本：整行可点，原来是 8px / 1.6px / 11.2px 的偏心内边距 */
body .audience-ledger button {
  padding: 16px 0;
  border-radius: 0;
  transition: background-color var(--dur-ui) var(--ease-ui),
              border-color var(--dur-ui) var(--ease-ui);
}
body .audience-ledger button:hover { background: rgba(22, 33, 29, .025); }
body .audience-ledger button.is-active { background: transparent; }

/* ── 07 章节产出：一个框改成"上线 + 标签在上、值在下" ─────────────────── */

/*
   原来 1px 直角框把「本阶段产出」和「项目约束清单」平权装在一起，
   标签比内容更抢眼。改成上线分隔 + 两级字号，读者先读到值。
*/
body .delivery-actions { gap: 10px; max-width: 42rem; }

/* 「——」当项目符号是中文写作里最省事的起头方式，去掉，让上线做分隔 */
body .delivery-actions li {
  padding: 12px 0 0;
  border-top-color: var(--line-hair);
}
body .delivery-actions li::before { content: none; }
body .delivery-chapter-5 .delivery-actions li::before { content: none; }

body .delivery-output {
  display: grid;
  gap: 6px;
  width: 100%;
  max-width: 42rem;
  min-width: 0;
  margin: 38px 0 0;
  padding: 14px 0 0;
  border: 0;
  border-top: 1px solid var(--line);
  border-radius: 0;
  background: none;
}
body .delivery-output > span {
  font-size: 11px;
  font-weight: 500;
  letter-spacing: .1em;
  line-height: 1.5;
  color: var(--ink-4);
}
body .delivery-output > b {
  font-family: var(--serif);
  font-size: var(--fs-5);
  font-weight: 400;
  letter-spacing: .02em;
  line-height: 1.5;
  color: var(--ink);
}
body .delivery-chapter-5 .delivery-output { border-top-color: var(--line-paper); }
body .delivery-chapter-5 .delivery-output > span { color: rgba(244, 241, 232, .55); }
body .delivery-chapter-5 .delivery-output > b { color: #f1eee4; }

/* ── 08 焦点环：全站统一，键盘用户能看见自己在哪 ──────────────────────── */

:where(a, button, input, select, textarea, summary, [tabindex]):focus-visible {
  outline: 2px solid var(--ring);
  outline-offset: 3px;
  border-radius: var(--r-1);
}
/* 深色底上换浅色环 */
:where(.prototype-hero, .delivery-chapter-5, .footer-inquiry, .atlas-stage.is-dark) :focus-visible {
  outline-color: var(--ring-inv);
}

/* ── 09 触控目标：手指点得准 ──────────────────────────────────────────── */
@media (pointer: coarse) {
  body .world-actions a,
  body .dest-link,
  body .atlas-dest-jump,
  body .text-link,
  body .atlas-province-inquiry { min-height: 44px; }

  /* 触屏上页头与展开菜单的每一项都要过得去手指 */
  body .site-header a,
  body .site-header button,
  body .brand,
  body .mega-links a,
  body .mega-stage-links a { min-height: 44px; }

  body .dest-count,
  body .dest-tag { padding: 6px 11px; }

  body .season-play,
  body .season-reset { min-height: 40px; }

  body .atlas-text-index summary { min-height: 44px; }
}

/* ── 10 三类默认真空：选区、滚动条、减动效 ────────────────────────────── */

/* 默认的选区蓝在纸色上是唯一一处"系统味"，换成苔色淡底 */
::selection { background: rgba(76, 109, 87, .24); color: var(--ink); }

/* 滚动条跟着纸色走，不要再出现系统灰 */
html { scrollbar-color: rgba(22, 33, 29, .26) transparent; scrollbar-width: thin; }
body ::-webkit-scrollbar { width: 10px; height: 10px; }
body ::-webkit-scrollbar-track { background: transparent; }
body ::-webkit-scrollbar-thumb {
  background: rgba(22, 33, 29, .2);
  border: 3px solid transparent;
  border-radius: 999px;
  background-clip: padding-box;
}
body ::-webkit-scrollbar-thumb:hover { background: rgba(22, 33, 29, .34); background-clip: padding-box; }

/* 系统开了"减少动态效果"就全部停掉，不要跟它对着干 */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
    scroll-behavior: auto !important;
  }
}

/* ── v142.css ── */
/* ============================================================================
   V1.42 · 案例台账层
   ----------------------------------------------------------------------------
   案例页从「三类项目的组织方式」改成「四个已交付项目的台账」。
   这一层只解决一件事：让凭证型内容在版面上读得出层次——
   编号栏 → 标题与导语 → 事实条 → 控制点与凭证 → 影像 → 成本结构。

   沿用 v140 的 token 与 v141 的制版感：2px 切边、1px 细线、500 字重、
   中文零字距、220–280ms 缓动。不新增颜色，不加圆角。
   ========================================================================== */

/* ── 1. 开篇：短一点 ─────────────────────────────────────────────────────── */

.case-intro .prose.large p + p {
  margin-top: var(--sp-2);
}

/* ── 2. 案例块 ──────────────────────────────────────────────────────────── */

/* 列表统一去默认标记：本层所有列表的序号与分隔都是自己画的 */
.case-record ul,
.case-record ol {
  list-style: none;
  margin: 0;
  padding: 0;
}

.case-ledger .section-heading {
  margin-bottom: var(--sp-4);
}

.case-record {
  position: relative;
  background: var(--paper-3);
  border-top: 2px solid var(--ink);
  padding: var(--sp-4) var(--sp-4) var(--sp-5);
  margin-top: var(--sp-5);
}

.case-record:first-of-type {
  margin-top: var(--sp-2);
}

/* 编号栏：一行放完，右侧班期贴边 */
.case-record-bar {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: var(--sp-1) var(--sp-2);
  padding-bottom: var(--sp-2);
  border-bottom: 1px solid var(--line-soft);
  font-size: var(--fs-1);
  letter-spacing: 0;
  color: var(--ink-4);
}

.case-record-bar .case-shape {
  display: inline-flex;
  align-items: center;
  height: 20px;
  padding: 0 8px;
  background: var(--ink);
  color: var(--paper-3);
  font-size: 10.5px;
  font-weight: 500;
  letter-spacing: .08em;
}

.case-record-bar .case-id {
  font-variant-numeric: tabular-nums;
  letter-spacing: .04em;
}

.case-record-bar .case-client {
  color: var(--ink-3);
}

.case-record-bar .case-period {
  margin-left: auto;
  font-variant-numeric: tabular-nums;
}

/* 标题与导语：双栏对位，标题窄、导语宽 */
.case-record-head {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.15fr);
  gap: var(--sp-3) var(--sp-5);
  align-items: start;
  padding: var(--sp-3) 0 var(--sp-4);
}

.case-record-head h2,
.case-record-head h3 {
  font-family: var(--serif);
  font-size: var(--fs-7);
  font-weight: 400;
  line-height: 1.24;
  letter-spacing: 0;
  color: var(--ink);
}

.case-subtitle {
  margin-top: 6px;
  font-size: var(--fs-3);
  color: var(--ink-4);
  font-variant-numeric: tabular-nums;
}

.case-lead {
  font-size: var(--fs-5);
  line-height: 1.66;
  color: var(--ink-2);
  max-width: 34em;
}

/* ── 3. 事实条：一排放完，竖线分隔 ─────────────────────────────────────── */

.case-facts {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 0;
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
}

.case-facts > div {
  padding: 12px 14px 14px;
  border-left: 1px solid var(--line-soft);
}

.case-facts > div:first-child {
  border-left: 0;
  padding-left: 0;
}

/* 覆盖范围单独占一行：地名多，挤在半栏里会被拆成竖排 */
.case-facts > div[data-wide] {
  grid-column: 1 / -1;
  border-left: 0;
  padding-left: 0;
  border-top: 1px solid var(--line-soft);
}

.case-facts dt {
  font-size: 10.5px;
  font-weight: 500;
  letter-spacing: .1em;
  color: var(--ink-5);
}

.case-facts dd {
  margin-top: 5px;
  font-size: var(--fs-3);
  line-height: 1.5;
  color: var(--ink-2);
  font-variant-numeric: tabular-nums;
}

/* ── 4. 正文：左控制点、右凭证 ─────────────────────────────────────────── */

.case-body {
  display: grid;
  grid-template-columns: minmax(0, 1.65fr) minmax(0, 1fr);
  gap: var(--sp-4) var(--sp-5);
  padding: var(--sp-4) 0 0;
}

.case-controls h3,
.case-controls h4,
.case-side h4,
.case-cost h4 {
  font-size: 10.5px;
  font-weight: 500;
  letter-spacing: .1em;
  color: var(--ink-5);
}

.case-controls ol {
  margin-top: var(--sp-2);
  display: grid;
  gap: 18px;
}

.case-controls li {
  display: grid;
  grid-template-columns: 32px minmax(0, 1fr);
  gap: 0 12px;
}

.case-controls li > span {
  font-family: var(--serif);
  font-size: var(--fs-4);
  color: var(--ink-5);
  font-variant-numeric: tabular-nums;
  line-height: 1.5;
}

.case-controls li b {
  display: block;
  font-size: var(--fs-4);
  font-weight: 500;
  color: var(--ink);
  line-height: 1.5;
}

.case-controls li p {
  margin-top: 4px;
  font-size: var(--fs-3);
  line-height: 1.72;
  color: var(--ink-3);
  max-width: 40em;
}

/* 右栏：三块，细线分隔，不用框 */
.case-side {
  display: grid;
  gap: 18px;
  align-content: start;
  padding-left: var(--sp-3);
  border-left: 1px solid var(--line);
}

.case-side-block + .case-side-block {
  padding-top: 16px;
  border-top: 1px solid var(--line-soft);
}

.case-deliverables,
.case-evidence {
  margin-top: 10px;
  display: grid;
  gap: 7px;
}

.case-deliverables li {
  position: relative;
  padding-left: 13px;
  font-size: var(--fs-3);
  line-height: 1.6;
  color: var(--ink-3);
}

.case-deliverables li::before {
  content: "";
  position: absolute;
  left: 0;
  top: .68em;
  width: 5px;
  height: 1px;
  background: var(--ink-4);
}

.case-evidence li {
  display: grid;
  gap: 2px;
}

.case-evidence li > span {
  font-size: 10px;
  letter-spacing: .08em;
  color: var(--ink-5);
}

.case-evidence li b {
  font-size: var(--fs-3);
  font-weight: 500;
  color: var(--ink-2);
  line-height: 1.5;
}

.case-evidence li p {
  font-size: var(--fs-2);
  line-height: 1.6;
  color: var(--ink-4);
}

.case-open {
  padding: 14px 16px;
  background: var(--moss-1);
}

.case-open h4 {
  color: var(--ink-3);
}

.case-open ul {
  margin-top: 8px;
  display: grid;
  gap: 6px;
}

.case-open li {
  position: relative;
  padding-left: 12px;
  font-size: var(--fs-2);
  line-height: 1.62;
  color: var(--ink-3);
}

.case-open li::before {
  content: "·";
  position: absolute;
  left: 2px;
  color: var(--ink-4);
}

/* ── 5. 影像 ────────────────────────────────────────────────────────────── */

.case-gallery {
  display: grid;
  gap: 10px;
  margin-top: var(--sp-4);
}

.case-gallery[data-count="1"] {
  grid-template-columns: minmax(0, 30rem);
}

.case-gallery[data-count="2"] {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.case-gallery[data-count="3"],
.case-gallery[data-count="4"] {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}

.case-gallery[data-count="5"],
.case-gallery[data-count="6"] {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.case-gallery figure {
  position: relative;
  overflow: hidden;
  background: var(--paper-2);
}

.case-gallery img {
  display: block;
  width: 100%;
  height: auto;
}

.case-gallery figcaption {
  position: absolute;
  left: 0;
  bottom: 0;
  padding: 6px 9px;
  background: rgba(16, 26, 22, .72);
  color: #f3f0e7;
  font-size: 11px;
  letter-spacing: 0;
  line-height: 1.4;
}

.case-media-note {
  margin-top: 10px;
  font-size: var(--fs-2);
  line-height: 1.6;
  color: var(--ink-4);
}

/* 竖图组：窄屏两列，避免单列过高 */
@media (max-width: 720px) {
  .case-gallery[data-count="4"],
  .case-gallery[data-count="5"],
  .case-gallery[data-count="6"] {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .case-gallery[data-count="3"] {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

/* ── 6. 成本结构：横条，不给金额 ───────────────────────────────────────── */

/* 科目清单：只列类别，不列单价 */
.case-subjects {
  margin-top: var(--sp-4);
  padding-top: var(--sp-3);
  border-top: 1px solid var(--line);
}

.case-subjects ul {
  margin-top: 12px;
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.case-subjects li {
  padding: 6px 12px;
  border: 1px solid var(--line);
  background: var(--paper);
  font-size: var(--fs-2);
  color: var(--ink-3);
  font-variant-numeric: tabular-nums;
}

.case-cost {
  margin-top: var(--sp-4);
  padding-top: var(--sp-3);
  border-top: 1px solid var(--line);
}

.case-cost-head {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  justify-content: space-between;
  gap: 6px var(--sp-2);
}

.case-cost-head p,
.case-cost.is-empty p {
  font-size: var(--fs-2);
  color: var(--ink-4);
  line-height: 1.6;
}

.case-cost.is-empty p {
  margin-top: 8px;
  max-width: 46em;
}

.cost-rows {
  margin-top: 14px;
  display: grid;
  gap: 8px;
  max-width: 52rem;
}

/* 带补注的支出结构要更宽，右列才有位置 */
.cost-rows:has(li[data-note]) {
  max-width: 68rem;
}

/* 带补注的支出结构要更宽，右列才有位置 */
.cost-rows:has(li[data-note]) {
  max-width: 68rem;
}

.cost-rows li {
  display: grid;
  grid-template-columns: 5.5em minmax(0, 1fr) 3.2em;
  align-items: center;
  gap: 12px;
}

/* 最大一项加深：注册表按占比降序排列，首行即最大项 */
.cost-rows li:first-child .cost-track i {
  background: var(--ink);
}

.cost-rows li:first-child .cost-label,
.cost-rows li:first-child b {
  color: var(--ink);
}

.cost-label {
  font-size: var(--fs-2);
  color: var(--ink-3);
}

.cost-track {
  display: block;
  height: 8px;
  background: var(--line-soft);
}

.cost-track i {
  display: block;
  height: 100%;
  width: var(--w);
  background: var(--ink-3);
}

.cost-rows b {
  font-size: var(--fs-2);
  font-weight: 500;
  color: var(--ink-2);
  font-variant-numeric: tabular-nums;
  text-align: right;
}

/* ── 6.5 一句话摘要：给答案引擎的入口句 ───────────────────────────────── */

.case-summary {
  margin-top: var(--sp-3);
  padding-left: 14px;
  border-left: 2px solid var(--ink);
  font-size: var(--fs-4);
  line-height: 1.72;
  color: var(--ink-2);
  max-width: 46em;
}

/* ── 6.6 人均区间：数字最大，口径在右 ─────────────────────────────────── */

.case-price {
  display: grid;
  grid-template-columns: minmax(0, auto) minmax(0, 1fr);
  align-items: end;
  gap: var(--sp-1) var(--sp-4);
  margin-top: var(--sp-4);
  padding-top: var(--sp-3);
  border-top: 1px solid var(--line);
}

.case-price-main {
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: 4px 10px;
}

/* 计价单位可能很长（如「人均地接成本」），换行时不要把整行撑出屏幕 */
.case-price-main > * {
  white-space: nowrap;
}

.case-price-label {
  font-size: 10.5px;
  font-weight: 500;
  letter-spacing: .1em;
  color: var(--ink-4);
}

.case-price-main b {
  font-family: var(--serif);
  font-size: clamp(26px, 3.1vw, 34px);
  font-weight: 400;
  line-height: 1;
  letter-spacing: -.01em;
  font-variant-numeric: tabular-nums;
  color: var(--ink);
}

.case-price-unit {
  font-size: var(--fs-2);
  color: var(--ink-4);
}

.case-price-badge {
  align-self: center;
  padding: 3px 8px 4px;
  border: 1px solid var(--line);
  font-size: 10.5px;
  font-style: normal;
  letter-spacing: .06em;
  color: var(--ink-3);
  white-space: nowrap;
}

/* 参考区间用虚线边框区分：这是估算，不是结算 */
/* 已结算是实线深色，参考区间是虚线浅色：一眼分得清哪个能当凭据 */
.case-price[data-confidence="SETTLED"] .case-price-badge {
  border-color: var(--ink);
  color: var(--ink);
}

.case-price[data-confidence="REFERENCE"] .case-price-badge {
  border-style: dashed;
}

.case-price-basis {
  font-size: var(--fs-2);
  line-height: 1.62;
  color: var(--ink-4);
  text-align: right;
}

/* ── 6.7 这个价格包含什么 ─────────────────────────────────────────────── */

.case-offer {
  display: grid;
  grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr);
  gap: var(--sp-4) var(--sp-5);
  margin-top: var(--sp-4);
  padding-top: var(--sp-3);
  border-top: 1px solid var(--line);
}

.case-offer h4 {
  font-size: 10.5px;
  font-weight: 500;
  letter-spacing: .1em;
  color: var(--ink-4);
}

.case-offer ul {
  margin-top: 10px;
  display: grid;
  gap: 6px;
}

.case-offer li {
  position: relative;
  padding-left: 14px;
  font-size: var(--fs-2);
  line-height: 1.64;
  color: var(--ink-2);
}

/* 短横线代替圆点：与制版感的 1px 语汇一致 */
.case-offer li::before {
  content: "";
  position: absolute;
  left: 0;
  top: .64em;
  width: 6px;
  height: 1px;
  background: var(--ink-4);
}

.case-offer .is-exclude li {
  color: var(--ink-4);
}

.case-offer .is-exclude li::before {
  background: var(--line-hair);
}

/* ── 6.8 问答：不折叠，纯文本也能读到 ─────────────────────────────────── */

.case-faq {
  margin-top: var(--sp-4);
  padding-top: var(--sp-3);
  border-top: 1px solid var(--line);
}

.case-faq > h3,
.case-faq > h4 {
  font-size: 10.5px;
  font-weight: 500;
  letter-spacing: .1em;
  color: var(--ink-4);
}

.faq-list {
  display: grid;
  border-top: 1px solid var(--line-soft);
  margin-top: var(--sp-2);
}

.case-faq .faq-list {
  margin-top: var(--sp-2);
  border-top: 0;
}

.faq-item {
  padding: var(--sp-2) 0;
  border-bottom: 1px solid var(--line-soft);
}

.faq-item:first-child {
  padding-top: var(--sp-2);
}

.faq-item h3,
.faq-item h4,
.faq-item h5 {
  font-family: var(--serif);
  font-size: var(--fs-5);
  font-weight: 400;
  line-height: 1.5;
  color: var(--ink);
}

.faq-item p {
  margin-top: 8px;
  font-size: var(--fs-3);
  line-height: 1.74;
  color: var(--ink-2);
  max-width: 42em;
}

/* ── 6.9 价格一览表 ───────────────────────────────────────────────────── */

.price-table {
  width: 100%;
  border-collapse: collapse;
  margin-top: var(--sp-2);
}

.price-table caption {
  text-align: left;
  padding-bottom: 12px;
  font-size: 10.5px;
  font-weight: 500;
  letter-spacing: .1em;
  color: var(--ink-4);
}

.price-table th,
.price-table td {
  padding: 14px 16px 14px 0;
  border-bottom: 1px solid var(--line-soft);
  text-align: left;
  vertical-align: baseline;
  font-size: var(--fs-2);
  font-weight: 400;
  color: var(--ink-2);
}

.price-table thead th {
  padding-top: 0;
  padding-bottom: 10px;
  border-bottom: 1px solid var(--line);
  font-size: 10.5px;
  font-weight: 500;
  letter-spacing: .1em;
  color: var(--ink-4);
  white-space: nowrap;
}

.price-table tbody th {
  color: var(--ink);
}

.price-table tbody th span {
  display: block;
  margin-top: 4px;
  font-size: var(--fs-1);
  font-weight: 400;
  color: var(--ink-4);
}

.price-table td b {
  font-family: var(--serif);
  font-size: 17px;
  font-weight: 400;
  font-variant-numeric: tabular-nums;
  color: var(--ink);
}

.price-table-note {
  margin-top: 12px;
  font-size: var(--fs-1);
  line-height: 1.62;
  color: var(--ink-5);
}

/* ── 7. 响应式 ─────────────────────────────────────────────────────────── */

@media (max-width: 1080px) {
  .case-record {
    padding: var(--sp-3);
  }
  .case-record-head {
    grid-template-columns: minmax(0, 1fr);
    gap: var(--sp-2);
  }
  .case-facts {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
  .case-facts > div:nth-child(4) {
    border-left: 0;
    padding-left: 0;
  }
  .case-facts > div:nth-child(n + 4) {
    border-top: 1px solid var(--line-soft);
  }
  /* 覆盖范围跨整行，避免窄列里被拆成竖排地名 */
  .case-facts > div[data-wide] {
    grid-column: 1 / -1;
    border-left: 0;
    padding-left: 0;
    border-top: 1px solid var(--line-soft);
  }
  .case-body {
    grid-template-columns: minmax(0, 1fr);
  }
  .case-side {
    padding-left: 0;
    border-left: 0;
    padding-top: var(--sp-3);
    border-top: 1px solid var(--line);
  }
  .case-price {
    grid-template-columns: minmax(0, 1fr);
  }
  .case-price-basis {
    text-align: left;
  }
  .case-offer {
    grid-template-columns: minmax(0, 1fr);
  }
}

@media (max-width: 720px) {
  .case-record {
    padding: var(--sp-3) var(--sp-2) var(--sp-4);
    margin-top: var(--sp-4);
  }
  .case-record-head h2,
  .case-record-head h3 {
    font-size: var(--fs-6);
  }
  .case-lead {
    font-size: var(--fs-4);
  }
  .case-facts {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .case-facts > div:nth-child(odd) {
    border-left: 0;
    padding-left: 0;
  }
  .case-facts > div:nth-child(n + 3) {
    border-top: 1px solid var(--line-soft);
  }
  .case-record-bar .case-period {
    margin-left: 0;
    width: 100%;
  }
  .case-gallery[data-count="1"] {
    grid-template-columns: minmax(0, 1fr);
  }
  .cost-rows li {
    grid-template-columns: 4.6em minmax(0, 1fr) 3em;
    gap: 8px;
  }
  /* 价格表在窄屏转成逐条卡片：五列横向挤压会读不出对应关系 */
  .price-table {
    display: block;
  }
  .price-table caption {
    display: block;
    width: auto;
    padding-bottom: 10px;
  }
  .price-table thead {
    display: none;
  }
  .price-table,
  .price-table tbody,
  .price-table tr,
  .price-table th,
  .price-table td {
    display: block;
  }
  .price-table tr {
    padding: 14px 0;
    border-bottom: 1px solid var(--line-soft);
  }
  .price-table tbody th,
  .price-table td {
    padding: 0;
    border: 0;
  }
  .price-table tbody th {
    font-size: var(--fs-4);
  }
  .price-table td {
    margin-top: 3px;
    font-size: var(--fs-1);
    color: var(--ink-4);
  }
  .price-table td::before {
    content: attr(data-label) " · ";
    color: var(--ink-5);
  }
  .price-table td b {
    font-size: 15px;
  }
  .case-price-main b {
    font-size: 28px;
  }
  .case-price-badge {
    margin-left: auto;
  }
}

/* 触屏：案例块内的可点区域（无链接，仅图注不遮挡内容） */
@media (pointer: coarse) {
  .case-gallery figcaption {
    font-size: 11px;
  }
}

/* ── 4. 三条业务线：线卡、对照表、口径徽标（V1.12） ─────────────────────── */

.line-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--sp-2);
  margin-top: var(--sp-4);
}

.line-card {
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: var(--sp-3);
  border: 1px solid var(--line);
  background: var(--paper-3);
  text-decoration: none;
  color: inherit;
  transition: border-color .18s ease, transform .18s ease;
}

.line-card:hover,
.line-card:focus-visible {
  border-color: var(--ink);
  transform: translateY(-2px);
}

.line-card-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 8px;
}

.line-card-head span {
  font-family: var(--serif);
  font-size: var(--fs-6);
  line-height: 1.2;
  color: var(--ink);
}

.line-card-head em {
  font-style: normal;
  font-size: 10.5px;
  letter-spacing: .08em;
  color: var(--ink-4);
  border: 1px solid var(--line);
  padding: 2px 7px 3px;
  white-space: nowrap;
}

.line-card-def {
  font-size: var(--fs-2);
  line-height: 1.7;
  color: var(--ink-2);
}

.line-card-ask {
  font-size: var(--fs-1);
  line-height: 1.62;
  color: var(--ink-4);
  padding-top: 8px;
  border-top: 1px solid var(--line-soft);
}

.line-card-arrow {
  margin-top: auto;
  font-size: 12px;
  color: var(--ink-4);
}

/* 对照表：这张表是整页的结论，先给结论再看细节 */
.compare-wrap {
  margin-top: var(--sp-4);
  overflow-x: auto;
}

.compare-table {
  width: 100%;
  border-collapse: collapse;
  font-size: var(--fs-2);
}

.compare-table caption {
  text-align: left;
  font-size: var(--fs-2);
  line-height: 1.7;
  color: var(--ink-4);
  padding-bottom: var(--sp-2);
  max-width: 48em;
}

.compare-table thead th {
  text-align: left;
  font-size: 10.5px;
  font-weight: 500;
  letter-spacing: .1em;
  color: var(--ink-4);
  padding: 8px 12px;
  border-bottom: 1px solid var(--ink);
  white-space: nowrap;
}

.compare-table tbody th {
  text-align: left;
  font-weight: 500;
  font-size: var(--fs-1);
  letter-spacing: .04em;
  color: var(--ink-4);
  padding: 12px;
  border-bottom: 1px solid var(--line-soft);
  width: 16%;
  white-space: nowrap;
}

.compare-table td {
  padding: 12px;
  border-bottom: 1px solid var(--line-soft);
  color: var(--ink);
  line-height: 1.55;
}

.compare-table td:last-child {
  color: var(--ink-2);
}

/* 口径徽标：已交付是实线，标准产品是虚线 */
.case-record-bar .case-basis {
  display: inline-flex;
  align-items: center;
  height: 20px;
  padding: 0 8px;
  border: 1px dashed var(--line);
  font-size: 10.5px;
  letter-spacing: .08em;
  color: var(--ink-4);
}

.case-record[data-basis="DELIVERED"] .case-basis {
  border-style: solid;
  border-color: var(--ink);
  color: var(--ink);
}

.case-product {
  font-size: 10.5px;
  letter-spacing: .1em;
  color: var(--ink-4);
  margin-bottom: 6px;
}

/* 标准产品不标价：数字位换成口径说明 */
.case-price.is-open .case-price-main b {
  font-family: var(--serif);
  font-size: 22px;
  font-weight: 400;
  letter-spacing: 0;
}

.case-price.is-open .case-price-badge {
  border-style: dashed;
  color: var(--ink-4);
}

.case-offer[data-cols="3"] {
  grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr) minmax(0, .9fr);
}

.case-offer .is-optional h4 {
  color: var(--ink-4);
}

@media (max-width: 980px) {
  .line-grid {
    grid-template-columns: 1fr;
  }
  .case-offer[data-cols="3"] {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  }
}

@media (max-width: 720px) {
  .compare-table thead {
    display: none;
  }
  .compare-table tbody tr {
    display: grid;
    grid-template-columns: 1fr;
    gap: 0;
    padding: 12px 0;
    border-bottom: 1px solid var(--line);
  }
  .compare-table tbody th {
    width: auto;
    white-space: normal;
    padding: 0 0 6px;
    border: 0;
    font-size: 10.5px;
    letter-spacing: .1em;
  }
  .compare-table td {
    padding: 3px 0;
    border: 0;
    font-size: var(--fs-2);
  }
  .compare-table td::before {
    content: attr(data-col) " · ";
    color: var(--ink-5);
    font-size: var(--fs-1);
  }
  .case-offer[data-cols="3"] {
    grid-template-columns: 1fr;
    gap: var(--sp-3);
  }
  .case-offer[data-cols="3"] .case-offer-col + .case-offer-col {
    padding-top: var(--sp-3);
    border-top: 1px solid var(--line-soft);
  }
  .case-price.is-open .case-price-main {
    flex-wrap: wrap;
  }
}

/* ── 5. 人均是怎么加出来的：标准产品不给总数，给算法（V1.13） ───────────── */

.case-quote {
  margin-top: var(--sp-3);
  padding-top: var(--sp-3);
  border-top: 1px solid var(--line);
}

.case-quote > h4 {
  font-size: 10.5px;
  font-weight: 500;
  letter-spacing: .12em;
  color: var(--ink-4);
  margin: 0 0 var(--sp-2);
}

.case-quote > dl {
  margin: 0;
  display: block;
}

.case-quote-item {
  display: grid;
  grid-template-columns: 190px minmax(0, 1fr);
  gap: 2px var(--sp-3);
  padding: 11px 0;
  border-bottom: 1px solid var(--line-soft);
}

.case-quote-item:last-child {
  border-bottom: 0;
}

.case-quote-item dt {
  font-size: var(--fs-2);
  color: var(--ink);
  line-height: 1.5;
}

.case-quote-item dt em {
  display: block;
  margin-top: 3px;
  font-style: normal;
  font-size: 10.5px;
  letter-spacing: .06em;
  color: var(--ink-4);
}

.case-quote-item dd {
  margin: 0;
  font-size: var(--fs-2);
  line-height: 1.72;
  color: var(--ink-2);
}

.case-quote .case-media-note {
  margin-top: var(--sp-2);
}

@media (max-width: 720px) {
  .case-quote-item {
    grid-template-columns: 1fr;
    gap: 4px;
  }
  .case-quote-item dt {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 8px;
  }
  .case-quote-item dt em {
    margin-top: 0;
  }
}

/* ── 6. 联系页：三步说明与公开渠道（V1.13） ───────────────────────────── */

.contact-steps {
  list-style: none;
  margin: var(--sp-3) 0 0;
  padding: 0;
  border-top: 1px solid var(--line-soft);
  max-width: 34em;
}

.contact-steps li {
  display: flex;
  gap: 14px;
  align-items: baseline;
  padding: 10px 0;
  border-bottom: 1px solid var(--line-soft);
  font-size: var(--fs-2);
  line-height: 1.65;
  color: var(--ink-2);
}

.contact-steps li span {
  flex: none;
  font-size: 10.5px;
  letter-spacing: .08em;
  color: var(--ink-4);
}

.contact-channels {
  list-style: none;
  margin: var(--sp-3) 0 0;
  padding: 0;
  border-top: 1px solid var(--line);
  max-width: 34em;
}

.contact-channels li {
  display: flex;
  gap: 14px;
  align-items: baseline;
  padding: 10px 0;
  border-bottom: 1px solid var(--line-soft);
  font-size: var(--fs-2);
}

.contact-channels li > span {
  flex: none;
  width: 3.5em;
  font-size: 10.5px;
  letter-spacing: .08em;
  color: var(--ink-4);
}

.contact-channels a,
.contact-channels b {
  color: var(--ink);
  font-weight: 500;
  text-decoration: none;
  border-bottom: 1px solid var(--line);
  word-break: break-all;
}

.contact-channels a:hover,
.contact-channels a:focus-visible {
  border-bottom-color: var(--ink);
}

.contact-hours {
  margin: 8px 0 0;
  font-size: var(--fs-1);
  color: var(--ink-4);
}

/* ── 6. 联系页：三步说明与公开渠道（V1.13） ───────────────────────────── */

.contact-steps {
  list-style: none;
  margin: var(--sp-3) 0 0;
  padding: 0;
  border-top: 1px solid var(--line-soft);
  max-width: 34em;
}

.contact-steps li {
  display: flex;
  gap: 14px;
  align-items: baseline;
  padding: 10px 0;
  border-bottom: 1px solid var(--line-soft);
  font-size: var(--fs-2);
  line-height: 1.65;
  color: var(--ink-2);
}

.contact-steps li span {
  flex: none;
  font-size: 10.5px;
  letter-spacing: .08em;
  color: var(--ink-4);
}

.contact-channels {
  list-style: none;
  margin: var(--sp-3) 0 0;
  padding: 0;
  border-top: 1px solid var(--line);
  max-width: 34em;
}

.contact-channels li {
  display: flex;
  gap: 14px;
  align-items: baseline;
  padding: 10px 0;
  border-bottom: 1px solid var(--line-soft);
  font-size: var(--fs-2);
}

.contact-channels li > span {
  flex: none;
  width: 3.5em;
  font-size: 10.5px;
  letter-spacing: .08em;
  color: var(--ink-4);
}

.contact-channels a,
.contact-channels b {
  color: var(--ink);
  font-weight: 500;
  text-decoration: none;
  border-bottom: 1px solid var(--line);
  word-break: break-all;
}

.contact-channels a:hover,
.contact-channels a:focus-visible {
  border-bottom-color: var(--ink);
}

.contact-hours {
  margin: 8px 0 0;
  font-size: var(--fs-1);
  color: var(--ink-4);
}

/* ── 7. 交付形态与行中处置（V1.15：台账去掉金额，只留交付事实） ────────── */

.case-runs {
  margin-top: var(--sp-4);
  padding-top: var(--sp-3);
  border-top: 1px solid var(--line);
}

.case-runs-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--sp-3);
  flex-wrap: wrap;
  margin-bottom: var(--sp-2);
}

.case-runs-head h4,
.case-changes-head h4 {
  font-size: 10.5px;
  font-weight: 500;
  letter-spacing: .12em;
  color: var(--ink-4);
  margin: 0;
}

.case-runs-head p {
  font-family: var(--mono, monospace);
  font-size: var(--fs-1);
  letter-spacing: .04em;
  color: var(--ink-4);
  margin: 0;
}

.runs-table {
  width: 100%;
  max-width: 58rem;
  border-collapse: collapse;
  font-size: var(--fs-2);
  table-layout: fixed;
}

.runs-table col.col-days { width: 26%; }
.runs-table col.col-runs { width: 15%; }
.runs-table col.col-heads { width: 17%; }
.runs-table col.col-cars { width: 42%; }

.runs-table caption {
  text-align: left;
  font-size: var(--fs-1);
  line-height: 1.7;
  color: var(--ink-4);
  padding-bottom: 10px;
  max-width: 46em;
}

.runs-table thead th {
  text-align: left;
  font-size: 10.5px;
  font-weight: 500;
  letter-spacing: .1em;
  color: var(--ink-4);
  padding: 7px 10px;
  border-bottom: 1px solid var(--ink);
  white-space: nowrap;
}

.runs-table tbody th {
  text-align: left;
  font-weight: 400;
  color: var(--ink);
  padding: 9px 10px;
  border-bottom: 1px solid var(--line-soft);
  white-space: nowrap;
}

.runs-table td {
  padding: 9px 10px;
  border-bottom: 1px solid var(--line-soft);
  color: var(--ink-2);
  white-space: nowrap;
}

/* 最后一列是「用车」，左对齐、可换行，不能沿用原来金额列的右对齐等宽体 */
.runs-table td:last-child {
  white-space: normal;
  line-height: 1.6;
  color: var(--ink-2);
}

/* 车型名不许被拆开，换行只发生在车型之间；分隔点跟着后一项，不留在行尾 */
.runs-table td span {
  white-space: nowrap;
  display: inline-block;
}

.runs-table td span + span::before {
  content: " · ";
  color: var(--ink-4);
}

.case-runs .case-media-note {
  margin-top: var(--sp-2);
}

/* 行中处置：「触发 → 动作 → 结果」三段。这是整页最硬的能力证据，给足行距 */
.case-changes {
  margin-top: var(--sp-4);
  padding-top: var(--sp-3);
  border-top: 1px solid var(--line);
}

.case-changes-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--sp-3);
  flex-wrap: wrap;
  margin-bottom: var(--sp-2);
}

.case-changes-head p {
  font-size: var(--fs-1);
  line-height: 1.65;
  color: var(--ink-4);
  margin: 0;
  max-width: 44em;
}

.case-changes > ol {
  list-style: none;
  margin: var(--sp-2) 0 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--sp-3) var(--sp-4);
  counter-reset: chg;
}

.case-changes > ol > li {
  padding-top: 10px;
  border-top: 1px solid var(--line-soft);
}

.case-changes > ol > li::before {
  counter-increment: chg;
  content: "0" counter(chg);
  display: block;
  font-size: 10.5px;
  letter-spacing: .1em;
  color: var(--ink-5, var(--ink-4));
  margin-bottom: 3px;
}

.case-changes h5 {
  font-size: var(--fs-2);
  font-weight: 500;
  color: var(--ink);
  margin: 0 0 8px;
  line-height: 1.45;
}

/* 三段式：标签一列、内容一列，窄屏也不塌 */
.case-changes dl {
  margin: 0;
  display: grid;
  gap: 5px;
}

.case-changes dl > div {
  display: grid;
  grid-template-columns: 2.6em minmax(0, 1fr);
  gap: 8px;
  align-items: baseline;
}

.case-changes dt {
  font-size: 10.5px;
  letter-spacing: .08em;
  color: var(--ink-4);
  white-space: nowrap;
}

.case-changes dd {
  margin: 0;
  font-size: var(--fs-1);
  line-height: 1.68;
  color: var(--ink-3);
}

/* 结果是这一条的落点，加重一档 */
.case-changes dl > div[data-step="结果"] dd {
  color: var(--ink-2);
}

/* 支出结构补注的样式留给旧记录，不再由案例页渲染 */
.cost-rows li[data-note] {
  grid-template-columns: 6em minmax(0, 1fr) 3.4em minmax(0, 15em);
}

.cost-rows li .cost-note {
  font-style: normal;
  font-size: var(--fs-1);
  line-height: 1.45;
  color: var(--ink-4);
  text-align: right;
}

@media (max-width: 720px) {
  .case-changes > ol {
    grid-template-columns: 1fr;
    gap: var(--sp-2);
  }
  .runs-table thead {
    display: none;
  }
  .runs-table tbody tr {
    display: grid;
    /* 三列：天数独占一行，团次与人次并排一行，用车独占一行 */
    grid-template-columns: max-content max-content 1fr;
    gap: 2px 10px;
    padding: 10px 0;
    border-bottom: 1px solid var(--line-soft);
  }
  .runs-table tbody th {
    grid-column: 1 / -1;
    border: 0;
    padding: 0;
    font-size: var(--fs-2);
  }
  .runs-table tbody td {
    border: 0;
    padding: 0;
    font-size: var(--fs-1);
    color: var(--ink-4);
  }
  /* 团次与人次并排，中间用点隔开，读起来是一句而不是两格 */
  .runs-table tbody td:nth-child(2),
  .runs-table tbody td:nth-child(3) {
    grid-row: 2;
  }
  .runs-table tbody td:nth-child(3)::before {
    content: "· ";
    color: var(--ink-4);
  }
  /* 用车一列占满第三行，不再挤在右上角 */
  .runs-table tbody td:last-child {
    grid-column: 1 / -1;
    grid-row: 3;
    text-align: left;
    font-size: var(--fs-1);
    color: var(--ink-3);
    margin-top: 3px;
  }
}

/* ── 8. 交付能力（V1.15）：难度标签、能力矩阵、交付链 ───────────────────── */

/* 难度标签：一条记录压测了什么，一眼看到，不需要读金额 */
.case-difficulty {
  list-style: none;
  margin: var(--sp-3) 0 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.case-difficulty li {
  display: inline-flex;
  align-items: baseline;
  gap: 7px;
  padding: 7px 12px;
  border: 1px solid var(--line);
  background: var(--white);
  min-width: 0;
}

.case-difficulty b {
  font-size: var(--fs-2);
  font-weight: 500;
  color: var(--ink);
  white-space: nowrap;
}

.case-difficulty span {
  font-size: var(--fs-1);
  letter-spacing: .03em;
  color: var(--ink-4);
}

/* 能力矩阵：四块能力，每块一条主张加几条事实 */
.case-capability {
  background: var(--paper-2);
}

.capability-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 1px;
  background: var(--line);
  border: 1px solid var(--line);
  margin-top: var(--sp-4);
}

.capability-card {
  background: var(--paper);
  padding: clamp(1.2rem, 2vw, 1.8rem);
  display: grid;
  align-content: start;
  gap: .55rem;
}

.capability-no {
  margin: 0;
  font-family: var(--mono, monospace);
  font-size: var(--fs-1);
  letter-spacing: .12em;
  color: var(--ink-4);
}

.capability-card h3 {
  margin: 0;
  font-family: var(--serif);
  font-size: var(--fs-6);
  font-weight: 500;
  letter-spacing: -.02em;
  color: var(--ink);
}

.capability-claim {
  margin: 0;
  font-size: var(--fs-3);
  line-height: 1.66;
  color: var(--ink-2);
  text-wrap: pretty;
}

.capability-card ul {
  list-style: none;
  margin: .35rem 0 0;
  padding: 0;
  display: grid;
  gap: 6px;
}

.capability-card li {
  position: relative;
  padding-left: 14px;
  font-size: var(--fs-1);
  line-height: 1.62;
  color: var(--ink-3);
}

.capability-card li::before {
  content: "";
  position: absolute;
  left: 0;
  top: .62em;
  width: 5px;
  height: 1px;
  background: var(--ink-4);
}

/* 交付链：从需求确认到归档，六步 */
.delivery-chain {
  margin-top: var(--sp-5);
  padding-top: var(--sp-3);
  border-top: 1px solid var(--line);
}

.delivery-chain-head {
  display: grid;
  gap: .4rem;
  margin-bottom: var(--sp-3);
}

.delivery-chain-head h3 {
  margin: 0;
  font-family: var(--serif);
  font-size: var(--fs-7);
  font-weight: 500;
  letter-spacing: -.025em;
}

.delivery-chain-head p {
  margin: 0;
  max-width: 46em;
  font-size: var(--fs-3);
  line-height: 1.72;
  color: var(--ink-3);
}

.delivery-chain ol {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: var(--sp-3);
  counter-reset: chain;
}

.delivery-chain li {
  display: grid;
  align-content: start;
  gap: 6px;
  padding-top: 10px;
  border-top: 1px solid var(--ink);
}

.delivery-chain li > span {
  font-family: var(--mono, monospace);
  font-size: var(--fs-1);
  letter-spacing: .1em;
  color: var(--ink-4);
}

.delivery-chain li b {
  font-size: var(--fs-3);
  font-weight: 500;
  color: var(--ink);
}

.delivery-chain li p {
  margin: 0;
  font-size: var(--fs-1);
  line-height: 1.68;
  color: var(--ink-3);
}

@media (max-width: 1080px) {
  .capability-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .delivery-chain ol { grid-template-columns: repeat(3, minmax(0, 1fr)); row-gap: var(--sp-3); }
}

@media (max-width: 720px) {
  .capability-grid { grid-template-columns: 1fr; }
  .delivery-chain ol { grid-template-columns: 1fr; gap: 2px; }
  .delivery-chain li {
    grid-template-columns: 2.4em minmax(0, 1fr);
    align-items: baseline;
    gap: 2px 10px;
    padding-top: 9px;
  }
  .delivery-chain li > span { grid-row: 1 / 3; align-self: start; padding-top: 2px; }
  .case-difficulty li { padding: 6px 10px; }
}

/* 能力卡片底部的回指：主张必须能落到某条记录上，否则就只是口号 */
.capability-refs {
  margin: auto 0 0;
  padding-top: .9rem;
  display: flex;
  flex-direction: column;
  gap: 4px;
  border-top: 1px solid var(--line-soft);
}

.capability-refs a {
  font-size: var(--fs-1);
  line-height: 1.5;
  color: var(--ink-3);
  border-bottom: 1px solid transparent;
  align-self: flex-start;
  transition: border-color .18s ease, color .18s ease;
}

.capability-refs a::before {
  content: "→ ";
  color: var(--ink-5, var(--ink-4));
}

.capability-refs a:hover {
  color: var(--ink);
  border-bottom-color: var(--ink);
}

/* ── 9. 记录索引（V1.15）：一段三十屏，先给入口再给正文 ─────────────────── */

.line-index {
  margin: 0 0 var(--sp-4);
  padding: var(--sp-2) 0;
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
}

.line-index-head {
  margin: 0 0 6px;
  font-size: 10.5px;
  letter-spacing: .12em;
  color: var(--ink-4);
}

.line-index ol {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 16rem), 1fr));
  gap: 2px 2.5rem;
  counter-reset: idx;
}

.line-index li {
  counter-increment: idx;
  min-width: 0;
}

.line-index a {
  display: flex;
  align-items: baseline;
  gap: 8px;
  padding: 5px 0;
  min-width: 0;
  min-width: 0;
  font-size: var(--fs-2);
  color: var(--ink-2);
  border-bottom: 1px solid transparent;
}

.line-index a::before {
  content: "0" counter(idx);
  font-family: var(--mono, monospace);
  font-size: 10.5px;
  color: var(--ink-4);
  flex: none;
}

.line-index a span {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* 已交付的记录在前面加重，标准产品退一档 */
.line-index li[data-kind="CATALOG"] a {
  color: var(--ink-3);
}

.line-index a em {
  margin-left: auto;
  padding-left: 10px;
  flex: none;
  font-style: normal;
  font-size: 10.5px;
  letter-spacing: .04em;
  color: var(--ink-4);
}

.line-index li[data-kind="DELIVERED"] a em {
  color: var(--ink-2);
}

.line-index a:hover span {
  color: var(--ink);
  text-decoration: underline;
  text-underline-offset: 3px;
  text-decoration-thickness: 1px;
}

@media (max-width: 720px) {
  .line-index ol { grid-template-columns: 1fr; }
  .line-index a span { white-space: normal; }
}

/* ── 9. 记录索引（V1.15）：一段三十屏，先给入口再给正文 ─────────────────── */

.line-index {
  margin: 0 0 var(--sp-4);
  padding: var(--sp-2) 0;
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
}

.line-index-head {
  margin: 0 0 6px;
  font-size: 10.5px;
  letter-spacing: .12em;
  color: var(--ink-4);
}

.line-index ol {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 16rem), 1fr));
  gap: 2px 2.5rem;
  counter-reset: idx;
}

.line-index li {
  counter-increment: idx;
  min-width: 0;
}

.line-index a {
  display: flex;
  align-items: baseline;
  gap: 8px;
  padding: 5px 0;
  min-width: 0;
  min-width: 0;
  font-size: var(--fs-2);
  color: var(--ink-2);
  border-bottom: 1px solid transparent;
}

.line-index a::before {
  content: "0" counter(idx);
  font-family: var(--mono, monospace);
  font-size: 10.5px;
  color: var(--ink-4);
  flex: none;
}

.line-index a span {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* 已交付的记录在前面加重，标准产品退一档 */
.line-index li[data-kind="CATALOG"] a {
  color: var(--ink-3);
}

.line-index a em {
  margin-left: auto;
  padding-left: 10px;
  flex: none;
  font-style: normal;
  font-size: 10.5px;
  letter-spacing: .04em;
  color: var(--ink-4);
}

.line-index li[data-kind="DELIVERED"] a em {
  color: var(--ink-2);
}

.line-index a:hover span {
  color: var(--ink);
  text-decoration: underline;
  text-underline-offset: 3px;
  text-decoration-thickness: 1px;
}

@media (max-width: 720px) {
  .line-index ol { grid-template-columns: 1fr; }
  .line-index a span { white-space: normal; }
}

/* ── v143.css ── */
/* ============================================================================
   V1.43 · 案例页：按线陈列的六个交付案例
   ----------------------------------------------------------------------------
   一条已交付记录 = 一个案例，每条只写三段：干了什么 / 怎么干的 / 结果。
   每条线先给三行底子（线路 / 服务 / 资源），再放这条线交付过的案例。

   作用域：本层所有选择器都收在 .line-block 之内。v142 里同名旧类
   （.case-body 等台账遗留）不会被重新激活，也不需要删旧文件。
   ========================================================================== */

/* ── 1. 线：一条线一段，段间 2px 切边 ────────────────────────────────────── */

.line-stack {
  border-top: 1px solid var(--line);
}

.line-block {
  padding: var(--sp-6) 0 var(--sp-5);
  border-top: 2px solid var(--ink);
  scroll-margin-top: calc(var(--sp-5) + 3rem);
}

.line-block:first-child {
  border-top: 0;
}

.line-block .line-head {
  display: grid;
  grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
  gap: var(--sp-6);
  align-items: start;
}

.line-block .line-head h2 {
  margin: 0 0 var(--sp-2);
  max-width: none;
  font-size: clamp(1.6rem, 2.8vw, 2.1rem);
  font-weight: 500;
  line-height: 1.32;
  letter-spacing: var(--track-cjk);
  color: var(--ink);
  text-wrap: balance;
}

.line-block .line-note {
  margin: 0;
  max-width: 32ch;
  font-size: var(--fs-4);
  line-height: 1.72;
  color: var(--ink-3);
}

/* ── 2. 线头三行：线路 / 服务 / 资源 ─────────────────────────────────────── */

.line-block .line-brief {
  margin: 0;
  display: grid;
  gap: var(--sp-3);
}

.line-block .line-brief > div {
  display: grid;
  grid-template-columns: 3.2rem minmax(0, 1fr);
  gap: var(--sp-2);
  padding-top: .55rem;
  border-top: 1px solid var(--line-soft);
}

.line-block .line-brief dt {
  padding-top: .12em;
  font-size: var(--fs-1);
  letter-spacing: .08em;
  color: var(--ink-5);
}

.line-block .line-brief dd {
  margin: 0;
  font-size: var(--fs-4);
  line-height: 1.76;
  color: var(--ink-2);
}

/* ── 3. 案例：左边交代身份，右边三段 ────────────────────────────────────── */

.line-block .line-cases {
  margin-top: var(--sp-6);
}

.line-block .case {
  display: grid;
  grid-template-columns: minmax(0, 4fr) minmax(0, 8fr);
  gap: var(--sp-6);
  padding: var(--sp-5) 0;
  border-top: 1px solid var(--line);
  scroll-margin-top: calc(var(--sp-5) + 3.5rem);
}

.line-block .case:first-child {
  padding-top: 0;
  border-top: 0;
}

.line-block .case-head {
  position: sticky;
  top: calc(var(--sp-5) + 3rem);
  align-self: start;
}

.line-block .case-route {
  display: flex;
  align-items: baseline;
  gap: .5rem;
  margin: 0 0 var(--sp-2);
  font-size: var(--fs-2);
  letter-spacing: var(--track-cjk);
  color: var(--ink-3);
}

.line-block .case-route span {
  font-variant-numeric: tabular-nums;
  color: var(--ink-5);
}

.line-block .case-head h3 {
  margin: 0 0 var(--sp-2);
  font-size: clamp(1.3rem, 2.1vw, 1.62rem);
  font-weight: 500;
  line-height: 1.36;
  letter-spacing: var(--track-cjk);
  color: var(--ink);
  text-wrap: balance;
}

.line-block .case-meta {
  margin: 0;
  padding-top: var(--sp-2);
  border-top: 1px solid var(--line-soft);
  font-size: var(--fs-2);
  line-height: 1.72;
  color: var(--ink-4);
  font-variant-numeric: tabular-nums;
}

/* 右栏单列纵向排：三段之间用细线断开，不并排 */
.line-block .case-body {
  display: block;
  padding: 0;
  gap: 0;
}

.line-block .case-body > * + * {
  margin-top: var(--sp-3);
}

.line-block .case-label {
  margin: 0 0 var(--sp-1);
  font-size: var(--fs-1);
  letter-spacing: .08em;
  color: var(--ink-5);
}

.line-block .case-part > p:last-child {
  margin: 0;
  font-size: var(--fs-5);
  line-height: 1.74;
  color: var(--ink-2);
}

.line-block .case-part ol {
  margin: 0;
  padding: 0;
  list-style: none;
  counter-reset: how;
}

.line-block .case-part li {
  counter-increment: how;
  position: relative;
  padding-left: 1.85rem;
  font-size: var(--fs-4);
  line-height: 1.74;
  color: var(--ink-2);
}

.line-block .case-part li + li {
  margin-top: .6rem;
}

.line-block .case-part li::before {
  content: counter(how);
  position: absolute;
  left: 0;
  top: .1em;
  width: 1.4rem;
  font-size: var(--fs-2);
  font-variant-numeric: tabular-nums;
  color: var(--ink-5);
}

.line-block .case-part-result > p:last-child {
  padding-left: var(--sp-3);
  border-left: 2px solid var(--moss-2);
  color: var(--ink);
}

/* ── 4. 能力词：一行 chips，给人和 AI 抓 ─────────────────────────────────── */

.line-block .case-abilities {
  display: flex;
  flex-wrap: wrap;
  gap: .4rem .5rem;
  margin: var(--sp-4) 0 0;
  padding: var(--sp-3) 0 0;
  border-top: 1px solid var(--line-soft);
  list-style: none;
}

.line-block .case-abilities li {
  padding: .16rem .55rem;
  border: 1px solid var(--line);
  font-size: var(--fs-1);
  line-height: 1.6;
  color: var(--ink-3);
  white-space: nowrap;
}

/* ── 5. 窄屏：全部改单列，标题不再 sticky ───────────────────────────────── */

@media (max-width: 900px) {
  .line-block .line-head,
  .line-block .case {
    grid-template-columns: minmax(0, 1fr);
    gap: var(--sp-4);
  }

  .line-block .line-head h2,
  .line-block .line-note {
    max-width: none;
  }

  .line-block .case-head {
    position: static;
  }

  .line-block .line-cases {
    margin-top: var(--sp-5);
  }
}

@media (max-width: 560px) {
  .line-block .line-brief > div {
    grid-template-columns: 2.8rem minmax(0, 1fr);
  }

  .line-block .case-part li {
    padding-left: 1.6rem;
  }

  .line-block .case-abilities li {
    white-space: normal;
  }
}

/* ── v144.css ── */
/* ============================================================================
   V1.44 · 案例：索引卡片 + 独立详情页
   ----------------------------------------------------------------------------
   索引页 /cases/ 只列目录，三段正文在各自的 /cases/<slug>/。
   作用域全部收在 .line-block 与 .case-single 里，避免 v142 台账旧类串味。
   ========================================================================== */

/* ── 1. 索引卡片：一行一条，整卡可点 ──────────────────────────────────────── */

.line-block .case-card {
  border-top: 1px solid var(--line);
}

/* 首条也画线：把线头三行与下面的目录分开，读者一眼看出「下面是清单」 */
.line-block .case-card:last-child {
  border-bottom: 1px solid var(--line);
}

.line-block .case-card-link {
  display: grid;
  grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
  gap: var(--sp-3) var(--sp-6);
  align-items: start;
  padding: var(--sp-4) 0;
  position: relative;
  text-decoration: none;
  color: inherit;
}

.line-block .case-card-route {
  grid-column: 1 / -1;
  display: flex;
  align-items: baseline;
  gap: .55rem;
  margin: 0 0 var(--sp-1);
  font-size: var(--fs-2);
  letter-spacing: var(--track-cjk);
  color: var(--ink-3);
}

.line-block .case-card-route span {
  flex: none;
  font-size: var(--fs-2);
  font-variant-numeric: tabular-nums;
  color: var(--ink-5);
}

.line-block .case-card-link h3 {
  margin: 0;
  font-size: clamp(1.24rem, 2vw, 1.52rem);
  font-weight: 500;
  line-height: 1.4;
  letter-spacing: var(--track-cjk);
  color: var(--ink);
  text-wrap: balance;
}

.line-block .case-card-summary {
  margin: 0;
  font-size: var(--fs-4);
  line-height: 1.78;
  color: var(--ink-3);
}

.line-block .case-card-tags {
  display: flex;
  flex-wrap: wrap;
  gap: .35rem .5rem;
  margin: var(--sp-3) 0 0;
  padding: 0;
  list-style: none;
}

.line-block .case-card-tags li {
  font-size: var(--fs-1);
  letter-spacing: .04em;
  color: var(--ink-4);
  border: 1px solid var(--line);
  border-radius: 999px;
  padding: .1rem .52rem;
  background: var(--paper-3);
}

.line-block .case-card-more {
  margin: var(--sp-3) 0 0;
  font-size: var(--fs-2);
  letter-spacing: .06em;
  color: var(--ink-4);
}

.line-block .case-card-more span {
  display: inline-block;
  margin-left: .4rem;
  transition: transform .22s ease;
}

.line-block .case-card-link:hover h3,
.line-block .case-card-link:focus-visible h3 {
  text-decoration: underline;
  text-underline-offset: .22em;
  text-decoration-thickness: 1px;
}

.line-block .case-card-link:hover .case-card-more span,
.line-block .case-card-link:focus-visible .case-card-more span {
  transform: translate(3px, -3px);
}

/* ── 2. 详情页：标题区 ───────────────────────────────────────────────────── */

/* hero 通栏、内容与正文同栏，标题与正文左边界对齐 */
.case-single .case-hero > .wrap {
  max-width: 46rem;
}

.case-single .case-hero {
  padding: var(--sp-6) 0 var(--sp-5);
  border-bottom: 1px solid var(--line);
}

.case-single .case-hero h1 {
  margin: var(--sp-2) 0 var(--sp-4);
  max-width: none;
  font-size: clamp(1.9rem, 3.9vw, 2.95rem);
  font-weight: 500;
  line-height: 1.26;
  letter-spacing: var(--track-cjk);
  color: var(--ink);
  text-wrap: balance;
}

.case-single .case-hero-meta {
  display: flex;
  flex-wrap: wrap;
  gap: .4rem .5rem;
  margin: 0 0 var(--sp-3);
  padding: 0;
  list-style: none;
}

.case-single .case-hero-meta li {
  font-size: var(--fs-2);
  line-height: 1.5;
  color: var(--ink-3);
  border: 1px solid var(--line);
  border-radius: 999px;
  padding: .16rem .6rem;
  font-variant-numeric: tabular-nums;
}

.case-single .case-hero-route {
  margin: 0;
  font-size: var(--fs-2);
  letter-spacing: var(--track-cjk);
  color: var(--ink-4);
}

/* ── 3. 详情页：三段正文 ─────────────────────────────────────────────────── */

.case-single .case-single-body {
  max-width: 46rem;
  padding-block: var(--sp-6);
}

.case-single .case-sec + .case-sec {
  margin-top: var(--sp-6);
}

.case-single .case-label {
  display: flex;
  align-items: center;
  gap: .55rem;
  margin: 0 0 var(--sp-3);
  font-size: var(--fs-1);
  letter-spacing: .12em;
  color: var(--ink-5);
}

.case-single .case-label::before {
  content: "";
  width: 1.3rem;
  height: 1px;
  background: var(--ink-5);
}

.case-single .case-lede {
  margin: 0;
  font-size: var(--fs-5);
  line-height: 1.88;
  color: var(--ink-2);
}

.case-single .case-steps {
  margin: 0;
  padding: 0;
  list-style: none;
  counter-reset: step;
}

.case-single .case-steps li {
  counter-increment: step;
  position: relative;
  padding-left: 2.9rem;
  font-size: var(--fs-5);
  line-height: 1.88;
  color: var(--ink-2);
}

.case-single .case-steps li + li {
  margin-top: var(--sp-4);
}

.case-single .case-steps li::before {
  content: counter(step, decimal-leading-zero);
  position: absolute;
  left: 0;
  top: .22em;
  font-size: var(--fs-2);
  font-variant-numeric: tabular-nums;
  letter-spacing: .04em;
  color: var(--ink-5);
}

.case-single .case-sec-result .case-lede {
  padding-left: var(--sp-3);
  border-left: 2px solid var(--ink);
  color: var(--ink);
}

.case-single .case-single-tags {
  display: flex;
  flex-wrap: wrap;
  gap: .45rem .5rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.case-single .case-single-tags li {
  padding: .2rem .66rem;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: var(--paper-3);
  font-size: var(--fs-2);
  color: var(--ink-3);
}

/* ── 4. 详情页：翻页 ─────────────────────────────────────────────────────── */

.case-single .case-pager {
  border-top: 1px solid var(--line);
  padding: var(--sp-5) 0;
}

.case-single .case-pager-inner {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
  gap: var(--sp-4);
  align-items: start;
}

.case-single .case-pager-link {
  display: grid;
  gap: .25rem;
  text-decoration: none;
  color: inherit;
}

.case-single .case-pager-link span {
  font-size: var(--fs-1);
  letter-spacing: .1em;
  color: var(--ink-5);
}

.case-single .case-pager-link b {
  font-weight: 500;
  font-size: var(--fs-4);
  line-height: 1.5;
  letter-spacing: var(--track-cjk);
  color: var(--ink-2);
}

.case-single .case-pager-link:hover b {
  color: var(--ink);
  text-decoration: underline;
  text-underline-offset: .22em;
}

.case-single .case-pager-next {
  text-align: right;
  justify-items: end;
}

.case-single .case-pager-all {
  align-self: center;
  font-size: var(--fs-2);
  color: var(--ink-3);
  text-underline-offset: .22em;
  white-space: nowrap;
}

/* ── 5. 窄屏 ─────────────────────────────────────────────────────────────── */

@media (max-width: 720px) {
  .line-block .case-card-link {
    grid-template-columns: minmax(0, 1fr);
    gap: var(--sp-2);
  }

  .case-single .case-hero {
    padding: var(--sp-5) 0 var(--sp-4);
  }

  .case-single .case-hero h1 {
    font-size: clamp(1.4rem, 5.9vw, 2rem);
    line-height: 1.32;
    line-break: strict;
  }

  .case-single .case-single-body {
    padding-block: var(--sp-5);
  }

  .case-single .case-steps li {
    padding-left: 2.5rem;
  }

  .case-single .case-pager-inner {
    grid-template-columns: minmax(0, 1fr);
    gap: var(--sp-4);
  }

  .case-single .case-pager-next {
    text-align: left;
    justify-items: start;
  }

  .case-single .case-pager-all {
    order: -1;
    justify-self: start;
  }
}

/* ── v145.css ── */
/* ============================================================================
   V1.45 · 案例 content_version 2（六段母版）样式
   ----------------------------------------------------------------------------
   母版：内蒙古118人双班期研学（已确认范式 V1.0）
   节奏：首屏 → 四指标条 → 路线/班期 → 执行节点（图文交替）→ 结果 → 咨询
   作用域全部收在 .case-v2 里，避免 v142 / v144 的旧类命中新结构。
   ========================================================================== */

/* ── 1. 首屏 ─────────────────────────────────────────────────────────────── */

.case-v2 .cv2-hero {
  padding: 3.4rem 0 3.6rem;
  border-bottom: 1px solid var(--line);
}

.case-v2 .cv2-hero-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(0, 0.85fr);
  gap: 3.4rem;
  align-items: center;
}

.case-v2 .cv2-hero-copy .eyebrow {
  margin: 0 0 1.1rem;
}

.case-v2 .cv2-hero h1 {
  margin: 0;
  font-family: var(--serif);
  font-size: clamp(2rem, 3.1vw, 3.1rem);
  font-weight: 600;
  line-height: 1.42;
  letter-spacing: 0.01em;
  color: var(--green);
  text-wrap: balance;
}

.case-v2 .cv2-dek {
  margin: 1.2rem 0 0;
  color: #55655f;
  font-size: 1rem;
  line-height: 1.95;
  max-width: 34em;
}

.case-v2 .cv2-meta {
  margin: 1.6rem 0 0;
  padding-left: 0.9rem;
  border-left: 2px solid var(--gold);
  color: #5d6b65;
  font-size: 0.86rem;
  line-height: 1.9;
}

/* 路线示意图：不是照片，不用假装是照片 */
.case-v2 .cv2-diagram {
  position: relative;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  min-height: 320px;
  padding: 1.5rem 1.4rem 1.2rem;
  background:
    radial-gradient(ellipse at 78% 12%, rgba(155, 182, 154, 0.34) 0%, transparent 52%),
    radial-gradient(ellipse at 12% 92%, rgba(211, 173, 98, 0.24) 0%, transparent 58%),
    #e7ebdf;
  border: 1px solid #d5ddd2;
}

.case-v2 .cv2-diagram-eyebrow {
  margin: 0;
  font-size: 0.66rem;
  letter-spacing: 0.2em;
  color: #6d7d72;
}

.case-v2 .cv2-diagram svg {
  width: 100%;
  height: auto;
  margin: 0.4rem 0;
}

.case-v2 .cv2-diagram-note {
  margin: 0;
  font-size: 0.7rem;
  line-height: 1.7;
  color: #75847a;
}

.case-v2 .cv2-hero-figure {
  margin: 0;
}

.case-v2 .cv2-hero-figure img {
  width: 100%;
  height: auto;
  aspect-ratio: 16 / 9;
  object-fit: cover;
}

.case-v2 .cv2-hero-figure figcaption {
  margin-top: 0.55rem;
  font-size: 0.72rem;
  color: #75847a;
}

/* ── 2. 四指标条 ─────────────────────────────────────────────────────────── */

.case-v2 .cv2-metrics {
  background: var(--green);
  color: var(--white);
}

.case-v2 .cv2-metric-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
}

.case-v2 .cv2-metric {
  padding: 1.7rem 1.2rem;
  border-right: 1px solid rgba(255, 253, 248, 0.18);
}

.case-v2 .cv2-metric:last-child {
  border-right: 0;
}

.case-v2 .cv2-metric b {
  display: block;
  font-family: var(--serif);
  font-size: clamp(1.5rem, 2.1vw, 2rem);
  font-weight: 600;
  line-height: 1.3;
}

.case-v2 .cv2-metric small {
  display: block;
  margin-top: 0.4rem;
  font-size: 0.76rem;
  line-height: 1.6;
  color: rgba(255, 253, 248, 0.72);
}

/* ── 3. 正文栏 ───────────────────────────────────────────────────────────── */

.case-v2 .cv2-column {
  max-width: 764px;
}

.case-v2 .cv2-main {
  padding-bottom: 1rem;
}

.case-v2 .cv2-reading {
  padding-top: 3.2rem;
}

.case-v2 .cv2-reading p,
.case-v2 .cv2-feature-copy p,
.case-v2 .cv2-result p {
  margin: 0 0 1.35rem;
  font-size: 1rem;
  line-height: 2.05;
  color: #2f3f39;
}

.case-v2 .cv2-reading .cv2-lead {
  font-size: 1.06rem;
  color: #253832;
}

.case-v2 .cv2-reading h2,
.case-v2 .cv2-result h2 {
  margin: 3.4rem 0 1.4rem;
  padding-top: 1.6rem;
  border-top: 1px solid var(--line);
  font-family: var(--serif);
  font-size: clamp(1.35rem, 1.9vw, 1.72rem);
  font-weight: 600;
  line-height: 1.6;
  color: var(--green);
}

.case-v2 .cv2-route-line {
  margin: 0 0 1.4rem;
  padding-left: 0.9rem;
  border-left: 2px solid var(--gold);
  font-size: 0.92rem;
  line-height: 1.9;
  color: #3c4d46;
}

/* ── 4. 逐日 / 班期卡片 ─────────────────────────────────────────────────── */

.case-v2 .cv2-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1px;
  margin: 1.8rem 0 0;
  background: var(--line);
  border: 1px solid var(--line);
}

.case-v2 .cv2-card {
  padding: 1.4rem 1.3rem 1.2rem;
  background: var(--white);
}

/* 双列网格末行为奇数项时，最后一张通栏收口，避免留出网格底色的空格 */
.case-v2 .cv2-card.is-span {
  grid-column: 1 / -1;
}

.case-v2 .cv2-card.is-span p:last-child {
  max-width: 40em;
}

.case-v2 .cv2-card-head {
  display: flex;
  align-items: flex-start;
  gap: 0.85rem;
  margin-bottom: 0.7rem;
}

.case-v2 .cv2-card-num {
  flex: 0 0 auto;
  min-width: 2.1rem;
  padding-top: 0.1rem;
  font-family: var(--serif);
  font-size: 1.15rem;
  line-height: 1.2;
  color: var(--gold);
}

.case-v2 .cv2-card h3 {
  margin: 0;
  font-size: 1rem;
  font-weight: 700;
  line-height: 1.55;
  color: var(--ink);
}

.case-v2 .cv2-card-sub {
  margin: 0.35rem 0 0;
  font-size: 0.74rem;
  line-height: 1.65;
  color: #6d7c75;
}

.case-v2 .cv2-card p:last-child {
  margin: 0;
  font-size: 0.9rem;
  line-height: 1.95;
  color: #3a4a44;
}

/* ── 5. 执行节点：图文交替 ───────────────────────────────────────────────── */

.case-v2 .cv2-feature {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 0.82fr);
  gap: 2.6rem;
  align-items: start;
  padding: 2.6rem 0;
  border-top: 1px solid var(--line);
}

.case-v2 .cv2-feature:first-child {
  border-top: 0;
  padding-top: 2.4rem;
}

.case-v2 .cv2-feature.is-flip {
  grid-template-columns: minmax(0, 0.82fr) minmax(0, 1fr);
}

.case-v2 .cv2-feature.is-flip .cv2-feature-copy {
  order: 2;
}

.case-v2 .cv2-feature.is-flip .cv2-photozone,
.case-v2 .cv2-feature.is-flip .cv2-photo {
  order: 1;
}

.case-v2 .cv2-rank {
  margin: 0 0 0.7rem;
  font-size: 0.66rem;
  letter-spacing: 0.18em;
  color: #9a7c4e;
}

.case-v2 .cv2-feature-copy h3 {
  margin: 0 0 1.1rem;
  font-family: var(--serif);
  font-size: clamp(1.15rem, 1.5vw, 1.36rem);
  font-weight: 600;
  line-height: 1.62;
  color: var(--green);
}

.case-v2 .cv2-evidence {
  margin: 0;
  padding: 0.85rem 1rem;
  background: rgba(211, 173, 98, 0.12);
  border-left: 2px solid var(--gold);
  font-size: 0.8rem;
  line-height: 1.85;
  color: #6a5a3d;
}

/* 照片留位：明确说这是留位，不冒充现场 */
.case-v2 .cv2-photozone {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 0.4rem;
  min-height: 220px;
  padding: 1.6rem;
  background: #eceee7;
  border: 1px dashed #c2cbc1;
  text-align: center;
}

.case-v2 .cv2-photozone b {
  font-size: 0.68rem;
  letter-spacing: 0.16em;
  color: #7c8a80;
  font-weight: 700;
}

.case-v2 .cv2-photozone span {
  font-size: 0.86rem;
  color: #6b7a71;
}

.case-v2 .cv2-photozone small {
  font-size: 0.72rem;
  color: #8b978e;
}

.case-v2 .cv2-photo {
  margin: 0;
}

.case-v2 .cv2-photo img {
  width: 100%;
  height: auto;
  aspect-ratio: 3 / 2;
  object-fit: cover;
}

.case-v2 .cv2-photo figcaption {
  margin-top: 0.5rem;
  font-size: 0.72rem;
  color: #75847a;
}

/* ── 6. 结果与公开边界 ───────────────────────────────────────────────────── */

.case-v2 .cv2-result {
  margin-top: 1rem;
  padding: 0.4rem 0 3.4rem;
  background: var(--paper-2);
}

.case-v2 .cv2-result h2 {
  border-top: 0;
  padding-top: 3rem;
}

.case-v2 .cv2-transparency {
  margin: 2rem 0 0;
  padding-top: 1.3rem;
  border-top: 1px solid var(--line);
  font-size: 0.82rem;
  line-height: 1.95;
  color: #6b7a72;
}

.case-v2 .cv2-related {
  margin-top: 2.4rem;
  padding: 1.5rem 1.6rem;
  background: var(--white);
  border-left: 2px solid var(--green);
}

.case-v2 .cv2-related-list {
  margin: 0 0 0.8rem;
  font-size: 0.95rem;
  font-weight: 700;
  color: var(--green);
}

.case-v2 .cv2-related p:last-child {
  margin: 0;
}

/* ── 7. 索引里的草稿标记 ─────────────────────────────────────────────────── */

.line-block .case-card-draft {
  display: inline-block;
  margin-left: 0.6rem;
  padding: 0.1rem 0.42rem;
  background: rgba(211, 173, 98, 0.24);
  color: #7a6335;
  font-size: 0.66rem;
  font-style: normal;
  letter-spacing: 0.06em;
  vertical-align: 0.12em;
}

/* ── 8. 响应式 ───────────────────────────────────────────────────────────── */

@media (max-width: 1000px) {
  .case-v2 .cv2-hero-grid {
    gap: 2.2rem;
  }

  .case-v2 .cv2-feature,
  .case-v2 .cv2-feature.is-flip {
    grid-template-columns: minmax(0, 1fr);
    gap: 1.3rem;
  }

  .case-v2 .cv2-feature.is-flip .cv2-feature-copy {
    order: 1;
  }

  .case-v2 .cv2-feature.is-flip .cv2-photozone,
  .case-v2 .cv2-feature.is-flip .cv2-photo {
    order: 2;
  }

  .case-v2 .cv2-photozone {
    min-height: 170px;
  }
}

@media (max-width: 820px) {
  .case-v2 .cv2-hero-grid {
    grid-template-columns: minmax(0, 1fr);
  }

  .case-v2 .cv2-hero {
    padding: 2.2rem 0 2.4rem;
  }

  .case-v2 .cv2-diagram {
    min-height: 260px;
  }

  .case-v2 .cv2-grid {
    grid-template-columns: minmax(0, 1fr);
  }
}

@media (max-width: 620px) {
  .case-v2 .cv2-hero h1 {
    font-size: clamp(1.5rem, 7vw, 2rem);
    line-height: 1.45;
  }

  .case-v2 .cv2-metric-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .case-v2 .cv2-metric {
    padding: 1.2rem 1rem;
    border-bottom: 1px solid rgba(255, 253, 248, 0.16);
  }

  .case-v2 .cv2-metric:nth-child(2n) {
    border-right: 0;
  }

  .case-v2 .cv2-metric:nth-last-child(-n + 2) {
    border-bottom: 0;
  }

  .case-v2 .cv2-metric b {
    font-size: 1.35rem;
  }

  .case-v2 .cv2-reading {
    padding-top: 2.2rem;
  }

  .case-v2 .cv2-reading p,
  .case-v2 .cv2-feature-copy p,
  .case-v2 .cv2-result p {
    font-size: 0.95rem;
    line-height: 2;
  }

  .case-v2 .cv2-reading h2,
  .case-v2 .cv2-result h2 {
    margin-top: 2.4rem;
    font-size: 1.2rem;
  }

  .case-v2 .cv2-card {
    padding: 1.1rem 1rem 1rem;
  }

  .case-v2 .cv2-related {
    padding: 1.1rem 1.1rem;
  }
}

@media print {
  .case-v2 .cv2-diagram,
  .case-v2 .cv2-photozone {
    print-color-adjust: exact;
  }

  .case-v2 .cv2-card,
  .case-v2 .cv2-feature {
    break-inside: avoid;
  }
}

/* ── v146.css ── */
/* ============================================================================
   V1.46 · 十三篇 AEO 案例（研学 6 / 小包 4 / 大散 3）样式
   ----------------------------------------------------------------------------
   内容来自 V3.4 交接包，正文一字未改；这里只负责版式。
   作用域全部收在 .cv34- 里，避免与 v142 / v144 / v145 的旧类互相命中。
   断点沿用站点惯例：1000 / 820 / 620。
   ========================================================================== */

/* ── 1. 首屏 ─────────────────────────────────────────────────────────────── */

.cv34-hero {
  padding: 2.6rem 0 0;
}

.cv34-hero-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.02fr) minmax(0, 0.98fr);
  gap: 3rem;
  align-items: center;
}

.cv34-hero-copy .eyebrow {
  margin: 0 0 1rem;
  font-size: 0.7rem;
  letter-spacing: 0.18em;
  color: #6d7d72;
}

.cv34-hero-copy h1 {
  margin: 0;
  font-family: var(--serif);
  font-size: clamp(1.75rem, 2.55vw, 2.6rem);
  font-weight: 600;
  line-height: 1.45;
  letter-spacing: 0.005em;
  color: var(--green);
  text-wrap: balance;
}

/* 主标题与副标题分行：「｜」落在行首比多占一行更难看 */
.cv34-h1-main,
.cv34-h1-sub {
  display: block;
}

.cv34-h1-sub {
  margin-top: 0.55rem;
  font-size: 0.66em;
  font-weight: 500;
  line-height: 1.6;
  color: #465750;
}

/* 行程要素：三项，横排两列，窄屏单列 */
.cv34-facts {
  margin: 1.8rem 0 0;
  display: grid;
  gap: 0.75rem 1.6rem;
  font-size: 0.86rem;
  line-height: 1.7;
}

.cv34-facts > div {
  display: grid;
  grid-template-columns: 5.2em minmax(0, 1fr);
  gap: 0.7rem;
  padding-top: 0.7rem;
  border-top: 1px solid var(--line);
}

.cv34-facts dt {
  color: #7b8a83;
  font-size: 0.78rem;
  letter-spacing: 0.06em;
}

.cv34-facts dd {
  margin: 0;
  color: #34433e;
}

/* ── 2. 图片与图注（首图与正文图共用） ───────────────────────────────────── */

.cv34-figure {
  margin: 1.7rem 0 2rem;
}

.cv34-figure img {
  width: 100%;
  height: auto;
  display: block;
  background: var(--paper-2);
}

.cv34-figure.is-hero {
  margin: 0;
}

.cv34-figure.is-hero img {
  aspect-ratio: 3 / 2;
  object-fit: cover;
}

.cv34-figure.is-panorama img {
  aspect-ratio: auto;
}

/* 竖图按比例缩窄并居中：满宽会让一张图占掉整个视口 */
.cv34-figure.is-portrait {
  max-width: 24rem;
  margin-inline: auto;
}

.cv34-figure.is-small {
  max-width: 26rem;
}

.cv34-figure figcaption {
  margin-top: 0.6rem;
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem 0.9rem;
  font-size: 0.72rem;
  line-height: 1.7;
  color: #6f7d77;
}

.cv34-caption {
  color: #4d5c56;
}

/* 「资料图」标识：交接包有 8 条图注没写这三个字，页面统一补标识，不改图注原文 */
.cv34-figure-tag {
  display: inline-block;
  margin-right: 0.45rem;
  padding: 0.05rem 0.38rem;
  font-style: normal;
  font-size: 0.66rem;
  letter-spacing: 0.04em;
  color: #4a5c55;
  background: rgba(23, 55, 47, 0.09);
}

/* ── 3. 图片来源与许可（页尾集中署名） ───────────────────────────────────── */

.cv34-sources {
  margin-top: 3.2rem;
  padding-top: 1.4rem;
  border-top: 1px solid rgba(23, 55, 47, 0.12);
}

.cv34-sources h2 {
  margin: 0;
  font-size: 0.82rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  color: #5d6b65;
}

.cv34-sources-note {
  margin: 0.5rem 0 0;
  font-size: 0.72rem;
  line-height: 1.75;
  color: #86948e;
}

.cv34-sources ul {
  margin: 0.9rem 0 0;
  padding: 0;
  list-style: none;
  display: grid;
  gap: 0.4rem;
}

.cv34-sources li {
  display: grid;
  grid-template-columns: 11rem minmax(0, 1fr);
  gap: 0.8rem;
  font-size: 0.72rem;
  line-height: 1.7;
  color: #86948e;
}

.cv34-source-slot {
  color: #6f7d77;
  overflow-wrap: anywhere;
}

.cv34-source-meta {
  overflow-wrap: anywhere;
}

.cv34-sources a {
  color: inherit;
  border-bottom: 1px solid rgba(23, 55, 47, 0.22);
}

.cv34-sources a:hover {
  color: var(--green);
}

.cv34-sources-wrap {
  padding-block: 0 2.4rem;
}

/* 索引页的来源标题是案例短名（最长 18 个字），列要给够，否则会折成两行跟作者错位 */
.cv34-sources-wrap .cv34-sources li {
  grid-template-columns: 15rem minmax(0, 1fr);
}

@media (max-width: 820px) {
  .cv34-sources-wrap .cv34-sources li {
    grid-template-columns: 1fr;
    gap: 0.1rem;
  }
}

@media (max-width: 620px) {
  .cv34-sources li {
    grid-template-columns: 1fr;
    gap: 0.1rem;
  }
}

/* ── 4. 目录条 ───────────────────────────────────────────────────────────── */

.cv34-toc {
  margin-top: 2.6rem;
  padding: 1rem 0 1.1rem;
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.4rem 0.9rem;
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
  font-size: 0.8rem;
}

.cv34-toc-label {
  color: #86948e;
  font-size: 0.7rem;
  letter-spacing: 0.16em;
}

.cv34-toc a {
  color: #3e4c47;
  border-bottom: 1px solid transparent;
}

.cv34-toc a:hover {
  color: var(--green);
  border-bottom-color: var(--gold);
}

/* ── 4. 正文 ─────────────────────────────────────────────────────────────── */

.cv34-main {
  padding: 3.2rem 0 1rem;
}

/* 宽屏：正文 52rem + 右侧目录栏；正文左边缘与首屏标题对齐，不再居中浮着 */
.cv34-layout {
  display: grid;
  grid-template-columns: minmax(0, 52rem) 15rem;
  justify-content: space-between;
  gap: 3.5rem;
  align-items: start;
}

.cv34-prose {
  min-width: 0;
  font-size: 1.02rem;
  line-height: 1.95;
  color: #24312d;
}

.cv34-rail {
  display: none;
  position: sticky;
  top: 6.5rem;
  padding-top: 0.4rem;
}

.cv34-rail-label {
  margin: 0 0 0.8rem;
  font-size: 0.66rem;
  letter-spacing: 0.2em;
  color: #8b978f;
}

.cv34-rail-toc ol {
  margin: 0 0 1.6rem;
  padding: 0;
  list-style: none;
  border-left: 1px solid rgba(23, 55, 47, 0.16);
}

.cv34-rail-toc li {
  margin: 0;
}

.cv34-rail-toc a {
  display: block;
  padding: 0.42rem 0 0.42rem 0.9rem;
  font-size: 0.8rem;
  line-height: 1.6;
  color: #5d6b65;
  border-left: 2px solid transparent;
  margin-left: -1px;
}

.cv34-rail-toc a:hover {
  color: var(--green);
  border-left-color: var(--gold);
  background: rgba(235, 230, 221, 0.5);
}

.cv34-rail-cta {
  display: inline-block;
  padding: 0.55rem 0.9rem;
  background: var(--green);
  color: var(--white);
  font-size: 0.78rem;
}

@media (min-width: 1100px) {
  .cv34-rail {
    display: block;
  }

  /* 宽屏有右侧目录，顶上那条横向目录就不重复出现 */
  .cv34-toc {
    display: none;
  }

  .cv34-hero {
    padding-bottom: 1.4rem;
  }
}

.cv34-section + .cv34-section {
  margin-top: 3rem;
}

/* 首段导语与第一个章节之间要有呼吸；相邻章节的间距由上面那条负责 */
.cv34-prose > p + .cv34-section,
.cv34-prose > .cv34-rule + .cv34-section {
  margin-top: 2.8rem;
}

.cv34-section-head {
  margin-bottom: 1.4rem;
}

.cv34-section-role {
  margin: 0 0 0.5rem;
  font-size: 0.66rem;
  letter-spacing: 0.2em;
  color: #8b978f;
  text-transform: uppercase;
}

.cv34-section-head h2 {
  margin: 0;
  font-family: var(--serif);
  font-size: clamp(1.3rem, 1.9vw, 1.7rem);
  font-weight: 600;
  line-height: 1.55;
  color: var(--green);
  text-wrap: balance;
}

.cv34-prose h3 {
  margin: 2.2rem 0 0.8rem;
  font-family: var(--serif);
  font-size: 1.06rem;
  font-weight: 600;
  line-height: 1.65;
  color: #1c342c;
}

.cv34-prose p {
  margin: 0 0 1.05rem;
}

.cv34-prose strong {
  font-weight: 600;
  color: #16332b;
}

/* 首段：线路要点。比正文大一档，作为文章入口 */
.cv34-lead {
  font-size: 1.1rem;
  line-height: 2;
  color: #1d2f2a;
}

/* 班期/主题标识行：整行加粗时独立成一条标记 */
.cv34-stamp {
  margin: 0 0 1.6rem;
  padding-left: 0.9rem;
  border-left: 2px solid var(--gold);
  font-size: 0.86rem;
  line-height: 1.8;
  color: #5d6b65;
}

.cv34-stamp strong {
  font-weight: 500;
  color: #4a5a53;
}

/* 逐日：左侧竖线 + 日次标题加重 */
.cv34-section.is-days .cv34-section-inner {
  padding-left: 1.5rem;
  border-left: 1px solid rgba(23, 55, 47, 0.14);
}

.cv34-section.is-days h3 {
  margin-top: 2rem;
  padding-top: 1.2rem;
  border-top: 1px solid rgba(23, 55, 47, 0.1);
}

.cv34-section.is-days h3:first-of-type {
  margin-top: 0.4rem;
  padding-top: 0;
  border-top: 0;
}

/* 问答：问题用衬线、答句留白收紧 */
.cv34-section.is-faq {
  padding: 2rem 1.6rem 0.6rem;
  background: var(--white);
  border: 1px solid rgba(23, 55, 47, 0.1);
}

.cv34-section.is-faq h3 {
  margin-top: 1.6rem;
  color: var(--green);
}

.cv34-section.is-faq h3::before {
  content: "Q";
  margin-right: 0.55rem;
  font-family: var(--sans);
  font-size: 0.72rem;
  letter-spacing: 0.1em;
  color: var(--gold);
  vertical-align: 0.12em;
}

/* 相关服务：作为收尾，加深色底区分 */
.cv34-section.is-outro {
  padding: 1.8rem 1.6rem 1.4rem;
  background: var(--paper-2);
}

.cv34-section.is-outro .cv34-section-head h2 {
  font-size: 1.15rem;
}

.cv34-section.is-outro p {
  margin-bottom: 0.6rem;
  font-size: 0.95rem;
}

/* ── 5. 表格 ─────────────────────────────────────────────────────────────── */

.cv34-table-wrap {
  margin: 1.3rem 0 1.9rem;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}

.cv34-prose table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.92rem;
  line-height: 1.75;
  background: var(--white);
}

.cv34-prose thead th {
  padding: 0.7rem 0.9rem;
  text-align: left;
  font-weight: 600;
  color: var(--green);
  background: var(--paper-2);
  border-bottom: 1px solid rgba(23, 55, 47, 0.22);
  white-space: nowrap;
}

.cv34-prose tbody th {
  padding: 0.7rem 0.9rem;
  text-align: left;
  font-weight: 500;
  color: #3a4a44;
  white-space: nowrap;
  vertical-align: top;
  border-bottom: 1px solid rgba(23, 55, 47, 0.1);
  background: rgba(235, 230, 221, 0.45);
}

.cv34-prose tbody td {
  padding: 0.7rem 0.9rem;
  vertical-align: top;
  border-bottom: 1px solid rgba(23, 55, 47, 0.1);
}

.cv34-prose tbody tr:last-child th,
.cv34-prose tbody tr:last-child td {
  border-bottom: 0;
}

.cv34-rule {
  margin: 2.4rem 0;
  border: 0;
  border-top: 1px solid var(--line);
}

/* ── 6. 翻页 / 相关案例 ──────────────────────────────────────────────────── */

.cv34-pager {
  margin-top: 3.4rem;
  padding-top: 1.4rem;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1rem;
  border-top: 1px solid var(--line);
}

.cv34-pager a {
  display: grid;
  gap: 0.35rem;
  padding: 1rem 1.1rem;
  border: 1px solid rgba(23, 55, 47, 0.14);
  background: var(--white);
}

.cv34-pager a:hover {
  border-color: var(--green);
}

.cv34-pager span {
  font-size: 0.68rem;
  letter-spacing: 0.14em;
  color: #8b978f;
}

.cv34-pager strong {
  font-weight: 500;
  font-size: 0.95rem;
  color: var(--green);
  line-height: 1.6;
}

.cv34-pager-next {
  text-align: right;
}

.cv34-pager .is-empty {
  display: block;
}

.cv34-related {
  margin-top: 2.6rem;
}

/* 目的地资源：指向真实 province 深链，不是编出来的产品页 */
.cv34-dest {
  margin-top: 2.4rem;
  padding: 1.1rem 1.2rem;
  background: var(--paper-2);
  border-left: 2px solid var(--gold);
}

.cv34-dest-label {
  margin: 0 0 0.45rem;
  font-size: 0.66rem;
  letter-spacing: 0.16em;
  color: #7b8a83;
}

.cv34-dest a {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.2rem 0.8rem;
}

.cv34-dest strong {
  font-family: var(--serif);
  font-weight: 600;
  font-size: 1.02rem;
  color: var(--green);
}

.cv34-dest span {
  font-size: 0.8rem;
  color: #5d6b65;
}

.cv34-dest a:hover strong {
  color: var(--green-2);
  border-bottom: 1px solid var(--gold);
}

.cv34-related h2 {
  margin: 0 0 1rem;
  font-family: var(--serif);
  font-size: 1.1rem;
  font-weight: 600;
  color: var(--green);
}

.cv34-related-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr));
  gap: 0.9rem;
}

.cv34-related-grid a {
  display: grid;
  gap: 0.45rem;
  padding: 1rem 1.1rem 1.1rem;
  border: 1px solid rgba(23, 55, 47, 0.13);
  background: var(--white);
}

.cv34-related-grid a:hover {
  border-color: var(--green);
}

.cv34-related-cat {
  font-size: 0.68rem;
  letter-spacing: 0.1em;
  color: #8b978f;
}

.cv34-related-grid strong {
  font-weight: 500;
  font-size: 0.92rem;
  line-height: 1.7;
  color: #24312d;
}

.cv34-related-more {
  font-size: 0.78rem;
  color: var(--green);
}

/* ── 7. 咨询条 ───────────────────────────────────────────────────────────── */

.cv34-cta {
  display: grid;
  grid-template-columns: minmax(0, 1.1fr) minmax(0, 0.9fr);
  gap: 2.4rem;
  align-items: center;
  padding: 2.6rem 2.2rem;
  background: var(--green);
  color: var(--white);
}

.cv34-cta h2 {
  margin: 0.5rem 0 0;
  font-family: var(--serif);
  font-size: clamp(1.25rem, 1.9vw, 1.7rem);
  font-weight: 600;
  line-height: 1.6;
}

.cv34-cta p {
  margin: 0 0 1rem;
  color: rgba(255, 253, 248, 0.8);
  font-size: 0.92rem;
  line-height: 1.85;
}

.cv34-cta .eyebrow {
  color: rgba(255, 253, 248, 0.6);
}

.cv34-cta-wrap {
  padding-top: 2rem;
}

/* ── 8. 案例中心索引 ─────────────────────────────────────────────────────── */

.cv34-index-hero {
  padding-bottom: 2.2rem;
}

.cv34-index-block {
  border-top: 1px solid var(--line);
}

.cv34-index-head {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 22rem);
  gap: 2rem;
  align-items: end;
  margin-bottom: 2rem;
}

.cv34-index-head h2 {
  margin: 0.6rem 0 0;
  font-family: var(--serif);
  font-size: clamp(1.25rem, 1.85vw, 1.6rem);
  font-weight: 600;
  line-height: 1.55;
  color: var(--green);
}

.cv34-index-note {
  margin: 0;
  font-size: 0.88rem;
  line-height: 1.85;
  color: #5d6b65;
}

.cv34-cards {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(19rem, 1fr));
  gap: 1.4rem;
}

.cv34-card {
  background: var(--white);
  border: 1px solid rgba(23, 55, 47, 0.12);
  display: flex;
  flex-direction: column;
  transition: border-color 0.18s ease, transform 0.18s ease;
}

.cv34-card:hover {
  border-color: var(--green);
  transform: translateY(-2px);
}

.cv34-card > a {
  display: flex;
  flex-direction: column;
  flex: 1;
}

/* 比例定在容器上，img 撑满：直接给 img 写 aspect-ratio 会被 grid 行高拉伸 */
.cv34-card-figure {
  margin: 0;
  overflow: hidden;
  flex: none;
  aspect-ratio: 16 / 9;
  background: var(--paper-2);
}

.cv34-card-figure img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.cv34-card-body {
  padding: 1.1rem 1.15rem 1.25rem;
  display: grid;
  align-content: start;
  gap: 0.5rem;
}

.cv34-card-meta {
  margin: 0;
  display: flex;
  gap: 0.7rem;
  font-size: 0.68rem;
  letter-spacing: 0.1em;
  color: #8b978f;
}

.cv34-card-meta span + span::before {
  content: "·";
  margin-right: 0.7rem;
}

.cv34-card h3 {
  margin: 0;
  font-family: var(--serif);
  font-size: 1.06rem;
  font-weight: 600;
  line-height: 1.6;
  color: var(--green);
}

.cv34-card-summary {
  margin: 0;
  font-size: 0.86rem;
  line-height: 1.8;
  color: #5d6b65;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.cv34-card-route {
  margin: 0;
  font-size: 0.76rem;
  line-height: 1.7;
  color: #7b8a83;
}

.cv34-card-more {
  margin: 0.2rem 0 0;
  font-size: 0.8rem;
  color: var(--green);
}

/* ── 9. 响应式 ───────────────────────────────────────────────────────────── */

@media (max-width: 1099px) {
  .cv34-layout {
    grid-template-columns: minmax(0, 1fr);
  }

  .cv34-prose {
    max-width: 52rem;
  }
}

@media (max-width: 1000px) {
  .cv34-hero-grid {
    grid-template-columns: 1fr;
    gap: 1.8rem;
  }

  .cv34-figure.is-hero {
    order: -1;
  }

  .cv34-hero {
    padding-top: 1.8rem;
  }

  .cv34-index-head {
    grid-template-columns: 1fr;
    gap: 0.9rem;
    align-items: start;
  }

  .cv34-cta {
    grid-template-columns: 1fr;
    gap: 1.2rem;
  }
}

@media (max-width: 820px) {
  .cv34-main {
    padding-top: 2.2rem;
  }

  .cv34-prose {
    font-size: 1rem;
    line-height: 1.9;
  }

  .cv34-section.is-days .cv34-section-inner {
    padding-left: 1rem;
  }

  .cv34-pager {
    grid-template-columns: 1fr;
  }

  .cv34-pager-next {
    text-align: left;
  }

  .cv34-cards {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 620px) {
  .cv34-hero-copy h1 {
    font-size: 1.55rem;
  }

  .cv34-facts > div {
    grid-template-columns: 4.6em minmax(0, 1fr);
  }

  .cv34-section.is-faq {
    padding: 1.4rem 1rem 0.4rem;
  }

  .cv34-section.is-outro {
    padding: 1.2rem 1rem 1rem;
  }

  .cv34-prose table {
    font-size: 0.86rem;
  }

  .cv34-prose thead th,
  .cv34-prose tbody th,
  .cv34-prose tbody td {
    padding: 0.55rem 0.6rem;
  }

  .cv34-cta {
    padding: 1.8rem 1.2rem;
  }

  .cv34-figure.is-small {
    max-width: 100%;
  }
}

/* ── v147.css ── */
/* v147 · 咨询表单的真实提交与顾问名片
   这一层只做三件事：
   1) 企业微信名片卡片（二维码 + 姓名 + 说明）
   2) 提交中的按钮态与表单内提示
   3) 提交结果面板：成功 / 失败降级（失败时仍能给出一份可复制的摘要）
   蜜罐字段是防垃圾提交用的，必须视觉不可见但存在。
*/

/* ── 1. 顾问名片 ─────────────────────────────────────────── */
.wechat-card {
  display: grid;
  grid-template-columns: 188px minmax(0, 1fr);
  gap: 1rem;
  align-items: center;
  margin: 1.15rem 0 0;
  padding: .85rem;
  border: 1px solid var(--line-hair);
  border-radius: var(--r-1);
  background: var(--paper-3);
}
.wechat-card-qr {
  display: block;
  width: 188px;
  height: 188px;
  /* 二维码不能模糊：缩放时保留硬边 */
  image-rendering: -webkit-optimize-contrast;
  border-radius: 4px;
  background: #fff;
}
.wechat-card-body { margin: 0; }
.wechat-card-name {
  margin: 0 0 .18rem;
  font-size: 1.02rem;
  font-weight: 700;
  letter-spacing: .01em;
  color: var(--ink);
}
.wechat-card-meta {
  margin: 0 0 .55rem;
  font-size: .76rem;
  letter-spacing: .02em;
  color: var(--ink-2);
}
.wechat-card-hint {
  margin: 0;
  font-size: .78rem;
  line-height: 1.65;
  color: #3d4c45;
}
.wechat-card-note {
  margin: .45rem 0 0;
  font-size: .68rem;
  line-height: 1.55;
  color: #7d8a84;
}

@media (max-width: 620px) {
  .wechat-card {
    grid-template-columns: 1fr;
    justify-items: center;
    text-align: center;
    padding: 1rem .85rem;
  }
  .wechat-card-qr { width: 168px; height: 168px; }
}

/* ── 2. 表单提交态 ──────────────────────────────────────── */
/* 蜜罐：真实用户看不见也不会聚焦，只有脚本会填 */
.hp-field {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
  border: 0;
}

.project-form .form-submit[aria-busy="true"] {
  cursor: progress;
  opacity: .72;
}

.form-privacy {
  margin: .1rem 0 0;
  font-size: .7rem;
  line-height: 1.6;
  color: #6b7a73;
}

.form-error[data-tone="network"] { color: #8a3b26; }

/* ── 3. 提交结果 ────────────────────────────────────────── */
.form-result-section .form-result {
  max-width: 62rem;
  padding: clamp(1.3rem, 3vw, 2.2rem);
  border: 1px solid var(--line-hair);
  border-left-width: 3px;
  border-radius: var(--r-1);
  background: var(--paper-3);
}
.form-result[data-state="ok"] { border-left-color: #2f6b4f; }
.form-result[data-state="error"] { border-left-color: #9b472f; }

.form-result h2 {
  margin: .2rem 0 .55rem;
  font-size: clamp(1.25rem, 2.4vw, 1.7rem);
  line-height: 1.3;
}
.form-result p { margin: 0 0 .55rem; line-height: 1.75; color: var(--ink-2); }
.form-result p:last-of-type { margin-bottom: 0; }
.form-result .form-result-strong { color: var(--ink); font-weight: 600; }
.form-result pre {
  margin: .9rem 0;
  padding: .95rem 1rem;
  overflow-x: auto;
  border: 1px solid var(--line-hair);
  border-radius: var(--r-1);
  background: var(--paper);
  font-size: .78rem;
  line-height: 1.75;
  white-space: pre-wrap;
  word-break: break-word;
}
.form-result .button-row { margin-top: 1rem; }
.form-result .copy-status { margin: .6rem 0 0; font-size: .74rem; color: var(--ink-2); }

/* ── v148.css ── */
/* v148 · 隐私说明页与备案号
   这一层只加两种东西：
   1) /privacy/ 的排版：左侧目录（桌面吸顶、手机横滑）+ 右侧分节正文
   2) 页脚底部的备案号（ICP / 公安联网备案），只在配置里有值时才出现
   隐私页是唯一一个「必须能被读完」的页面，所以正文按 68ch 限宽，
   太宽的长文在 1440 下会读串行。
*/

/* ── 1. 页首 ─────────────────────────────────────────────── */
.legal-hero h1 em { font-style: normal; }
/* 导语不铺满整行：这句是「这一页在说什么」，一行超过 55 字就开始读丢 */
.legal-hero .page-intro { max-width: 54ch; text-wrap: pretty; }

/* ── 2. 两栏骨架 ─────────────────────────────────────────── */
.legal-section { padding-top: clamp(2rem, 5vw, 3.4rem); }
/* 列宽写死 72ch 而不是 1fr：1fr 在 1180 的容器里会把正文拉到 900px 以上，
   每行 30 多字变成 50 多字，右侧还留出一大片空白，看起来像没排完。 */
.legal-grid {
  display: grid;
  grid-template-columns: 200px minmax(0, 72ch);
  gap: clamp(1.6rem, 4vw, 3.4rem);
  align-items: start;
  /* 两条轨道加起来不到容器宽，靠左会像没排满；居中让它读起来是一整块版心 */
  justify-content: center;
}

/* 目录：桌面吸顶，滚动长文时始终能看到自己在第几节 */
.legal-toc {
  position: sticky;
  top: 96px;
  display: grid;
  gap: .38rem;
  padding-right: 1rem;
  border-right: 1px solid var(--line-hair);
}
.legal-toc .eyebrow { margin: 0 0 .5rem; }
.legal-toc a {
  display: block;
  padding: .3rem 0;
  font-size: .8rem;
  line-height: 1.5;
  color: var(--ink-3);
  text-decoration: none;
  border-bottom: 1px solid transparent;
  transition: color .18s ease, border-color .18s ease;
}
.legal-toc a:hover,
.legal-toc a:focus-visible { color: var(--green); border-bottom-color: var(--gold); }

/* ── 3. 正文 ─────────────────────────────────────────────── */
.legal-body { max-width: inherit; }
.legal-body section { padding: 0 0 1.55rem; border-bottom: 1px solid var(--line-hair); }
.legal-body section:last-child { border-bottom: 0; padding-bottom: 0; }
.legal-body h2 {
  margin: 0 0 .7rem;
  font-family: var(--serif);
  font-size: clamp(1.12rem, 2vw, 1.3rem);
  font-weight: 600;
  color: var(--ink);
  scroll-margin-top: 96px;
}
.legal-body p {
  margin: 0 0 .72rem;
  font-size: .94rem;
  line-height: 1.85;
  color: var(--ink-3);
}
.legal-body p:last-child { margin-bottom: 0; }
.legal-body b { color: var(--ink); font-weight: 600; }
.legal-list {
  margin: 0 0 .72rem;
  padding: 0;
  list-style: none;
  display: grid;
  gap: .28rem;
}
.legal-list li {
  position: relative;
  padding-left: 1.05rem;
  font-size: .92rem;
  line-height: 1.8;
  color: var(--ink-3);
}
.legal-list li::before {
  content: "";
  position: absolute;
  left: 0;
  top: .78em;
  width: 5px;
  height: 1px;
  background: var(--gold);
}
.legal-stamp { font-size: .78rem !important; color: var(--blue-gray) !important; letter-spacing: .02em; }

/* 表单里的隐私链接：与正文同色，只在悬停时给下划线，避免抢走「提交」按钮的注意力 */
.form-privacy a { color: inherit; text-decoration: underline; text-underline-offset: 2px; }
.form-privacy a:hover { color: var(--green); }

/* ── 4. 页脚备案号 ───────────────────────────────────────── */
.footer-record { display: inline-flex; flex-wrap: wrap; gap: .9rem; }
.footer-record a {
  color: inherit;
  text-decoration: none;
  border-bottom: 1px solid rgba(255, 255, 255, .18);
  padding-bottom: 1px;
}
.footer-record a:hover,
.footer-record a:focus-visible { color: var(--gold); border-bottom-color: var(--gold); }

/* ── 5. 窄屏 ─────────────────────────────────────────────── */
@media (max-width: 860px) {
  .legal-grid { grid-template-columns: minmax(0, 1fr); gap: 1.2rem; }
  /* 手机上不吸顶，改成可横滑的目录条：竖排目录会占掉半屏 */
  .legal-toc {
    position: static;
    display: flex;
    gap: .5rem;
    padding: 0 0 .7rem;
    border-right: 0;
    border-bottom: 1px solid var(--line-hair);
    overflow-x: auto;
    scrollbar-width: none;
    -webkit-overflow-scrolling: touch;
  }
  .legal-toc::-webkit-scrollbar { display: none; }
  .legal-toc .eyebrow { display: none; }
  .legal-toc a {
    flex: 0 0 auto;
    padding: .34rem .6rem;
    font-size: .76rem;
    border: 1px solid var(--line-hair);
    border-radius: 999px;
    white-space: nowrap;
  }
  .legal-body h2 { scroll-margin-top: 76px; }
  .footer-bottom { grid-template-columns: 1fr; }
  .footer-record { display: flex; }
}

/* ── v149.css ── */
/* V1.4.9 · 交互手感
 *
 * 这一层只解决一件事：让「状态变化」看起来是连续的，而不是跳变。
 *
 * 起因：手机点菜单，面板是 display:none → display:block 硬切。display 是离散属性，
 * 浏览器不做任何过渡，所以视觉上就是「啪」地出现——内容越多，跳得越明显。
 *
 * 做法：面板常驻，靠 visibility + opacity + translate 表达开关。
 *   · display 不能过渡，visibility 可以（且隐藏时不参与 Tab 顺序、不被读屏软件朗读）
 *   · 收起时给 visibility 加延迟，等淡出走完再真正隐藏，避免「先消失再淡出」的错位
 *   · 列表项用独立的 translate 属性做位移，不碰 transform —— 菜单项选中态用的是
 *     transform: translateX() scale()，两者混用会互相覆盖
 */

/* ── 主菜单面板 ─────────────────────────────────────────── */

.js .site-nav {
  display: block;                 /* 常驻：这是能做过渡的前提 */
  visibility: hidden;
  opacity: 0;
  translate: 0 -10px;
  pointer-events: none;
  /* 收起：先淡出，0.3s 后才真正 hidden */
  transition:
    opacity .22s ease,
    translate .26s cubic-bezier(.4, 0, 1, 1),
    visibility 0s linear .26s;
  will-change: opacity, translate;
}

.js .site-nav[data-open="true"] {
  visibility: visible;
  opacity: 1;
  translate: 0 0;
  pointer-events: auto;
  /* 展开：稍慢一点、带一点减速曲线，像「落下来」而不是「弹出来」 */
  transition:
    opacity .3s ease,
    translate .34s cubic-bezier(.22, .61, .36, 1),
    visibility 0s linear 0s;
}

/* ── 菜单项：依次落位 ────────────────────────────────────
 * 一级项最多 6 个，逐条延迟 50ms，总时长控制在 0.3s 内。
 * 超过 6 项的部分没有额外延迟——再拖就变成「慢」了。
 */

/* 收起态要写成带 :not([data-open]) 的形式：手机端 v122 里有一条
 * `.mega-links a:not(.is-active) { opacity: 1 }`，特异性比单写 `.mega-links a` 高，
 * 不加这一层的话，手机上菜单项只滑不淡（电脑端正常），两端手感不一致。 */
.js .site-nav .mega-links a,
.js .site-nav:not([data-open="true"]) .mega-links a {
  opacity: 0;
  translate: 0 10px;
  transition: opacity .3s ease, translate .34s cubic-bezier(.22, .61, .36, 1), color .28s ease;
}

.js .site-nav[data-open="true"] .mega-links a {
  opacity: 1;
  translate: 0 0;
  /* 颜色不延迟，否则 hover 要等半拍才变色 */
  transition: opacity .34s ease, translate .38s cubic-bezier(.22, .61, .36, 1), color .28s ease;
}

.js .site-nav[data-open="true"] .mega-links a:nth-child(1) { transition-delay: .04s, .04s, 0s; }
.js .site-nav[data-open="true"] .mega-links a:nth-child(2) { transition-delay: .075s, .075s, 0s; }
.js .site-nav[data-open="true"] .mega-links a:nth-child(3) { transition-delay: .11s, .11s, 0s; }
.js .site-nav[data-open="true"] .mega-links a:nth-child(4) { transition-delay: .145s, .145s, 0s; }
.js .site-nav[data-open="true"] .mega-links a:nth-child(5) { transition-delay: .18s, .18s, 0s; }
.js .site-nav[data-open="true"] .mega-links a:nth-child(6) { transition-delay: .215s, .215s, 0s; }

/* 收起时不要延迟，否则关个菜单要等半秒 */
.js .site-nav:not([data-open="true"]) .mega-links a {
  transition-delay: 0s;
}

/* ── 搜索面板：出现时淡入 ────────────────────────────────
 * 这里用 animation 而不是 transition：面板靠 [hidden] 切换 display，
 * transition 无从谈起；而 animation 会在元素变成可见的一瞬间自动播放。
 */

.atlas-search-panel:not([hidden]) {
  animation: tuotu-panel-in .3s cubic-bezier(.22, .61, .36, 1) both;
}

@keyframes tuotu-panel-in {
  from { opacity: 0; translate: 0 -8px; }
  to   { opacity: 1; translate: 0 0; }
}

/* ── 移动端详情面板的遮罩：跟着淡进来 ──────────────────── */

.atlas-sheet-backdrop:not([hidden]) {
  animation: tuotu-fade-in .28s ease both;
}

@keyframes tuotu-fade-in {
  from { opacity: 0; }
  to   { opacity: 1; }
}

/* ── 地图里的视图切换 ────────────────────────────────────
 * 点「完整行程 / 目的地 / 按需求」，右侧面板内容是靠 [hidden] 整体换掉的，
 * 硬切会有一帧的闪烁。给接替上来的那一块补一个短淡入。
 * 同时只会有一个可见，所以不用担心"满屏都在动"。
 */

.atlas-stage [data-opening]:not([hidden]),
[data-panel-view]:not([hidden]),
.atlas-province-panel:not([hidden]) {
  animation: tuotu-panel-in .26s cubic-bezier(.22, .61, .36, 1) both;
}

/* ── 按钮：hover 不该「弹」一下 ──────────────────────────
 * .button:hover 会把整体上移 1px，.atlas-viewswitch button:hover 会换文字色，
 * 两处原来都没有 transition —— 鼠标一过就是硬切，观感上像坏了。
 */

.button,
.button-dark,
.button-light,
.button-line,
.button-outline-dark {
  transition: transform .18s ease, background-color .2s ease, border-color .2s ease, color .2s ease;
}

.atlas-viewswitch button {
  transition: color .2s ease, border-color .2s ease, background-color .2s ease;
}

/* ── 图片：解码完成再淡入 ────────────────────────────────
 * 懒加载图默认是「下载完立刻画上去」。4G 下滚动过去，看到的是半张图一块一块补进来，
 * 观感就是「啪」地砸下来。这里先保持透明，等脚本打完 .is-decoded（decode 完成）再淡入。
 * 只在 html.js 下隐藏：脚本没跑起来时必须照常显示，不能让人看到空白。
 */

.js img[loading="lazy"] {
  opacity: 0;
  transition: opacity .55s ease;
}

.js img[loading="lazy"].is-decoded {
  opacity: 1;
}

/* ── 章节标题：随滚动就位 ────────────────────────────────
 * 用原生 animation-timeline: view() 而不是 JS + IntersectionObserver：
 *   · 零 JS，不占主线程，不和滚动抢时间
 *   · 浏览器不支持时整段 @supports 不生效，元素保持原样——渐进增强，没有 FOUC
 * 只作用于标题区，卡片和图片不动。满页都在飘反而是廉价感。
 */

@supports (animation-timeline: view()) {
  @media (prefers-reduced-motion: no-preference) {
    .prototype-section-head,
    .atlas-heading,
    .atlas-beyond {
      animation: tuotu-rise linear both;
      animation-timeline: view();
      animation-range: entry 8% entry 52%;
    }
  }
}

@keyframes tuotu-rise {
  from { opacity: 0; translate: 0 18px; }
  to   { opacity: 1; translate: 0 0; }
}

/* ── 尊重系统设置 ────────────────────────────────────────
 * 开了「减弱动态效果」的用户，位移和淡入全部取消，直接到终态。
 * 注意这里不能只写 transition: none —— 那样列表项会停在 opacity:0 上。
 */

@media (prefers-reduced-motion: reduce) {
  .js .site-nav,
  .js .site-nav[data-open="true"] {
    translate: none;
    transition: none;
  }
  .js .site-nav .mega-links a,
  .js .site-nav[data-open="true"] .mega-links a {
    opacity: 1;
    translate: none;
    transition: none;
    transition-delay: 0s;
  }
  .atlas-search-panel:not([hidden]),
  .atlas-sheet-backdrop:not([hidden]) {
    animation: none;
  }
  .button,
  .button-dark,
  .button-light,
  .button-line,
  .button-outline-dark,
  .atlas-viewswitch button {
    transition: none;
  }
  /* 图片仍然要等 decode，但不再做淡入——直接出现 */
  .js img[loading="lazy"] {
    transition: none;
  }
}

/* ── v150.css ── */
/* V1.5.0 · 菜单可读性整改
 * ---------------------------------------------------------------------------
 * 现象：打开菜单，六个菜单项里五个是灰的，字几乎看不清，像样式没加载完。
 *
 * 根因不是颜色配错，是 v121.css 里这一条：
 *   .mega-links:has(a:hover) a:not(:hover),
 *   .mega-links:has(a:focus) a:not(:focus) { opacity: .43 }
 * 而 site-v12.js:44 在菜单打开时把焦点移到当前页链接（键盘用户需要这个），
 * 于是「焦点在某个链接上」这件事每次都成立 → 其余五项恒为 43% 不透明。
 * 这个降透明度本来是为了「悬停某一项时弱化其他项」，不该被焦点触发。
 *
 * 处理：焦点不再压暗其他项（焦点态由左侧竖线表达，见文件末尾），
 *      悬停时的弱化幅度从 .43 收到 .72 —— 既保留层次，又不会糊。
 */

.js .site-nav .mega-links:has(a:focus) a:not(:focus) {
  opacity: 1;
}

.js .site-nav .mega-links:has(a:hover) a:not(:hover) {
  opacity: .72;
}

/* 文字颜色：原来 #274635 在米色 #e9e9df 上，配合 .43 不透明度只有约 2.3:1 对比度。
 * 现在颜色不动，全靠不透明度恢复；这里再把「非当前项」定在 .82，
 * 让当前页（.is-active）仍然一眼可辨，其余项也能正常读。 */
.js .site-nav .mega-links a:not(.is-active) {
  opacity: .82;
  color: #234a37;
}

/* 焦点提示改成左侧竖线。
 * 原来的 outline: 2px solid + offset 4px 会在菜单打开的一瞬间框住「首页」，
 * 在整块版式里像一个没用样式包的按钮。竖线既保留了键盘用户的定位感，
 * 又与菜单本身的编辑排版语言一致（每一项下面本来就有 1px 分隔线）。 */
.js .site-nav .mega-links a:focus-visible {
  outline: none;
  background: rgba(50, 99, 75, .07);
}

/* 图片上的大号序号（01 / 06）压在浅色背景时发飘，给一点暗影兜底。
 * 不改成色块，是因为 ATLAS 布局已经有米色底块，其余三种是无框字，改色块会破坏版式。 */
.mega-stage-serial strong,
.mega-stage-serial span {
  text-shadow: 0 1px 12px rgba(10, 24, 17, .34);
}

/* 尊重系统设置：关掉动画时，上面的竖向偏移一类副作用也一并取消 */


/* ── 分区：左侧纸面 / 右侧照片 ──────────────────────────────
 * 原来三种分栏布局（DIPTYCH / ATLAS / QUIET）都是「图从 27-35% 开始，
 * 遮罩一路渐变到 64% 才透明」，中间三十多个百分点是半透明带。
 * 导航列表宽度到 730px，正好压在这条带上——于是文字底下能看见人脸和杯子，
 * 照片左侧四成也被糊掉，两边都没落着。
 *
 * 改成硬边界：纸面到 37%，之后是干净的图。交界处只留 0.6%（约 9px）的软化，
 * 避免锯齿感，但视觉上就是一条线。
 * 图起点统一到 37%，与纸面边界对齐——否则图被盖住一截，左边会出现一道暗边。
 */
.mega-editorial[data-layout="DIPTYCH"] .mega-stage-images,
.mega-editorial[data-layout="ATLAS"] .mega-stage-images,
.mega-editorial[data-layout="QUIET"] .mega-stage-images {
  inset-inline-start: 37%;
}

.mega-editorial[data-layout="DIPTYCH"]::after,
.mega-editorial[data-layout="ATLAS"]::after,
.mega-editorial[data-layout="QUIET"]::after {
  background:
    linear-gradient(90deg, #e7e4d9 0 37%, rgba(231, 228, 217, 0) 37.6%),
    linear-gradient(0deg, rgba(8, 24, 16, .76), transparent 42%);
}

/* BLEED（首页 / 关于）是全幅出血设计，不能切——但左侧仍需一块能读字的实底。
 * 30% 之前保持不透明，30-48% 收掉，比原来的 25%→66% 短得多。 */
.mega-editorial[data-layout="BLEED"]::after {
  background:
    linear-gradient(90deg, #eeeae1 0 30%, rgba(238, 234, 225, .92) 36%, rgba(238, 234, 225, 0) 48%),
    linear-gradient(0deg, rgba(8, 24, 16, .8), transparent 40%);
}

/* 纸面上的分隔线跟着纸面走：导航列表不再跨到照片上，宽度收到 34vw。
 * 1440 视口下约 490px，最长的「案例与项目」也不会越过 37% 的边界。 */
.js .site-nav .mega-links {
  width: min(30vw, 430px);
}

/* 中段视口（768-1100）列表不能超过 37% 的纸面边界，
 * 否则最长的「案例与项目」会把分隔线拖到照片上。用 34vw 留出余量。 */
/* 中段视口（768-1100）列表不能超过 37% 的纸面边界，
 * 否则最长的「案例与项目」会把分隔线拖到照片上。用 34vw 留出余量。 */
@media (max-width: 1100px) {
  .js .site-nav .mega-links { width: 34vw; }
}

/* 手机上菜单是「列表在上、图在下」的竖排，不存在分区问题，上面这些都不要生效 */
@media (max-width: 760px) {
  .js .site-nav .mega-links { width: auto; }
  /* 手机上菜单是「列表在上、图在下」，图必须回到全宽。
   * 这里写 inset 而不是只写 inset-inline-start——后者在部分层叠顺序下会被
   * 桌面端的 `inset: 0 0 0 17%` 里其余三条方向属性带着走，导致图只占右半边。 */
  .js .site-nav .mega-editorial .mega-stage-images,
  .js .site-nav .mega-editorial[data-layout="DIPTYCH"] .mega-stage-images,
  .js .site-nav .mega-editorial[data-layout="ATLAS"] .mega-stage-images,
  .js .site-nav .mega-editorial[data-layout="QUIET"] .mega-stage-images,
  .js .site-nav .mega-editorial[data-layout="BLEED"] .mega-stage-images {
    inset: 0;
  }
  /* 移动端不需要那层压暗，会吃掉图片亮度 */
  .js .site-nav .mega-editorial::after {
    background: linear-gradient(0deg, rgba(8, 24, 16, .78), transparent 46%);
  }
}

/* ── 分区：左侧纸面 / 右侧照片 ──────────────────────────────
 * 原来三种分栏布局（DIPTYCH / ATLAS / QUIET）都是「图从 27-35% 开始，
 * 遮罩一路渐变到 64% 才透明」，中间三十多个百分点是半透明带。
 * 导航列表宽度到 730px，正好压在这条带上——于是文字底下能看见人脸和杯子，
 * 照片左侧四成也被糊掉，两边都没落着。
 *
 * 改成硬边界：纸面到 37%，之后是干净的图。交界处只留 0.6%（约 9px）的软化，
 * 避免锯齿感，但视觉上就是一条线。
 * 图起点统一到 37%，与纸面边界对齐——否则图被盖住一截，左边会出现一道暗边。
 */
.mega-editorial[data-layout="DIPTYCH"] .mega-stage-images,
.mega-editorial[data-layout="ATLAS"] .mega-stage-images,
.mega-editorial[data-layout="QUIET"] .mega-stage-images {
  inset-inline-start: 37%;
}

.mega-editorial[data-layout="DIPTYCH"]::after,
.mega-editorial[data-layout="ATLAS"]::after,
.mega-editorial[data-layout="QUIET"]::after {
  background:
    linear-gradient(90deg, #e7e4d9 0 37%, rgba(231, 228, 217, 0) 37.6%),
    linear-gradient(0deg, rgba(8, 24, 16, .76), transparent 42%);
}

/* BLEED（首页 / 关于）是全幅出血设计，不能切——但左侧仍需一块能读字的实底。
 * 30% 之前保持不透明，30-48% 收掉，比原来的 25%→66% 短得多。 */
.mega-editorial[data-layout="BLEED"]::after {
  background:
    linear-gradient(90deg, #eeeae1 0 30%, rgba(238, 234, 225, .92) 36%, rgba(238, 234, 225, 0) 48%),
    linear-gradient(0deg, rgba(8, 24, 16, .8), transparent 40%);
}

/* 纸面上的分隔线跟着纸面走：导航列表不再跨到照片上，宽度收到 34vw。
 * 1440 视口下约 490px，最长的「案例与项目」也不会越过 37% 的边界。 */
.js .site-nav .mega-links {
  width: min(30vw, 430px);
}

/* 中段视口（768-1100）列表不能超过 37% 的纸面边界，
 * 否则最长的「案例与项目」会把分隔线拖到照片上。用 34vw 留出余量。 */
/* 中段视口（768-1100）列表不能超过 37% 的纸面边界，
 * 否则最长的「案例与项目」会把分隔线拖到照片上。用 34vw 留出余量。 */
@media (max-width: 1100px) {
  .js .site-nav .mega-links { width: 34vw; }
}

/* 手机上菜单是「列表在上、图在下」的竖排，不存在分区问题，上面这些都不要生效 */
@media (max-width: 760px) {
  .js .site-nav .mega-links { width: auto; }
  /* 手机上菜单是「列表在上、图在下」，图必须回到全宽。
   * 这里写 inset 而不是只写 inset-inline-start——后者在部分层叠顺序下会被
   * 桌面端的 `inset: 0 0 0 17%` 里其余三条方向属性带着走，导致图只占右半边。 */
  .js .site-nav .mega-editorial .mega-stage-images,
  .js .site-nav .mega-editorial[data-layout="DIPTYCH"] .mega-stage-images,
  .js .site-nav .mega-editorial[data-layout="ATLAS"] .mega-stage-images,
  .js .site-nav .mega-editorial[data-layout="QUIET"] .mega-stage-images,
  .js .site-nav .mega-editorial[data-layout="BLEED"] .mega-stage-images {
    inset: 0;
  }
  /* 移动端不需要那层压暗，会吃掉图片亮度 */
  .js .site-nav .mega-editorial::after {
    background: linear-gradient(0deg, rgba(8, 24, 16, .78), transparent 46%);
  }
}

/* BLEED 是全幅出血，图会从 17% 就开始，导航列必须比其它布局更窄，
 * 否则分隔线会拖进照片里，看起来像「线画在人脸上」。 */
.mega-editorial[data-layout="BLEED"] ~ .mega-links,
.js .site-nav:has(.mega-editorial[data-layout="BLEED"]) .mega-links {
  width: min(26vw, 375px);
}

/* BLEED 是全幅出血，图会从 17% 就开始，导航列必须比其它布局更窄，
 * 否则分隔线会拖进照片里，看起来像「线画在人脸上」。 */
.mega-editorial[data-layout="BLEED"] ~ .mega-links,
.js .site-nav:has(.mega-editorial[data-layout="BLEED"]) .mega-links {
  width: min(26vw, 375px);
}

/* ── v151.css ── */
/* V1.5.1 · 菜单改用「双帧错位」
 * ---------------------------------------------------------------------------
 * 替换掉原来那个 7px 白边 + 投影的相框。原来的问题是：services 等五项里，
 * 副图和主图是同一个文件的两个裁切 —— 一张照片叠在自己身上，只是多了个框。
 *
 * 现在每一项配两张真正不同的图：主图是工作场景（人在做事），副图是另一面
 * （现场 / 资料 / 地貌）。副图不再加边框，靠位置错开和极轻的投影分离，
 * 鼠标在画面上移动时两张图反向位移，画面是活的。
 *
 * 为什么不给副图加白边了：白边 + 厚投影会把副图变成一个「卡片」，
 * 两张图的关系就从「一幕场景」变成「一张卡片贴在海报上」。
 */

/* ── 副图：去边框、右上出血 ─────────────────────────────── */
.mega-editorial[data-layout="DIPTYCH"] .mega-detail-images,
.mega-editorial[data-layout="ATLAS"] .mega-detail-images,
.mega-editorial[data-layout="QUIET"] .mega-detail-images,
.mega-editorial[data-layout="BLEED"] .mega-detail-images {
  display: block;
  /* 右下而不是右上：右上被大号序号占着，压在人物脸上更糟。
   * 尺寸取 26%×30%，在 1440 视口下约 374×246，长宽比 1.52，
   * 接近素材的 16:9，裁切最少。 */
  inset: auto 3% 6% auto;
  width: 26%;
  height: 30%;
  border: 0;
  box-shadow: 0 18px 44px rgba(6, 20, 13, .28);
  overflow: hidden;
  /* ATLAS 原来是 rotate(3deg)，那个倾斜配白边才成立；去框之后要摆正 */
  transform: translate3d(calc(var(--px, 0) * 13px), calc(var(--py, 0) * 10px), 0);
  transition: transform .62s cubic-bezier(.22, .61, .36, 1), opacity .5s ease;
}

.mega-editorial .mega-detail-images img {
  object-position: 50% center;
  transform: scale(1.03);
}

/* ── 主图：跟着鼠标反向轻移 ─────────────────────────────── */
.mega-editorial {
  --px: 0;
  --py: 0;
}

.mega-editorial .mega-stage-images img {
  transition: opacity .5s ease, transform .62s cubic-bezier(.22, .61, .36, 1);
}

.mega-editorial .mega-stage-images img.is-active {
  transform: translate3d(calc(var(--px) * -9px), calc(var(--py) * -7px), 0) scale(1.03);
}

/* 主图放大到 1.03 之后，副图压住的那一角会多露出来一点，正好形成层次 */
.mega-editorial .mega-detail-images img.is-active {
  opacity: 1;
}

/* ── 手机上不叠第二张 ─────────────────────────────────────
 * 390 宽的屏，44% 宽的副图只有 170px，两张图挤在一起会看不清任何一张。
 * 手机端保持单图，这个方案本来就是为大屏设计的。 */
@media (max-width: 760px) {
  .mega-editorial[data-layout] .mega-detail-images {
    display: none;
  }
}

/* ── 系统关掉动效时，位移也一并取消 ───────────────────── */
@media (prefers-reduced-motion: reduce) {
  .mega-editorial .mega-stage-images img.is-active,
  .mega-editorial[data-layout] .mega-detail-images {
    transform: none;
    transition: opacity .2s ease;
  }
}

/* ── 修正：菜单里「只显示当前项那一张」被解码淡入规则盖掉了 ──
 * v149.css 有 `.js img[loading="lazy"].is-decoded { opacity: 1 }`，特异性 (0,3,1)；
 * 而菜单控制显隐的 `.mega-stage-images img { opacity: 0 }` / `.mega-detail-images img { opacity: 0 }`
 * 只有 (0,3,1) 和 (0,2,1)，压不过它。
 * 结果：六张主图、六张副图全部不透明，按 DOM 顺序后一张盖住前一张 ——
 * 菜单里看到的永远是最后一项（合作咨询）的图，跟当前页无关。
 * 之前六项的菜单图几乎都是同一组素材，看起来「本来就该这样」，换图之后才现形。
 * 这里用 (0,4,1) 把显隐控制抢回来。
 */
.js .mega-editorial .mega-stage-images img,
.js .mega-editorial .mega-detail-images img {
  opacity: 0;
}

.js .mega-editorial .mega-stage-images img.is-active,
.js .mega-editorial .mega-detail-images img.is-active {
  opacity: 1;
}

/* ── 修正：菜单里「只显示当前项那一张」被解码淡入规则盖掉了 ──
 * v149.css 有 `.js img[loading="lazy"].is-decoded { opacity: 1 }`，特异性 (0,3,1)；
 * 而菜单控制显隐的 `.mega-stage-images img { opacity: 0 }` / `.mega-detail-images img { opacity: 0 }`
 * 只有 (0,3,1) 和 (0,2,1)，压不过它。
 * 结果：六张主图、六张副图全部不透明，按 DOM 顺序后一张盖住前一张 ——
 * 菜单里看到的永远是最后一项（合作咨询）的图，跟当前页无关。
 * 之前六项的菜单图几乎都是同一组素材，看起来「本来就该这样」，换图之后才现形。
 * 这里用 (0,4,1) 把显隐控制抢回来。
 */
.js .mega-editorial .mega-stage-images img,
.js .mega-editorial .mega-detail-images img {
  opacity: 0;
}

.js .mega-editorial .mega-stage-images img.is-active,
.js .mega-editorial .mega-detail-images img.is-active {
  opacity: 1;
}

/* BLEED（首页 / 关于）的副图收窄到 22%、贴右边。
 * 这两种布局的文案在右下，宽幅排版一直排到 76%，26% 宽的副图会压住最后一个字。
 * 22% 在 1440 下是 317px，左边缘刚好落在文案右缘之外。 */
.mega-editorial[data-layout="BLEED"] .mega-detail-images {
  width: 22%;
  height: 28%;
  inset: auto 2% 5% auto;
}

/* BLEED（首页 / 关于）的副图收窄到 22%、贴右边。
 * 这两种布局的文案在右下，宽幅排版一直排到 76%，26% 宽的副图会压住最后一个字。
 * 22% 在 1440 下是 317px，左边缘刚好落在文案右缘之外。 */
.mega-editorial[data-layout="BLEED"] .mega-detail-images {
  width: 22%;
  height: 28%;
  inset: auto 2% 5% auto;
}

/* ATLAS（目的地）的文案是右对齐的，副图再放右下就会压住最后一个字
 * （实测「从多种地貌找到方向」的「找」被盖住）。
 * 移到左上：那里是桌面和斜放的照片，压一张不影响主图理解，也不碰序号和文案。 */
.mega-editorial[data-layout="ATLAS"] .mega-detail-images {
  inset: 6% auto auto 39%;
  width: 21%;
  height: 26%;
}

/* ATLAS（目的地）的文案是右对齐的，副图再放右下就会压住最后一个字
 * （实测「从多种地貌找到方向」的「找」被盖住）。
 * 移到左上：那里是桌面和斜放的照片，压一张不影响主图理解，也不碰序号和文案。 */
.mega-editorial[data-layout="ATLAS"] .mega-detail-images {
  inset: 6% auto auto 39%;
  width: 21%;
  height: 26%;
}
