.scan-toolbar { display:flex; flex-wrap:wrap; align-items:center; gap:.55rem 1rem; padding:.65rem 0 .8rem; flex-shrink:0; color:#ddd; }
.scan-toolbar[hidden] { display:none; }
.scan-tools{font-size:.85rem}
.scan-tools summary{display:flex;align-items:center;gap:.6rem;cursor:pointer;list-style:none;color:#ddd;padding:.6rem 0;min-height:44px;box-sizing:border-box}
.scan-tools summary::-webkit-details-marker{display:none}
.scan-tools summary::marker{content:''}
.scan-tools summary::after{content:'';width:.5rem;height:.5rem;flex:none;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:translateY(-.15rem) rotate(45deg)}
.scan-tools[open] summary::after{transform:translateY(.15rem) rotate(225deg)}
.scan-tools summary:focus-visible{outline:2px solid currentColor;outline-offset:3px;border-radius:4px}
.scan-tools-actions{display:flex;flex-wrap:wrap;gap:8px;padding:4px 0}
.scan-status{flex-basis:100%}
.scan-preparing .scan-status{color:#fff;font-weight:600}
.scan-preparing .scan-status::before,.scan-progress::before{content:'';display:inline-block;width:14px;height:14px;border:2px solid #777;border-top-color:#fff;border-radius:50%;animation:scan-turn .8s linear infinite;margin-right:9px;vertical-align:-3px}
.scan-progress{position:absolute;top:14px;left:12px;right:12px;padding:14px;border-radius:10px;background:rgba(20,20,20,.94);color:#fff;font-size:.9rem;text-align:center;box-shadow:0 4px 18px #0006;pointer-events:none}
.scan-progress[hidden]{display:none}
@keyframes scan-turn{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){.scan-preparing .scan-status::before,.scan-progress::before{animation:none}}
.dv-review{padding:16px;border-radius:12px;background:#25221c;color:#eee;font-size:.9rem;line-height:1.5}
.dv-review h3{font-size:1rem;margin:0 0 8px;color:#ffdb96}
.dv-review p{margin:8px 0;color:#ccc}
.dv-review ul{padding-left:20px;margin:10px 0}
.dv-review li{margin:10px 0}
.dv-review-return{margin-top:8px;min-height:44px;padding:10px 16px;border:1px solid #777;border-radius:999px;background:transparent;color:#fff;font:inherit;cursor:pointer}
.iv-review{grid-column:1/-1;color:#ffdb96;font-size:.82rem;line-height:1.5;flex-basis:100%}
.scan-page-select[hidden] { display:none; }
.scan-edit, .scan-page-select { font:inherit; font-size:.8rem; border:1px solid #555; border-radius:8px; background:#292929; color:#eee; padding:.5rem .65rem; min-height:40px; cursor:pointer; }
.scan-edit:disabled { opacity:.5; cursor:wait; }
/* OCR highlights use original coordinates; never overlay them on warped pixels. */
.scan-derived .dv-band { display:none; }
.scan-crop-dialog { position:fixed; inset:0; margin:auto; width:min(960px,100%); max-width:100%; height:100dvh; max-height:100dvh; box-sizing:border-box; padding:18px; border:1px solid #555; border-radius:12px; background:#191919; color:#eee; }
.scan-crop-dialog[open] { display:flex; flex-direction:column; gap:10px; }
.scan-crop-dialog::backdrop { background:rgba(0,0,0,.85); }
.scan-crop-dialog h2, .scan-crop-dialog p { margin:0; }
.scan-crop-dialog p { font-size:14px; line-height:1.4; }
.scan-crop-space { flex:1; min-height:100px; display:flex; justify-content:center; align-items:center; overflow:hidden; }
.scan-crop-stage { position:relative; flex:none; }
.scan-crop-stage img { display:block; width:100%; height:100%; max-width:none; max-height:none; border-radius:0; user-select:none; }
.scan-crop-stage svg { position:absolute; inset:0; width:100%; height:100%; pointer-events:none; }
.scan-crop-stage polygon { fill:rgba(255,105,75,.10); stroke:#ff694b; stroke-width:3; vector-effect:non-scaling-stroke; }
.scan-crop-handle { position:absolute; transform:translate(-50%,-50%); width:44px; height:44px; border-radius:50%; border:3px solid white; background:#e74630; color:white; font:bold 16px sans-serif; padding:0; touch-action:none; cursor:move; }
.scan-crop-handle:focus-visible { outline:3px solid #ffb543; outline-offset:3px; }
.scan-crop-error { color:#ffc17b; min-height:20px; }
.scan-crop-actions { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:8px; }
.scan-crop-actions button { font:inherit; font-size:14px; border:1px solid #555; padding:10px 14px; border-radius:8px; background:#333; color:white; min-height:44px; cursor:pointer; }
.scan-crop-actions [data-apply] { background:#dd422d; }
.scan-crop-actions button:disabled { opacity:.45; }
.scan-switch { display:inline-flex; padding:3px; border:1px solid #454545; background:#171717; border-radius:999px; flex-shrink:0; }
.scan-switch button { font:inherit; font-size:.88rem; font-weight:600; color:#ccc; background:transparent; border:0; border-radius:999px; padding:.5rem 1rem; cursor:pointer; min-height:38px; }
.scan-switch button[aria-pressed="true"] { background:#f4f4f4; color:#181818; }
.scan-switch button:focus-visible { outline:2px solid #ff674f; outline-offset:2px; }
.scan-status { font-size:.78rem; line-height:1.4; color:#b8b8b8; max-width:28rem; }
.doc-viewer > .scan-toolbar { padding:.4rem 1rem .7rem; background:#161616; border-bottom:1px solid #333; }
.preview > .scan-toolbar { padding-right:2.25rem; }
.viewer-backdrop > .scan-toolbar { position:absolute; top:1rem; left:1rem; right:4rem; z-index:3; padding:.6rem .8rem; border:1px solid #444; border-radius:14px; background:rgba(22,22,22,.96); width:fit-content; max-width:calc(100% - 5rem); }
@media(max-width:600px) {
  .scan-toolbar { gap:.35rem .6rem; }
  .scan-status { font-size:.75rem; }
  .viewer-backdrop > .scan-toolbar { top:.5rem; left:.5rem; padding:.4rem .6rem; }
}
