:root{--bg:#f7f6f2;--card:#fff;--ink:#1a1f1d;--muted:#5c6762;--line:#e2e0d8;--brand:#2f4fd1;--brand-d:#2339a3;--brand-t:#e8edfd;--accent:#f5b942;--danger:#b3261e;--c1:#2f4fd1;--c2:#f5b942;--c3:#4c7fd1;--c4:#c8553d;--c5:#8a6fc0;--r:14px;--shadow:0 1px 2px rgba(20,30,25,.06),0 6px 24px rgba(20,30,25,.05);--sans:ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;--serif:ui-serif,Georgia,"Times New Roman",serif}@media (prefers-color-scheme:dark){:root{--bg:#121513;--card:#1b201d;--ink:#eceee9;--muted:#9aa5a0;--line:#2b322e;--brand:#8fa8ff;--brand-d:#c2d0ff;--brand-t:#1b2340;--accent:#f5b942;--danger:#ff8a80;--c1:#8fa8ff;--c3:#7ea6ee;--c4:#ee8b74;--c5:#b39ae0;--shadow:none}}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.6 var(--sans);font-variant-numeric:tabular-nums}a{color:var(--brand);text-underline-offset:2px}a:hover{color:var(--brand-d)}img,svg{max-width:100%}.wrap{max-width:1120px;margin:0 auto;padding:0 16px}.skip{position:absolute;left:-999px}.skip:focus{left:8px;top:8px;background:var(--card);padding:8px 12px;z-index:50}.site-h{background:var(--card);border-bottom:1px solid var(--line)}.site-h .wrap{display:flex;align-items:center;gap:20px;min-height:60px;flex-wrap:wrap}.logo{display:flex;align-items:center;gap:10px;font:700 1.2rem/1 var(--serif);color:var(--ink);text-decoration:none;padding:12px 0}.logo img{width:30px;height:30px}.nav{display:flex;gap:4px 18px;flex-wrap:wrap;margin-left:auto;font-size:.95rem}.nav a{color:var(--ink);text-decoration:none;padding:6px 2px;border-bottom:2px solid transparent}.nav a:hover,.nav a[aria-current]{border-color:var(--brand)}@media (max-width:700px){.site-h .wrap{gap:0}.nav{width:100%;margin-left:0;flex-wrap:nowrap;overflow-x:auto;white-space:nowrap;gap:0 18px;scrollbar-width:none;padding-bottom:4px}.nav::-webkit-scrollbar{display:none}}.layout{display:grid;grid-template-columns:minmax(0,1fr);gap:28px;padding:20px 0 40px}main{min-width:0}.crumbs{font-size:.85rem;color:var(--muted);margin:18px 0 0}.crumbs a{color:var(--muted)}h1{font:700 clamp(1.7rem,4vw,2.4rem)/1.15 var(--serif);margin:.3em 0 .25em;letter-spacing:-.01em}h2{font:700 1.45rem/1.25 var(--serif);margin:1.8em 0 .5em}h3{font-size:1.1rem;margin:1.4em 0 .4em}.lede{font-size:1.1rem;color:var(--muted);margin:0 0 18px;max-width:70ch}.prose{max-width:72ch}.prose p,.prose li{margin:.7em 0}.prose ul,.prose ol{padding-left:1.3em}.prose code,.formula{background:var(--brand-t);padding:2px 6px;border-radius:6px;font-size:.92em}.formula{display:block;padding:10px 14px;margin:12px 0;overflow-x:auto}.tool{display:grid;gap:0;background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);overflow:hidden}@media (min-width:800px){.tool{grid-template-columns:minmax(280px,380px) minmax(0,1fr)}}.form{padding:20px;display:grid;gap:14px;align-content:start;border-bottom:1px solid var(--line)}@media (min-width:800px){.form{border-bottom:0;border-right:1px solid var(--line)}}.fld label{display:block;font-weight:600;font-size:.9rem;margin-bottom:4px}.fld .help{font-size:.8rem;color:var(--muted);margin-top:3px}.fld[hidden]{display:none}.inp{display:flex;align-items:stretch;border:1px solid var(--line);border-radius:10px;background:var(--bg);overflow:hidden}.inp:focus-within{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-t)}.inp input,.inp select,.fld>select,.fld>input{width:100%;border:0;background:transparent;color:inherit;font:inherit;padding:10px 12px;min-width:0;outline:0}.fld>select,.fld>input{border:1px solid var(--line);border-radius:10px;background:var(--bg)}.fld>select:focus,.fld>input:focus{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-t)}.pre,.suf{display:flex;align-items:center;padding:0 12px;color:var(--muted);background:var(--brand-t);font-size:.9rem}.chk{display:flex;gap:10px;align-items:center}.chk input{width:18px;height:18px;accent-color:var(--brand)}.chk label{margin:0;font-weight:500}.presets{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}.presets button,.btn-s{font:inherit;font-size:.85rem;padding:5px 12px;border-radius:999px;border:1px solid var(--line);background:var(--card);color:var(--ink);cursor:pointer}.presets button:hover,.btn-s:hover{border-color:var(--brand);color:var(--brand)}.row2{display:grid;grid-template-columns:1fr 1fr;gap:10px}.adv summary{cursor:pointer;font-weight:600;font-size:.9rem;color:var(--brand)}.adv .fields{display:grid;gap:14px;margin-top:12px}.result{padding:20px;min-width:0}.msg{padding:16px;border-radius:10px;background:var(--brand-t);color:var(--ink)}.msg.err{background:color-mix(in srgb,var(--danger) 12%,transparent);color:var(--danger)}.hero{background:var(--brand);color:#fff;border-radius:12px;padding:18px 20px;margin-bottom:16px}@media (prefers-color-scheme:dark){.hero{background:#27358f}}.hero-l{font-size:.85rem;opacity:.85;text-transform:uppercase;letter-spacing:.06em}.hero-v{font:700 clamp(2rem,6vw,2.8rem)/1.1 var(--serif);margin:4px 0}.hero-s{opacity:.9;font-size:.95rem}.split{display:flex;height:14px;border-radius:7px;overflow:hidden;margin:6px 0 10px;background:var(--line)}.legend{list-style:none;margin:0 0 16px;padding:0;display:grid;gap:4px;font-size:.92rem}.legend li{display:flex;align-items:center;gap:8px}.legend i{width:10px;height:10px;border-radius:3px;flex:none}.legend b{margin-left:auto;font-weight:600}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin:0 0 16px}.stat{background:var(--bg);border-radius:10px;padding:10px 12px}.stat dt{font-size:.78rem;color:var(--muted);margin:0}.stat dd{margin:2px 0 0;font-weight:700;font-size:1.05rem}.scale{margin:8px 0 22px}.scale-bar{position:relative;display:flex;height:14px;border-radius:7px;overflow:hidden}.scale-bar span{display:block;height:100%}.scale-pin{position:absolute;top:-4px;width:4px;height:22px;background:var(--ink);border-radius:2px;transform:translateX(-2px)}.scale-lab{display:flex;justify-content:space-between;font-size:.72rem;color:var(--muted);margin-top:4px;gap:4px}.chart{margin:12px 0 18px;position:relative}.chart svg{width:100%;height:auto;display:block;overflow:visible}.chart .ax{stroke:var(--line);stroke-width:1}.chart text{fill:var(--muted);font-size:15px}.chart-tip{position:absolute;pointer-events:none;background:var(--ink);color:var(--bg);border-radius:8px;padding:6px 10px;font-size:.78rem;white-space:nowrap;transform:translate(-50%,-110%);display:none}.chart-leg{display:flex;gap:14px;font-size:.82rem;color:var(--muted);flex-wrap:wrap;margin-top:4px}.chart-leg i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:6px}.tbl-wrap{overflow-x:auto;margin:6px 0 16px;border:1px solid var(--line);border-radius:10px}table{border-collapse:collapse;width:100%;font-size:.9rem}th,td{padding:8px 12px;text-align:right;white-space:nowrap;border-bottom:1px solid var(--line)}th:first-child,td:first-child{text-align:left}thead th{background:var(--brand-t);font-weight:600;position:sticky;top:0}tbody tr:last-child td{border-bottom:0}tbody tr:nth-child(even){background:color-mix(in srgb,var(--bg) 60%,transparent)}.tbl-h{font-weight:700;margin:14px 0 4px;font-size:.95rem}.tbl-wrap:not(.open) tr.more{display:none}.tbl-wrap + .btn-s{margin-bottom:14px}.notes{font-size:.85rem;color:var(--muted)}.notes p{margin:.4em 0}.toolbar{grid-column:1/-1;display:flex;gap:8px;flex-wrap:wrap;padding:12px 20px;border-top:1px solid var(--line);background:var(--bg)}.toolbar button{display:inline-flex;gap:6px;align-items:center}.ad.on{display:block}.ad.ad-preview{display:grid;place-items:center;border:2px dashed var(--line);color:var(--muted);font-size:.8rem}.ad[data-slot=side]{min-height:250px;position:sticky;top:16px}.ad-label{font-size:.65rem;color:var(--muted);text-transform:uppercase;letter-spacing:.08em;display:block}.aff{border:1px solid var(--line);background:var(--card);border-radius:var(--r);padding:16px 18px;margin:18px 0;display:flex;gap:16px;align-items:center;flex-wrap:wrap}.aff p{margin:2px 0 0;color:var(--muted);font-size:.92rem}.aff strong{display:block}.aff small{display:block;color:var(--muted);font-size:.72rem;margin-top:4px}.aff .btn{margin-left:auto}.btn{display:inline-block;background:var(--brand);color:#fff;text-decoration:none;font-weight:600;border:0;padding:11px 20px;border-radius:10px;cursor:pointer;font:inherit;font-weight:600}.btn:hover{background:var(--brand-d);color:#fff}.btn.alt{background:transparent;color:var(--brand);border:1px solid var(--brand)}.btn.alt:hover{background:var(--brand-t);color:var(--brand-d)}.faq details{border:1px solid var(--line);border-radius:10px;background:var(--card);margin:8px 0;padding:0 16px}.faq summary{cursor:pointer;font-weight:600;padding:12px 0}.faq details p{margin:0 0 14px}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:12px;padding:0;list-style:none;margin:12px 0}.grid a{display:block;padding:14px 16px;border:1px solid var(--line);background:var(--card);border-radius:12px;text-decoration:none;color:var(--ink);height:100%}.grid a:hover{border-color:var(--brand);box-shadow:var(--shadow)}.grid b{display:block;color:var(--brand)}.grid span{font-size:.85rem;color:var(--muted)}.chips{display:flex;flex-wrap:wrap;gap:8px;list-style:none;padding:0;margin:10px 0}.chips a{display:block;padding:5px 12px;border:1px solid var(--line);background:var(--card);border-radius:999px;text-decoration:none;font-size:.88rem}.chips a:hover{border-color:var(--brand)}.hero-home{padding:44px 0 20px}.hero-home h1{font-size:clamp(2rem,5.5vw,3.2rem);max-width:18ch}.search{max-width:520px;margin:18px 0 6px}.search input{width:100%;font:inherit;padding:14px 16px;border-radius:12px;border:1px solid var(--line);background:var(--card);color:inherit}.search input:focus{outline:0;border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-t)}.cat-h{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-top:30px}.cat-h h2{margin:0}.site-f{border-top:1px solid var(--line);background:var(--card);color:var(--muted);font-size:.9rem;padding:28px 0}.site-f .cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:20px;margin-bottom:18px}.site-f h3{font-size:.85rem;color:var(--ink);margin:0 0 6px;text-transform:uppercase;letter-spacing:.06em}.site-f ul{list-style:none;padding:0;margin:0}.site-f li{padding:2px 0}.site-f a{color:var(--muted)}.tt{display:block}.tt-opts{display:flex;flex-wrap:wrap;gap:14px 18px;padding:16px 20px;border-bottom:1px solid var(--line);align-items:end}.tt-opts .fld{min-width:140px;flex:0 1 220px}.tt-opts .fld.wide{flex:1 1 260px}.tt-opts .fld input[type=range]{width:100%;accent-color:var(--brand);padding:0;border:0;background:none}.tt-opts .fld input[type=text],.tt-opts .fld input[type=number]{width:100%}.tt-opts .chk{align-self:center}.rv{font-weight:700;color:var(--brand);margin-left:6px}.tt-io{display:grid;grid-template-columns:minmax(0,1fr);gap:0}@media (min-width:800px){.tt-io.two{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.tt-io.two .tt-box+.tt-box{border-left:1px solid var(--line)}}.tt-box{padding:16px 20px;min-width:0}.tt-box label{display:block;font-weight:600;font-size:.9rem;margin-bottom:6px}.tt-box textarea{width:100%;font:.92rem/1.5 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;padding:12px;border:1px solid var(--line);border-radius:10px;background:var(--bg);color:inherit;resize:vertical;min-height:120px}.tt-box textarea:focus{outline:0;border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-t)}.tt-box textarea[readonly]{background:color-mix(in srgb,var(--brand-t) 55%,var(--bg))}.tt-actions{display:flex;gap:8px;flex-wrap:wrap;padding:12px 20px;border-top:1px solid var(--line);background:var(--bg)}.tt-actions .btn{padding:8px 16px;font-size:.92rem}.tt-res{padding:0 20px 18px}.tt-res:empty{display:none}.tt-res .stats{margin-top:14px}.tt-html{padding:0 20px 8px}.tt-html:empty{display:none}.diff{border:1px solid var(--line);border-radius:10px;overflow:auto;max-height:420px;font:.88rem/1.5 ui-monospace,Menlo,Consolas,monospace;margin-top:14px}.df{display:flex;gap:8px;padding:1px 10px;white-space:pre-wrap;word-break:break-word}.df i{flex:none;width:12px;font-style:normal;font-weight:700}.df.add{background:color-mix(in srgb,#2ea44f 22%,transparent)}.df.add i{color:#1a7f37}.df.del{background:color-mix(in srgb,var(--danger) 18%,transparent)}.df.del i{color:var(--danger)}pre.hl{margin:14px 0 0;padding:12px;border:1px solid var(--line);border-radius:10px;background:var(--bg);white-space:pre-wrap;word-break:break-word;font:.9rem/1.5 ui-monospace,Menlo,Consolas,monospace;max-height:320px;overflow:auto}pre.hl mark{background:color-mix(in srgb,var(--accent) 60%,transparent);color:inherit;border-radius:3px;padding:0 1px}.swatch{height:72px;border-radius:12px;border:1px solid var(--line);margin-top:14px}.drop{display:block;margin:16px 20px;padding:34px 16px;text-align:center;border:2px dashed var(--line);border-radius:14px;cursor:pointer;color:var(--muted);background:var(--bg)}.drop:hover,.drop.over{border-color:var(--brand);color:var(--brand);background:var(--brand-t)}.drop strong{display:block;color:var(--ink);font-size:1.05rem}.drop input{position:absolute;opacity:0;width:1px;height:1px}.drop:focus-within{outline:3px solid var(--brand-t);border-color:var(--brand)}.imgs{list-style:none;margin:0;padding:0 20px 8px;display:grid;gap:10px}.imgs li{display:flex;gap:12px;align-items:center;border:1px solid var(--line);border-radius:12px;padding:8px 10px;background:var(--card);flex-wrap:wrap}.imgs img{width:52px;height:52px;object-fit:cover;border-radius:8px;background:var(--bg);flex:none}.imgs .nm{flex:1 1 180px;min-width:0}.imgs .nm b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.imgs .nm span{font-size:.82rem;color:var(--muted)}.imgs .sv{color:#1a7f37;font-weight:700}@media (prefers-color-scheme:dark){.imgs .sv{color:#5fd68a}}.imgs .acts{display:flex;gap:6px;align-items:center}.imgs .acts a.btn-s{text-decoration:none}.tt-note{padding:0 20px 14px;font-size:.84rem;color:var(--muted)}.msg.err{margin:14px 20px}.tt-res .msg{margin-top:14px}.catgrid h2{margin-top:1.6em}[hidden]{display:none!important}.why{max-width:none;background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:2px 22px 12px;margin-top:36px}.why h2{font-size:1.1rem;margin:.9em 0 .3em}.why .check{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:2px 28px;margin:0}.why .check li{margin:.4em 0;font-size:.92rem}@media (max-width:700px){.btn-s,.presets button{min-height:40px;padding:8px 16px}.btn{min-height:44px}.nav a{padding:10px 6px}.adv summary{padding:10px 0}.cat-h a{padding:10px 0}.tt-box textarea{font-size:16px}.faq summary{padding:14px 12px}.tbl-wrap{-webkit-overflow-scrolling:touch}.toolbar{padding:10px 14px}.layout{padding-top:12px}}.phead{display:block}.phead{margin-bottom:16px}.phead .notes{margin:-8px 0 0}.ill{display:block;width:100%;max-width:190px;height:auto;border-radius:14px;margin:10px auto 4px}.ci{display:block;width:112px;height:63px;border-radius:8px;flex:none}.grid.ills{grid-template-columns:repeat(auto-fill,minmax(290px,1fr))}.grid.ills a{display:grid;grid-template-columns:112px minmax(0,1fr);column-gap:14px;align-items:center}.grid.ills a .ci{grid-row:1 / span 2}.grid.ills a:not(:has(.ci)){display:block}.grid.ills b,.grid.ills span{grid-column:2}@media (min-width:800px){.phead.has-ill{display:grid;grid-template-columns:minmax(0,1fr) 300px;column-gap:32px;align-items:center}.ill{max-width:300px;margin:0}}