.bg{background-color:#fff}.chroma{background-color:#fff}.chroma .x{}.chroma .err{color:#a61717;background-color:#e3d2d2}.chroma .cl{}.chroma .lnlinks{outline:none;text-decoration:none;color:inherit}.chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}.chroma .lntable{border-spacing:0;padding:0;margin:0;border:0}.chroma .hl{background-color:#e5e5e5}.chroma .lnt{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#7f7f7f}.chroma .ln{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#7f7f7f}.chroma .line{display:flex}.chroma .k{color:#000;font-weight:700}.chroma .kc{color:#000;font-weight:700}.chroma .kd{color:#000;font-weight:700}.chroma .kn{color:#000;font-weight:700}.chroma .kp{color:#000;font-weight:700}.chroma .kr{color:#000;font-weight:700}.chroma .kt{color:#458;font-weight:700}.chroma .n{}.chroma .na{color:teal}.chroma .nb{color:#0086b3}.chroma .bp{color:#999}.chroma .nc{color:#458;font-weight:700}.chroma .no{color:teal}.chroma .nd{color:#3c5d5d;font-weight:700}.chroma .ni{color:purple}.chroma .ne{color:#900;font-weight:700}.chroma .nf{color:#900;font-weight:700}.chroma .fm{}.chroma .nl{color:#900;font-weight:700}.chroma .nn{color:#555}.chroma .nx{}.chroma .py{}.chroma .nt{color:navy}.chroma .nv{color:teal}.chroma .vc{color:teal}.chroma .vg{color:teal}.chroma .vi{color:teal}.chroma .vm{}.chroma .l{}.chroma .ld{}.chroma .s{color:#d14}.chroma .sa{color:#d14}.chroma .sb{color:#d14}.chroma .sc{color:#d14}.chroma .dl{color:#d14}.chroma .sd{color:#d14}.chroma .s2{color:#d14}.chroma .se{color:#d14}.chroma .sh{color:#d14}.chroma .si{color:#d14}.chroma .sx{color:#d14}.chroma .sr{color:#009926}.chroma .s1{color:#d14}.chroma .ss{color:#990073}.chroma .m{color:#099}.chroma .mb{color:#099}.chroma .mf{color:#099}.chroma .mh{color:#099}.chroma .mi{color:#099}.chroma .il{color:#099}.chroma .mo{color:#099}.chroma .o{color:#000;font-weight:700}.chroma .ow{color:#000;font-weight:700}.chroma .p{}.chroma .c{color:#998;font-style:italic}.chroma .ch{color:#998;font-style:italic}.chroma .cm{color:#998;font-style:italic}.chroma .c1{color:#998;font-style:italic}.chroma .cs{color:#999;font-weight:700;font-style:italic}.chroma .cp{color:#999;font-weight:700;font-style:italic}.chroma .cpf{color:#999;font-weight:700;font-style:italic}.chroma .g{}.chroma .gd{color:#000;background-color:#fdd}.chroma .ge{color:#000;font-style:italic}.chroma .gr{color:#a00}.chroma .gh{color:#999}.chroma .gi{color:#000;background-color:#dfd}.chroma .go{color:#888}.chroma .gp{color:#555}.chroma .gs{font-weight:700}.chroma .gu{color:#aaa}.chroma .gt{color:#a00}.chroma .gl{text-decoration:underline}.chroma .w{color:#bbb}:root{--bg:#ffffff;--bg-soft:#f7f8fa;--surface:#ffffff;--border:#e6e8ec;--border-strong:#cfd4dc;--text:#14161a;--muted:#6b7280;--accent:#2563eb;--accent-soft:#eff4ff;--ink:#111418;--radius:10px;--max:1040px;--font:ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--mono:ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace}*,*::before,*::after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{margin:0;min-height:100vh;background:var(--bg);color:var(--text);font-family:var(--font);font-size:17px;line-height:1.65}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}img,svg{max-width:100%}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}.container{width:100%;max-width:var(--max);margin:0 auto;padding:0 24px}.site-header{position:sticky;top:0;z-index:20;background:var(--bg);border-bottom:1px solid var(--border)}.site-header .container{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:64px}.brand{display:inline-flex;align-items:center;gap:10px;font-weight:700;letter-spacing:-.01em;color:var(--text);font-family:var(--mono)}.brand:hover{text-decoration:none}.brand .dot{color:var(--accent)}.brand-mark{display:inline-grid;place-items:center;width:30px;height:30px;border-radius:8px;background:var(--ink);color:#fff;font-weight:800;font-size:15px}.site-nav{display:flex;align-items:center;gap:4px}.site-nav a{color:var(--muted);padding:8px 12px;border-radius:8px;font-size:15px;font-weight:500}.site-nav a:hover{color:var(--text);background:var(--bg-soft);text-decoration:none}.nav-toggle{position:absolute;opacity:0;width:1px;height:1px}.nav-toggle-label{display:none}.hero{padding:80px 0 48px}.profile-hero-inner{display:flex;align-items:center;gap:34px}.profile-photo{flex:none}.avatar{display:block;width:116px;height:116px;border-radius:999px;border:1px solid var(--border);object-fit:cover}.profile-intro{min-width:0}.hero h1{margin:0;font-size:clamp(2.1rem,5.5vw,3.2rem);line-height:1.12;letter-spacing:-.03em;font-weight:800}.accent{color:var(--accent)}.hero .lead{margin:18px 0 0;max-width:58ch;font-size:clamp(1.02rem,2.2vw,1.16rem);color:var(--muted)}.actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:28px}.btn{display:inline-flex;align-items:center;gap:9px;padding:11px 20px;border-radius:var(--radius);border:1px solid var(--border-strong);font-weight:600;font-size:15.5px;color:var(--text);background:var(--surface)}.btn:hover{text-decoration:none;border-color:var(--text)}.btn.primary{background:var(--ink);border-color:var(--ink);color:#fff}.btn.primary:hover{background:#000;border-color:#000}.section{padding:34px 0}.section-title{width:fit-content;position:relative;margin:0 0 16px;font-size:1.45rem;letter-spacing:-.02em}.section-title::after{content:"";position:absolute;left:-2px;right:-4px;bottom:-8px;height:7px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 240 8' preserveAspectRatio='none'%3E%3Cpath d='M2 5.2C30 2.1 58 1.2 86 2.3c28 1.1 56 3 84 2.4 24-.5 48-2.2 68-4' fill='none' stroke='%232563eb' stroke-width='2.2' stroke-linecap='round'/%3E%3C/svg%3E")no-repeat 0;background-size:100% 100%;opacity:.75;pointer-events:none}.subtitle{margin:0 0 26px;color:var(--muted);max-width:70ch}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;margin-top:22px}.card{padding:22px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}.card h3{margin:0 0 8px;font-size:1.06rem;letter-spacing:-.01em}.card p{margin:0;color:var(--muted);font-size:15.5px}.card .icon{display:inline-grid;place-items:center;width:38px;height:38px;margin-bottom:14px;border-radius:8px;background:var(--accent-soft);color:var(--accent);font-size:19px}.contact-box{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:18px;padding:26px;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-soft)}.contact-box h3{margin:0 0 4px;font-size:1.2rem}.contact-box p{margin:0;color:var(--muted)}.contact-link{color:inherit}.contact-link:hover{color:var(--accent);text-decoration:none}.post-list{list-style:none;margin:0;padding:0;border-top:1px solid var(--border)}.post-item{padding:22px 0;border-bottom:1px solid var(--border)}.post-link{display:inline-block;font-size:1.16rem;font-weight:650;letter-spacing:-.01em;color:var(--text)}.post-link:hover{color:var(--accent);text-decoration:none}.post-summary{margin:6px 0 9px;color:var(--muted);font-size:15.5px}.post-meta{margin:0;color:var(--muted);font-size:13.5px;font-family:var(--mono)}.more-link{margin-top:20px}.tags{margin:10px 0 0;display:flex;flex-wrap:wrap;gap:10px;font-family:var(--mono);font-size:13.5px}.tag{color:var(--muted)}.tag:hover{color:var(--accent)}.pagination{list-style:none;display:flex;flex-wrap:wrap;gap:8px;margin:26px 0 0;padding:0}.pagination a,.pagination span{display:inline-block;padding:7px 12px;border:1px solid var(--border);border-radius:8px;color:var(--text);font-size:14px}.pagination a:hover{border-color:var(--text);text-decoration:none}.pagination .active{background:var(--ink);border-color:var(--ink);color:#fff}.page{padding:52px 0 40px}.page-header{margin-bottom:30px;padding-bottom:24px;border-bottom:1px solid var(--border)}.page-header h1{margin:0 0 8px;font-size:clamp(1.9rem,4.5vw,2.5rem);letter-spacing:-.03em}.page-header .updated{margin:0;color:var(--muted);font-size:14.5px;font-family:var(--mono)}.prose{max-width:74ch;overflow-wrap:break-word}.prose a,.comments-note a{text-decoration:underline;text-underline-offset:2px}.prose a:hover,.comments-note a:hover{text-decoration-thickness:2px}.prose h2{margin:2.2em 0 .5em;font-size:1.22rem;letter-spacing:-.01em;padding-top:.5em;border-top:1px solid var(--border)}.prose h2:first-child{margin-top:0;border-top:0;padding-top:0}.prose h3{margin:1.6em 0 .4em;font-size:1.02rem}.prose p{margin:0 0 1em;color:var(--text)}.prose ul,.prose ol{margin:0 0 1em;padding-left:1.3em;color:var(--text)}.prose li{margin-bottom:.45em}.prose hr{border:0;border-top:1px solid var(--border);margin:2em 0}.prose img{border-radius:8px;border:1px solid var(--border)}.prose blockquote{margin:1.5em 0;padding:2px 0 2px 16px;border-left:3px solid var(--border-strong);color:var(--muted)}.prose code{font-family:var(--mono);font-size:.9em;background:var(--bg-soft);border:1px solid var(--border);border-radius:5px;padding:1px 5px}.prose pre{background:var(--bg-soft);border:1px solid var(--border);border-radius:8px;padding:14px 16px;overflow:auto;font-size:13.5px;line-height:1.55}.prose pre code{background:0 0;border:0;padding:0;font-size:inherit}.prose table{display:block;width:max-content;max-width:100%;overflow-x:auto;border-collapse:collapse;margin:1.5em 0;font-size:14.5px}.prose th,.prose td{border:1px solid var(--border);padding:8px 10px;text-align:left}.prose th{background:var(--bg-soft)}.note{padding:14px 16px;border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:8px;background:var(--bg-soft);color:var(--muted);font-size:14.5px}.comments{max-width:74ch;margin-top:48px;padding-top:26px;border-top:1px solid var(--border)}.comments h2{margin:0 0 18px;font-size:1.2rem;letter-spacing:-.01em}.comments-note{margin:-8px 0 18px;color:var(--muted);font-size:14.5px}.comments noscript{color:var(--muted);font-size:14.5px}.post-nav{display:flex;justify-content:space-between;gap:16px;max-width:74ch;margin-top:40px;padding-top:22px;border-top:1px solid var(--border);font-size:15px}.post-nav .next{margin-left:auto;text-align:right}.site-footer{margin-top:60px;padding:30px 0 44px;border-top:1px solid var(--border);color:var(--muted);font-size:14.5px}.site-footer .container{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px}.site-footer nav{display:flex;flex-wrap:wrap;gap:18px}.site-footer a{color:var(--muted)}.site-footer a:hover{color:var(--text)}@media(max-width:768px){.nav-toggle-label{display:inline-flex;flex-direction:column;justify-content:center;gap:4px;width:40px;height:40px;padding:0 10px;border:1px solid var(--border-strong);border-radius:8px;cursor:pointer}.nav-toggle-label span{display:block;height:2px;background:var(--text);border-radius:2px;transition:transform .18s ease,opacity .18s ease}.nav-toggle:checked~.nav-toggle-label span:nth-child(1){transform:translateY(6px)rotate(45deg)}.nav-toggle:checked~.nav-toggle-label span:nth-child(2){opacity:0}.nav-toggle:checked~.nav-toggle-label span:nth-child(3){transform:translateY(-6px)rotate(-45deg)}.nav-toggle:focus-visible+.nav-toggle-label{outline:2px solid var(--accent);outline-offset:2px}.site-nav{display:none;position:absolute;top:100%;left:0;right:0;flex-direction:column;align-items:stretch;gap:0;padding:6px 18px 14px;background:var(--bg);border-bottom:1px solid var(--border)}.nav-toggle:checked~.site-nav{display:flex}.site-nav a{padding:11px 4px;font-size:15px}}@media(max-width:640px){.container{padding:0 18px}.profile-hero-inner{flex-direction:column;align-items:flex-start;gap:22px}.avatar{width:88px;height:88px}.hero{padding:56px 0 36px}.contact-box{padding:20px}}@media(max-width:380px){.brand span:not(.brand-mark):not(.dot){font-size:15px}}.tools-catalog-page{padding-bottom:60px}.tools-search{margin:0 0 34px}.tools-search-field{display:flex;align-items:center;gap:10px;max-width:460px;padding:0 14px;border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--surface)}.tools-search-field:focus-within{border-color:var(--accent)}.tools-search-icon{color:var(--muted);font-size:16px}.tools-search-field input{flex:1;border:0;outline:0;padding:12px 0;font:inherit;font-size:15.5px;color:var(--text);background:0 0}.tools-group{margin-top:34px}.tools-group-title{margin:0 0 14px;font-size:.82rem;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--muted);font-family:var(--mono)}.tools-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}.tool-card{display:flex;flex-direction:column;gap:6px;padding:16px 18px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text)}.tool-card:hover{text-decoration:none;border-color:var(--accent);background:var(--accent-soft)}.tool-card-name{font-weight:650;letter-spacing:-.01em}.tool-card-desc{color:var(--muted);font-size:14.5px;line-height:1.5}.tool-soon{display:inline-block;margin-left:6px;padding:1px 6px;border:1px solid var(--border);border-radius:999px;background:var(--bg-soft);color:var(--muted);font-size:10.5px;font-weight:600;letter-spacing:.03em;text-transform:uppercase;vertical-align:middle}.tool-page{padding-top:34px}.tool-layout{display:grid;grid-template-columns:232px minmax(0,1fr);gap:40px;align-items:start}.tool-aside{position:sticky;top:84px;max-height:calc(100vh - 108px);overflow-y:auto;padding-right:4px;border-right:1px solid var(--border)}.tool-nav-toggle-label{display:none}.tool-nav-group{margin-bottom:18px}.tool-nav-title{display:block;margin-bottom:6px;font-size:.72rem;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--muted);font-family:var(--mono)}.tool-nav ul{list-style:none;margin:0;padding:0}.tool-nav a{display:block;padding:5px 10px;border-left:2px solid transparent;color:var(--muted);font-size:14.5px;line-height:1.4}.tool-nav a:hover{color:var(--text);background:var(--bg-soft);text-decoration:none}.tool-nav a.active{color:var(--text);border-left-color:var(--accent);background:var(--accent-soft);font-weight:600}.tool-main{min-width:0}.tool-header{margin-bottom:26px}.tool-crumb{margin:0 0 8px;font-size:13.5px;font-family:var(--mono)}.tool-crumb a{color:var(--muted)}.tool-crumb a:hover{color:var(--accent)}.tool-body{max-width:780px}.tool-panel{padding:22px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}.tool-panel+.tool-panel{margin-top:18px}.tool-panel>h2,.tool-panel>h3{margin:0 0 16px;font-size:1.02rem;letter-spacing:-.01em}.tool-field{margin-bottom:16px}.tool-field:last-child{margin-bottom:0}.tool-field>label,.tool-label{display:block;margin-bottom:6px;font-size:13.5px;font-weight:600;color:var(--muted);font-family:var(--mono)}.tool-input{display:block;width:100%;padding:11px 13px;border:1px solid var(--border-strong);border-radius:8px;background:var(--surface);color:var(--text);font-family:var(--mono);font-size:13.5px;line-height:1.55;resize:vertical}.tool-input:focus{outline:0;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.tool-input[readonly]{background:var(--bg-soft)}textarea.tool-input{min-height:96px}.tool-row{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin:14px 0}.tool-row:first-child{margin-top:0}.tool-row:last-child{margin-bottom:0}.tool-inline{display:inline-flex;align-items:center;gap:8px;font-size:14.5px;color:var(--muted)}.tool-check{display:inline-flex;align-items:center;gap:8px;font-size:14.5px}.tool-check input{accent-color:var(--accent)}.tool-number,.tool-select{padding:8px 10px;border:1px solid var(--border-strong);border-radius:8px;background:var(--surface);color:var(--text);font:inherit;font-size:14px}.tool-number{width:84px}.tool-text{padding:8px 10px;border:1px solid var(--border-strong);border-radius:8px;background:var(--surface);color:var(--text);font-family:var(--mono);font-size:13.5px;min-width:150px}.tool-text:focus{outline:0;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.tool-result-row{display:grid;grid-template-columns:minmax(120px,180px)1fr;gap:4px 14px;padding:8px 0;border-bottom:1px solid var(--border);font-size:14px}.tool-result-row:last-child{border-bottom:0}.tool-result-row dt{color:var(--muted);font-family:var(--mono);font-size:13px}.tool-result-row dd{margin:0;font-family:var(--mono);overflow-wrap:anywhere}.tool-timer{font-family:var(--mono);font-size:40px;font-weight:600;letter-spacing:-.02em;margin:0 0 8px}.tool-pre{margin:0;padding:12px 14px;border:1px solid var(--border);border-radius:8px;background:var(--bg-soft);font-family:var(--mono);font-size:13px;line-height:1.6;white-space:pre-wrap;overflow-wrap:anywhere;max-height:340px;overflow:auto}.tool-pre mark{background:var(--accent-soft);color:inherit;border-radius:3px}.tool-cheat{display:grid;gap:20px}.tool-cheat h3{font-size:12px;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);margin:0 0 4px}.tool-cheat-item{display:grid;grid-template-columns:minmax(150px,280px)1fr;gap:4px 16px;padding:7px 0;border-bottom:1px solid var(--border);font-size:14px}.tool-cheat-item:last-child{border-bottom:0}.tool-cheat-item code{font-family:var(--mono);font-size:13px;overflow-wrap:anywhere}.tool-cheat-item span{color:var(--muted)}.tool-diff{font-family:var(--mono);font-size:13px;border:1px solid var(--border);border-radius:8px;overflow:auto;max-height:420px}.tool-diff-line{padding:1px 10px;white-space:pre-wrap;overflow-wrap:anywhere}.tool-diff-line.add{background:rgba(26,127,55,.12)}.tool-diff-line.del{background:rgba(207,34,46,.12)}.tool-diff-line.same{color:var(--muted)}.tool-video{width:100%;max-width:520px;border:1px solid var(--border);border-radius:10px;background:#000;display:block}.tool-editor{min-height:170px;padding:12px 14px;border:1px solid var(--border-strong);border-radius:8px;background:var(--surface);line-height:1.6}.tool-editor:focus{outline:0;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.tool-preview{padding:12px;border:1px solid var(--border);border-radius:8px;background:var(--bg-soft);display:flex;justify-content:center}.tool-preview svg{max-width:100%;height:auto}.emoji-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(46px,1fr));gap:6px;max-height:380px;overflow-y:auto;padding:4px}.emoji-cell{font-size:24px;line-height:1;padding:8px 0;border:1px solid var(--border);border-radius:8px;background:var(--surface);cursor:pointer;transition:transform .08s ease,border-color .15s ease}.emoji-cell:hover{transform:translateY(-2px);border-color:var(--accent)}.tool-doc{padding:14px 16px;border:1px solid var(--border);border-radius:8px;background:var(--surface);line-height:1.65;overflow-wrap:anywhere}.tool-doc>:first-child{margin-top:0}.tool-doc>:last-child{margin-bottom:0}.tool-doc pre{background:var(--bg-soft);padding:10px 12px;border-radius:6px;overflow-x:auto}.tool-doc code{font-family:var(--mono);font-size:.9em}.tool-doc blockquote{margin:0;padding-left:12px;border-left:3px solid var(--border-strong);color:var(--muted)}.tool-doc img{max-width:100%}.tool-doc table{border-collapse:collapse}.tool-doc th,.tool-doc td{border:1px solid var(--border);padding:4px 8px}.tool-tree{border:1px solid var(--border);border-radius:8px;padding:10px 12px;background:var(--surface);font-family:var(--mono);font-size:.86rem}.tool-tree summary{cursor:pointer}.tree-children{margin-left:14px;border-left:1px dashed var(--border);padding-left:10px}.tree-key{color:var(--accent)}.tree-type{color:var(--muted)}.tree-leaf{padding:1px 0}.tool-ip-json{display:none}.ip-head{display:flex;align-items:center;gap:10px;margin-bottom:14px}.ip-flag{font-size:34px;line-height:1}.ip-ip{font-family:var(--mono);font-size:1.35rem;font-weight:600;overflow-wrap:anywhere}.ip-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}.tool-status{font-size:13.5px;font-family:var(--mono);color:var(--muted)}.tool-status.ok{color:#15803d}.tool-status.err{color:#b91c1c}.tool-hint{margin:0 0 16px;color:var(--muted);font-size:14px}.tool-grid-2{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:18px}.tool-result{padding:14px 16px;border:1px solid var(--border);border-radius:8px;background:var(--bg-soft);font-family:var(--mono);font-size:13.5px;white-space:pre-wrap;overflow-wrap:anywhere}@media(max-width:900px){.tool-layout{grid-template-columns:minmax(0,1fr);gap:22px}.tool-aside{position:static;max-height:none;overflow:visible;padding:0;border-right:0;border:1px solid var(--border);border-radius:var(--radius)}.tool-nav-toggle-label{display:block;padding:12px 16px;font-weight:600;font-size:15px;cursor:pointer}.tool-aside .tool-nav{display:none;padding:4px 12px 14px}#tool-nav-toggle{position:absolute;opacity:0;width:1px;height:1px}#tool-nav-toggle:checked~.tool-nav{display:block}}