:root{--paper:#fbf9f4;--ink:#1e1e24;--grid:#d9c9a8;--ok:#2c6e49;--warn:#b7791f;--bad:#a33a2b;--ink-soft:#55535c;--paper-deep:#f3eee2;--line:#e6dcc6;--kai:"Kaiti SC", "STKaiti", "KaiTi", "BiauKai", "Songti SC", serif;--song:"Songti SC", "Noto Serif SC", "Source Han Serif SC", "STSong", serif;--sans:-apple-system, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--paper);color:var(--ink);font:16px/1.75 var(--sans);background-image:linear-gradient(var(--line) 1px, transparent 1px);background-size:100% 2.2rem;background-attachment:local;margin:0}a{color:var(--ok);text-underline-offset:3px}a:hover{color:var(--ink)}.wrap{width:100%;max-width:1040px;margin:0 auto;padding:0 20px}.narrow{max-width:760px}.top{background:var(--paper);border-bottom:2px solid var(--ink)}.top .wrap{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding-top:12px;padding-bottom:12px;display:flex}.brand{color:var(--ink);font:700 18px/1.2 var(--song);align-items:center;gap:10px;text-decoration:none;display:flex}.brand-mark{flex:none;width:34px;height:34px}.top nav{flex-wrap:wrap;gap:4px 16px;display:flex}.top nav a{color:var(--ink-soft);border-bottom:2px solid #0000;padding:2px 0;font-size:15px;text-decoration:none}.top nav a[aria-current=page],.top nav a:hover{color:var(--ink);border-bottom-color:var(--bad)}main{padding:28px 0 56px}h1,h2,h3{font-family:var(--song);font-weight:700;line-height:1.35}h1{margin:8px 0 10px;font-size:clamp(26px,5vw,38px)}h2{margin:36px 0 12px;font-size:22px}h3{margin:22px 0 8px;font-size:17px}.lede{color:var(--ink-soft);max-width:44em;margin:0 0 20px;font-size:17px}.tian{--c:var(--grid);width:var(--s,72px);height:var(--s,72px);border:2px solid var(--c);background-color:#fff;background-image:linear-gradient(to right, transparent calc(50% - .5px), var(--grid) calc(50% - .5px), var(--grid) calc(50% + .5px), transparent calc(50% + .5px)), linear-gradient(to bottom, transparent calc(50% - .5px), var(--grid) calc(50% - .5px), var(--grid) calc(50% + .5px), transparent calc(50% + .5px));font:400 calc(var(--s,72px) * .68)/1 var(--kai);color:var(--ink);flex:none;place-items:center;display:inline-grid;position:relative}.tian.ok{--c:var(--ok)}.tian.warn{--c:var(--warn)}.tian.bad{--c:var(--bad)}.tian .tag{font:700 11px/1 var(--sans);color:#fff;background:var(--c);padding:3px 4px;position:absolute;bottom:-2px;right:-2px}.hero-grid{gap:8px;margin:4px 0 6px;display:flex}.hero-grid .tian{--s:54px}.boundary{border:2px solid var(--ink);background:var(--paper-deep);margin:18px 0 24px;padding:14px 18px}.boundary strong{font-family:var(--song);margin-bottom:4px;font-size:17px;display:block}.boundary ul{margin:6px 0 0;padding-left:1.2em}.boundary li{margin:2px 0}form.desk{border:1px solid var(--grid);background:#fff;gap:14px;padding:18px;display:grid}.row{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;display:grid}label{color:var(--ink-soft);gap:4px;font-size:14px;display:grid}input[type=text]{width:100%;min-width:0;font:400 22px/1.3 var(--kai);color:var(--ink);border:1px solid var(--grid);border-bottom:2px solid var(--ink);background:var(--paper);padding:8px 10px}input[type=text]:focus{outline:2px solid var(--ok);outline-offset:1px}.actions{flex-wrap:wrap;align-items:center;gap:10px;display:flex}button{font:700 16px/1 var(--sans);border:2px solid var(--ink);cursor:pointer;background:var(--ink);color:var(--paper);padding:12px 20px}button.ghost{color:var(--ink);background:0 0}button:hover{background:var(--ok);border-color:var(--ok);color:#fff}.hint{color:var(--ink-soft);margin:0;font-size:13px}.err{color:var(--bad);margin:0;font-weight:700}.legend{flex-wrap:wrap;gap:8px 18px;margin:18px 0 0;padding:0;font-size:14px;list-style:none;display:flex}.legend li{align-items:center;gap:6px;display:flex}.legend i{border:2px solid;width:14px;height:14px;display:inline-block}.legend .ok{border-color:var(--ok)}.legend .warn{border-color:var(--warn)}.legend .bad{border-color:var(--bad)}#results{gap:22px;margin-top:26px;display:grid}.card{border:1px solid var(--grid);border-top:4px solid var(--c,var(--grid));background:#fff;padding:18px}.card.ok{--c:var(--ok)}.card.warn{--c:var(--warn)}.card.bad{--c:var(--bad)}.card-head{flex-wrap:wrap;align-items:flex-end;gap:14px;display:flex}.card-head .cells{flex-wrap:wrap;gap:6px;display:flex}.card-head .sum{font:700 16px/1.4 var(--song);color:var(--c)}.chars{gap:12px;margin:16px 0 0;padding:0;list-style:none;display:grid}.chars>li{border-top:1px dashed var(--grid);grid-template-columns:44px minmax(0,1fr);gap:12px;padding-top:12px;display:grid}.chars .tian{--s:44px}.chars .role{color:var(--ink-soft);font-size:12px;display:block}.notes{margin:2px 0 0;padding-left:1.1em;font-size:15px}.notes li{overflow-wrap:anywhere;margin:3px 0}.src{color:var(--ink-soft);font-size:12px}.src a{color:var(--ink-soft)}.unknown{color:var(--warn);font-weight:700}select{font:16px var(--sans);border:1px solid var(--grid);background:var(--paper);max-width:100%;padding:4px 6px}.tone{background:var(--paper);border-left:4px solid var(--c2,var(--grid));margin:14px 0 0;padding:10px 12px;font-size:15px}.tone.flat{--c2:var(--warn)}.tone.mixed{--c2:var(--ok)}.tone.unknown{--c2:var(--warn)}.prose p,.prose li,.prose blockquote{overflow-wrap:anywhere;max-width:46em}.prose code{overflow-wrap:anywhere;word-break:break-all}.prose blockquote{border-left:4px solid var(--ok);font-family:var(--song);background:#fff;margin:10px 0;padding:10px 14px}.prose .meta{color:var(--ink-soft);font-size:14px}.prose table{border-collapse:collapse;background:#fff;width:100%;font-size:15px}.prose th,.prose td{border:1px solid var(--grid);text-align:left;vertical-align:top;overflow-wrap:anywhere;padding:6px 8px}.tbl{overflow-x:auto}footer{border-top:2px solid var(--ink);color:var(--ink-soft);padding:18px 0 28px;font-size:13px}footer .wrap{gap:4px;display:grid}.nf{text-align:center;padding:40px 0}.nf .hero-grid{justify-content:center}@media (width<=720px){.row{grid-template-columns:repeat(2,minmax(0,1fr))}.wrap{padding:0 16px}form.desk{padding:14px}}.chars .tian .tag{display:none}.card-head .tian .tag{padding:2px 3px;font-size:10px}
