/* Stage: the 1728-px design canvas, scaled to the viewport. Sections stack inside it at their
   Figma heights; children sit at Figma coordinates. Mobile (<768) switches to flow layout (Phase 3). */
*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; background: #fff; }
body { font-family: var(--font-zh); -webkit-font-smoothing: antialiased; text-rendering: geometricPrecision; overflow-x: hidden; }
img, svg { display: block; }
a { color: inherit; text-decoration: none; }
button { font: inherit; border: 0; background: none; padding: 0; cursor: pointer; }

.stage-wrap { width: 100%; overflow: hidden; }
.stage { width: 1728px; height: 5166px; overflow: visible; /* was hidden; #s0 grounds now bleed into the side margins (stage-k < 1), .stage-wrap clips at the viewport */ position: relative; transform-origin: top left; margin: 0 auto; }
.sec { position: relative; width: 1728px; overflow: visible; }
.sec > * { position: absolute; }
/* text boxes: Figma boxes are the layout box; keep line-height explicit per element */
.t { margin: 0; white-space: pre-wrap; text-spacing-trim: space-all; } /* Chrome trims full-width CJK punctuation by default; Figma does not (s3 finding) */
.t.center { text-align: center; }
.t.right { text-align: right; }
.sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

/* Page-ground bleed (7 Sep 2026, --stage-k 0.8): the four full-width grounds in #s0 extend 400px past
   each stage edge so the side margins carry the same gradient/ground. Illustrations keep their boxes. */
#s0 [data-fig="1:64840"], #s0 [data-fig="1:64846"], #s0 [data-fig="1:64848"], #s0 [data-fig="1:64849"] {
  left: -400px !important; width: 2528px !important;
}
