@font-face{font-family:"TK Serif SC";src:url(../fonts/noto-serif-sc-500-0.woff2) format("woff2");font-weight:500;font-display:swap;unicode-range:U+835F}
@font-face{font-family:"TK Serif SC";src:url(../fonts/noto-serif-sc-500-1.woff2) format("woff2");font-weight:500;font-display:swap;unicode-range:U+7504}
@font-face{font-family:"TK Serif SC";src:url(../fonts/noto-serif-sc-500-2.woff2) format("woff2");font-weight:500;font-display:swap;unicode-range:U+88D4}
@font-face{font-family:"TK Serif SC";src:url(../fonts/noto-serif-sc-500-3.woff2) format("woff2");font-weight:500;font-display:swap;unicode-range:U+5339}
@font-face{font-family:"TK Serif SC";src:url(../fonts/noto-serif-sc-500-4.woff2) format("woff2");font-weight:500;font-display:swap;unicode-range:U+300C,U+300D,U+60A6}
@font-face{font-family:"TK Serif SC";src:url(../fonts/noto-serif-sc-500-5.woff2) format("woff2");font-weight:500;font-display:swap;unicode-range:U+4F30,U+58A8,U+5F84,U+6C9F,U+8000}
@font-face{font-family:"TK Serif SC";src:url(../fonts/noto-serif-sc-500-6.woff2) format("woff2");font-weight:500;font-display:swap;unicode-range:U+6770,U+6F02,U+8651,U+8FEA}
@font-face{font-family:"TK Serif SC";src:url(../fonts/noto-serif-sc-500-7.woff2) format("woff2");font-weight:500;font-display:swap;unicode-range:U+59D0,U+5BDF,U+6D0B,U+6FB3,U+83DC}
@font-face{font-family:"TK Serif SC";src:url(../fonts/noto-serif-sc-500-8.woff2) format("woff2");font-weight:500;font-display:swap;unicode-range:U+542B,U+542F,U+5473,U+5757,U+5BA3,U+6D32,U+76D1,U+8363,U+8C01}
@font-face{font-family:"TK Serif SC";src:url(../fonts/noto-serif-sc-500-9.woff2) format("woff2");font-weight:500;font-display:swap;unicode-range:U+4E49,U+4E9A,U+521D,U+54A8,U+54EA,U+552E,U+575B,U+5956,U+5C14,U+5C40,U+677F,U+843D,U+8C61,U+9002}
@font-face{font-family:"TK Serif SC";src:url(../fonts/noto-serif-sc-500-10.woff2) format("woff2");font-weight:500;font-display:swap;unicode-range:U+4E16,U+4E66,U+4E9B,U+4EC0,U+4F01,U+5148,U+51C6,U+529F,U+53CC,U+53D8,U+53EA,U+5411,U+5417,U+5740,U+59CB,U+5B58,U+5E26,U+5E2E,U+5F62,U+628A,U+62A4,U+6539,U+6548,U+6574,U+6784,U+6B65,U+724C,U+73A9,U+754C,U+79F0,U+7B7E,U+7BB1,U+7EA2,U+8003,U+8425,U+8BA9,U+8BC6,U+8BE2,U+8BED,U+8C03,U+8D70,U+8FDE,U+914D,U+9500,U+9645,U+9700,U+9879}
@font-face{font-family:"TK Serif SC";src:url(../fonts/noto-serif-sc-500-11.woff2) format("woff2");font-weight:500;font-display:swap;unicode-range:U+4E1C,U+4E48,U+4ECE,U+4EF6,U+4F55,U+4FDD,U+505A,U+514D,U+518C,U+522B,U+52A9,U+5305,U+534E,U+5355,U+53CA,U+53E3,U+53F0,U+5546,U+56DB,U+573A,U+5973,U+5B57,U+5E38,U+60F3,U+6216,U+624D,U+671F,U+6761,U+6807,U+6B64,U+6D41,U+6D77,U+6D88,U+76EE,U+76F4,U+7A0B,U+7ACB,U+7BA1,U+88C5,U+89C1,U+8A00,U+8BC4,U+8D39,U+8DEF,U+9009,U+90AE,U+91CC,U+FF1F}
@font-face{font-family:"TK Serif SC";src:url(../fonts/noto-serif-sc-500-12.woff2) format("woff2");font-weight:500;font-display:swap;unicode-range:U+4E0A,U+4E0D,U+4E0E,U+4E1A,U+4E3A,U+4E4B,U+4E8E,U+4EA7,U+4EE5,U+4EEC,U+4F4D,U+4F5C,U+4F60,U+4FE1,U+5165,U+516C,U+5173,U+51FA,U+5206,U+5230,U+52A1,U+5316,U+53EF,U+53F8,U+5408,U+540C,U+540D,U+548C,U+54C1,U+56FD,U+56FE,U+5728,U+5730,U+5916,U+591A,U+5927,U+597D,U+5B50,U+5B9A,U+5BB6,U+5BF9,U+5C0F,U+5DE5,U+5E02,U+5E73,U+5E7F,U+5F00,U+5FAE,U+5FC3,U+6027,U+606F,U+6210,U+6211,U+6240,U+63A5,U+63A8,U+6587,U+65B9,U+65F6,U+662F,U+670D,U+672C,U+673A,U+6743,U+6B63,U+6CD5,U+6CE8,U+6D3B,U+751F,U+7528,U+7535,U+77E5,U+7C7B,U+7CFB,U+7ECF,U+7F8E,U+8005,U+8054,U+80FD,U+8981,U+8BBA,U+8BF4,U+8FC7,U+8FDB,U+901A,U+9053,U+957F,U+95EE,U+95F4,U+9762,U+9875,U+9898}
@font-face{font-family:"TK Serif SC";src:url(../fonts/noto-serif-sc-500-13.woff2) format("woff2");font-weight:500;font-display:swap;unicode-range:U+3001,U+3002,U+4E00,U+4E2D,U+7684,U+FF0C,U+FF1A}
@font-face{font-family:"TK Brush";src:url(../fonts/ma-shan-zheng-400-0.woff2) format("woff2");font-weight:400;font-display:swap;unicode-range:U+7504}
@font-face{font-family:"TK Brush";src:url(../fonts/ma-shan-zheng-400-1.woff2) format("woff2");font-weight:400;font-display:swap;unicode-range:U+9645}
@font-face{font-family:"TK Brush";src:url(../fonts/ma-shan-zheng-400-2.woff2) format("woff2");font-weight:400;font-display:swap;unicode-range:U+8DEF}
@font-face{font-family:"TK Brush";src:url(../fonts/ma-shan-zheng-400-3.woff2) format("woff2");font-weight:400;font-display:swap;unicode-range:U+6587}
/* Layout: one 70rem column with wide margins. The seal's quatrefoil is the single motif: a garden window in the hero,
   a frame for each area of work, and the gate visitors step through on arrival. Ink-wash landscapes carry the imagery.
   Single light theme by choice: the logo is black ink and cinnabar on paper. */
