:root {
  --bg: #fbfaf7;
  --fg: #1f1d1a;
  --muted: #6b665e;
  --card: #ffffff;
  --border: #e4e0d8;
  --accent: #b4561b;
  --link: #8f3f0e;
}
@media (prefers-color-scheme: dark) {
  :root {
    --bg: #17150f;
    --fg: #ece8df;
    --muted: #a39d90;
    --card: #211e17;
    --border: #38342a;
    --accent: #e08a4d;
    --link: #f0a06b;
  }
}
* { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body {
  margin: 0;
  background: var(--bg);
  color: var(--fg);
  font: 17px/1.65 system-ui, -apple-system, "Segoe UI", "Noto Sans TC", "PingFang TC", "Microsoft JhengHei", sans-serif;
}
a { color: var(--link); }
a:hover { color: var(--accent); }
header, main, footer { max-width: 46rem; margin: 0 auto; padding: 0 1.25rem; }
header { padding-top: 1.5rem; padding-bottom: 1rem; display: flex; gap: 1.25rem; align-items: baseline; flex-wrap: wrap; }
header .brand { font-weight: 700; font-size: 1.2rem; color: var(--fg); text-decoration: none; letter-spacing: .01em; }
header nav a { margin-right: 1rem; }
main { padding-bottom: 3rem; }
footer { padding-top: 1.5rem; padding-bottom: 2.5rem; color: var(--muted); font-size: .9rem; border-top: 1px solid var(--border); margin-top: 2rem; }
h1 { font-size: 2rem; line-height: 1.25; margin: 1.5rem 0 .75rem; }
h2 { font-size: 1.4rem; margin: 2.25rem 0 .5rem; scroll-margin-top: 1rem; }
h3 { font-size: 1.1rem; margin: 1.75rem 0 .4rem; scroll-margin-top: 1rem; }
h4 { font-size: 1rem; margin: 1.25rem 0 .25rem; }
.lede { font-size: 1.15rem; color: var(--muted); margin-top: 0; }
.muted { color: var(--muted); }
.cards { display: grid; gap: 1rem; margin: 1.5rem 0; }
@media (min-width: 40rem) { .cards { grid-template-columns: 1fr 1fr; } }
.card { background: var(--card); border: 1px solid var(--border); border-radius: .75rem; padding: 1.1rem 1.25rem; }
.card h2 { margin: 0 0 .4rem; font-size: 1.2rem; }
.card p { margin: .4rem 0; }
.langs { display: flex; gap: .75rem; margin: 1rem 0; }
.langs a { border: 1px solid var(--border); border-radius: 999px; padding: .2rem .9rem; text-decoration: none; background: var(--card); }
.toc { background: var(--card); border: 1px solid var(--border); border-radius: .75rem; padding: .75rem 1.25rem; margin: 1rem 0; }
.toc ul { margin: .25rem 0; padding-left: 1.2rem; }
ul { padding-left: 1.3rem; }
li { margin: .5rem 0; }
li ul { margin-top: .25rem; }
.k { color: var(--muted); font-size: .9em; }
.note { border-left: 3px solid var(--accent); padding: .1rem 0 .1rem 1rem; margin: 1rem 0; }
code { font-family: ui-monospace, Menlo, Consolas, monospace; font-size: .9em; background: var(--card); border: 1px solid var(--border); border-radius: .25rem; padding: 0 .25rem; }
hr { border: 0; border-top: 1px solid var(--border); margin: 2.5rem 0; }
.hero { display: flex; gap: 1.1rem; align-items: center; margin-top: 1.5rem; }
.hero img { border-radius: 22%; flex: none; }
.hero h1 { margin: 0; }
.hero .lede { margin: .25rem 0 0; }
.cta { display: flex; flex-wrap: wrap; gap: .75rem; margin: 1.5rem 0 .5rem; }
.btn { display: inline-block; border-radius: 999px; padding: .6rem 1.25rem; text-decoration: none; font-weight: 600; border: 1px solid var(--accent); }
.btn.primary { background: var(--accent); color: var(--bg); }
.btn.primary:hover { color: var(--bg); }
.btn.secondary { background: var(--card); border-color: var(--border); }
.shots { display: flex; gap: 1rem; overflow-x: auto; padding: .25rem 0 1rem; margin: 1rem 0; scroll-snap-type: x mandatory; }
.shots figure { margin: 0; flex: none; width: 15rem; scroll-snap-align: start; }
.shots img { width: 100%; height: auto; border-radius: 1rem; border: 1px solid var(--border); display: block; }
.shots figcaption { color: var(--muted); font-size: .9rem; margin-top: .4rem; }
details { background: var(--card); border: 1px solid var(--border); border-radius: .75rem; padding: .6rem 1.1rem; margin: .6rem 0; }
summary { cursor: pointer; font-weight: 600; }
details p { margin: .5rem 0 .25rem; }
