.tb-page{--tb-bg:#fff;--tb-surface:#f9fafb;--tb-soft:#f1f5f9;--tb-text:#111827;--tb-muted:#6b7280;--tb-prose:#374151;--tb-border:#e5e7eb;--tb-accent:#2563eb;--tb-accent-hover:#1d4ed8;min-height:100vh;color:var(--tb-text);background:var(--tb-bg);background-image:radial-gradient(circle at 50% 0,rgba(59,130,246,.14),transparent 64%);background-size:100% 384px;background-repeat:no-repeat;font-family:Avenir Next,Avenir,PingFang SC,Hiragino Sans GB,sans-serif;font-size:16px;line-height:1.8}html[data-nr-theme=dark] .tb-page{--tb-bg:#050505;--tb-surface:hsla(0,0%,100%,.05);--tb-soft:hsla(0,0%,100%,.1);--tb-text:#fff;--tb-muted:#9ca3af;--tb-prose:#d1d5db;--tb-border:hsla(0,0%,100%,.1);--tb-accent:#60a5fa;--tb-accent-hover:#93c5fd;background-image:radial-gradient(circle at 50% 0,rgba(59,130,246,.09),transparent 64%);color-scheme:dark}a{color:inherit;text-decoration:none}button,select{font:inherit}.tb-skip{position:absolute;top:-48px;left:12px;z-index:100;padding:10px 16px;border-radius:8px;background:var(--tb-accent);color:#fff;font-size:14px;font-weight:600;transition:top .15s}.tb-skip:focus{top:12px}.tb-header{position:-webkit-sticky;position:sticky;top:0;z-index:20;border-bottom:1px solid var(--tb-border);background:color-mix(in srgb,var(--tb-bg) 92%,transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.tb-header-inner{width:1180px;height:64px;margin:0 auto;justify-content:space-between;gap:28px}.tb-brand,.tb-header-inner{display:flex;align-items:center}.tb-brand{gap:10px;font-weight:750}.tb-brand img{width:34px;height:34px;border-radius:7px}.tb-nav{display:flex;gap:28px;margin-left:auto;font-size:14px;color:var(--tb-muted)}.tb-nav a:hover{color:var(--tb-accent)}.tb-header-actions{display:flex;align-items:center;gap:8px}.tb-icon-btn,.tb-lang{height:38px;border:1px solid var(--tb-border);border-radius:6px;color:var(--tb-text);background:var(--tb-surface)}.tb-icon-btn{width:38px;cursor:pointer;font-size:19px}.tb-lang{padding:0 10px;font-size:13px}.tb-download{display:inline-flex;align-items:center;justify-content:center;min-height:42px;padding:0 20px;border:0;border-radius:6px;color:#fff;background:var(--tb-accent);font-weight:700;cursor:pointer}.tb-download:hover{background:var(--tb-accent-hover)}.tb-download-small{min-height:38px;padding:0 15px;font-size:13px}.tb-article{width:896px;margin:0 auto;padding:48px 0 96px;color:var(--tb-prose);line-height:2}.tb-back{display:inline-flex;align-items:center;gap:8px;font-size:14px;color:var(--tb-muted);transition:color .2s}.tb-back:hover{color:var(--tb-text)}.tb-article-head{margin-top:40px;padding-bottom:40px;border-bottom:1px solid var(--tb-border)}.tb-chip{font-size:14px;font-weight:600;color:var(--tb-accent)}.tb-article-head h1{margin:20px 0 0;font-size:clamp(36px,22.5vw,60px);font-weight:600;line-height:1.25;color:var(--tb-text)}.tb-deck{margin:24px 0 0;max-width:768px;font-size:18px}.tb-deck,.tb-meta{color:var(--tb-muted)}.tb-meta{display:flex;flex-wrap:wrap;gap:20px;margin:28px 0 0;font-size:12px}.tb-intro{margin:48px 0 0}.tb-article section{margin-top:48px}.tb-article h2{margin:0 0 16px;font-size:28px;line-height:1.25;scroll-margin-top:84px}.tb-article h2,.tb-article h3{font-weight:600;color:var(--tb-text)}.tb-article h3{margin:28px 0 12px;font-size:20px;line-height:1.3}.tb-article p{margin:0}.tb-article p+p{margin-top:16px}.tb-article a{color:var(--tb-accent);text-decoration:underline;text-underline-offset:3px}a.tb-back{color:var(--tb-muted);text-decoration:none}a.tb-back:hover{color:var(--tb-text)}.tb-article ul{margin:20px 0;padding-left:22px;list-style:disc}.tb-article li+li{margin-top:7px}code{border:1px solid var(--tb-border);border-radius:6px;background:var(--tb-soft);padding:2px 6px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.88em;overflow-wrap:anywhere}.tb-tool-card{margin:24px 0 0;padding:20px;border:1px solid var(--tb-border);border-radius:8px;background:var(--tb-surface)}.tb-tool-card h3{margin:0 0 6px}.tb-dropzone{display:flex;flex-direction:column;align-items:center;gap:5px;margin:18px 0;padding:36px 20px;border:1.5px dashed var(--tb-border);border-radius:8px;text-align:center;cursor:pointer;transition:border-color .2s,background .2s}.tb-dropzone-active,.tb-dropzone:focus-within,.tb-dropzone:hover{border-color:var(--tb-accent);background:var(--tb-soft)}.tb-dropzone input{position:absolute;width:1px;height:1px;overflow:hidden;opacity:0}.tb-dropzone strong{color:var(--tb-text)}.tb-dropzone span{color:var(--tb-muted);font-size:13px}.tb-result{display:grid;grid-template-columns:repeat(2,1fr);grid-gap:12px 28px;gap:12px 28px;margin:18px 0;padding:16px 18px;border:1px solid var(--tb-border);border-radius:8px;background:var(--tb-bg)}.tb-result span{display:block;color:var(--tb-muted);font-size:12px}.tb-result strong{font-size:14px;overflow-wrap:anywhere}.tb-result-dim strong{color:var(--tb-muted);opacity:.5}.tb-converter{margin:22px 0}.tb-converter h4{margin:0 0 12px;font-size:15px}.tb-converter-dim{opacity:.55}.tb-converter-dim button,.tb-converter-dim select{cursor:not-allowed}.tb-controls{display:grid;grid-gap:12px;gap:12px;margin:12px 0 18px}.tb-controls label>span{display:block;margin-bottom:5px;color:var(--tb-muted);font-size:13px}.tb-controls select{width:100%;height:40px;padding:0 10px;border:1px solid var(--tb-border);border-radius:6px;color:var(--tb-text);background:var(--tb-surface)}.tb-checkbox{display:flex;align-items:flex-start;gap:9px}.tb-checkbox input{margin-top:4px;accent-color:var(--tb-accent)}.tb-checkbox span{margin:0!important}.tb-tool-footnote{margin:8px 0 0!important;font-size:12px}.tb-error{color:#b42318!important}.tb-footer{border-top:1px solid var(--tb-border)}.tb-footer div{width:1180px;min-height:86px;margin:0 auto;display:flex;align-items:center;gap:24px;color:var(--tb-muted);font-size:13px}.tb-footer span{margin-right:auto}.tb-footer a:hover{color:var(--tb-accent)}@media (max-width:900px){.tb-nav{display:none}}@media (max-width:600px){.tb-article,.tb-footer div,.tb-header-inner{width:min(68%,760px)}.tb-brand span,.tb-download-small{display:none}.tb-article{padding:36px 0 64px}.tb-tool-card{padding:20px 16px}.tb-result{grid-template-columns:1fr}.tb-footer div{flex-wrap:wrap;padding:20px 0}.tb-footer span{width:100%}}