/* ── reset ───────────────────────────────────────────────────── */
*, *::before, *::after { box-sizing: border-box; }

html, body {
  width: 100%;
  height: 100%;
  margin: 0;
  overflow: hidden;
}

body {
  background: var(--stage);
  color: var(--ink);
  font: 12px var(--font);
  letter-spacing: .012em;
  word-spacing: .02em;
  font-kerning: normal;
}

/* 纸张噪点：只在露出灰绿底色时可见（Menu 总览） */
body::before {
  content: '';
  position: fixed;
  inset: 0;
  opacity: .09;
  pointer-events: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath filter='url(%23n)' opacity='.6' d='M0 0h140v140H0z'/%3E%3C/svg%3E");
}

h1, h2, h3, p { margin: 0; font-weight: 400; }
img { display: block; max-width: 100%; }

button {
  font: inherit;
  color: inherit;
  letter-spacing: inherit;
  border: 0;
  background: none;
  padding: 0;
  cursor: pointer;
  text-align: left;
}
button:disabled { opacity: .3; cursor: default; }
button:focus-visible, a:focus-visible { outline: 1px solid; outline-offset: 5px; }

/* 脚本聚焦的标题（tabindex=-1）不画焦点框 */
[tabindex="-1"]:focus { outline: none; }

body.is-busy { cursor: progress; }

@media (max-width: 650px) {
  body { letter-spacing: .01em; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation: none !important;
    transition: none !important;
    scroll-behavior: auto !important;
  }
}
