:root{--ink:#242425;--muted:#666569;--paper:#faf9f6;--line:#dedbd5;--accent:#b83d31;--soft:#f5e5e1;--serif:"Songti SC","STSong","Noto Serif CJK SC",serif}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:28px}body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.95 system-ui,-apple-system,"Segoe UI","Microsoft YaHei",sans-serif}a{color:inherit;text-underline-offset:4px}a:hover{color:var(--accent)}a:focus-visible,summary:focus-visible{outline:2px solid var(--accent);outline-offset:4px}
.site-header{max-width:1080px;margin:auto;padding:25px 32px;display:flex;align-items:center;justify-content:space-between;gap:24px;border-bottom:1px solid var(--line)}.brand{text-decoration:none;font:600 21px/1.4 var(--serif);white-space:nowrap}.brand em{color:var(--accent);font-weight:500}.back{font-size:13px;color:var(--muted);text-decoration:none}
.article-layout{display:grid;grid-template-columns:minmax(0,720px) 180px;gap:60px;max-width:1080px;margin:52px auto 0;padding:0 32px}.article-head{padding-bottom:27px;border-bottom:1px solid var(--line);margin-bottom:34px}.article-meta{display:flex;flex-wrap:wrap;gap:16px;font-size:12px;color:var(--muted)}.article-meta .category{color:var(--accent)}h1{font:600 clamp(29px,3.2vw,40px)/1.5 var(--serif);letter-spacing:-.6px;margin:15px 0} .dek{color:var(--muted);font-size:16px;line-height:1.85;margin:0 0 18px}.tags{display:flex;flex-wrap:wrap;gap:14px;font-size:11px;color:var(--muted)}.tags span:before{content:"#";margin-right:3px;color:var(--accent)}
.prose{overflow-wrap:anywhere}.prose>p{margin:0 0 22px}.prose h2{font:600 27px/1.5 var(--serif);margin:48px 0 20px}.prose h3{font-size:20px;margin:30px 0 14px}.prose a{color:var(--accent)}.prose li{margin-bottom:8px}.prose ul,.prose ol{padding-left:24px}.prose code{font:13px/1.6 ui-monospace,"SFMono-Regular",Consolas,monospace;background:#eeece8;padding:2px 5px;border-radius:3px}.prose pre{background:#eeece8;border:1px solid var(--line);padding:20px;overflow:auto;border-radius:8px;line-height:1.65}.prose pre code{padding:0;background:none;white-space:pre;overflow-wrap:normal}.prose blockquote{margin:25px 0;padding:4px 20px;border-left:3px solid var(--accent);color:var(--muted)}
.prose figure{margin:30px 0 35px}.prose figure img{display:block;max-width:100%;height:auto;width:460px;margin:auto}.prose figcaption{font-size:12px;line-height:1.8;color:var(--muted);margin:14px auto 0;max-width:520px;text-align:center}.table-scroll{margin:26px 0;overflow-x:auto;border:1px solid var(--line);border-radius:8px}.table-scroll:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.prose table{width:100%;border-collapse:collapse;font-size:14px;line-height:1.8;min-width:520px}.prose th,.prose td{text-align:left;padding:13px 15px;border-bottom:1px solid var(--line);vertical-align:top}.prose th{font-weight:600;background:#eeece8}.prose tr:last-child td{border-bottom:0}.callout{background:var(--soft);border-left:3px solid var(--accent);border-radius:0 8px 8px 0;padding:19px 22px;margin:28px 0}.callout>strong{color:var(--accent)}.callout p{margin:8px 0 0;font-size:15px}
.toc{position:sticky;top:28px;align-self:start;font-size:12px;line-height:1.8;color:var(--muted)}.toc summary{font-size:11px;letter-spacing:1px;cursor:pointer;color:var(--accent);margin-bottom:12px}.toc ol{padding:0;list-style:none;margin:0}.toc li{margin:12px 0}.toc a{text-decoration:none}.article-tail{margin-top:45px;padding-top:24px;border-top:1px solid var(--line);font-size:14px}.site-footer{max-width:1080px;padding:45px 32px 28px;margin:auto;color:var(--muted);font-size:11px;display:flex;justify-content:space-between;gap:20px}
@media(max-width:900px){.article-layout{display:flex;flex-direction:column;max-width:760px;gap:24px;margin-top:30px}.toc{position:static;order:-1;border-bottom:1px solid var(--line);padding-bottom:13px;margin-bottom:25px;width:100%}.toc ol{display:flex;flex-wrap:wrap;gap:4px 20px}.toc li{margin:3px 0}.toc summary{margin-bottom:8px}.article-head{margin-bottom:28px}}
@media(max-width:600px){body{font-size:15px;line-height:1.95}.site-header{padding:20px}.brand{font-size:17px}.back{font-size:12px}.article-layout{padding:0 20px;margin-top:22px}.article-head{padding-bottom:21px}h1{font-size:29px;letter-spacing:-.4px}.dek{font-size:14px}.prose h2{font-size:24px;margin-top:38px}.prose pre{padding:15px}.prose table{font-size:13px;min-width:480px}.prose th,.prose td{padding:11px}.callout{padding:15px 17px}.site-footer{padding:32px 20px 23px}.toc{font-size:11px}.prose figcaption{font-size:11px}}
@media(max-width:350px){.site-header,.article-layout{padding-left:16px;padding-right:16px}.brand{font-size:15px}.back{font-size:11px}h1{font-size:27px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}

.prose .figure-wide{margin:32px 0}
.compare{display:grid;grid-template-columns:1fr 1fr;gap:20px;max-width:620px;margin:auto}
.prose .compare img{width:100%;height:auto;border-radius:8px}
.compare span,.keyframes span{display:block;text-align:center;font-size:12px;line-height:1.7;color:var(--muted);margin-top:10px}
.video-figure video{display:block;width:100%;max-width:300px;height:auto;aspect-ratio:9/16;margin:auto;background:#0c1618;border-radius:8px}
.keyframes{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.prose .keyframes img{width:100%;border-radius:6px}
.prose .keyframes a{display:block;text-decoration:none}
.example-pair{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin:27px 0}
.example-pair>div{border:1px solid var(--line);border-radius:8px;padding:18px}
.example-pair>div:last-child{border-color:#dca69e;background:var(--soft)}
.example-pair strong{font-size:14px;line-height:1.8}
.example-pair p{font-size:14px;margin:9px 0 0}
@media(max-width:600px){.compare{gap:10px}.compare span,.keyframes span{font-size:11px}.keyframes{gap:9px}.example-pair{grid-template-columns:1fr;gap:12px}.example-pair>div{padding:15px}.video-figure video{max-width:270px}}
