:root{
  --wood:#4a2f1c;--wood2:#6b4528;--acorn:#b8651b;--leaf:#5f8f2f;--rune:#27b9cc;
  --parch:#f6eed8;--parch2:#efe3c3;--ink:#2e2216;--muted:#7a6a54;--stone:#8c8a82;
  --ok:#4f8a2b;--doing:#c9861a;--todo:#8a8070;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;font:16px/1.75 -apple-system,"PingFang SC","Microsoft YaHei","Noto Sans SC",sans-serif;color:var(--ink);
  background:var(--parch);background-image:radial-gradient(circle at 20% 0,#fff8e6 0,transparent 55%)}
a{color:var(--acorn);text-decoration:none}a:hover{text-decoration:underline}
img{max-width:100%;height:auto}
.top{background:var(--wood);border-bottom:4px solid var(--wood2);position:sticky;top:0;z-index:20}
.top-in{max-width:1120px;margin:auto;padding:8px 20px;display:flex;align-items:center;gap:20px;flex-wrap:wrap}
.brand{display:flex;align-items:center;gap:10px;color:#fbefd0;font-weight:800;font-size:18px;letter-spacing:1px}
.brand img{width:38px;height:38px}
.brand small{font-weight:600;color:#d8c49a;font-size:12px;letter-spacing:0}
.nav{margin-left:auto;display:flex;gap:6px;flex-wrap:wrap}
.nav a{color:#f1dfb5;padding:6px 14px;border-radius:6px;font-weight:600}
.nav a:hover,.nav a.on{background:var(--wood2);color:#fff;text-decoration:none}
.nav a.ext{border:1px solid #8a6a43}
.wrap{max-width:1120px;margin:auto;padding:0 20px}
.hero{background:linear-gradient(180deg,#7fb6e6 0,#bfe0ee 55%,var(--parch) 100%);padding:44px 0 36px;border-bottom:1px solid #e0d2ac}
.hero-in{display:grid;grid-template-columns:1.25fr 1fr;gap:36px;align-items:center}
.hero h1{margin:0 0 6px;font-size:0}
.hero .logo{width:min(480px,100%);filter:drop-shadow(0 4px 0 rgba(60,35,15,.25))}
.slogan{font-size:22px;font-weight:700;color:#3b2b19;margin:6px 0 2px}
.slogan-en{font-style:italic;color:#55442d;margin:0 0 18px}
.lead{font-size:17px;max-width:620px}
.poster{border:5px solid var(--wood);border-radius:8px;box-shadow:0 8px 0 rgba(60,35,15,.25);max-width:380px;justify-self:center}
.btns{display:flex;gap:12px;flex-wrap:wrap;margin-top:18px}
.btn{display:inline-block;padding:10px 20px;border-radius:8px;font-weight:700;border:3px solid var(--wood);background:var(--acorn);color:#fff;box-shadow:0 4px 0 var(--wood)}
.btn:hover{text-decoration:none;filter:brightness(1.07)}
.btn.alt{background:var(--parch);color:var(--wood)}
section{padding:34px 0}
h2{font-size:26px;margin:0 0 6px;color:var(--wood)}
h2::before{content:"";display:inline-block;width:14px;height:14px;background:var(--rune);margin-right:10px;transform:rotate(45deg) translateY(-2px);box-shadow:0 0 0 2px var(--wood)}
h3{font-size:19px;margin:22px 0 4px;color:var(--wood2)}
.sub{color:var(--muted);margin:0 0 18px}
.card{background:#fffaf0;border:3px solid var(--wood2);border-radius:10px;padding:18px 20px;box-shadow:0 4px 0 rgba(74,47,28,.25)}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px}
.stage{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;counter-reset:s}
.stage .st{background:#fffaf0;border:3px solid var(--stone);border-radius:10px;padding:12px 14px;position:relative}
.stage .st b{display:block;margin-bottom:4px}
.stage .st.done{border-color:var(--ok)}.stage .st.doing{border-color:var(--doing);background:#fff3d6}
.badge{display:inline-block;font-size:12px;font-weight:700;padding:1px 9px;border-radius:99px;color:#fff;background:var(--todo);vertical-align:middle}
.badge.done{background:var(--ok)}.badge.doing{background:var(--doing)}
.badge.ok{background:var(--ok)}.badge.sug{background:#6a7fb5}.badge.ver{background:#a2579b}
.bar{height:16px;background:#e5d8b6;border:2px solid var(--wood2);border-radius:99px;overflow:hidden;margin:8px 0}
.bar i{display:block;height:100%;background:repeating-linear-gradient(45deg,var(--leaf) 0 10px,#78a83f 10px 20px)}
table{border-collapse:collapse;width:100%;background:#fffaf0;margin:10px 0 18px;font-size:15px}
th,td{border:2px solid #d9c9a0;padding:8px 12px;text-align:left;vertical-align:top}
th{background:var(--parch2);color:var(--wood)}
ul.check{list-style:none;padding:0;margin:8px 0}
ul.check li{padding:5px 0 5px 30px;position:relative}
ul.check li::before{content:"";position:absolute;left:0;top:11px;width:16px;height:16px;border:2px solid var(--wood2);background:#fff;border-radius:3px}
ul.check li.done::before{background:var(--ok);border-color:var(--ok);box-shadow:inset 0 0 0 3px #fff}
ul.check li.doing::before{background:var(--doing);border-color:var(--doing);box-shadow:inset 0 0 0 3px #fff}
.log{border-left:4px solid var(--rune);padding:2px 0 2px 16px;margin:0 0 16px}
.log time{font-weight:800;color:var(--wood)}
.note{background:#e9f6f2;border:2px dashed #7bbfb2;padding:10px 14px;border-radius:8px;margin:14px 0;font-size:15px}
footer{background:var(--wood);color:#d8c49a;padding:26px 0;margin-top:30px;font-size:14px;text-align:center}
footer a{color:#f1dfb5}
.wiki{display:grid;grid-template-columns:230px 1fr;gap:30px;padding:28px 0}
.side{position:sticky;top:76px;align-self:start;background:#fffaf0;border:3px solid var(--wood2);border-radius:10px;padding:10px;max-height:calc(100vh - 100px);overflow:auto}
.side a{display:block;padding:5px 10px;border-radius:6px;color:var(--ink);font-size:15px}
.side a.on{background:var(--wood2);color:#fff}
.side a:hover{background:var(--parch2);text-decoration:none}
.side a.on:hover{background:var(--wood2)}
.side h4{margin:10px 10px 2px;font-size:12px;color:var(--muted);letter-spacing:2px}
.doc h1{font-size:30px;margin:0 0 4px;color:var(--wood)}
.doc p.meta{color:var(--muted);margin:0 0 18px}
.doc img.fig{border:3px solid var(--wood2);border-radius:8px;margin:10px 0}
@media(max-width:820px){
  .hero-in,.wiki{grid-template-columns:1fr}
  .side{position:static;max-height:none}
  .nav{margin-left:0}
}
