@font-face{font-family:Bricolage Grotesque;font-style:normal;font-weight:200 800;font-display:swap;src:url(/fonts/bricolage-grotesque-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304-0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Bricolage Grotesque;font-style:normal;font-weight:200 800;font-display:swap;src:url(/fonts/bricolage-grotesque-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}:root{--font-body: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans SC", "PingFang SC", "Microsoft YaHei", sans-serif;--font-display: "Bricolage Grotesque", "Segoe UI Variable Display", "Avenir Next", "Trebuchet MS", "PingFang SC", "Microsoft YaHei", var(--font-body);--font-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;--bg: #fbf8f3;--bg-subtle: #f4eee4;--bg-raised: #fffdf9;--field: #ffffff;--border: #ece3d6;--border-strong: #ded2c0;--text: #201a12;--text-muted: #6f6250;--accent: #b93d1c;--accent-hover: #9a3115;--accent-soft: #fdf0e9;--on-accent: #ffffff;--ok: #0d6c5d;--warn: #8f5a06;--err: #a4231c;--wash: rgba(185, 61, 28, .07);--cat-developer: #4451c9;--cat-developer-bg: #e8e9fb;--cat-seo: #0e6f5f;--cat-seo-bg: #dff2ec;--cat-utility: #8a5605;--cat-utility-bg: #fbeeda;--radius: 18px;--radius-sm: 12px;--radius-xs: 8px;--pill: 999px;--max-width: 1080px;--measure: 68ch;--header-h: 66px;--tap: 44px;--dur: .16s;--ease: cubic-bezier(.2, 0, 0, 1);--shadow-1: 0 1px 2px rgba(76, 54, 25, .06), 0 6px 16px rgba(76, 54, 25, .07);--shadow-2: 0 2px 4px rgba(76, 54, 25, .07), 0 14px 30px rgba(76, 54, 25, .13);color-scheme:light dark}@media(prefers-color-scheme:dark){:root{--bg: #16130e;--bg-subtle: #1c1812;--bg-raised: #201b14;--field: #1a1611;--border: #322a1e;--border-strong: #453a28;--text: #f2ece1;--text-muted: #a89b86;--accent: #ff7a4d;--accent-hover: #ff9470;--accent-soft: #33201a;--on-accent: #1a1207;--ok: #4ecba8;--warn: #e6b04c;--err: #ff8078;--wash: rgba(255, 122, 77, .1);--cat-developer: #a3aaff;--cat-developer-bg: #2a2c46;--cat-seo: #4ecba8;--cat-seo-bg: #14332c;--cat-utility: #e6b04c;--cat-utility-bg: #3a2c14;--shadow-1: inset 0 1px 0 rgba(255, 255, 255, .04), 0 6px 18px rgba(0, 0, 0, .45);--shadow-2: inset 0 1px 0 rgba(255, 255, 255, .06), 0 14px 34px rgba(0, 0, 0, .55)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition-duration:.01ms!important;animation-duration:.01ms!important;scroll-behavior:auto!important}}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background-color:var(--bg);background-image:radial-gradient(900px 420px at 82% -180px,var(--wash),transparent 70%);background-repeat:no-repeat;color:var(--text);font-family:var(--font-body);font-size:16px;line-height:1.65;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}h1,h2,h3{font-family:var(--font-display);line-height:1.18;letter-spacing:-.02em;margin:0 0 .5rem;text-wrap:balance}html[lang=zh-CN] :is(h1,h2,h3){letter-spacing:normal}h1{font-size:clamp(2rem,1.35rem + 2.6vw,2.9rem);font-weight:700}h2{font-size:1.45rem;font-weight:650;margin-top:2rem}h3{font-size:1.06rem;font-weight:600}p{margin:0 0 1rem}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}code,pre,.mono{font-family:var(--font-mono);font-size:.875rem;font-variant-numeric:tabular-nums}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}a,button,summary,input,select,textarea,label{touch-action:manipulation}[id]{scroll-margin-top:calc(var(--header-h) + 1rem)}::selection{background:var(--accent-soft);color:var(--text)}.container{width:100%;max-width:var(--max-width);margin-inline:auto;padding-inline:1rem}@media(min-width:1024px){.container{padding-inline:2rem}}.site-header{position:sticky;top:0;z-index:10;height:var(--header-h);background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:saturate(1.5) blur(10px);border-bottom:1px solid var(--border)}.site-header .container{height:100%;display:flex;align-items:center;gap:1.25rem}.brand{display:inline-flex;align-items:center;font-family:var(--font-display);font-weight:700;font-size:1.2rem;letter-spacing:-.025em;color:var(--text)}.brand:hover{text-decoration:none}.brand-mark{display:block;width:32px;height:32px;margin-right:.55rem;border-radius:10px;box-shadow:0 3px 10px color-mix(in srgb,var(--accent) 40%,transparent)}.nav{display:flex;align-items:center;gap:.15rem;margin-left:auto;font-size:.92rem}.nav a{display:inline-flex;align-items:center;min-height:var(--tap);padding-inline:.75rem;border-radius:var(--pill);color:var(--text-muted);transition:color var(--dur) var(--ease),background-color var(--dur) var(--ease)}.nav a:hover{color:var(--text);background:var(--bg-subtle);text-decoration:none}.nav a[aria-current=page]{color:var(--accent);background:var(--accent-soft);font-weight:600}.lang-switch{display:flex;margin-left:.5rem;padding:3px;border:1px solid var(--border);border-radius:var(--pill);background:var(--bg-raised);box-shadow:var(--shadow-1)}.lang-switch a{display:inline-flex;align-items:center;min-height:32px;padding-inline:.7rem;border-radius:var(--pill);font-size:.85rem;color:var(--text-muted);transition:color var(--dur) var(--ease),background-color var(--dur) var(--ease)}.lang-switch a[aria-current=true]{background:var(--accent);color:var(--on-accent);font-weight:600}.lang-switch a:hover{text-decoration:none;color:var(--text)}main{padding-block:2rem 3.5rem}.muted{color:var(--text-muted)}.lede{font-size:1.08rem;color:var(--text-muted);max-width:var(--measure)}.hero{padding-block:1.25rem 2.25rem}.hero h1{max-width:20ch}.hero .lede{margin-bottom:.75rem}.chips{display:flex;flex-wrap:wrap;gap:.5rem;margin:0 0 .25rem;padding:0;list-style:none;font-size:.85rem;color:var(--text-muted)}.chips li{display:inline-flex;align-items:center;gap:.4rem;padding:.3rem .75rem .3rem .6rem;border:1px solid var(--border);border-radius:var(--pill);background:var(--bg-raised);box-shadow:var(--shadow-1)}.chips svg{width:15px;height:15px;color:var(--accent);flex:none}.breadcrumbs{font-size:.84rem;color:var(--text-muted);margin-bottom:1rem;display:flex;flex-wrap:wrap;gap:.35rem}.breadcrumbs ol{display:flex;flex-wrap:wrap;gap:.35rem;list-style:none;margin:0;padding:0}.breadcrumbs li+li:before{content:"/";margin-right:.35rem;color:var(--text-muted)}.grid{display:grid;gap:1.15rem}.grid-cards{grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}.card{display:block;padding:1.25rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-raised);color:inherit;box-shadow:var(--shadow-1);transition:border-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease),transform var(--dur) var(--ease)}.card:hover{text-decoration:none;border-color:var(--border-strong);box-shadow:var(--shadow-2);transform:translateY(-3px)}.card:active{transform:translateY(0)}.card h3,.card .card-title{margin:0 0 .3rem;font-size:1.05rem}.card p{margin:0;font-size:.9rem;line-height:1.55;color:var(--text-muted);max-width:var(--measure)}.tile{display:grid;place-items:center;width:40px;height:40px;margin-bottom:.85rem;border-radius:var(--radius-sm);background:var(--accent-soft);color:var(--accent)}.tile svg{width:21px;height:21px}.card[data-category=developer] .tile,.tool-head[data-category=developer] .tile{background:var(--cat-developer-bg);color:var(--cat-developer)}.card[data-category=seo] .tile,.tool-head[data-category=seo] .tile{background:var(--cat-seo-bg);color:var(--cat-seo)}.card[data-category=utility] .tile,.tool-head[data-category=utility] .tile{background:var(--cat-utility-bg);color:var(--cat-utility)}.tool-head{display:flex;align-items:flex-start;gap:.9rem}.tool-head .tile{width:46px;height:46px;margin:.2rem 0 0;flex:none}.tool-head .tile svg{width:24px;height:24px}.tool-head h1{font-size:clamp(1.7rem,1.25rem + 1.9vw,2.3rem);margin-bottom:.15rem}.panel{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-raised);padding:1.35rem;margin-block:1.4rem;box-shadow:var(--shadow-1)}.toolbar{display:flex;flex-wrap:wrap;align-items:end;gap:.65rem;margin-bottom:.85rem}.field{display:flex;flex-direction:column;gap:.3rem;font-size:.85rem;color:var(--text-muted)}label{font-size:.85rem;color:var(--text-muted)}output{font-variant-numeric:tabular-nums}input[type=text],input[type=url],input[type=number],select,textarea{width:100%;min-height:var(--tap);padding:.5rem .7rem;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--field);color:var(--text);font-family:inherit;font-size:1rem;line-height:1.5;transition:border-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease)}input:hover:not(:disabled),select:hover:not(:disabled),textarea:hover:not(:disabled){border-color:var(--text-muted)}input:focus,select:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 22%,transparent)}input:disabled,select:disabled,textarea:disabled{opacity:.5;cursor:not-allowed}textarea{font-family:var(--font-mono);resize:vertical;min-height:220px;line-height:1.55}input[type=range]{width:100%;min-width:110px;min-height:var(--tap);accent-color:var(--accent);cursor:pointer}select{appearance:none;padding-right:2.1rem;background-image:linear-gradient(45deg,transparent 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,transparent 50%);background-position:right 1.05rem center,right .8rem center;background-size:6px 6px,6px 6px;background-repeat:no-repeat}button,.btn{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;min-height:var(--tap);padding:.5rem 1.05rem;border:1px solid var(--accent);border-radius:var(--pill);background:var(--accent);color:var(--on-accent);font-family:var(--font-display);font-size:.92rem;font-weight:600;letter-spacing:-.005em;cursor:pointer;box-shadow:0 2px 6px color-mix(in srgb,var(--accent) 28%,transparent);transition:background-color var(--dur) var(--ease),border-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease),transform var(--dur) var(--ease)}button:hover,.btn:hover{background:var(--accent-hover);border-color:var(--accent-hover);text-decoration:none}button:active:not(:disabled),.btn:active:not(:disabled){transform:translateY(1px);box-shadow:none}button:disabled,.btn:disabled{opacity:.5;cursor:not-allowed;transform:none;box-shadow:none}.btn-secondary{background:var(--bg-raised);color:var(--text);border-color:var(--border-strong);box-shadow:var(--shadow-1)}.btn-secondary:hover{background:var(--bg-subtle);border-color:var(--text-muted)}.btn-danger{background:transparent;color:var(--err);border-color:color-mix(in srgb,var(--err) 40%,var(--border-strong));box-shadow:none}.btn-danger:hover{background:color-mix(in srgb,var(--err) 10%,transparent);border-color:var(--err)}.status{display:flex;align-items:center;gap:.45rem;min-height:1.75rem;font-size:.9rem;margin-block:.6rem;font-variant-numeric:tabular-nums}.status:before{display:none;font-weight:700}.status[data-state]:before{display:inline}.status[data-state=ok]{color:var(--ok)}.status[data-state=ok]:before{content:"✓"}.status[data-state=warn]{color:var(--warn)}.status[data-state=warn]:before{content:"▲"}.status[data-state=err]{color:var(--err)}.status[data-state=err]:before{content:"✕"}.split{display:grid;gap:1.15rem}@media(min-width:860px){.split-2{grid-template-columns:1fr 1fr}}.section{margin-top:2.75rem}.prose{max-width:var(--measure)}.prose h2{font-size:1.35rem;margin-top:1.9rem}.prose h3{margin-top:1.5rem}.prose ul,.prose ol{padding-left:1.25rem}.prose li{margin-bottom:.4rem}.prose pre{overflow-x:auto;padding:.9rem 1.1rem;border-radius:var(--radius-sm);background:var(--bg-subtle);border:1px solid var(--border)}.badge{display:inline-flex;align-items:center;gap:.3rem;padding:.2rem .65rem;border-radius:var(--pill);background:var(--accent-soft);color:var(--accent);font-family:var(--font-display);font-size:.78rem;font-weight:600}.badge svg{width:14px;height:14px;flex:none}.steps{margin:0;padding-left:1.25rem}.steps li{margin-bottom:.55rem}.faq{border-top:1px solid var(--border)}.faq details{border-bottom:1px solid var(--border);padding:.85rem 0}.faq summary{display:flex;align-items:center;gap:.45rem;min-height:var(--tap);cursor:pointer;font-family:var(--font-display);font-weight:600;font-size:1rem;letter-spacing:-.01em;list-style:none}.faq summary::-webkit-details-marker{display:none}.faq summary:before{content:"+";display:inline-grid;place-items:center;width:1.3rem;height:1.3rem;border-radius:var(--pill);background:var(--accent-soft);color:var(--accent);font-weight:700}.faq details[open] summary:before{content:"−"}.faq .answer{margin:.6rem 0 0 1.75rem;font-size:.94rem;color:var(--text-muted);max-width:var(--measure)}.ad{margin-block:1.75rem;min-height:100px;overflow:hidden}.ad ins{width:100%}.site-footer{border-top:1px solid var(--border);background:var(--bg-subtle);padding-block:2.25rem;font-size:.88rem;color:var(--text-muted)}.footer-grid{display:grid;gap:1.5rem;grid-template-columns:2fr 1fr 1fr}@media(max-width:720px){.footer-grid{grid-template-columns:1fr 1fr}}.site-footer h3{font-family:var(--font-display);font-size:.8rem;text-transform:uppercase;letter-spacing:.06em;color:var(--text);margin:0 0 .6rem}.site-footer ul{list-style:none;margin:0;padding:0}.site-footer li{margin-bottom:.4rem}.site-footer a{color:var(--text-muted)}.meta-strip{display:flex;flex-wrap:wrap;gap:.75rem;align-items:center;font-size:.85rem;color:var(--text-muted);font-variant-numeric:tabular-nums;margin-bottom:1rem}.skip-link{position:absolute;left:-9999px}.skip-link:focus{left:1rem;top:.6rem;z-index:20;padding:.5rem .9rem;background:var(--bg-raised);border-radius:var(--pill);box-shadow:var(--shadow-2)}.file-list{display:grid;gap:.7rem;margin-top:1rem}.file-row{display:grid;grid-template-columns:64px 1fr auto auto;align-items:center;gap:.8rem;padding:.7rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-raised);box-shadow:var(--shadow-1)}.file-thumb{width:64px;height:64px;object-fit:cover;border-radius:var(--radius-xs);background:var(--bg-subtle)}.file-info{display:flex;flex-direction:column;min-width:0}.file-info strong{font-size:.92rem;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.file-stats{font-size:.82rem;color:var(--text-muted);font-variant-numeric:tabular-nums}@media(max-width:620px){.file-row{grid-template-columns:48px 1fr}.file-thumb{width:48px;height:48px}}