:root{
  --paper:#FCFBF9;      /* page */
  --mist:#F0EEEA;       /* quiet band */
  --ink:#1A1816;        /* text, dark band */
  --ink-soft:#57514B;   /* secondary text, 7.6:1 on paper */
  --rule:#DCD6CF;       /* hairlines */
  --dot:#CFC8C0;        /* map land */
  --cinnabar:#C40A1C;   /* seal red, used sparingly */
  --cinnabar-deep:#9C0817;
  --cinnabar-wash:#FBE9E7;
  --on-ink:#F4F1EC;
  --on-ink-soft:#BDB5AC;
  --rule-on-ink:#3A3632;
  --display:"Marcellus","TK Serif SC","Songti SC","Noto Serif SC",Optima,Candara,serif;
  --body:"Hanken Grotesk","PingFang SC","Hiragino Sans GB","Microsoft YaHei","Noto Sans CJK SC","Source Han Sans SC","Helvetica Neue",Arial,sans-serif;
  --zh:"TK Serif SC","Songti SC","STSong","Noto Serif SC","Source Han Serif SC",serif;
  --brush:"TK Brush","Kaiti SC","STKaiti","KaiTi",serif;
  --measure:38rem;
  color-scheme:light;
}
@font-face{font-family:"Marcellus";src:url(../fonts/marcellus-latin-400-normal.woff2) format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"Hanken Grotesk";src:url(../fonts/hanken-grotesk-latin-400-normal.woff2) format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"Hanken Grotesk";src:url(../fonts/hanken-grotesk-latin-500-normal.woff2) format("woff2");font-weight:500;font-display:swap}
@font-face{font-family:"Hanken Grotesk";src:url(../fonts/hanken-grotesk-latin-600-normal.woff2) format("woff2");font-weight:600;font-display:swap}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--body);font-size:1.0625rem;line-height:1.65;font-feature-settings:"kern","liga"}
html[lang="zh-Hans"] body{line-height:1.85;letter-spacing:.01em}
img{max-width:100%;height:auto;display:block}
a{color:inherit;text-decoration-thickness:1px;text-underline-offset:.22em}
a:hover{color:var(--cinnabar)}
:focus-visible{outline:2px solid var(--cinnabar);outline-offset:3px}
.zh{font-family:var(--zh);letter-spacing:.04em;font-weight:500}
.skip{position:absolute;left:-9999px}
.skip:focus{left:16px;top:16px;background:var(--ink);color:var(--paper);padding:.5rem 1rem;z-index:20}

