:root{--bg:#f6f7fb;--card:#ffffff;--text:#0f172a;--text2:#334155;--muted:#64748b;--border:#e3e7ef;--border2:#d3d9e4;--accent:#4f46e5;--accent2:#4338ca;--accent-soft:#eef2ff;--accent-ring:rgba(79,70,229,.18);--ok:#059669;--ok-soft:#ecfdf5;--warn:#d97706;--warn-soft:#fffbeb;--bad:#dc2626;--bad-soft:#fef2f2;--pl:#0d9488;--pl-soft:#f0fdfa;--radius:16px;--radius-sm:10px;--shadow:0 1px 2px rgba(15,23,42,.04),0 4px 16px rgba(15,23,42,.05);--font:ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif;--mono:ui-monospace,SFMono-Regular,Menlo,Consolas,"Liberation Mono",monospace;}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font);font-size:16px;line-height:1.6}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}img,svg{display:block}button,input,select,textarea{font:inherit;color:inherit}.wrap{max-width:1180px;margin:0 auto;padding:0 20px}.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.top{background:#fff;border-bottom:1px solid var(--border);position:sticky;top:0;z-index:50}.top .wrap{display:flex;align-items:center;gap:16px;height:64px}.logo{display:flex;align-items:center;gap:10px;color:var(--text);font-weight:750;font-size:19px;letter-spacing:-.02em}.logo:hover{text-decoration:none}.logo b{display:grid;place-items:center;width:34px;height:34px;border-radius:10px;background:var(--accent);color:#fff;font-size:18px;font-weight:800}.logo em{font-style:normal}.logo span{color:var(--muted);font-weight:600}.nav{display:flex;align-items:center;gap:2px;margin-left:auto}.nav>a,.nav .dd>button{padding:8px 12px;border-radius:9px;color:var(--text2);font-weight:550;font-size:15px;background:none;border:0;cursor:pointer;white-space:nowrap}.nav>a:hover,.nav .dd>button:hover{background:var(--accent-soft);color:var(--accent2);text-decoration:none}.nav>a.on{color:var(--accent2);background:var(--accent-soft)}.dd{position:relative}.dd>button::after{content:"";display:inline-block;width:6px;height:6px;border:solid currentColor;border-width:0 2px 2px 0;transform:rotate(45deg);margin:0 0 3px 8px}.ddm{display:none;position:absolute;right:0;top:calc(100% + 8px);background:#fff;border:1px solid var(--border);border-radius:14px;box-shadow:0 12px 40px rgba(15,23,42,.12);padding:8px;width:520px;grid-template-columns:1fr 1fr;gap:2px}.dd.open .ddm{display:grid}.ddm a{padding:9px 12px;border-radius:9px;color:var(--text2);font-size:15px}.ddm a:hover{background:var(--accent-soft);color:var(--accent2);text-decoration:none}.ddm a small{display:block;color:var(--muted);font-size:12.5px;line-height:1.35}.burger{display:none;margin-left:auto;background:none;border:1px solid var(--border);border-radius:10px;width:42px;height:42px;cursor:pointer}.burger i,.burger i::before,.burger i::after{display:block;width:18px;height:2px;background:var(--text);border-radius:2px;margin:auto;position:relative;content:""}.burger i::before{position:absolute;top:-6px}.burger i::after{position:absolute;top:6px}.hero{padding:34px 0 18px}.crumbs{font-size:13.5px;color:var(--muted);margin-bottom:8px}.crumbs a{color:var(--muted)}h1{font-size:clamp(28px,4vw,40px);line-height:1.15;letter-spacing:-.025em;margin:0 0 10px;font-weight:800}.lead{font-size:17.5px;color:var(--text2);margin:0;max-width:780px}.badges{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}.badge{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:600;color:var(--text2);background:#fff;border:1px solid var(--border);border-radius:999px;padding:4px 11px}.badge::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--ok)}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.tool{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:18px;align-items:start}.tool.single{grid-template-columns:minmax(0,1fr)}.editor{padding:0;overflow:hidden}.bar{display:flex;flex-wrap:wrap;align-items:center;gap:6px;padding:10px 12px;border-bottom:1px solid var(--border);background:#fbfcfe}.bar .sp{flex:1}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;border:1px solid var(--border2);background:#fff;border-radius:10px;padding:7px 13px;font-size:14.5px;font-weight:600;color:var(--text2);cursor:pointer;transition:background .12s,border-color .12s,color .12s;white-space:nowrap}.btn:hover{border-color:var(--accent);color:var(--accent2);background:var(--accent-soft)}.btn.pri{background:var(--accent);border-color:var(--accent);color:#fff}.btn.pri:hover{background:var(--accent2);border-color:var(--accent2);color:#fff}.btn.sm{padding:5px 10px;font-size:13.5px;border-radius:8px}.btn svg{width:16px;height:16px;flex:none}textarea.ta{display:block;width:100%;min-height:340px;border:0;outline:0;resize:vertical;padding:18px 20px;font-size:17px;line-height:1.65;background:#fff}textarea.ta::placeholder{color:#9aa4b5}.ta.mono{font-family:var(--mono);font-size:15px}.foot{display:flex;flex-wrap:wrap;gap:6px 18px;padding:10px 16px;border-top:1px solid var(--border);font-size:13.5px;color:var(--muted);background:#fbfcfe}.foot b{color:var(--text);font-weight:700}.field{display:block;width:100%;border:1px solid var(--border2);border-radius:12px;padding:12px 14px;background:#fff;outline:0;transition:border-color .12s,box-shadow .12s}.field:focus,textarea.box:focus{border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-ring)}textarea.box{display:block;width:100%;min-height:200px;border:1px solid var(--border2);border-radius:12px;padding:14px 16px;outline:0;resize:vertical;line-height:1.6;background:#fff;font-size:16px}label.lb{display:block;font-weight:650;font-size:14.5px;margin:0 0 6px;color:var(--text2)}.pad{padding:18px}.row{display:flex;flex-wrap:wrap;gap:10px;align-items:center}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:16px}.opt{display:inline-flex;align-items:center;gap:7px;font-size:14.5px;color:var(--text2);cursor:pointer;user-select:none}.opt input{accent-color:var(--accent);width:16px;height:16px}select.sel{border:1px solid var(--border2);border-radius:10px;padding:7px 10px;background:#fff;font-size:14.5px}.side{display:flex;flex-direction:column;gap:14px;position:sticky;top:80px}.big{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--border);border-radius:var(--radius);overflow:hidden;border:1px solid var(--border);box-shadow:var(--shadow)}.big div{background:#fff;padding:14px 16px}.big strong{display:block;font-size:30px;line-height:1.1;font-weight:800;letter-spacing:-.02em;font-variant-numeric:tabular-nums}.big span{font-size:13.5px;color:var(--muted);font-weight:550}.big .hl strong{color:var(--accent)}.list{padding:6px 0}.list h3,.panel h3{font-size:13px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:10px 16px 4px;font-weight:700}.kv{display:flex;justify-content:space-between;gap:10px;padding:6px 16px;font-size:14.5px}.kv span{color:var(--text2)}.kv b{font-variant-numeric:tabular-nums;font-weight:700}.kv:nth-child(even){background:#fafbfd}.panels{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:18px}.panel{padding:6px 0 14px}.panel .in{padding:4px 16px}.lim{padding:7px 16px}.lim .t{display:flex;justify-content:space-between;font-size:14px;margin-bottom:4px}.lim .t span{color:var(--text2)}.lim .t b{font-variant-numeric:tabular-nums;font-weight:650;font-size:13.5px}.meter{height:7px;background:#eef1f6;border-radius:9px;overflow:hidden}.meter i{display:block;height:100%;width:0;background:var(--ok);border-radius:9px;transition:width .2s}.meter i.w{background:var(--warn)}.meter i.x{background:var(--bad)}.letters{display:grid;grid-template-columns:repeat(auto-fill,minmax(52px,1fr));gap:6px;padding:6px 16px}.lt{border:1px solid var(--border);border-radius:10px;text-align:center;padding:6px 2px;background:#fff}.lt b{display:block;font-size:18px;line-height:1.2}.lt span{font-size:12.5px;color:var(--muted);font-variant-numeric:tabular-nums}.lt.pl{background:var(--pl-soft);border-color:#b8ece4}.lt.pl b{color:var(--pl)}.lt.zero{opacity:.45}.lt.ob b{color:var(--muted)}.kw{width:100%;border-collapse:collapse;font-size:14.5px}.kw td{padding:6px 16px;border-top:1px solid #f0f2f6}.kw td:last-child{text-align:right;color:var(--muted);font-variant-numeric:tabular-nums}.empty{color:var(--muted);font-size:14px;padding:6px 16px}.legend{display:flex;gap:14px;padding:2px 16px 0;font-size:12.5px;color:var(--muted)}.legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:5px;vertical-align:-1px;background:var(--pl-soft);border:1px solid #b8ece4}.out{border:1px solid var(--border);border-radius:12px;background:#fbfcfe;padding:14px 16px;min-height:56px;white-space:pre-wrap;word-break:break-word;font-size:17px}.out.big2{font-size:22px;font-weight:650;line-height:1.45}.res{display:flex;align-items:center;gap:10px;justify-content:space-between;border:1px solid var(--border);border-radius:12px;padding:10px 12px 10px 16px;background:#fff;margin-bottom:8px}.res .v{font-size:19px;word-break:break-all;flex:1}.res .n{font-size:12.5px;color:var(--muted);display:block;margin-bottom:2px}.chips{display:flex;flex-wrap:wrap;gap:6px}.chip{border:1px solid var(--border2);background:#fff;border-radius:999px;padding:5px 12px;font-size:14px;font-weight:600;color:var(--text2);cursor:pointer}.chip:hover{border-color:var(--accent);color:var(--accent2)}.chip.on{background:var(--accent);border-color:var(--accent);color:#fff}.symgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(54px,1fr));gap:6px}.sym{border:1px solid var(--border);background:#fff;border-radius:10px;height:54px;font-size:24px;cursor:pointer;display:grid;place-items:center;transition:transform .08s,border-color .12s}.sym:hover{border-color:var(--accent);background:var(--accent-soft)}.sym:active{transform:scale(.94)}.tabs{display:flex;gap:4px;padding:4px;background:#eef1f6;border-radius:12px;width:max-content;max-width:100%;overflow:auto}.tab{border:0;background:none;padding:7px 14px;border-radius:9px;font-weight:650;font-size:14.5px;color:var(--text2);cursor:pointer;white-space:nowrap}.tab.on{background:#fff;color:var(--accent2);box-shadow:0 1px 3px rgba(15,23,42,.1)}.diff{font-size:16px;line-height:1.7;white-space:pre-wrap;word-break:break-word}.diff ins{background:#d1fae5;color:#065f46;text-decoration:none;border-radius:3px}.diff del{background:#fee2e2;color:#991b1b;border-radius:3px}.tbl{width:100%;border-collapse:collapse;font-size:15px}.tbl th,.tbl td{border-bottom:1px solid var(--border);padding:8px 10px;text-align:left}.tbl th{font-size:13px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}.tbl td code{font-family:var(--mono);font-size:15px}.mt{margin-top:16px}.mt2{margin-top:24px}.note{font-size:13.5px;color:var(--muted)}.content{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:40px;margin:46px 0 20px}.prose{max-width:780px}.prose h2{font-size:26px;line-height:1.25;letter-spacing:-.02em;margin:38px 0 12px;font-weight:780}.prose h2:first-child{margin-top:0}.prose h3{font-size:19px;margin:26px 0 8px;font-weight:720}.prose p,.prose li{color:var(--text2);font-size:16.5px}.prose ul,.prose ol{padding-left:22px}.prose li{margin:5px 0}.tw{overflow-x:auto;margin:14px 0;-webkit-overflow-scrolling:touch}.tw table{margin:0!important}.prose table{width:100%;border-collapse:collapse;margin:14px 0;font-size:15px;background:#fff;border:1px solid var(--border);border-radius:12px;overflow:hidden}.prose th,.prose td{padding:9px 12px;border-bottom:1px solid var(--border);text-align:left}.prose th{background:#f8fafc;font-weight:700;color:var(--text)}.prose code{font-family:var(--mono);background:#eef1f6;border-radius:5px;padding:1px 5px;font-size:.92em}.tip{border-left:4px solid var(--accent);background:var(--accent-soft);padding:12px 16px;border-radius:0 12px 12px 0;margin:18px 0}.tip p{margin:0;color:var(--text)}.faq details{background:#fff;border:1px solid var(--border);border-radius:12px;margin:10px 0;padding:0 18px}.faq summary{cursor:pointer;padding:14px 0;font-weight:680;font-size:16.5px;list-style:none;display:flex;justify-content:space-between;gap:14px}.faq summary::-webkit-details-marker{display:none}.faq summary::after{content:"+";font-size:22px;line-height:1;color:var(--accent);font-weight:500}.faq details[open] summary::after{content:"\2212"}.faq details p{margin:0 0 14px;color:var(--text2)}.aside{position:sticky;top:84px;align-self:start}.aside .card{padding:16px}.aside h3{margin:0 0 8px;font-size:15px}.aside a{display:block;padding:7px 10px;border-radius:9px;color:var(--text2);font-size:15px}.aside a:hover{background:var(--accent-soft);color:var(--accent2);text-decoration:none}.aside a.on{background:var(--accent-soft);color:var(--accent2);font-weight:650}.related{margin:30px 0 10px}.related h2{font-size:22px;margin:0 0 14px;letter-spacing:-.02em}.tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:12px}.tile{display:block;background:#fff;border:1px solid var(--border);border-radius:14px;padding:16px;color:var(--text);transition:border-color .12s,transform .12s,box-shadow .12s}.tile:hover{text-decoration:none;border-color:var(--accent);box-shadow:0 6px 20px rgba(79,70,229,.1);transform:translateY(-1px)}.tile b{display:block;font-size:16px;margin-bottom:3px}.tile span{font-size:14px;color:var(--muted);line-height:1.45;display:block}.tile em{font-style:normal;display:inline-grid;place-items:center;width:34px;height:34px;border-radius:9px;background:var(--accent-soft);color:var(--accent2);font-weight:800;margin-bottom:10px;font-size:15px}.footer{margin-top:50px;background:#fff;border-top:1px solid var(--border);padding:34px 0 26px;font-size:14.5px;color:var(--muted)}.fgrid{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:28px}.footer h4{color:var(--text);font-size:14px;margin:0 0 10px}.footer a{display:block;color:var(--muted);padding:3px 0}.footer a:hover{color:var(--accent2)}.copy{border-top:1px solid var(--border);margin-top:24px;padding-top:16px;display:flex;justify-content:space-between;flex-wrap:wrap;gap:10px}.toast{position:fixed;left:50%;bottom:26px;transform:translate(-50%,20px);background:#0f172a;color:#fff;padding:10px 18px;border-radius:12px;font-size:14.5px;font-weight:600;opacity:0;pointer-events:none;transition:opacity .18s,transform .18s;z-index:100;box-shadow:0 10px 30px rgba(15,23,42,.25)}.toast.show{opacity:1;transform:translate(-50%,0)}@media (max-width:1020px){.tool{grid-template-columns:minmax(0,1fr)}.side{position:static}.content{grid-template-columns:minmax(0,1fr)}.aside{display:none}.fgrid{grid-template-columns:1fr 1fr}}@media (max-width:860px){.burger{display:block}.nav{display:none;position:absolute;left:0;right:0;top:64px;background:#fff;border-bottom:1px solid var(--border);flex-direction:column;align-items:stretch;padding:10px 16px 16px;gap:2px;max-height:calc(100vh - 64px);overflow:auto;box-shadow:0 14px 30px rgba(15,23,42,.08)}.nav.open{display:flex}.dd>button{display:none}.ddm{display:grid!important;position:static;box-shadow:none;border:0;width:auto;padding:0;grid-template-columns:1fr}.ddm a small{display:none}}@media (max-width:640px){.wrap{padding:0 16px}.hero{padding:24px 0 14px}.lead{font-size:16px}.panels,.grid2{grid-template-columns:1fr}textarea.ta{min-height:260px;font-size:16px;padding:14px 16px}.big strong{font-size:26px}.bar .btn span{display:none}.bar .btn{padding:8px 10px}.prose th,.prose td{padding:8px 9px;font-size:14.5px}.prose h2{font-size:23px}.fgrid{grid-template-columns:1fr}}