:root{--bg: #0b0d16;--panel: #171a2b;--panel2: #1f2338;--line: #2c3150;--text: #e8ebff;--muted: #9aa0c4;--accent: #6c8cff;--ok: #4ecb8d;--err: #ff6b6b;--warn: #fbbf24;--bg-glow: #1a1f38;--on-accent: #0b0d16;--line-strong: #606ba3;--hue-red: #ff4d4d;--hue-orange: #ff8f4d;--hue-amber: #ffd24d;--hue-lime: #8fd94f;--hue-green: #3fb27f;--hue-pink: #f472b6;--hue-violet: #a78bfa;--hue-sky: #38bdf8;--fs-xs: 12px;--fs-sm: 13px;--fs-md: 14px;--fs-lg: 17px;--fs-xl: 22px;--fs-2xl: clamp(26px, 7vw, 34px);--r-sm: 8px;--r-md: 12px;--r-lg: 16px;--r-pill: 999px;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 24px;color-scheme:dark}@media(prefers-color-scheme:light){:root:not([data-theme=dark]){--bg: #f5f6fb;--bg-glow: #e7ebf9;--panel: #ffffff;--panel2: #eef0f8;--line: #d7dcec;--line-strong: #7d87a8;--text: #131629;--muted: #5b6280;--accent: #3a5bd9;--on-accent: #ffffff;--ok: #16855a;--err: #c62d2d;--warn: #8a6003;--hue-red: #c0271f;--hue-orange: #a34d06;--hue-amber: #8a6003;--hue-lime: #4a7a10;--hue-green: #16855a;--hue-pink: #b3216f;--hue-violet: #6d4bd6;--hue-sky: #0b6c92;color-scheme:light}}:root[data-theme=light]{--bg: #f5f6fb;--bg-glow: #e7ebf9;--panel: #ffffff;--panel2: #eef0f8;--line: #d7dcec;--line-strong: #7d87a8;--text: #131629;--muted: #5b6280;--accent: #3a5bd9;--on-accent: #ffffff;--ok: #16855a;--err: #c62d2d;--warn: #8a6003;--hue-red: #c0271f;--hue-orange: #a34d06;--hue-amber: #8a6003;--hue-lime: #4a7a10;--hue-green: #16855a;--hue-pink: #b3216f;--hue-violet: #6d4bd6;--hue-sky: #0b6c92;color-scheme:light}*{box-sizing:border-box}[hidden]{display:none!important}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:radial-gradient(1200px 600px at 50% -10%,var(--bg-glow),var(--bg));color:var(--text);min-height:100vh}#app{max-width:1000px;margin:0 auto;padding:var(--sp-4);min-height:100vh;display:flex;flex-direction:column}a{color:inherit;text-decoration:none}.topbar{display:grid;grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"brand search right" "nav   nav    nav";align-items:center;column-gap:var(--sp-4);row-gap:var(--sp-3);padding:var(--sp-2) var(--sp-1) var(--sp-4);border-bottom:1px solid var(--line);direction:ltr}.brand{grid-area:brand;font-weight:800;font-size:var(--fs-lg);letter-spacing:-.02em;white-space:nowrap}.nav{grid-area:nav;display:flex;flex-wrap:wrap;gap:var(--sp-2);min-width:0}.nav-link{padding:var(--sp-2) var(--sp-3);border-radius:var(--r-md);font-size:var(--fs-md);color:var(--muted);border:1px solid transparent}.nav-link.nav-blog{color:var(--accent);font-weight:600;border:1px solid color-mix(in srgb,var(--accent) 45%,transparent);background:color-mix(in srgb,var(--accent) 10%,transparent);padding:var(--sp-2) var(--sp-3)}.nav-link.nav-blog:hover{background:color-mix(in srgb,var(--accent) 20%,transparent);color:var(--text)}.nav-link:hover{color:var(--text)}.nav-link.active{background:var(--panel2);border-color:var(--line);color:var(--text);font-weight:700}.topbar-toggles{grid-area:toggles;display:none;gap:var(--sp-2)}.tb-icon{display:grid;place-items:center;width:44px;height:44px;padding:0;border-radius:var(--r-md);border:1px solid var(--line);background:var(--panel2);color:var(--text)}.tb-icon svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}.tb-icon .i-close{display:none}.tb-icon[aria-expanded=true]{border-color:var(--accent);color:var(--accent)}.tb-icon[aria-expanded=true] .i-open{display:none}.tb-icon[aria-expanded=true] .i-close{display:block}.theme-seg{grid-area:theme;display:flex;gap:var(--sp-1);padding:var(--sp-1);border:1px solid var(--line);border-radius:var(--r-md);background:var(--panel2)}.theme-opt{flex:1 1 0;min-width:0;padding:6px var(--sp-2);border:0;border-radius:var(--r-sm);background:none;color:var(--muted);font-size:var(--fs-xs);white-space:nowrap}.theme-opt:hover{color:var(--text)}.theme-opt[aria-pressed=true]{background:var(--panel);color:var(--text);font-weight:700;box-shadow:0 0 0 1px var(--line) inset}.topbar-drawer{display:contents}.search-wrap{grid-area:search;position:relative;justify-self:center;width:100%;max-width:460px}.search-input{width:100%;background:var(--panel2);color:var(--text);border:1px solid var(--line-strong);border-radius:var(--r-md);padding:var(--sp-2) var(--sp-3);font:inherit;font-size:var(--fs-md)}.search-input:focus{outline:none;border-color:var(--accent)}.search-kbd{position:absolute;inset-inline-end:var(--sp-2);inset-block-start:50%;transform:translateY(-50%);padding:1px 6px;border:1px solid var(--line);border-radius:6px;background:var(--panel);color:var(--muted);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;line-height:1.5;pointer-events:none}.search-wrap:focus-within .search-kbd,.search-input:not(:placeholder-shown)~.search-kbd{display:none}@media(min-width:761px){.search-input{padding-inline-end:56px}}.search-dropdown{position:absolute;inset-inline:0;inset-block-start:calc(100% + 6px);z-index:50;max-height:60vh;overflow-y:auto;padding:var(--sp-2);background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:0 12px 30px #00000059}.search-dropdown[hidden]{display:none}.sr-row{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-2);border-radius:var(--r-md);cursor:pointer}.sr-row:hover,.sr-row.active{background:var(--panel2)}.sr-icon{flex:none;font-size:var(--fs-xl)}.sr-name{flex:1;min-width:0;font-size:var(--fs-md);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sr-cat{flex:none;font-size:var(--fs-xs);color:var(--muted)}@media(max-width:760px){.topbar{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"brand  toggles" "search search" "drawer drawer";column-gap:var(--sp-2);padding-block-end:var(--sp-2);row-gap:var(--sp-2)}.topbar-toggles{display:flex}.brand{overflow:hidden;text-overflow:ellipsis;display:flex;align-items:center;min-height:44px}.search-wrap{display:none;max-width:none;justify-self:stretch}.topbar.search-open .search-wrap{display:block}.search-input{min-height:44px}.topbar-drawer{display:none}.topbar.menu-open .topbar-drawer{grid-area:drawer;display:grid;gap:var(--sp-3)}.nav{display:flex;flex-wrap:wrap;overflow:visible;gap:var(--sp-2);padding-bottom:0}.nav-link{white-space:nowrap;background:var(--panel2);border-color:var(--line);display:flex;align-items:center;min-height:44px;padding-inline:var(--sp-3)}:where(input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file]):not([type=color]),select,textarea,.btn){min-height:44px}.topbar-right{justify-self:stretch}.lang-sel,.region-sel{flex:1 1 0;min-width:0;max-width:none;min-height:44px;font-size:var(--fs-md)}.theme-seg{flex:1 0 100%}.theme-opt{min-height:40px;font-size:var(--fs-sm)}}.outlet{flex:1;padding:var(--sp-5) var(--sp-1)}.footer{padding:var(--sp-4) var(--sp-1);color:var(--muted);font-size:var(--fs-xs);border-top:1px solid var(--line);text-align:center}.home-hero{display:flex;flex-direction:column;align-items:flex-start;gap:var(--sp-3);margin-block-end:var(--sp-5)}.home-hero>.home-sub,.home-hero>.home-search,.home-hero>.home-jump,.home-hero>.home-hits{align-self:stretch}.home-title{margin:0;font-size:var(--fs-xl)}.home-sub{margin:0;color:var(--muted);font-size:var(--fs-md)}.home-search{position:relative;display:flex;align-items:center}.home-q{width:100%;min-height:52px;padding:var(--sp-3) 46px var(--sp-3) var(--sp-4);background:var(--panel2);color:var(--text);border:1px solid var(--line);border-radius:var(--r-lg);font:inherit;font-size:var(--fs-lg)}.home-q:focus{outline:none;border-color:var(--accent)}.home-q::-webkit-search-decoration,.home-q::-webkit-search-cancel-button{-webkit-appearance:none;-moz-appearance:none;appearance:none}.home-q-clear{position:absolute;inset-inline-end:var(--sp-1);width:44px;height:44px;display:grid;place-items:center;padding:0;border:0;background:none;color:var(--muted);font-size:var(--fs-md);border-radius:var(--r-md)}.home-q-clear:hover{color:var(--text)}.home-hits{margin:0}.home-jump{display:flex;flex-wrap:wrap;gap:var(--sp-2)}.home-jump-link{color:var(--muted);min-height:36px}.home-jump-link:hover{color:var(--text);border-color:var(--accent)}.home-cat[id^=cat-]{scroll-margin-block-start:var(--sp-4)}.home-cat.is-collapsed .tool-grid>.tool-card:nth-child(n+4){display:none}.hc-count{color:var(--muted);font-size:var(--fs-sm);font-weight:500;margin-inline-start:var(--sp-2)}.home-more{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2);min-height:44px;padding:0 var(--sp-1);margin-block-start:var(--sp-2);color:var(--accent);font-size:var(--fs-md);font-weight:600}.home-more:hover{text-decoration:underline}.home-more svg,.feat-more svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round;flex:none}.feat-more{color:var(--accent);border-color:color-mix(in srgb,var(--accent) 45%,var(--line));cursor:pointer}.home-recent{margin-block-end:var(--sp-5)}.to-top{position:fixed;inset-inline-end:var(--sp-4);inset-block-end:calc(var(--sp-4) + env(safe-area-inset-bottom,0px));z-index:900;display:grid;place-items:center;width:44px;height:44px;padding:0;border-radius:var(--r-pill);background:var(--panel2);border:1px solid var(--line-strong);color:var(--text);box-shadow:0 6px 18px #00000059}.to-top svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}body.has-bottom-anchor .to-top{inset-block-end:calc(87px + var(--sp-3) + env(safe-area-inset-bottom,0px))}@media(max-width:760px){.feat-row.is-collapsed>.feat-pill:nth-child(n+7):not(.feat-more){display:none}}@media(min-width:761px){.home-search,.home-jump{display:none}.feat-row>.feat-more{display:none}.home-cat.is-collapsed .tool-grid>.tool-card:nth-child(n+4){display:flex}.home-cat.is-collapsed .tool-grid>.tool-card:nth-child(n+7){display:none}.home-cat.is-collapsed:not(:has(.tool-grid>.tool-card:nth-child(n+7))) .home-more{display:none}}@media(max-width:760px){.home-jump-link{min-height:44px;padding-inline:var(--sp-3)}}.tool-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:var(--sp-4)}.tool-card{display:flex;align-items:center;gap:var(--sp-4);padding:var(--sp-4);background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);transition:border-color .15s,transform .15s}.tool-card:hover{border-color:var(--accent);transform:translateY(-2px)}.tc-icon{font-size:30px}.tc-body{flex:1;min-width:0}.tc-name,.tc-desc{overflow-wrap:anywhere}.tc-name{font-weight:700;margin-bottom:3px}.tc-desc{font-size:var(--fs-sm);color:var(--muted)}.tc-arrow{color:var(--muted)}.stack{display:flex;flex-direction:column;gap:var(--sp-4);min-width:0}.panel{display:flex;flex-direction:column;gap:var(--sp-4);min-width:0;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);padding:var(--sp-4)}.pill{display:inline-flex;align-items:center;gap:var(--sp-2);border:1px solid var(--line);border-radius:var(--r-pill);background:var(--panel2);color:var(--text);padding:var(--sp-1) var(--sp-3);font-size:var(--fs-sm)}.pill.is-ok{color:var(--ok);border-color:color-mix(in srgb,var(--ok) 45%,var(--line))}.pill.is-warn{color:var(--warn);border-color:color-mix(in srgb,var(--warn) 45%,var(--line))}.pill.is-err{color:var(--err);border-color:color-mix(in srgb,var(--err) 45%,var(--line))}.note{margin:0;color:var(--muted);font-size:var(--fs-xs);line-height:1.6}.result-hero{background:var(--panel);border:1px solid var(--accent);border-radius:var(--r-lg);padding:var(--sp-5);text-align:center}.page-head{margin-bottom:var(--sp-5)}.page-head h2{margin:0 0 var(--sp-1);font-size:var(--fs-xl)}.page-head p{margin:0;color:var(--muted);font-size:var(--fs-md)}button{font:inherit;cursor:pointer}.btn{padding:var(--sp-3);font-size:var(--fs-md);font-weight:700;border-radius:var(--r-md);border:1px solid var(--line);background:var(--panel2);color:var(--text)}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.btn:disabled{opacity:.5;cursor:not-allowed}.share-actions{display:flex;flex-wrap:wrap;gap:var(--sp-2);margin-block-start:14px}.share-actions .btn{flex:1 1 150px}textarea,input[type=text]{width:100%;background:var(--panel2);color:var(--text);border:1px solid var(--line-strong);border-radius:var(--r-md);padding:var(--sp-2) var(--sp-3);font:inherit;font-size:var(--fs-md)}textarea{resize:vertical;line-height:1.6;font-family:ui-monospace,SF Mono,Menlo,monospace}textarea:focus,input:focus,select:focus{outline:none;border-color:var(--accent)}select,input[type=number],input[type=search],input[type=tel],input[type=url],input[type=email],input[type=password]{background:var(--panel2);color:var(--text);border:1px solid var(--line-strong);border-radius:var(--r-md);padding:var(--sp-2) var(--sp-3);font:inherit;font-size:var(--fs-md);min-width:0;max-width:100%}select{cursor:pointer}input[type=checkbox],input[type=radio]{accent-color:var(--accent);width:18px;height:18px;flex:none}input[type=range]{accent-color:var(--accent)}label.check{display:flex;align-items:center;gap:var(--sp-2);min-height:44px;font-size:var(--fs-md);cursor:pointer}input[type=date],input[type=time],input[type=datetime-local],input[type=month],input[type=week]{min-width:0;max-width:100%;-webkit-appearance:none;-moz-appearance:none;appearance:none}input[type=date]::-webkit-date-and-time-value,input[type=time]::-webkit-date-and-time-value,input[type=datetime-local]::-webkit-date-and-time-value,input[type=month]::-webkit-date-and-time-value,input[type=week]::-webkit-date-and-time-value{text-align:start;min-width:0;margin:0}input[type=date]::-webkit-calendar-picker-indicator,input[type=time]::-webkit-calendar-picker-indicator,input[type=datetime-local]::-webkit-calendar-picker-indicator,input[type=month]::-webkit-calendar-picker-indicator,input[type=week]::-webkit-calendar-picker-indicator{filter:invert(1) brightness(1.6);opacity:.65;cursor:pointer}label.field{display:flex;flex-direction:column;gap:var(--sp-2);min-width:0}label.field>span{font-size:var(--fs-sm);color:var(--muted)}.topbar-right{grid-area:right;justify-self:end;display:flex;align-items:center;flex-wrap:wrap;justify-content:flex-end;gap:var(--sp-2)}.lang-sel,.region-sel{padding:var(--sp-2);border-radius:var(--r-sm);border:1px solid var(--line);background:var(--panel2);color:var(--text);font-size:var(--fs-sm);cursor:pointer;max-width:130px}.lang-sel:focus,.region-sel:focus{outline:none;border-color:var(--accent)}.feat-row{display:flex;flex-wrap:wrap;gap:var(--sp-2)}.feat-pill{display:inline-flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);background:var(--panel2);border:1px solid var(--line);border-radius:var(--r-md);font-size:var(--fs-md);font-weight:600;min-height:44px}.feat-pill:hover{border-color:var(--accent)}.home-cat{margin-top:var(--sp-5)}.hc-title{margin:0 0 var(--sp-3);font-size:var(--fs-lg)}.hc-title a:hover{color:var(--accent)}.cat-back{display:inline-flex;align-items:center;font-size:var(--fs-sm);color:var(--muted);min-height:32px}.cat-back:hover{color:var(--text)}.tool-loading{padding:60px 0;text-align:center;color:var(--muted)}.tool-error{max-width:420px;margin:48px auto;padding:var(--sp-5);text-align:center;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg)}.tool-error p{color:var(--muted);margin:0 0 16px;line-height:1.6}.footer-nav{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:var(--sp-1) var(--sp-2);margin-top:6px}.footer-link{color:var(--muted);text-decoration:underline}.footer-link:hover{color:var(--text)}@media(max-width:760px){.footer-link{display:inline-flex;align-items:center;min-height:44px;padding:0 var(--sp-2)}}.pv-lead{margin:0 0 20px;color:var(--text);font-size:var(--fs-md);line-height:1.7}.pv{max-width:760px;margin:0 auto;line-height:1.7}.pv-title{margin:8px 0 4px;font-size:var(--fs-xl)}.pv-updated{margin:0 0 20px;color:var(--muted);font-size:var(--fs-sm)}.pv-sec{margin-bottom:20px}.pv-sec h3{margin:0 0 6px;font-size:var(--fs-lg)}.pv-sec p{margin:0 0 8px;color:var(--text);font-size:var(--fs-md)}.pv-sec a{color:var(--accent);text-decoration:underline}.pv-note{margin-top:24px;padding-top:var(--sp-3);border-top:1px solid var(--line);color:var(--muted);font-size:var(--fs-xs)}.blog-post{max-width:680px}.blog-post .pv-title{font-size:28px;line-height:1.35;margin:12px 0 8px}.blog-post .pv-lead{font-size:var(--fs-lg);color:var(--muted);line-height:1.75}.blog-post .pv-sec{margin-bottom:30px}.blog-post .pv-sec h3{font-size:19px;margin:0 0 10px}.blog-post .pv-sec p{font-size:15.5px;line-height:1.85;margin:0 0 14px}.blog-list{list-style:none;margin:0;padding:0;display:grid;gap:var(--sp-3)}.blog-list a{display:block;padding:var(--sp-3) var(--sp-4);background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);color:var(--text);text-decoration:none}.blog-list a:hover{border-color:var(--accent)}.blog-item-title{display:block;font-size:var(--fs-lg);font-weight:600;margin-bottom:4px}.blog-item-desc{display:block;color:var(--muted);font-size:var(--fs-sm);line-height:1.6;margin-bottom:6px}.blog-item-meta,.blog-post .pv-updated{color:var(--muted);font-size:var(--fs-xs)}.blog-fig{margin:18px 0 8px;padding:var(--sp-4) var(--sp-3) var(--sp-2);background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg)}.blog-fig svg{display:block;width:100%;height:auto;direction:ltr}.blog-fig figcaption{margin:10px 4px 2px;color:var(--muted);font-size:var(--fs-xs);line-height:1.6}.blog-fig .fig-axis{stroke:var(--line);stroke-width:1.5}.blog-fig .fig-line{fill:none;stroke-width:3;stroke-linejoin:round;stroke-linecap:round}.blog-fig .fig-a{stroke:var(--accent)}.blog-fig .fig-b{stroke:var(--err)}.blog-fig .fig-dot-a{fill:var(--accent)}.blog-fig .fig-dot-b{fill:var(--err)}.blog-fig .fig-bar{fill:var(--panel2);stroke:var(--line)}.blog-fig .fig-bar-hi{fill:var(--accent);stroke:none}.blog-fig .fig-label{fill:var(--text);font-size:var(--fs-md)}.blog-fig .fig-la{fill:var(--accent)}.blog-fig .fig-lb{fill:var(--err)}.blog-fig .fig-tick{fill:var(--muted);font-size:var(--fs-xs)}.blog-fig .fig-band-under{fill:var(--hue-sky);opacity:.55}.blog-fig .fig-band-normal{fill:var(--hue-green);opacity:.6}.blog-fig .fig-band-pre{fill:var(--hue-amber);opacity:.7}.blog-fig .fig-band-over{fill:var(--hue-orange);opacity:.7}.blog-fig .fig-band-obese{fill:var(--hue-red);opacity:.65}.blog-fig .fig-marker{stroke:var(--text);stroke-width:1.5;stroke-dasharray:4 3}.blog-fig .fig-row{fill:var(--text);font-size:var(--fs-sm);font-weight:600}.blog-fig .fig-grid{stroke:var(--line);stroke-width:1;stroke-dasharray:2 4}.blog-table{width:100%;border-collapse:collapse;margin:6px 0 18px;font-size:14px;line-height:1.55}.blog-table th,.blog-table td{padding:8px 10px;border-bottom:1px solid var(--line);text-align:start;vertical-align:top}.blog-table th{color:var(--muted);font-weight:600;font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.03em}.blog-table td:first-child{font-weight:600;white-space:nowrap}.blog-table .tag{display:inline-block;padding:1px 8px;border-radius:var(--r-pill);font-size:var(--fs-xs);font-weight:600;white-space:nowrap}.blog-table .tag-normal{background:color-mix(in srgb,var(--hue-green) 18%,transparent);color:var(--hue-green)}.blog-table .tag-pre{background:color-mix(in srgb,var(--hue-amber) 22%,transparent);color:var(--hue-amber)}.blog-table .tag-over{background:color-mix(in srgb,var(--hue-orange) 20%,transparent);color:var(--hue-orange)}.blog-table .tag-obese{background:color-mix(in srgb,var(--hue-red) 18%,transparent);color:var(--hue-red)}.blog-try{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--sp-2) var(--sp-4);margin:0 0 18px;padding:var(--sp-2) var(--sp-3);background:color-mix(in srgb,var(--accent) 8%,transparent);border:1px solid color-mix(in srgb,var(--accent) 35%,transparent);border-radius:var(--r-md);font-size:13.5px}.blog-try span{color:var(--muted)}.blog-try a{color:var(--accent);font-weight:600;text-decoration:none;white-space:nowrap}.blog-try a:hover{text-decoration:underline}.blog-translate{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--sp-2) var(--sp-4);margin:12px 0 20px;padding:var(--sp-3) var(--sp-4);background:var(--panel);border:1px solid var(--line);border-radius:var(--r-md)}.blog-translate p{margin:0;font-size:13.5px;color:var(--text)}.blog-tools{margin-top:28px;padding-top:var(--sp-4);border-top:1px solid var(--line)}.blog-tool-list{list-style:none;margin:0;padding:0;display:grid;gap:var(--sp-2)}.blog-tool-list a{display:block;padding:var(--sp-2) var(--sp-3);background:var(--panel);border:1px solid var(--line);border-radius:var(--r-md);color:var(--text);text-decoration:none}.blog-tool-list a:hover{border-color:var(--accent)}.blog-tool-name{display:block;font-weight:600;font-size:var(--fs-md)}.blog-tool-desc{display:block;color:var(--muted);font-size:var(--fs-xs);margin-top:2px}.tool-sub{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"crumbs install" "hint   hint";align-items:center;column-gap:var(--sp-2);margin:var(--sp-2) var(--sp-1) 0}.tool-sub[hidden]{display:none}.crumbs{grid-area:crumbs;display:flex;align-items:center;flex-wrap:wrap;gap:var(--sp-1);min-width:0;min-height:44px;font-size:var(--fs-sm);color:var(--muted)}.crumbs a{display:inline-flex;align-items:center;min-height:44px;padding:0 var(--sp-1);border-radius:var(--r-sm);white-space:nowrap}.crumbs a:last-child{color:var(--text);font-weight:600}.crumbs a:hover{color:var(--text);background:var(--panel2)}.crumb-sep{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round;flex:none}.install-bar{display:contents}.install-bar[hidden]{display:none}.install-btn{grid-area:install;display:inline-flex;align-items:center;gap:6px;min-height:36px;padding:0 var(--sp-3);border:1px solid var(--line);border-radius:var(--r-pill);background:var(--panel2);color:var(--muted);font-size:var(--fs-sm);font-weight:600;white-space:nowrap;cursor:pointer;transition:color .15s,border-color .15s}.install-btn svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}.install-btn[aria-expanded=true]{color:var(--accent);border-color:var(--accent)}@media(max-width:760px){.install-btn{min-height:44px}}.install-btn:hover{color:var(--text);border-color:var(--accent)}.install-hint{grid-area:hint;margin:var(--sp-2) 0 0;padding:var(--sp-2) var(--sp-3);background:var(--panel2);border:1px solid var(--line);border-radius:var(--r-md);color:var(--muted);font-size:var(--fs-sm);line-height:1.6}.install-hint[hidden]{display:none}.install-hint p{margin:0}.install-hint ol{margin:8px 0 0;padding-inline-start:var(--sp-5)}.install-hint li{margin-top:5px}.install-hint li::marker{color:var(--accent);font-weight:700}html.ptr-on,html.ptr-on body{overscroll-behavior-y:contain}.ptr{position:fixed;left:50%;top:calc(env(safe-area-inset-top,0px) + 6px);z-index:1100;display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:var(--panel);border:1px solid var(--line);box-shadow:0 6px 18px #00000059;transform:translate(-50%,-60px);opacity:0;pointer-events:none}.ptr.snap{transition:transform .25s ease,opacity .25s ease}.ptr-ring{width:18px;height:18px;border-radius:50%;border:2px solid var(--line);border-top-color:var(--accent)}.ptr.ready .ptr-ring{border-color:var(--accent);border-top-color:var(--text)}.ptr.spin .ptr-ring{animation:ptr-spin .7s linear infinite}@keyframes ptr-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.ptr.spin .ptr-ring{animation-duration:1.6s}}.ptr-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.seo-content,.seo-prerender{max-width:760px;margin:40px auto 24px;padding:var(--sp-4) var(--sp-4) 0;border-top:1px solid var(--line);color:var(--muted);font-size:var(--fs-md);line-height:1.7;overflow-wrap:anywhere}.seo-content h2,.seo-prerender h2{color:var(--text);font-size:var(--fs-lg);margin:22px 0 8px}.seo-content h3,.seo-prerender h3{color:var(--text);font-size:var(--fs-md);margin:14px 0 4px}.seo-content p,.seo-prerender p{margin:6px 0}.seo-content ol,.seo-content ul,.seo-prerender ol,.seo-prerender ul{margin:8px 0;padding-left:var(--sp-5)}.seo-content li,.seo-prerender li{margin:4px 0}.seo-content code,.seo-prerender code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.92em;color:var(--text);background:var(--panel2);border:1px solid var(--line);border-radius:var(--r-sm);padding:1px var(--sp-1);overflow-wrap:anywhere}.seo-content a,.seo-prerender a{color:var(--accent);text-decoration:none}.seo-content a:hover,.seo-prerender a:hover{text-decoration:underline}.seo-crumbs{margin-bottom:8px;font-size:var(--fs-sm)}.seo-trust dl{margin:10px 0 0;border:1px solid var(--line);border-radius:var(--r-md);padding:var(--sp-1) var(--sp-3)}.seo-trust .tr-row{display:grid;grid-template-columns:minmax(0,1fr);gap:2px var(--sp-4);padding:var(--sp-2) 0;border-bottom:1px solid var(--line)}.seo-trust .tr-row:last-child{border-bottom:0}.seo-trust dt{color:var(--text);font-weight:600;font-size:var(--fs-sm)}.seo-trust dd{margin:0;min-width:0}.seo-trust dd ul{margin:0}.seo-trust code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:var(--fs-sm);color:var(--text);overflow-wrap:anywhere}@media(min-width:560px){.seo-trust .tr-row{grid-template-columns:140px minmax(0,1fr)}}.seo-sitelinks{margin-top:24px;padding-top:var(--sp-3);border-top:1px solid var(--line);font-size:var(--fs-sm)}[data-embed] .topbar,[data-embed] .footer,[data-embed] .tool-sub{display:none}[data-embed] .outlet{padding-block:var(--sp-3)}[data-embed] body{background:transparent}.embed-credit{display:none}[data-embed] .embed-credit{display:block;text-align:end;padding:var(--sp-2) var(--sp-3) var(--sp-2);font-size:var(--fs-xs);color:var(--muted);text-decoration:none}[data-embed] .embed-credit:hover{color:var(--accent)}[data-embed] [data-slot],[data-embed] .promo-slot,[data-embed] .promo-anchor-bar,[data-embed] .nl-bar{display:none}[data-embed] body.has-newsline{padding-top:0}[data-embed] body.has-bottom-anchor{padding-bottom:0}.embed-offer{margin-block-start:28px;padding:0;border:1px solid var(--line);border-radius:var(--r-md);background:var(--panel)}.embed-offer>summary{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2);min-height:44px;padding:0 var(--sp-4);font-size:var(--fs-md);color:var(--muted);cursor:pointer;list-style:none}.embed-offer>summary::-webkit-details-marker{display:none}.embed-offer>summary:after{content:"";width:8px;height:8px;border-inline-end:1.9px solid currentColor;border-block-end:1.9px solid currentColor;transform:rotate(-45deg);flex:none;margin-inline-end:2px}.embed-offer[open]>summary{color:var(--text);font-weight:600}.embed-offer[open]>summary:after{transform:rotate(45deg)}.embed-offer>summary:hover{color:var(--text)}.embed-offer>p{margin:0 var(--sp-4) 10px;font-size:var(--fs-sm);color:var(--muted)}.embed-offer>.btn{margin:0 var(--sp-4) var(--sp-3)}.embed-code{display:block;width:calc(100% - 2 * var(--sp-4));margin:0 var(--sp-4) 8px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:var(--fs-xs);resize:vertical}.related-tools{margin-block-start:28px}.related-tools .tool-grid{gap:var(--sp-2)}.related-tools .tool-card{padding:var(--sp-3) var(--sp-4)}.related-tools .tc-icon{font-size:24px}.offline-bar{margin:4px 4px 0}.offline-bar[hidden]{display:none}.offline-ask,.offline-note{padding:var(--sp-3);border:1px solid var(--line);border-radius:var(--r-md);background:var(--panel2)}.offline-note{margin:0;color:var(--muted);font-size:var(--fs-md)}.offline-title{margin:0;font-size:var(--fs-md);font-weight:700}.offline-body{margin:6px 0 0;color:var(--muted);font-size:var(--fs-md);line-height:1.6}.offline-actions{display:flex;gap:var(--sp-2);margin-block-start:10px}.offline-actions .btn{flex:1 1 120px}[data-embed] .offline-bar{display:none}.promo-slot{width:100%;border-radius:var(--r-md);overflow:hidden;box-sizing:border-box}.promo-fill{position:relative;display:flex;align-items:center;justify-content:center;padding:var(--sp-2) 56px;text-align:center;color:#fff;border:2px dashed #fff;background:repeating-linear-gradient(45deg,#7c00ff,#7c00ff 12px,#9b2bff 12px,#9b2bff 24px);font-family:system-ui,sans-serif}.promo-fill .promo-tag{position:absolute;left:10px;top:10px;flex:none;font-weight:900;font-size:var(--fs-xs);letter-spacing:1px;background:#fff;color:#7c00ff;padding:var(--sp-1) var(--sp-2);border-radius:var(--r-sm)}.promo-fill .promo-info{font-size:var(--fs-sm);line-height:1.45}.promo-fill code{color:#ffe08a;font-family:ui-monospace,SF Mono,Menlo,monospace}.home .promo-banner{margin-top:22px}body.has-bottom-anchor{padding-bottom:calc(87px + env(safe-area-inset-bottom,0px))}.promo-anchor-bar{position:fixed;left:0;right:0;bottom:0;z-index:1000;display:flex;align-items:center;padding:var(--sp-2);padding-bottom:calc(8px + env(safe-area-inset-bottom,0px));background:#0b0d16eb;border-top:1px solid var(--line);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.promo-anchor-bar .promo-slot{max-width:970px;margin:0 auto}.nl-bar{position:fixed;left:0;right:0;top:0;z-index:1000;display:flex;align-items:center;gap:var(--sp-2);height:30px;padding:0 var(--sp-2);border-bottom:1px solid var(--line);background-color:#0b0d16eb;background-image:linear-gradient(#ffffff0a,#ffffff0a);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);font-size:var(--fs-sm);line-height:1;overflow:hidden}body.has-newsline{padding-top:31px}.nl-view{position:relative;flex:1 1 auto;min-width:0;height:30px;overflow:hidden}.nl-track{display:flex;flex-direction:column;will-change:transform}.nl-link{display:block;flex:none;height:30px;line-height:30px;text-align:center;color:inherit;text-decoration:none}.nl-link:hover .nl-text,.nl-link:focus-visible .nl-text{text-decoration:underline}.nl-text{display:inline-block;white-space:nowrap;will-change:transform}.nl-cta{display:none}@media(min-width:900px){.nl-cta{display:block;flex:none;max-width:40%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;height:20px;line-height:18px;padding:0 var(--sp-2);border:1px solid var(--line);border-radius:var(--r-pill);font-size:var(--fs-xs);color:var(--muted);text-decoration:none}.nl-cta:hover,.nl-cta:focus-visible{border-color:var(--accent);color:var(--accent)}}.nl-bar[data-static="1"] .nl-text{display:block;overflow:hidden;text-overflow:ellipsis}@media(prefers-reduced-motion:reduce){.nl-track{transition:none}}@media(max-width:640px){.nl-bar{font-size:var(--fs-xs);padding:0 var(--sp-2);gap:var(--sp-2)}}.nl-close{flex:none;display:grid;place-items:center;width:44px;height:30px;padding:0;border:0;background:none;color:var(--muted);cursor:pointer}.nl-close svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round}.nl-close:hover,.nl-close:focus-visible{color:var(--text)}body.nl-off .nl-bar{display:none}body.nl-off.has-newsline{padding-top:0}