.wrap{max-width:70rem;margin:0 auto;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
@media (min-width:640px){.wrap{padding-left:max(32px,env(safe-area-inset-left,0px));padding-right:max(32px,env(safe-area-inset-right,0px))}}

/* Type scale: Marcellus echoes the logo's flared capitals; Chinese headings fall through to a subset Noto Serif SC */
h1,h2,h3{font-family:var(--display);font-weight:400;line-height:1.12;text-wrap:balance;margin:0;letter-spacing:.005em}
html[lang="zh-Hans"] :is(h1,h2,h3){font-weight:500;line-height:1.35;letter-spacing:.04em}
h1{font-size:clamp(2.35rem,5.6vw,4.25rem)}
html[lang="zh-Hans"] h1{font-size:clamp(2.1rem,5vw,3.6rem)}
h2{font-size:clamp(1.75rem,3.4vw,2.6rem)}
html[lang="zh-Hans"] h2{font-size:clamp(1.55rem,3vw,2.25rem)}
h3{font-size:1.4rem;line-height:1.25}
p{margin:0;max-width:var(--measure)}
.lede{font-size:clamp(1.12rem,1.6vw,1.28rem);line-height:1.6;max-width:36rem}
html[lang="zh-Hans"] .lede{line-height:1.85}
.muted{color:var(--ink-soft)}
.stack{display:flex;flex-direction:column;gap:1.1rem}
.kicker{font-family:var(--display);color:var(--cinnabar);font-size:1.05rem;letter-spacing:.06em}

/* Header */
.site-header{border-bottom:1px solid var(--rule);position:relative;background:var(--paper)}
.site-header .wrap{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding-block:.9rem}
.brand{display:flex;align-items:center;gap:.75rem;text-decoration:none;flex-shrink:0}
.brand img{width:44px;height:auto}
.brand span{font-family:var(--display);text-transform:uppercase;letter-spacing:.16em;font-size:.95rem;line-height:1.2}
html[lang="zh-Hans"] .brand span{letter-spacing:.3em;font-size:1.05rem}
.brand:hover{color:var(--ink)}
.header-right{display:flex;align-items:center;gap:1.1rem}
.nav-wide{display:none}
.nav-wide ul,.nav-narrow ul{list-style:none;margin:0;padding:0}
.nav-wide ul{display:flex;gap:1.25rem}
.nav-wide a,.nav-narrow a{text-decoration:none;font-size:.93rem;white-space:nowrap}
.nav-wide a[aria-current],.nav-narrow a[aria-current]{text-decoration:underline;text-decoration-color:var(--cinnabar)}
.lang-switch{white-space:nowrap;flex-shrink:0;font-family:var(--zh);font-size:.95rem;text-decoration:none;border:1px solid var(--ink);padding:.18rem .6rem;line-height:1.4;border-radius:2px}
html[lang="zh-Hans"] .lang-switch{font-family:var(--display);letter-spacing:.08em}
.lang-switch:hover{background:var(--ink);color:var(--paper)}
.nav-narrow summary{cursor:pointer;list-style:none;font-size:.95rem;padding:.3rem .1rem;border-bottom:1px solid var(--ink)}
.nav-narrow summary::-webkit-details-marker{display:none}
.nav-narrow[open] summary{border-color:var(--cinnabar)}
.nav-narrow > nav{position:absolute;left:0;right:0;top:100%;background:var(--paper);border-bottom:1px solid var(--rule);padding:.5rem max(16px,env(safe-area-inset-right,0px)) 1rem max(16px,env(safe-area-inset-left,0px));z-index:5}
.nav-narrow li a{display:block;padding:.7rem 0;border-top:1px solid var(--rule)}
@media (min-width:1080px){.nav-wide{display:block}.nav-narrow{display:none}}
@media (max-width:400px){.brand span{letter-spacing:.1em;font-size:.86rem}.brand img{width:38px}.header-right{gap:.8rem}}

/* Sections */
.section{padding-block:clamp(3.5rem,8vw,6.5rem)}
.section + .section{border-top:1px solid var(--rule)}
:is(.band-mist,.band-ink) + .section,.section + :is(.band-mist,.band-ink){border-top:0}
.band-mist{background:var(--mist)}
.band-ink{background:var(--ink);color:var(--on-ink)}
.band-ink .muted{color:var(--on-ink-soft)}
.band-ink .kicker{color:#F0828C}
.band-ink a:hover{color:var(--on-ink);text-decoration-color:var(--cinnabar)}
.section-head{display:flex;flex-direction:column;gap:1rem;margin-bottom:clamp(2rem,4vw,3rem)}

/* Hero with the garden window (unchanged original) */
.hero .wrap{display:grid;gap:2.5rem;align-items:center;padding-block:clamp(3rem,8vw,6.5rem)}
.hero-text{display:flex;flex-direction:column;gap:1.5rem;min-width:0}
.window{position:relative;width:min(100%,19rem);aspect-ratio:1;margin-inline:auto;color:var(--cinnabar)}
.window svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.window-text{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;gap:1.1em;flex-direction:row-reverse}
.window-text span{writing-mode:vertical-rl;font-family:var(--zh);font-weight:500;font-size:clamp(1.6rem,4.2vw,2.6rem);letter-spacing:.32em;color:var(--ink);line-height:1}
.window-text span:first-child{color:var(--cinnabar)}
@media (min-width:880px){.hero .wrap{grid-template-columns:minmax(0,7fr) minmax(0,5fr)}.window{width:min(100%,26rem)}}
@media (prefers-reduced-motion:no-preference){
  .window path{stroke-dasharray:1;stroke-dashoffset:1;animation:draw 2.4s .2s cubic-bezier(.6,0,.2,1) forwards}
  html.gate-on .window path{animation-play-state:paused}
  .window-text{animation:settle 1.6s .2s ease-out both}
}
@keyframes draw{to{stroke-dashoffset:0}}
@keyframes settle{from{opacity:.25}to{opacity:1}}

.actions{display:flex;flex-wrap:wrap;gap:1rem 1.6rem;align-items:center}
.button{display:inline-block;background:var(--ink);color:var(--paper);text-decoration:none;padding:.85rem 1.5rem;border-radius:2px;font-weight:500;font-size:1rem}
.button:hover{background:var(--cinnabar);color:var(--paper)}
.band-ink .button{background:var(--on-ink);color:var(--ink)}
.band-ink .button:hover{background:var(--paper);color:var(--cinnabar)}
.link{font-weight:500;text-decoration:underline;text-decoration-color:var(--cinnabar)}

/* Ink-wash band: the motto set in the sky above the mountains */
.ink-band{position:relative;background:var(--paper);overflow:hidden}
.ink-band .wrap{padding-block:clamp(3rem,7vw,5.5rem) 0;position:relative;z-index:1}
.motto{font-family:var(--display);font-size:clamp(1.9rem,4.4vw,3.6rem);line-height:1.18;max-width:22ch;margin-left:auto;text-align:right;text-wrap:balance}
html[lang="zh-Hans"] .motto{font-family:var(--zh);font-weight:500;letter-spacing:.12em;line-height:1.5;max-width:16em}
.ink-band-img{width:100%;height:clamp(220px,40vw,560px);object-fit:cover;object-position:center 70%;margin-top:clamp(-6rem,-6vw,-2rem)}

/* Page heads on inner pages: the mountains sit under the title */
.page-head{position:relative;overflow:hidden;border-bottom:1px solid var(--rule)}
.page-head .wrap{padding-block:clamp(3rem,7vw,5.5rem) 0;position:relative;z-index:1}
.page-head-ink{width:100%;height:clamp(110px,16vw,230px);object-fit:cover;object-position:center bottom;margin-top:clamp(1rem,3vw,2rem)}
.page-head + .section{border-top:0}

/* Four areas: brush characters in the window frame */
.tiles{display:grid;gap:1px;background:var(--rule);border:1px solid var(--rule)}
@media (min-width:760px){.tiles{grid-template-columns:1fr 1fr}}
.tile{display:grid;grid-template-columns:clamp(5.5rem,14vw,8rem) minmax(0,1fr);gap:1.4rem;align-items:center;padding:clamp(1.4rem,3vw,2.2rem);background:var(--paper);text-decoration:none;transition:background .25s}
.tile:hover{background:#fff;color:var(--ink)}
.tile-mark{position:relative;aspect-ratio:1;color:var(--cinnabar);display:grid;place-items:center}
.tile-mark svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible;transition:transform .5s cubic-bezier(.3,0,.2,1)}
.tile:hover .tile-mark svg{transform:rotate(45deg)}
.glyph{font-family:var(--brush);font-size:clamp(2.6rem,7vw,3.9rem);line-height:1;color:var(--ink)}
.tile-text{display:flex;flex-direction:column;gap:.35rem;min-width:0}
.tile-text .zh{color:var(--cinnabar);font-size:1.05rem}
.tile-desc{color:var(--ink-soft);font-size:.98rem;line-height:1.55}
.pillar-head{display:flex;gap:1.2rem;align-items:center}
.pillar-head .glyph{font-size:clamp(3.4rem,8vw,5rem);color:var(--cinnabar)}
.band-ink .pillar-head .glyph{color:#F0828C}
.pillar-head .zh{color:var(--cinnabar);display:block}
.band-ink .pillar-head .zh{color:#F0828C}

/* Corridor map */
.corridor{display:grid;gap:2.5rem;align-items:center}
@media (min-width:880px){.corridor{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:4rem}}
.corridor > *{min-width:0}
.map-wrap{max-width:34rem;width:100%;margin-inline:auto}
.map{width:100%;height:auto;display:block;overflow:visible}
.map-land{fill:none;stroke:var(--dot);stroke-width:4.6;stroke-linecap:round}
.map-arc{fill:none;stroke-width:3.2;stroke-linecap:round}
.map-arc-red{stroke:var(--cinnabar)}
.map-arc-ink{stroke:var(--ink);stroke-dasharray:2 12}
.map-pulse-red{fill:var(--cinnabar)}
.map-pulse-ink{fill:var(--ink)}
.map-node{fill:var(--paper);stroke:var(--ink);stroke-width:4}
.map-label{font-family:var(--display);font-size:34px;fill:var(--ink)}
.map-label-big{font-size:46px;letter-spacing:.06em}
.map-label-soft{fill:var(--ink-soft);font-size:40px;letter-spacing:.1em}
@media (prefers-reduced-motion:reduce){.map-pulse{display:none}}
.direction{display:flex;flex-direction:column;gap:.5rem;padding-top:1.2rem;border-top:1px solid var(--ink)}

/* Definition lists of regulators and review items */
.regs{display:grid;gap:0;margin:0}
.regs div{display:grid;gap:.25rem 2rem;padding-block:1.1rem;border-top:1px solid var(--rule)}
.band-ink .regs div{border-color:var(--rule-on-ink)}
.regs dt{font-family:var(--display);font-size:1.2rem}
html[lang="zh-Hans"] .regs dt{font-weight:500;font-size:1.1rem}
.regs dd{margin:0;max-width:var(--measure)}
@media (min-width:640px){.regs div{grid-template-columns:13rem minmax(0,1fr)}}

/* Steps: a real sequence, so numbered */
.steps{list-style:none;margin:0;padding:0;counter-reset:step;display:flex;flex-direction:column}
.steps li{counter-increment:step;display:grid;grid-template-columns:3.2rem minmax(0,1fr);gap:.2rem 1rem;padding-block:1.6rem;border-top:1px solid var(--rule)}
.steps li::before{content:counter(step);font-family:var(--display);font-size:1.9rem;line-height:1;color:var(--cinnabar);grid-row:span 2}
.steps h3{margin-bottom:.4rem}

/* HerWell programs */
.programs{display:grid;gap:1.5rem 3rem;list-style:none;margin:0;padding:0}
@media (min-width:640px){.programs{grid-template-columns:1fr 1fr}}
.programs li{display:flex;flex-direction:column;gap:.2rem;padding-top:1rem;border-top:1px solid var(--rule)}
.programs .en{font-family:var(--display);font-size:1.25rem}
html[lang="zh-Hans"] .programs .en{font-weight:500;letter-spacing:.04em}
.programs .zh{color:var(--ink-soft)}

.split{display:grid;gap:1.5rem 3rem}
@media (min-width:880px){.split{grid-template-columns:minmax(0,5fr) minmax(0,7fr)}}
.split > *{min-width:0}
.list{margin:0;padding-left:1.1rem;max-width:var(--measure);display:flex;flex-direction:column;gap:.45rem}
.list li::marker{color:var(--cinnabar)}

.facts{margin:0;display:grid;max-width:44rem}
.facts div{display:grid;grid-template-columns:minmax(0,10rem) minmax(0,1fr);gap:1rem;padding-block:.8rem;border-top:1px solid var(--rule)}
.facts dt{color:var(--ink-soft)}
.facts dd{margin:0;overflow-wrap:anywhere}

.faq{display:flex;flex-direction:column;max-width:48rem}
.faq details{border-top:1px solid var(--rule)}
.faq details:last-child{border-bottom:1px solid var(--rule)}
.faq summary{cursor:pointer;list-style:none;padding:1.25rem 2.5rem 1.25rem 0;position:relative;font-family:var(--display);font-size:1.3rem;line-height:1.3}
html[lang="zh-Hans"] .faq summary{font-weight:500;font-size:1.15rem;line-height:1.5}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"";position:absolute;right:.4rem;top:50%;width:.7rem;height:.7rem;border-right:1.5px solid var(--cinnabar);border-bottom:1.5px solid var(--cinnabar);transform:translateY(-70%) rotate(45deg);transition:transform .2s}
.faq details[open] summary::after{transform:translateY(-30%) rotate(225deg)}
.faq .answer{padding-bottom:1.5rem;display:flex;flex-direction:column;gap:.9rem}

.contact-grid{display:grid;gap:3rem}
@media (min-width:880px){.contact-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}
.contact-line{font-family:var(--display);font-size:clamp(1.3rem,2.6vw,1.75rem);overflow-wrap:anywhere}
.placeholder{background:var(--cinnabar-wash);color:var(--cinnabar-deep);padding:0 .3em;border-radius:2px;font-family:var(--body);font-size:.9em}

/* Footer: the mountains return at the foot of every page */
.site-footer{position:relative;padding-block:0 2.5rem;font-size:.95rem}
.footer-ink{width:100%;height:clamp(110px,14vw,200px);object-fit:cover;object-position:center bottom;transform:scaleX(-1);margin-bottom:3rem}
.site-footer .wrap{display:grid;gap:2.5rem}
@media (min-width:880px){.site-footer .wrap{grid-template-columns:auto minmax(0,1fr) minmax(0,1fr)}}
.footer-logo img{width:96px}
.footer-nav ul{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:.5rem 1.5rem}
.footer-nav a{text-decoration:none}
.footer-meta{display:flex;flex-direction:column;gap:.9rem;color:var(--ink-soft)}
.ack{grid-column:1/-1;border-top:1px solid var(--rule);padding-top:1.5rem;color:var(--ink-soft);font-size:.9rem;max-width:48rem}

/* ---------- Entrance: the seal is written, then opens as a gate ---------- */
.gate{display:none}
html.gate-on{overflow:hidden}
html.gate-on .gate{display:block;position:fixed;inset:0;z-index:100;cursor:pointer}
.gate-veil{position:absolute;inset:0;width:100%;height:100%}
.gate-veil-fill{fill:var(--paper)}
.gate-ink{position:absolute;left:0;right:0;bottom:0;width:100%;height:36vh;object-fit:cover;object-position:center bottom;pointer-events:none}
.gate-stage{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:clamp(1rem,3vh,1.8rem);padding:max(16px,env(safe-area-inset-top,0px)) max(16px,env(safe-area-inset-right,0px)) max(16px,env(safe-area-inset-bottom,0px)) max(16px,env(safe-area-inset-left,0px));will-change:transform,opacity}
.gate-seal{width:min(68vw,44vh,23rem);height:auto;overflow:visible}
.seal-red{color:var(--cinnabar)}
.seal-ink{color:var(--ink)}
.gate-name{display:flex;flex-direction:column;align-items:center;gap:.5rem;margin:0;max-width:none;text-align:center}
.gate-en{font-family:var(--display);text-transform:uppercase;letter-spacing:.34em;font-size:clamp(1.15rem,3.4vw,1.75rem);padding-left:.34em}
.gate-zh{font-family:var(--zh);font-weight:500;letter-spacing:.6em;font-size:clamp(1rem,2.8vw,1.35rem);color:var(--ink-soft);padding-left:.6em}
html[lang="zh-Hans"] .gate-zh{font-size:clamp(1.4rem,4vw,2rem);color:var(--ink)}
html[lang="zh-Hans"] .gate-en{font-size:clamp(.9rem,2.6vw,1.15rem);color:var(--ink-soft)}
.gate-enter{font:inherit;font-family:var(--display);font-size:1.05rem;letter-spacing:.14em;color:var(--ink);background:var(--paper);border:1px solid var(--ink);border-radius:2px;padding:.75rem 1.8rem;cursor:pointer;display:inline-flex;gap:.8em;align-items:center;transition:background .25s,color .25s,border-color .25s}
.gate-enter span{font-family:var(--zh);letter-spacing:.2em}
.gate-enter:hover{background:var(--cinnabar);border-color:var(--cinnabar);color:var(--paper)}
.gate-enter:focus-visible{outline:2px solid var(--cinnabar);outline-offset:4px}
.gate.is-leaving :is(.gate-enter,.gate-name,.gate-en,.gate-zh){animation:none;opacity:0;transition:opacity .3s}
@media (prefers-reduced-motion:no-preference){
  .gate-ink{animation:rise 3.2s cubic-bezier(.2,.6,.2,1) both}
  .ring-draw{stroke-dasharray:1;stroke-dashoffset:1;animation:draw 1.9s .15s cubic-bezier(.65,0,.25,1) forwards}
  .ring-full{opacity:0;animation:appear .5s 1.95s ease-out forwards}
  .brush{stroke-dasharray:1;stroke-dashoffset:1;animation:draw .8s cubic-bezier(.45,0,.2,1) forwards}
  .brush-0{animation-delay:.85s}.brush-1{animation-delay:1.3s}.brush-2{animation-delay:1.75s}.brush-3{animation-delay:2.2s}
  .aus{opacity:0;animation:appear .8s 2.6s ease-out forwards}
  .gate-en{opacity:0;animation:track 1.4s 2.75s cubic-bezier(.2,.6,.2,1) forwards}
  .gate-zh{opacity:0;animation:appear 1s 3.05s ease-out forwards}
  .gate-enter{opacity:0;animation:appear .8s 3.5s ease-out forwards}
}
@keyframes appear{to{opacity:1}}
@keyframes rise{from{opacity:0;transform:translateY(6vh)}to{opacity:1;transform:none}}
@keyframes track{from{opacity:0;letter-spacing:.8em}to{opacity:1;letter-spacing:.34em}}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

.qr{margin:0;display:flex;flex-direction:column;gap:.6rem;width:min(100%,13rem)}
.qr img{width:100%;border:1px solid var(--rule);border-radius:2px;background:var(--paper)}
.qr figcaption{color:var(--ink-soft);font-size:.92rem}
@media (max-width:520px){.facts div{grid-template-columns:1fr;gap:.15rem}.contact-line{font-size:1.3rem}}
