/* Текстовые утилиты и DataMatrix (/tools/char-counter/, translit/, text-case/, remove-duplicates/, password-generator/, datamatrix/):
   дополнения к общим .cvp-* (photo-tool.css) и tools-net.css */
.tx-pad{display:flex;flex-direction:column;gap:16px;padding:clamp(18px,2.6vw,32px)}
.tx-area{min-height:240px;resize:vertical;font-family:inherit;font-size:16px;line-height:1.55}
.tx-two{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(18px,3vw,36px);align-items:start}
.tx-h3{margin:0 0 10px;font-size:17px}
.tx-limits{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:6px}
.tx-limits li{padding:9px 12px;border-radius:10px;background:var(--c-track);font-size:14px;line-height:1.4}
.tx-limits li.is-ok{background:var(--c-pale,#eef6e4)}
.tx-limits li.is-warn{background:var(--c-warn-bg);color:var(--c-warn)}
.tx-limits li.is-bad{background:var(--c-err-bg);color:var(--c-err)}
.tx-top{margin:0;padding:0;list-style:none;display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:8px}
.tx-top li{display:flex;align-items:center;gap:8px;padding:8px 12px;border-radius:10px;background:var(--c-track);font-size:14px}
.tx-top span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;font-weight:700}
.tx-top b{font-family:var(--c-mono)}
.tx-top em{font-style:normal;color:var(--c-mute);font-size:13px}
.tx-opts{display:flex;flex-wrap:wrap;align-items:center;gap:10px 22px}
.tx-opts .cvp-seg{flex-wrap:wrap}
.tx-opts[hidden]{display:none}
.tx-inline{display:inline-flex;align-items:center;gap:8px;font-size:14px;font-weight:600;flex-wrap:wrap}
.tx-num{width:96px;min-height:42px;padding:8px 12px;font-size:15px}
.tx-modes{gap:8px}
.tx-modes .cvp-pill[aria-pressed=true]{background:var(--c-ink);color:#fff;border-color:var(--c-ink)}
.tx-sum{margin:0;padding:12px 14px;border-radius:12px;background:var(--c-track);font-size:15px}
/* пароли */
.pw-len{display:flex;flex-direction:column;gap:8px}
.pw-len-row{display:flex;align-items:center;gap:14px}
.pw-len-row input[type=range]{flex:1;accent-color:var(--c-ink);height:28px}
.pw-strength{display:flex;align-items:center;gap:14px;flex-wrap:wrap;font-size:14px;color:var(--c-ink2)}
.pw-bar{flex:0 0 200px;height:8px;border-radius:99px;background:var(--c-track);overflow:hidden}
.pw-bar i{display:block;height:100%;width:0;border-radius:99px;background:#9aa39a;transition:width .3s}
.pw-bar i.is-ok{background:#5aa83a}.pw-bar i.is-warn{background:#e0a100}.pw-bar i.is-bad{background:#d93025}
.pw-list{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:6px}
.pw-list li{display:flex;align-items:center;gap:12px;padding:10px 14px;border:1px solid var(--c-line);border-radius:12px;background:#fff}
.pw-list code{flex:1;min-width:0;font-family:var(--c-mono);font-size:16px;overflow-wrap:anywhere;user-select:all}
/* DataMatrix */
.dm-grid{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:clamp(18px,3vw,36px);align-items:start}
.dm-area{min-height:130px;font-size:15px}
.dm-side{display:flex;flex-direction:column;gap:14px}
.dm-prev{display:flex;align-items:center;justify-content:center;aspect-ratio:1/1;max-width:340px;width:100%;padding:16px;box-sizing:border-box;border:1px solid var(--c-line);border-radius:16px;background:#fff}
.dm-prev svg{width:100%;height:auto;image-rendering:pixelated}
.dm-empty{color:var(--c-mute);font-size:14px;text-align:center}
.dm-info{margin:0;line-height:1.5}
.dm-fixnote{color:var(--c-warn);font-weight:700}
.dm-fields dd code{font-family:var(--c-mono);font-size:14px;overflow-wrap:anywhere;word-break:break-all}
.dm-gs{display:inline-block;margin:0 2px;padding:0 4px;border-radius:4px;background:var(--c-ink);color:#fff;font-size:11px;line-height:16px;vertical-align:1px}
.dm-bad{display:block;font-style:normal;color:var(--c-err);font-size:13px}
.dm-probs{margin:0;padding:10px 14px 10px 30px;border-radius:12px;background:var(--c-warn-bg);color:var(--c-warn);font-size:14px;line-height:1.5;max-height:220px;overflow:auto}
.dm-lab-prev{display:flex;justify-content:center;padding:14px;border-radius:14px;background:var(--c-track)}
.dm-lab-prev svg{max-width:100%;height:auto;max-height:240px;box-shadow:0 2px 10px rgba(0,0,0,.12);border-radius:3px}
#dm .b64-tabs+.tx-pad{padding-top:clamp(14px,2vw,22px)}
/* калькулятор маржи WB/Ozon и другие инструменты продавца */
.mp-h{margin:6px 0 0}
.mp-grid4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px 16px;align-items:end}
.mp-f{display:flex;flex-direction:column;gap:6px;font-size:14px;font-weight:600;min-width:0}
.mp-f em{display:block;font-style:normal;font-weight:500;font-size:12px;color:var(--c-mute)}
.mp-f[hidden]{display:none}
.mp-f .net-input{min-height:44px;padding:9px 12px;font-family:inherit;font-size:16px;width:100%}
.mp-rates-head{display:flex;justify-content:space-between;align-items:flex-end;gap:10px;flex-wrap:wrap}
.mp-date{min-height:40px;padding:6px 10px;font-family:inherit;font-size:15px;width:auto}
.mp-table td{vertical-align:middle}
.mp-table td small{display:block;font-size:12px;color:var(--c-mute)}
.mp-table td:first-child{width:auto}
.mp-table td:last-child{width:auto;white-space:normal}
.mp-table .mp-in{min-height:40px;padding:6px 10px;font-family:inherit;font-size:15px;width:100%;max-width:150px}
.mp-res td:not(:first-child){font-family:var(--c-mono);white-space:nowrap}
.mp-neg{color:var(--c-err)}
.mp-pos{color:#2f7d1f}
/* массовая проверка ответа сервера */
.bs-table td{font-size:14px}
.bs-table td:first-child,.bs-table td:nth-child(3){max-width:340px;overflow-wrap:anywhere}
.bs-table td:last-child{width:80px}
.bs-err td:first-child code{color:var(--c-err)}
.net-mode b{margin-left:4px;font-weight:600;opacity:.7}
/* генераторы robots.txt и мета-тегов */
.rg-small{min-height:90px}
.mg-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
.mg-tabs{padding:0}
.mg-prev{padding:16px;border:1px solid var(--c-line);border-radius:14px;background:#fff;min-height:150px;font-family:Arial,Helvetica,sans-serif}
.mg-prev img{display:block;width:100%;aspect-ratio:1200/630;object-fit:cover;border-radius:8px;background:var(--c-track)}
.mg-noimg{display:flex;align-items:center;justify-content:center;aspect-ratio:1200/630;border-radius:8px;background:var(--c-track);color:var(--c-mute);font-size:13px}
.mg-fav{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:4px;background:#eee;font-size:11px;font-weight:700;color:#555;flex:none}
.mg-y-h,.mg-g-h{display:flex;align-items:center;gap:8px;font-size:13px;color:#333;margin-bottom:4px}
.mg-y a{display:block;color:#1a0dab;font-size:18px;line-height:1.3;cursor:default}
.mg-y p,.mg-g p{margin:4px 0 0;font-size:14px;line-height:1.45;color:#333}
.mg-price{display:inline-block;margin-top:4px;font-size:15px;color:#111}
.mg-g-h small{display:block;color:#4d5156;font-size:12px;overflow-wrap:anywhere}
.mg-g-h b{display:block;font-weight:400;font-size:14px;color:#202124}
.mg-g a{display:block;color:#1a0dab;font-size:20px;line-height:1.3;cursor:default}
.mg-tg{display:flex;gap:10px;padding:10px;border-radius:10px;background:#effdde}
.mg-tg-bar{flex:none;width:3px;border-radius:2px;background:#4fae4e}
.mg-tg b{display:block;color:#4fae4e;font-size:14px}
.mg-tg strong{display:block;font-size:14px;margin:2px 0}
.mg-tg p{margin:0 0 8px;font-size:13px;line-height:1.4;color:#222}
.mg-vk{border:1px solid #e1e3e6;border-radius:10px;overflow:hidden}
.mg-vk img,.mg-vk .mg-noimg{border-radius:0}
.mg-vk>div:last-child{padding:10px 12px;background:#f9f9f9}
.mg-vk strong{display:block;font-size:14px;color:#000}
.mg-vk span{font-size:13px;color:#818c99}
.nc-list{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:12px;counter-reset:nc}
.nc-list>li{display:flex;flex-direction:column;gap:8px;padding:14px 16px;border:1px solid var(--c-line);border-radius:14px;background:#fff}
.nc-name{display:flex;justify-content:space-between;gap:12px;align-items:baseline}
.nc-name b{overflow-wrap:anywhere}
.nc-name span{flex:none;font-size:13px}
.nc-fix{margin:0;font-size:14px;color:var(--c-ink2)}
.nc-fix span{font-weight:700;color:var(--c-ink)}
@media (max-width:900px){
  .tx-two,.dm-grid{grid-template-columns:1fr}
  .mp-grid4{grid-template-columns:repeat(2,minmax(0,1fr))}
  .dm-prev{margin:0 auto}
}
@media (max-width:520px){
  .pw-bar{flex-basis:100%}
  .tx-num{width:80px}
  .mp-grid4{grid-template-columns:1fr}
}
