/* Reset & base typography */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-padding-top:var(--header-h)}
body{
  margin:0;background:var(--c-bg);color:var(--c-ink);
  font-family:var(--f-sans);font-size:var(--fs-body);line-height:1.8;font-weight:400;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
}
img,video,svg{display:block;max-width:100%}
img{height:auto}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer}
h1,h2,h3,h4,p,ul,ol,figure,dl,dd,blockquote{margin:0}
ul,ol{padding:0;list-style:none}
a{color:inherit;text-decoration:none;transition:color var(--dur)}
a:hover{color:var(--c-accent)}
:focus-visible{outline:1px solid var(--c-accent);outline-offset:3px}

h1,h2,h3,h4{font-family:var(--f-serif);color:var(--c-ink)}
/* 標題斷行平均，避免最後一行只剩一兩個字 */
h1,h2,h3,.h1,.h2,.h3{text-wrap:balance}
p{text-wrap:pretty}
.h1{font-family:var(--f-serif);font-weight:600;font-size:var(--fs-h1);line-height:1.2;letter-spacing:-0.02em}
.h1--inner{font-size:var(--fs-h1-inner)}
.h2{font-family:var(--f-serif);font-weight:600;font-size:var(--fs-h2);line-height:1.2;letter-spacing:-0.01em}
.h3{font-family:var(--f-serif);font-weight:500;font-size:var(--fs-h3);line-height:1.4}
.h4{font-family:var(--f-serif);font-weight:500;font-size:var(--fs-h4);line-height:1.4}
.number{font-family:var(--f-serif);font-weight:500;font-size:var(--fs-number);line-height:1;letter-spacing:-0.02em;font-variant-numeric:tabular-nums}
.number small{font-size:22px;margin-left:6px;color:var(--c-ink-2);letter-spacing:0}
.quote-text{font-family:var(--f-serif);font-weight:400;font-size:var(--fs-quote);line-height:1.6}
.body-lg{font-size:var(--fs-body-lg);line-height:1.8}
.body-sm{font-size:var(--fs-body-sm);line-height:1.7}
.muted{color:var(--c-ink-2)}
.caption{font-size:var(--fs-caption);line-height:1.6;color:var(--c-ink-2)}
.label{font-family:var(--f-mono);font-size:var(--fs-label);letter-spacing:.16em;text-transform:uppercase;color:var(--c-ink-2);line-height:1.6}
.mono{font-family:var(--f-mono);font-variant-numeric:tabular-nums}
.accent{color:var(--c-accent)}
/* 以句子為單位斷行，避免行尾只剩一兩個字 */
.keep{display:inline-block}

.visually-hidden{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip-link{position:absolute;left:16px;top:-48px;z-index:100;background:var(--c-ink);color:var(--c-bg);padding:8px 16px}
.skip-link:focus{top:8px;color:var(--c-bg)}

/* Reveal（淡入＋位移 ≤16px） */
.reveal{opacity:0;transform:translateY(16px);transition:opacity .6s ease,transform .6s ease}
.reveal.is-in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{transition:none!important;animation:none!important;scroll-behavior:auto!important}
  .reveal{opacity:1;transform:none}
}
