/* Чтение QR и штрихкодов, сравнение текстов, метаданные документов (02.11.2026): /tools/qr-code-reader/, /tools/text-compare/, /tools/document-metadata/.
   Дополнение к .cvp-* (photo-tool.css), tools-net.css и tools-text.css. */
.qs-drop{display:flex;flex-direction:column;align-items:center;gap:8px;padding:28px 18px;border:2px dashed var(--c-line);border-radius:16px;text-align:center;background:var(--c-track);transition:border-color .15s,background .15s}
.qs-drop svg{width:44px;height:44px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;color:var(--c-mute)}
.qs-drop b{font-size:18px}.qs-drop span{color:var(--c-ink2,#555);font-size:14px;max-width:520px;line-height:1.45}
.qs-drop.is-over{border-color:#f15a24;background:#fff4ee}.qs-drop.is-busy{opacity:.6;pointer-events:none}
.qs-btns{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin-top:6px}.qs-pick{cursor:pointer}
.qs-cam{display:flex;flex-direction:column;gap:10px;align-items:center}
.qs-cam video{width:100%;max-width:560px;border-radius:14px;background:#000;aspect-ratio:4/3;object-fit:cover}
.qs-camact{display:flex;flex-wrap:wrap;gap:10px 16px;align-items:center;justify-content:center}
.qs-thumbs{display:flex;flex-wrap:wrap;gap:8px}.qs-thumbs:empty{display:none}.qs-thumbs img{height:64px;width:auto;border-radius:8px;border:1px solid var(--c-line)}
.qs-bar{display:flex;flex-wrap:wrap;gap:10px 14px;align-items:center}
.qs-res{display:flex;flex-direction:column;gap:12px}
.qs-item{border:1px solid var(--c-line);border-radius:14px;padding:14px 16px;display:flex;flex-direction:column;gap:10px}
.qs-head{display:flex;flex-wrap:wrap;gap:6px 12px;align-items:center}
.qs-fmt{padding:3px 10px;border-radius:99px;background:var(--c-ink,#14171c);color:#fff;font-size:12.5px;font-weight:700}
.qs-src{color:var(--c-mute);font-size:13px;overflow-wrap:anywhere}
.qs-text{margin:0;padding:10px 12px;border-radius:10px;background:var(--c-track);font:14px/1.5 var(--c-mono,monospace);white-space:pre-wrap;overflow-wrap:anywhere;max-height:240px;overflow:auto}
.qs-dl{display:grid;grid-template-columns:minmax(110px,auto) 1fr;gap:4px 14px;margin:0;font-size:14px}.qs-dl dt{color:var(--c-mute);font-weight:600}.qs-dl dd{margin:0;overflow-wrap:anywhere}
.qs-act{display:flex;flex-wrap:wrap;gap:8px}
/* сравнение текстов */
.td-cols{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(14px,2.4vw,28px)}
.td-col{min-width:0}.td-area{min-height:200px;font-family:var(--c-mono,monospace);font-size:14px;line-height:1.5}
.td-fn{font-weight:400;color:var(--c-mute);margin-left:6px;overflow-wrap:anywhere}.td-file{cursor:pointer}
.td-btns,.td-actions{display:flex;flex-wrap:wrap;gap:8px 10px;align-items:center}
.td-out{border:1px solid var(--c-line);border-radius:12px;overflow:auto;max-height:70vh;background:#fff}
.td-empty{margin:0;padding:22px;color:var(--c-mute);text-align:center}
.td-grid{font:13.5px/1.5 var(--c-mono,monospace)}
.td-row{display:flex;align-items:stretch;border-bottom:1px solid #f1efec}
.td-side .td-row{display:grid;grid-template-columns:44px minmax(0,1fr) 44px minmax(0,1fr)}
.td-n{flex:none;width:44px;box-sizing:border-box;padding:2px 8px;text-align:right;color:#a09a90;font-size:12px;user-select:none;background:#faf9f7}
.td-l,.td-r,.td-x,.td-flow{white-space:pre-wrap;overflow-wrap:anywhere;padding:2px 10px;min-width:0}
.td-x{flex:1}.td-flow{padding:14px 16px;font:14px/1.7 var(--c-mono,monospace)}
.td-del{background:#fdecea}.td-ins{background:#e6f4ea}.td-gap{background:#f3f2ef}
.td-grid del,.td-flow del{background:#f5b5ae;text-decoration:none;border-radius:3px}.td-grid ins,.td-flow ins{background:#9bd8a8;text-decoration:none;border-radius:3px}
.td-flow del{text-decoration:line-through;text-decoration-color:#c62828}
.td-row.is-cur,.td-flow .is-cur{outline:2px solid #f15a24;outline-offset:-2px}
.td-fold{padding:6px 14px;background:#f7f6f3;text-align:center;border-bottom:1px solid #f1efec}
@media(max-width:720px){.td-cols{grid-template-columns:minmax(0,1fr)}.td-side .td-row{grid-template-columns:34px minmax(0,1fr)}.td-side .td-r{border-top:1px dashed #e6e3de}}
/* метаданные документов */
.dm-res{display:flex;flex-direction:column;gap:16px}
.dm-card{border:1px solid var(--c-line);border-radius:14px;padding:16px 18px;display:flex;flex-direction:column;gap:12px}
.dm-head{display:flex;flex-wrap:wrap;gap:4px 14px;align-items:baseline}.dm-head b{overflow-wrap:anywhere}.dm-head span{color:var(--c-mute);font-size:13px}
.dm-tbl{width:100%;border-collapse:collapse;font-size:14px}.dm-tbl th{width:38%;max-width:240px;text-align:left;font-weight:600;color:var(--c-mute);vertical-align:top;padding:5px 12px 5px 0}.dm-tbl td{padding:5px 0;overflow-wrap:anywhere}
.dm-tbl tr+tr{border-top:1px solid #f1efec}
.dm-finds{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
.dm-finds li{padding:9px 12px;border-radius:10px;background:var(--c-track);font-size:14px;line-height:1.45}
.dm-finds li.is-warn{background:var(--c-warn-bg,#fff4e0);color:var(--c-warn,#8a5a00)}
.dm-opts{display:flex;flex-direction:column;gap:6px}.dm-opts b{font-size:14px}
.dm-act{display:flex;gap:10px}
.dm-after{padding:12px 14px;border-radius:12px;background:#eef6e4;font-size:14px;line-height:1.5}.dm-after p{margin:6px 0 0}.dm-left{margin:6px 0 0;padding-left:18px}
/* подстраницы под отдельные запросы (02.11.2026): подсказка в зоне загрузки и ссылки на соседние сценарии */
.qs-hint{margin:0;color:var(--c-ink2,#555);font-size:14px;line-height:1.45;max-width:520px;text-align:center}.tx-pad>.qs-hint{text-align:left;max-width:none;margin:0 0 4px}
.doc-ways{display:flex;flex-wrap:wrap;gap:6px 14px;align-items:baseline;margin:16px 0 0;font-size:14px}.doc-ways b{color:var(--c-mute);font-weight:600}.doc-ways a{color:inherit;text-decoration:underline;text-decoration-color:#d9d4cc;text-underline-offset:3px}.doc-ways a:hover{text-decoration-color:#f15a24}
/* разделить Excel и PowerPoint, снять защиту Office (02.11.2026) */
.os-tools{display:flex;gap:10px;align-items:center}.os-list{display:flex;flex-direction:column;border:1px solid var(--c-line);border-radius:12px;max-height:360px;overflow:auto}
.os-row{display:grid;grid-template-columns:auto 34px minmax(0,1fr) auto;gap:10px;align-items:center;padding:8px 12px;border-bottom:1px solid #f1efec;cursor:pointer}.os-row:last-child{border-bottom:0}.os-row:hover{background:#faf9f7}
.os-n{color:var(--c-mute);font-size:13px;text-align:right}.os-t{overflow-wrap:anywhere;font-size:14px}.os-h{padding:2px 8px;border-radius:99px;background:#f3f2ef;color:var(--c-mute);font-size:12px}
.os-dl{display:inline-flex;margin-left:8px;text-decoration:none}
.ou-lead{margin:0;font-size:15px;line-height:1.5}.ou-pass{display:flex;flex-wrap:wrap;gap:10px;align-items:center}.ou-pass input{flex:1 1 240px;min-width:0}
/* закрасить данные в PDF (02.11.2026) */
.pr-info{margin:0;color:var(--c-mute);font-size:14px;overflow-wrap:anywhere}.pr-find{display:flex;flex-direction:column;gap:8px}.pr-quick{display:flex;flex-wrap:wrap;gap:8px 10px;align-items:center}.pr-quick span{color:var(--c-mute);font-size:14px}
.pr-hint{margin:0;font-size:14px;color:var(--c-ink2,#555)}.pr-tools{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center}.pr-count{font-size:14px}.pr-draw[aria-pressed=true]{background:#14171c;color:#fff}
.pr-pages{display:flex;flex-direction:column;gap:18px;max-height:78vh;overflow:auto;padding:4px;border:1px solid var(--c-line);border-radius:12px;background:#f3f2ef}
.pr-page{display:flex;flex-direction:column;gap:6px;align-items:center}.pr-cap{display:flex;gap:6px 14px;align-items:baseline;width:100%;max-width:820px;font-size:14px;flex-wrap:wrap}.pr-n{color:var(--c-mute)}.pr-page.has-boxes .pr-n{color:#14171c;font-weight:600}
.pr-sheet{position:relative;width:100%;max-width:820px;background:#fff;box-shadow:0 1px 6px rgba(0,0,0,.18);cursor:crosshair;touch-action:pan-y pinch-zoom;user-select:none}#pr.is-draw .pr-sheet{touch-action:none}.pr-sheet canvas{display:block;width:100%;height:100%}
.pr-boxes{position:absolute;inset:0;pointer-events:none}.pr-box{position:absolute;background:#000;pointer-events:auto;outline:1px solid #f15a24}.pr-box.is-ghost{background:rgba(0,0,0,.55);pointer-events:none}.pr-box button{position:absolute;right:-9px;top:-9px;width:20px;height:20px;border-radius:50%;border:0;background:#f15a24;color:#fff;font-size:14px;line-height:20px;padding:0;cursor:pointer;opacity:0}.pr-box:hover button,.pr-box:focus-within button{opacity:1}@media(hover:none){.pr-box button{opacity:1}}
