:root{--bg: #faf8f5;--paper: #ffffff;--ink: #25231f;--muted: #686159;--line: #e5ded4;--header: #ffffff;--header-text: #25231f;--header-rule: 1px solid #e5ded4;--accent: #b4332a;--accent-text: #ffffff;--brand: #b4332a;--nav-current: #b4332a;--soon: #6d645a;--field: #ffffff;--secondary-line: #d9d3cb;--mark: #f6d5d0;--notice: #fff6f0;--focus: #1d4e89;--theme-color: #b4332a;--chip: #ffffff;--chip-text: #1c1c1c;--chip-line: #e5ded4;--chip-on: #b4332a;--chip-on-text: #fffaf6;--soft: #f4f0ea;--result: #fcfaf7;--accent-hover: #962a23;--accent-soft: #f9ece8;--success: #46614b;--error: #a02d25;color-scheme:light}*{box-sizing:border-box}body{display:flex;flex-direction:column;min-height:100vh;margin:0;background:var(--bg);color:var(--ink);font-family:Hanzi Tool Mono,PingFang SC,Microsoft YaHei,monospace;font-size:1rem;font-weight:400;line-height:1.75;font-synthesis:none;-webkit-font-smoothing:antialiased}a{color:var(--accent)}a:hover{text-decoration:none}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.skip{position:absolute;left:.75rem;top:.75rem;transform:translateY(-150%);background:var(--paper);color:var(--ink);padding:.4rem .7rem;z-index:2}.skip:focus{transform:none}.wrap{width:min(1200px,calc(100% - 64px));margin-inline:auto}.site-header{background:var(--header);color:var(--header-text);border-bottom:var(--header-rule)}.site-header .wrap{display:flex;align-items:center;justify-content:space-between;gap:1rem;min-height:68px}.brand{color:var(--brand);text-decoration:none;font-weight:600;font-size:20px;white-space:nowrap}.site-nav{display:flex;gap:24px;font-size:15px}.site-nav a{color:inherit;text-decoration:none;min-height:44px;display:inline-flex;align-items:center}.site-nav a[aria-current=page]{color:var(--nav-current);text-decoration:underline;text-underline-offset:.3em}main{flex:1;padding:32px 0 56px}h1{letter-spacing:-.02em;font-size:38px;line-height:1.45;margin:0 0 .6rem;font-weight:600}h2{font-size:26px;line-height:1.45;margin:2rem 0 .7rem;font-weight:600}h3{font-size:20px;line-height:1.45;margin:1.15rem 0 .3rem;font-weight:600}strong{font-weight:600}.lede{margin:0 0 1.25rem;color:var(--muted);max-width:40rem}.prose{max-width:720px;overflow-wrap:anywhere}main>.wrap:has(>.article-body){max-width:720px}main>.wrap:not(.stage)>.prose{font-size:18px;line-height:1.9}.prose p{margin:0 0 .9rem}.fold-stack{margin-top:1.5rem}.menu>summary{display:flex;align-items:center;justify-content:space-between;gap:.75rem;min-height:48px;padding:.65rem 0;cursor:pointer;list-style:none;font-weight:400}.menu>summary::-webkit-details-marker{display:none}.menu>summary::marker{content:""}.menu>summary:after{content:"";width:.45rem;height:.45rem;border-right:1.5px solid var(--muted);border-bottom:1.5px solid var(--muted);transform:translateY(-.12rem) rotate(45deg);flex:none}.menu:not([open])>summary:after{transform:translateY(.05rem) rotate(-45deg)}.menu-body{padding:0 0 .75rem}.menu-label{margin:.85rem 0 0;color:var(--muted);font-size:14px}.menu-body>.menu{margin-top:.9rem}.menu-body>.menu>summary{font-size:1rem;font-weight:400}.menu-body>.menu>.menu-body{font-size:1rem;padding-top:.35rem}.menu-body>.menu>summary,.menu-body>.menu>.menu-body{padding-left:.9rem}.menu-body>p:last-child{margin-bottom:0}.wrap>.menu{max-width:45rem}.stage{--tool-content-width: 1200px}.stage>:is(.tool-shell,.tool-support){max-width:var(--tool-content-width)}.stage .prose{max-width:none}.stage-head{text-align:left}.home-page h1{font-size:44px}.stage-head .lede{max-width:none}.pick-title{text-align:left}.picks{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;list-style:none;margin:0;padding:0}.picks.learning,.picks.related{grid-template-columns:repeat(3,minmax(0,1fr))}.picks li{min-width:0}.picks a,.picks .soon{display:flex;flex-direction:column;gap:12px;height:100%;padding:24px;border:1px solid var(--line);border-radius:12px;background:var(--paper);color:var(--ink);text-align:left;text-decoration:none}.picks strong{font-size:20px;line-height:1.5}.picks span{color:var(--muted);font-size:14px;line-height:1.75}.picks a:hover{border-color:var(--accent)}.picks a:hover strong{color:var(--accent)}.faq{margin-top:2rem;text-align:left}.faq h2{text-align:left}.faq .menu>summary{justify-content:space-between;font-weight:400}.faq .menu-body{text-align:left}.tool{background:var(--paper);border:1px solid var(--line);border-radius:16px;padding:24px}.tool fieldset{border:0;margin:0 0 .85rem;padding:0}.tool legend{font-size:14px;color:var(--muted);font-weight:400;margin-bottom:.4rem}.segment{display:flex;flex-wrap:wrap;gap:.45rem}.segment label{position:relative;display:inline-flex;align-items:center;min-height:44px;padding:.35rem .9rem;border:1px solid var(--line);border-radius:8px;background:var(--field);cursor:pointer}.segment input{position:absolute;opacity:0;width:1px;height:1px}.segment label:has(input:checked){background:var(--accent-soft);color:var(--accent);border-color:#d9a09a}.segment label:has(input:focus-visible){outline:2px solid var(--focus);outline-offset:2px}.hint{margin:.55rem 0 0;color:var(--muted);font-size:14px}textarea{width:100%;min-height:14rem;padding:.75rem;border:1px solid var(--line);border-radius:10px;background:var(--field);color:inherit;font:inherit;font-size:17px;line-height:1.85;resize:vertical}button{min-height:44px;padding:.4rem 1rem;border-radius:8px;font:inherit;cursor:pointer}button:disabled{opacity:.5;cursor:not-allowed}button[aria-busy=true]{cursor:progress}button:not(:disabled):hover{background:var(--soft)}.primary,a.primary{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:8px 24px;font-weight:600;background:var(--accent);color:var(--accent-text);border:1px solid var(--accent);border-radius:8px;text-decoration:none}.primary:not(:disabled):hover{background:var(--accent-hover)}.secondary{background:transparent;color:var(--ink);border:1px solid var(--secondary-line)}.tool-status{min-height:1.5rem;margin:.6rem 0 0;color:var(--muted)}.noscript{margin:0 0 .8rem;padding:.6rem .75rem;background:var(--notice);border-radius:8px}.notice,.license{color:var(--muted);font-size:14px}.notice{margin:.85rem 0 0}table{width:100%;border-collapse:collapse;margin:.5rem 0 1rem;font-size:.98rem}th,td{border-bottom:1px solid var(--line);text-align:left;vertical-align:top;padding:.55rem .4rem;overflow-wrap:anywhere}th{width:6.5rem}.tool-list{list-style:none;padding:0;margin:0;display:grid;gap:.75rem}.tool-list li{margin:0}.tool-card{background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:.9rem 1rem}.tool-card{display:block;color:inherit;text-decoration:none}.tool-card:hover{border-color:var(--accent)}.tool-card strong,.tool-card .name{display:block;font-size:20px;font-weight:600;color:var(--ink)}.tool-card span{display:block;margin-top:.2rem;color:var(--muted)}.tool-card .soon{color:var(--soon);font-size:14px}.site-footer{padding:24px 0 32px;border-top:1px solid var(--line);color:var(--muted);font-size:14px;text-align:left}.site-footer p{margin:.35rem 0}.site-footer nav{display:flex;flex-wrap:wrap;gap:20px}.site-footer .menu{max-width:none}.site-footer .menu>summary{justify-content:space-between}@media(min-width:800px){textarea{min-height:18rem}}.tabs{display:flex;flex-wrap:wrap;gap:.45rem;margin:0 0 .9rem}.tabs button{background:var(--field);color:var(--ink);border:1px solid var(--line)}.tabs button[aria-selected=true]{background:var(--accent-soft);color:var(--accent);border-color:#d9a09a}.tab-panel[hidden]{display:none}.ruby-sheet{min-height:8rem;margin-top:.85rem;padding:.9rem .75rem .45rem;border:1px solid var(--line);border-radius:8px;background:var(--field);line-height:2.7;font-size:1.2rem}.ruby-sheet:empty:before{content:"标注结果会显示在这里。";color:var(--muted);font-size:1rem;line-height:1.65}.ruby-sheet[data-jyut-ruby]:empty:before{content:"粤拼会标在这里。"}.ruby-sheet ruby{display:inline-grid;grid-template-columns:minmax(44px,max-content);justify-items:center;padding-inline:3px;vertical-align:bottom;line-height:1.6}.ruby-sheet[data-jyut-ruby] ruby{grid-template-columns:minmax(52px,max-content)}.ruby-sheet .ruby-base{grid-area:2 / 1;white-space:nowrap}.ruby-sheet rp{display:none}.ruby-sheet rt{grid-area:1 / 1;white-space:nowrap;line-height:1.4;font-size:13px;color:var(--muted)}.ruby-sheet ruby.poly .ruby-base{text-decoration:underline dotted var(--soon);text-underline-offset:.18em}.prose .ruby-sheet{margin-top:.2rem}textarea.compact{min-height:9rem}.stats{display:grid;grid-template-columns:1fr 1fr;gap:.65rem;margin-top:.85rem}.stat{background:var(--field);border:1px solid var(--line);border-radius:8px;padding:.7rem .8rem}.stat strong{display:block;font-size:1.45rem;line-height:1.25;overflow-wrap:anywhere}.stat span{color:var(--muted);font-size:14px}.punct-result{width:100%;min-height:14rem;padding:.75rem;border:1px solid var(--line);border-radius:8px;background:var(--field);font:inherit;font-size:1rem;line-height:1.65;white-space:pre-wrap;overflow-wrap:anywhere}.punct-result:empty:before{content:"转换结果会显示在这里。改过的标点会标成红色。";color:var(--muted)}.punct-result mark{background:var(--mark);color:var(--accent);font-weight:400;border-radius:2px;padding:0 .08em}.print-sheet{display:none}.related-list{padding-left:1.2rem}.section-link{color:inherit;text-decoration:none}.section-link:hover{color:var(--accent)}.tool input[type=text]{width:100%;min-height:44px;padding:.55rem .75rem;border:1px solid var(--line);border-radius:10px;background:var(--field);color:inherit;font:inherit}.stroke-chars{display:flex;flex-wrap:wrap;gap:.45rem;margin-top:.85rem}.stroke-chars button[aria-pressed=true]{background:var(--accent-soft);color:var(--accent);border-color:#d9a09a}.stroke-stage{display:grid;place-items:center;min-height:14rem;margin-top:.85rem;padding:.75rem;border:1px solid var(--line);border-radius:8px;background:var(--field)}.empty-state{display:grid;justify-items:center;gap:.65rem;max-width:16rem;text-align:center}.empty-state p{margin:0;color:var(--ink)}.empty-icon{width:2.6rem;height:2.6rem;color:var(--accent)}.stroke-stage:has(.stroke-target:not(:empty)) .empty-state{display:none}.crumb{display:flex;flex-wrap:wrap;gap:.35rem;margin:0 0 .7rem;color:var(--muted);font-size:14px}.crumb a{color:var(--muted)}.channel{display:inline-block;margin:0 0 .45rem;padding:.1rem .55rem;border-radius:999px;font-size:.85rem}.channel-tools{background:var(--accent);color:var(--accent-text)}.channel-learn{background:var(--ink);color:var(--paper)}.hsk-sheet{margin-top:.85rem;line-height:2.4;font-size:1.15rem}.hsk-sheet:empty:before{content:"等级会标在这里。";color:var(--muted);font-size:1rem;line-height:1.65}.hsk-word sup{font-size:.62em;line-height:1;margin-left:.08em;color:var(--accent)}.hsk-miss{border-bottom:1px dotted var(--soon)}.hsk-stats{margin-top:1rem}.hsk-stats th{width:auto}@media(min-width:800px){.stats{grid-template-columns:repeat(4,1fr)}textarea.compact{min-height:11rem}.punct-result{min-height:18rem}}.tool-shell{padding:0;overflow:hidden;box-shadow:0 4px 20px -14px #30241829}.tool-settings,.tool-shell>.tabs{display:flex;flex-wrap:wrap;gap:16px 40px;padding:20px 24px;margin:0;background:var(--result);border-bottom:1px solid var(--line)}.tool-settings fieldset{margin:0}.tool-settings .segment{gap:8px;font-size:15px}.tool-work{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:24px;padding:16px 24px 24px}.tool-work.single{grid-template-columns:minmax(0,1fr)}.tool-input,.tool-result{min-width:0}.pane-head{display:flex;justify-content:space-between;align-items:center;gap:12px;min-height:44px;margin:0 0 8px;font-size:16px;font-weight:600}.input-actions{display:flex;gap:4px}.text-button{padding:8px;border:0;background:transparent;color:var(--muted);font-size:14px}.tool-input textarea{display:block;min-height:240px;padding:16px}.single .tool-input textarea{min-height:160px}.run-row{display:flex;align-items:center;gap:16px;margin-top:16px}.run-row:empty{display:none}.run-row .hint{margin:0;font-size:14px}.tool-result{display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:12px;align-content:start}.tool-result>.pane-head{grid-column:1;grid-row:1}.result-content{grid-column:1 / -1;grid-row:2;min-width:0;overflow-wrap:anywhere}.result-content>textarea,.result-content>.punct-result{min-height:240px;padding:16px;background:var(--result);font-size:17px;line-height:1.85}.result-content .ruby-sheet{margin:0;font-size:20px;line-height:2.7;min-height:96px;overflow-wrap:anywhere}.result-content .stats{margin:0}.result-actions{grid-column:2;grid-row:1;display:flex;flex-wrap:wrap;justify-content:end;gap:8px;align-self:start;margin-bottom:8px}.result-actions:empty{display:none}.tool-result>.tool-status{grid-column:1 / -1;grid-row:3;font-size:14px;margin:16px 0 0}.copy-manual{grid-column:1 / -1;grid-row:4;margin-top:16px}.copy-manual label{display:block;font-size:14px;margin-bottom:8px}.copy-manual textarea{min-height:112px}[data-number-chinese-root] .tool-work :is(.tool-input,.result-content)>textarea{min-height:144px}.tool-source{border-top:1px solid var(--line);background:var(--result);margin:0;padding:14px 24px;color:var(--muted);font-size:14px}.tool-source a{color:inherit;margin-left:8px}[data-state=empty] .result-content>textarea,[data-state=ready] .result-content>textarea,[data-state=empty] .result-content>.punct-result{min-height:96px}[data-state=stale] .result-content{color:var(--muted);opacity:.7}[data-state=stale] .result-content [data-tool-output]{border-style:dashed}[data-state=success] .tool-status{color:var(--success)}[data-state=error] .tool-status,[data-state=stale] .tool-status,.tool-status[data-error]{color:var(--error)}[data-state=loading] [data-tool-run]{cursor:progress}[data-state=loading] .result-content [data-tool-output]:empty:before{content:"正在处理，请稍候。";font-size:16px}[data-state=error] .result-content [data-tool-output]:empty:before{content:"处理失败，请重试。";font-size:16px}[data-state=no-hanzi] .result-content [data-tool-output]:empty:before{content:"没有找到可处理的汉字。";font-size:16px}.stroke-empty{margin:0;color:var(--muted)}.stroke-stage:has(.stroke-target:not(:empty)) .stroke-empty{display:none}.hsk-overview{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:24px}.hsk-overview:empty{display:none}.coverage-item{display:grid;padding:12px;gap:4px;background:var(--soft);border:1px solid var(--line);border-radius:10px;font-size:14px}.coverage-item strong{font-size:20px}.hsk-sheet{margin:0;padding:16px;min-height:96px;border:1px solid var(--line);border-radius:10px}.hsk-stats caption{text-align:left;margin:24px 0 8px;font-weight:600}[hidden]{display:none!important}@media(max-width:899px){.wrap{width:calc(100% - 32px)}.tool-settings,.tool-shell>.tabs{gap:16px;padding:16px}.tool-work{grid-template-columns:minmax(0,1fr);gap:24px;padding:12px 16px 20px}.tool-input textarea{min-height:160px}.result-content>textarea,.result-content>.punct-result{min-height:112px}.run-row .primary{width:100%}.run-row .hint{display:none}.result-actions{grid-column:1 / -1;grid-row:3;margin:12px 0 0}.tool-result>.tool-status{grid-row:4}.copy-manual{grid-row:5}.tool-source{padding:14px 16px}.hsk-overview{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:599px){.site-header .wrap{min-height:60px;gap:12px}.brand{font-size:18px}.site-nav{gap:12px;font-size:14px}main{padding:24px 0 40px}h1{font-size:30px;line-height:1.4}.home-page h1{font-size:32px}h2{font-size:24px}main>.wrap:not(.stage)>.prose{font-size:17px}.tool:not(.tool-shell){padding:16px}}@media screen and (min-width:1100px){.picks:not(.learning):not(.related){grid-template-columns:repeat(5,minmax(0,1fr))}:is([data-pinyin-root],[data-jyut-root]) .tool-work.single{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start}:is([data-pinyin-root],[data-jyut-root]) .single .tool-input textarea,:is([data-pinyin-root],[data-jyut-root]) .result-content .ruby-sheet:not(:empty){min-height:240px}[data-counts-root] .tool-work.single{grid-template-columns:minmax(0,2fr) minmax(0,1fr);align-items:start}[data-counts-root] .tool-input textarea{min-height:260px}[data-counts-root] .stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;grid-auto-rows:minmax(124px,auto)}[data-counts-root] .stat{padding:20px}[data-counts-root] .stat strong{font-size:28px}[data-counts-root] .stat strong[data-count=minutes]{font-size:20px;line-height:1.4}[data-stroke-root] .tool-work.single{grid-template-columns:minmax(0,330px) minmax(0,1fr);gap:32px;align-items:start}[data-stroke-root] .tool-input{padding:16px;background:var(--result);border:1px solid var(--line);border-radius:10px}[data-stroke-root] .run-row .primary{width:100%}[data-stroke-root] .stroke-chars{margin:0 0 16px}[data-stroke-root] .stroke-stage{margin:0;min-height:280px;background:var(--result)}[data-hsk-root] .result-content{display:grid;grid-template-columns:minmax(0,3fr) minmax(0,2fr);gap:24px;align-items:start}[data-hsk-root] .hsk-overview{grid-column:1 / -1;grid-template-columns:repeat(8,minmax(0,1fr));margin:0}[data-hsk-root] .hsk-sheet{min-height:220px}[data-hsk-stats]{min-width:0}[data-hsk-root] .hsk-stats{margin:0}[data-hsk-root] .hsk-stats caption{margin:0 0 8px}}@media print{body:has([data-pinyin-root]){background:#fff}body:has([data-pinyin-root]) :is(.site-header,.site-footer,.skip,.crumb,.lede,.tabs,.tool-input,.tool-source,.result-actions,.tool-status,.copy-manual,.prose,.tool-aux,.tool-support){display:none!important}body:has([data-pinyin-root]) .tool-shell{border:0;box-shadow:none}body:has([data-pinyin-root]) .tool-work,body:has([data-pinyin-root]) .tool-result{display:block;padding:0}body:has([data-pinyin-root]) .ruby-sheet{border:0}}.stroke-chars:empty{display:none}:is([data-state=empty],[data-state=ready],[data-state=no-hanzi]) .stroke-stage{min-height:96px}.tool-support{margin-top:48px;overflow-wrap:anywhere}.tool-aux,.home-support{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr);gap:48px;align-items:start}.tool-aux .faq,.home-support .faq{margin:0}.tool-aux h2,.home-support h2{margin:0 0 16px}.tool-explanation,.home-support aside{min-width:0;color:var(--muted);font-size:14px}.tool-explanation h2,.home-support aside h2{color:var(--ink)}.tool-explanation>p{margin:0 0 16px}.tool-explanation .menu>summary{color:var(--ink);font-size:16px}.faq .menu{border-bottom:1px solid var(--line)}.faq .menu>summary{gap:24px;padding:16px 0;min-height:60px}.faq .menu>summary:after{content:"+";width:auto;height:auto;border:0;transform:none;font-size:20px}.faq .menu[open]>summary:after{content:"−"}.faq .menu-body{color:var(--muted);padding:0 32px 16px 0}.faq .menu-body p{margin:0 0 12px}.tool-support>p{margin:32px 0}.related-tools{margin-top:32px}.related-tools>summary{font-size:20px;font-weight:600}.related-tools .menu-body{padding-top:16px}.home-support{margin-top:48px}.pick-title{margin:48px 0 16px}.tool-card .name{font-size:20px;font-weight:600;color:var(--ink)}.tool-card>span:not(.name){font-size:14px;color:var(--muted);line-height:1.75}.tool-card{gap:12px}.back-link{margin:0 0 24px;font-size:14px}.recovery-links{display:flex;flex-wrap:wrap;gap:24px;margin-top:32px}@media(max-width:899px){.tool-support{margin-top:36px}.tool-aux,.home-support{grid-template-columns:minmax(0,1fr);gap:32px}.picks{grid-template-columns:repeat(2,minmax(0,1fr))}.picks.learning,.picks.related{grid-template-columns:minmax(0,1fr)}.picks a,.picks .soon{padding:20px 16px}.picks strong{font-size:18px}.pick-title{margin-top:36px}}
