/* Herramientas OCR y Calculadora (CISITI) · Escáner de texto */
.hoc-ocr{position:fixed;inset:0;z-index:100060;display:grid;place-items:center;padding:16px;font:14px/1.45 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;color:#0f172a}
.hoc-ocr[hidden]{display:none!important}
.hoc-ocr *{box-sizing:border-box}
.hoc-ocr__bg{position:absolute;inset:0;background:rgba(15,23,42,.55);backdrop-filter:blur(2px)}
.hoc-ocr__box{position:relative;width:min(920px,100%);max-height:calc(100vh - 32px);display:flex;flex-direction:column;background:#fff;border-radius:16px;box-shadow:0 30px 70px rgba(0,0,0,.35);overflow:hidden}
.hoc-ocr__box header{display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid #e5e7eb;background:linear-gradient(135deg,#0f172a,#1e3a8a);color:#fff}
.hoc-ocr__box header b{flex:1;font-size:15px;display:flex;align-items:center;gap:8px}
.hoc-ocr__ico{display:inline-grid;place-items:center;width:26px;height:26px;border-radius:8px;background:rgba(255,255,255,.14)}
.hoc-ocr__box header select{height:32px;border-radius:8px;border:0;padding:0 8px;font:inherit;font-size:13px;color:#0f172a;background:#fff}
.hoc-ocr__x{border:0;background:rgba(255,255,255,.12);color:#fff;width:32px;height:32px;border-radius:8px;cursor:pointer;font-size:15px}
.hoc-ocr__body{display:grid;grid-template-columns:300px minmax(0,1fr);gap:0;min-height:0;flex:1;overflow:auto}
.hoc-ocr__left{padding:14px;border-right:1px solid #e5e7eb;display:flex;flex-direction:column;gap:10px;background:#f8fafc}
.hoc-ocr__drop{position:relative;display:grid;justify-items:center;gap:4px;text-align:center;padding:20px 12px;border:2px dashed #cbd5e1;border-radius:12px;cursor:pointer;background:#fff;transition:border-color .15s,background .15s}
.hoc-ocr__drop.is-over{border-color:#2563eb;background:#eff6ff}
.hoc-ocr__drop small{color:#64748b;font-size:12px}
.hoc-ocr__big{display:grid;place-items:center;width:42px;height:42px;border-radius:50%;background:#dbeafe;color:#1d4ed8;font-size:20px}
.hoc-ocr__drop input,.hoc-ocr__cam input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.hoc-ocr__cam{position:relative;display:block;text-align:center;padding:9px;border-radius:10px;border:1px solid #cbd5e1;background:#fff;cursor:pointer;font-weight:600;font-size:13px}
.hoc-ocr__thumbs{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.hoc-ocr__th{position:relative;border:1px solid #e2e8f0;border-radius:10px;overflow:hidden;background:#fff;aspect-ratio:1;display:grid;place-items:center}
.hoc-ocr__th img{width:100%;height:100%;object-fit:cover}
.hoc-ocr__th span{font-weight:800;color:#dc2626}
.hoc-ocr__th small{position:absolute;left:0;right:0;bottom:0;padding:2px 4px;font-size:10px;background:rgba(15,23,42,.65);color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hoc-ocr__th.is-busy{outline:2px solid #2563eb;animation:hocPulse 1s infinite alternate}
.hoc-ocr__th.is-ok{outline:2px solid #16a34a}.hoc-ocr__th.is-err,.hoc-ocr__th.is-empty{outline:2px solid #dc2626}
@keyframes hocPulse{to{opacity:.6}}
.hoc-ocr__prog{position:relative;height:8px;border-radius:99px;background:#e2e8f0;margin-top:16px}
.hoc-ocr__prog::before{content:attr(data-l);position:absolute;left:0;bottom:10px;font-size:11.5px;color:#475569}
.hoc-ocr__prog i{display:block;height:100%;width:3%;border-radius:99px;background:linear-gradient(90deg,#2563eb,#06b6d4);transition:width .2s}
.hoc-ocr__msg{margin:0;font-size:12.5px;color:#166534}.hoc-ocr__msg.is-err{color:#b91c1c}.hoc-ocr__msg a{color:#1d4ed8}
.hoc-ocr__right{padding:14px;display:flex;flex-direction:column;gap:10px;min-width:0}
.hoc-ocr__right textarea{flex:1;min-height:300px;width:100%;resize:vertical;border:1px solid #cbd5e1;border-radius:12px;padding:12px;font:13.5px/1.55 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;color:#0f172a;background:#fff}
.hoc-ocr__acts,.hoc-ocr__save{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.hoc-ocr__acts button,.hoc-ocr__save button{height:36px;padding:0 14px;border-radius:9px;border:1px solid #cbd5e1;background:#fff;cursor:pointer;font:inherit;font-weight:600;font-size:13px;color:#0f172a}
.hoc-ocr__acts button:hover,.hoc-ocr__save button:hover{background:#f1f5f9}
.hoc-ocr__save{padding-top:10px;border-top:1px solid #e5e7eb}
.hoc-ocr__save input[type=text]{flex:1 1 200px;height:36px;border:1px solid #cbd5e1;border-radius:9px;padding:0 10px;font:inherit;font-size:13px}
.hoc-ocr__save label{font-size:12.5px;color:#334155;display:flex;align-items:center;gap:4px}
.hoc-ocr__save button.is-primary{background:#1d4ed8;border-color:#1d4ed8;color:#fff}
.hoc-ocr__save button.is-primary:hover{background:#1e40af}
.hoc-ocr__save button:disabled{opacity:.6;cursor:wait}
.hoc-ocr__save a{font-size:12.5px;color:#1d4ed8}
html.hoc-ocr-open{overflow:hidden}
@media (max-width:760px){.hoc-ocr{padding:0}.hoc-ocr__box{max-height:100vh;height:100%;border-radius:0}.hoc-ocr__body{grid-template-columns:1fr}.hoc-ocr__left{border-right:0;border-bottom:1px solid #e5e7eb}.hoc-ocr__right textarea{min-height:220px}}
/* 1.1 · Recortar antes de leer */
.hoc-ocr__opt{display:flex;align-items:center;gap:6px;font-size:12.5px;font-weight:600;color:#334155;cursor:pointer}
.hoc-ocr__th.is-orig{cursor:crosshair}
.hoc-ocr__th.is-wait{outline:2px dashed #f59e0b}
.hoc-ocr__th.is-crop{border-color:#93c5fd}
.hoc-ocr__thdl{position:absolute;top:3px;right:3px;width:22px;height:22px;border-radius:6px;display:grid;place-items:center;background:rgba(15,23,42,.7);color:#fff!important;text-decoration:none;font-size:12px}
.hoc-crop{position:absolute;inset:0;z-index:5;display:flex;flex-direction:column;background:#0f172a;color:#e2e8f0}
.hoc-crop[hidden]{display:none!important}
.hoc-crop__bar{display:flex;flex-direction:column;gap:2px;padding:12px 16px;border-bottom:1px solid rgba(255,255,255,.1)}
.hoc-crop__bar b{font-size:14.5px;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hoc-crop__bar small{color:#94a3b8;font-size:12px}
.hoc-crop__stage{flex:1;min-height:0;display:grid;place-items:center;padding:14px;overflow:auto}
.hoc-crop__wrap{position:relative;display:inline-block;line-height:0;cursor:crosshair;touch-action:none;user-select:none;-webkit-user-select:none;max-width:100%}
.hoc-crop__wrap img{max-width:100%;max-height:calc(100vh - 230px);display:block;pointer-events:none;box-shadow:0 10px 30px rgba(0,0,0,.4)}
.hoc-crop__boxes{position:absolute;inset:0}
.hoc-crop__r{position:absolute;border:2px solid #22d3ee;background:rgba(34,211,238,.14);box-shadow:0 0 0 9999px rgba(2,6,23,.0)}
.hoc-crop__r b{position:absolute;left:-2px;top:-22px;min-width:20px;height:20px;padding:0 5px;border-radius:5px 5px 0 0;background:#22d3ee;color:#0f172a;font:700 12px/20px system-ui,sans-serif;text-align:center}
.hoc-crop__r button{position:absolute;right:-11px;top:-11px;width:22px;height:22px;border-radius:50%;border:0;background:#ef4444;color:#fff;font:700 14px/22px system-ui,sans-serif;cursor:pointer;padding:0}
.hoc-crop__acts{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:12px 16px;border-top:1px solid rgba(255,255,255,.1)}
.hoc-crop__acts span{flex:1}
.hoc-crop__acts button{height:36px;padding:0 14px;border-radius:9px;border:1px solid rgba(255,255,255,.18);background:rgba(255,255,255,.06);color:#e2e8f0;font:600 13px/1 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;cursor:pointer}
.hoc-crop__acts button:hover{background:rgba(255,255,255,.12)}
.hoc-crop__acts button.is-primary{background:#06b6d4;border-color:#06b6d4;color:#04121a}
.hoc-crop__acts button:disabled{opacity:.45;cursor:not-allowed}
@media (max-width:760px){.hoc-crop__acts span{display:none}.hoc-crop__acts button{flex:1 1 auto}}
/* 1.1 · Botones flotantes para visitantes del sitio */
.hoc-fab{position:fixed;left:16px;bottom:16px;z-index:100050;display:flex;flex-direction:column;gap:8px}
.hoc-fab button{width:48px;height:48px;border-radius:50%;border:0;cursor:pointer;display:grid;place-items:center;font-size:21px;color:#fff;background:linear-gradient(135deg,#1e3a8a,#0f172a);box-shadow:0 10px 24px rgba(15,23,42,.35);transition:transform .15s}
.hoc-fab button:hover{transform:scale(1.07)}
.hoc-fab button span{position:absolute;left:58px;white-space:nowrap;background:#0f172a;color:#fff;font:600 12px/1 system-ui,sans-serif;padding:6px 9px;border-radius:7px;opacity:0;pointer-events:none;transition:opacity .15s}
.hoc-fab button{position:relative}
.hoc-fab button:hover span{opacity:1}
.hoc-tools-inline{display:inline-flex;gap:8px;flex-wrap:wrap}
.hoc-tools-inline button{display:inline-flex;align-items:center;gap:6px;padding:9px 14px;border-radius:10px;border:1px solid #cbd5e1;background:#fff;color:#0f172a;font:600 14px/1 system-ui,sans-serif;cursor:pointer}
html.hoc-ocr-open .hoc-fab{display:none}
