/* Cooperation map, scroll-zoom (#340): the map stays put, the chapters scroll and drive its camera. */
.projects-page{--project-ink:#20382f;--project-paper:#f5f2ec;--project-muted:#6f6a62;--project-line:#dfd9ce;background:var(--project-paper);color:var(--project-ink);padding:38px clamp(18px,4vw,40px) 56px;box-sizing:border-box}
.projects-page *{box-sizing:border-box}
.projects-heading{max-width:1388px;margin:0 auto 30px}
.projects-eyebrow{font-size:12px;letter-spacing:.22em;margin:0 0 18px;color:var(--project-muted)}
.projects-page h1{font-size:clamp(28px,3vw,40px);font-weight:500;line-height:1.5;letter-spacing:.02em;margin:0}
.projects-lede{font-size:14px;line-height:1.9;color:var(--project-muted);margin:12px 0 0}
.projects-layout{max-width:1388px;margin:0 auto;display:grid;grid-template-columns:minmax(0,1.15fr) minmax(300px,.85fr);gap:clamp(26px,5vw,72px);align-items:start}
.projects-atlas{min-width:0;position:sticky;top:86px}
.projects-county-container{min-height:560px}
.projects-atlas .county-map-viewport{max-width:min(600px,calc((100vh - 330px) * 500 / 620))}
.projects-atlas .county-map-instructions{display:none}
.projects-map-fallback{line-height:1.8;padding:20px 0}
.projects-map-source{grid-column:2;font-size:12px;line-height:1.85;color:var(--project-muted);margin:22px 0 0}
.projects-map-source a{color:inherit;text-underline-offset:3px}

.projects-steps{list-style:none;margin:0;padding:0;min-width:0}
.projects-step{min-height:78vh;display:flex;flex-direction:column;justify-content:center;gap:16px;padding:30px 0;border-top:1px solid var(--project-line);opacity:.38}
.projects-step.is-active{opacity:1}
.projects-step-number{margin:0;font-size:12px;letter-spacing:.16em;color:#736e66;font-variant-numeric:tabular-nums}
.projects-page h2{font-size:clamp(26px,2.5vw,30px);font-weight:500;letter-spacing:.06em;line-height:1.45;margin:0}
.projects-step p:not(.projects-step-number){margin:0;font-size:14px;line-height:1.9;color:var(--project-muted)}
.projects-step p.projects-step-source{font-size:12px}
.projects-step-source a{color:inherit;text-underline-offset:3px}
.projects-step-art{display:flex;justify-content:center;padding:18px 24px 8px;background:#fbf9f5;border-radius:12px}
.projects-step-art img{display:block;width:100%;max-width:260px;height:auto;max-height:min(340px,38vh);object-fit:contain}
.projects-facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;margin:0;background:#ede8df;border:1px solid #ede8df;border-radius:12px;overflow:hidden}
.projects-facts>div{background:#fff;padding:14px 16px}
.projects-facts dt{font-size:12px;letter-spacing:.12em;color:#736e66}
.projects-facts dd{margin:4px 0 0;font-family:'Noto Serif TC','Songti TC',serif;font-size:19px;font-variant-numeric:tabular-nums}
.projects-layers{margin:0;padding:0;list-style:none;display:flex;flex-direction:column-reverse;gap:12px;counter-reset:layer}
.projects-layers>li{counter-increment:layer;font-size:14px;line-height:1.8;color:var(--project-muted);padding-left:34px;position:relative}
.projects-layers>li::before{content:counter(layer);position:absolute;left:0;top:1px;width:24px;height:24px;border:1px solid var(--project-ink);border-radius:50%;font-size:12px;line-height:22px;text-align:center;color:var(--project-ink)}
.projects-layers strong{display:block;color:var(--project-ink);font-weight:600}
.projects-actions{display:flex;flex-wrap:wrap;align-items:center;gap:12px 22px}
.projects-cta,.projects-step-button{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:48px;padding:12px 22px;border:1px solid var(--project-ink);border-radius:8px;background:var(--project-ink);color:#fff!important;font:inherit;font-size:14px;letter-spacing:.08em;cursor:pointer}
.projects-step-button{align-self:flex-start}
.projects-cta:hover{text-decoration:none}
.projects-secondary{display:inline-flex;align-items:center;min-height:44px;font-size:14px;color:var(--project-ink)!important;text-decoration:underline;text-underline-offset:4px}
.projects-page :is(a,button):focus-visible{outline:3px solid var(--project-ink);outline-offset:4px}
.projects-page ::selection{background:var(--project-ink);color:var(--project-paper)}
.projects-page h1,.projects-page h2{text-wrap:balance}
.projects-page p{text-wrap:pretty}
@media(prefers-reduced-motion:no-preference){.projects-step{transition:opacity .22s ease}}

/* Narrow: one column, the map pinned under the site header on paper, chapters scroll beneath it. */
@media(max-width:1000px){
  .projects-layout{grid-template-columns:minmax(0,1fr);gap:0}
  /* The pinned map covers the top of the screen until the layout ends, so the last chapter
     sits tight against the layout's end and the data credit moves up beside the map. */
  .projects-page{padding-bottom:0}
  .projects-map-source{grid-column:auto;order:1;margin:12px 0 0}
  .projects-steps{order:2}
  .projects-step:last-child{min-height:0;padding-bottom:26px}
  .projects-atlas{top:0;z-index:4;background:var(--project-paper);padding-bottom:8px;border-bottom:1px solid var(--project-line)}
  .projects-county-container{min-height:0}
  .projects-atlas .county-map-viewport{max-width:min(420px,calc(36vh * 500 / 620))}
  .projects-atlas :is(.county-map-site-note,.county-map-supplements){display:none}
  /* Off screen, not removed: the status line still announces each camera move. */
  .projects-atlas .county-map-heading{position:absolute;width:1px;height:1px;min-height:0;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
  .projects-atlas .county-map-controls{padding-bottom:8px}
  .projects-step{min-height:60vh}
  .projects-step-art img{max-height:240px}
}
@media(max-width:760px){.projects-page{padding-top:22px}.projects-heading{text-align:center;margin-bottom:22px}.projects-page h1{font-size:28px}.projects-eyebrow{margin-bottom:12px}}
