:root{--bg:#f3f6f6;--card:#fff;--ink:#14262b;--muted:#51656b;--line:#d5dfdd;--accent:#0b6170;--on-accent:#fff;--warn:#7a4f00;--warn-bg:#fbf0d4;--bad:#a12a22;--flag:#ffe08a;--flag-ink:#2b2000;--code:#eef3f2}
@media (prefers-color-scheme:dark){:root{--bg:#101a1d;--card:#17242a;--ink:#e6efee;--muted:#9fb2b6;--line:#2c3f45;--accent:#6cc5d1;--on-accent:#06262c;--warn:#e9c56e;--warn-bg:#3b3015;--bad:#f1a097;--flag:#7a5c00;--flag-ink:#fff4d0;--code:#1f2f35;color-scheme:dark}}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.6 system-ui,"Segoe UI",Tahoma,sans-serif}
main{max-width:640px;margin:0 auto;padding-block:16px 48px;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px));display:grid;grid-template-columns:minmax(0,1fr);gap:14px}
h1{font-size:1.45rem;margin:0}h2{font-size:1.1rem;margin:0 0 6px}p{margin:0}
.card{background:var(--card);border:1px solid var(--line);border-radius:8px;padding:14px;display:grid;grid-template-columns:minmax(0,1fr);gap:10px;min-width:0}
.warn{background:var(--warn-bg);color:var(--warn);padding:10px 12px;border-radius:6px}
.note,.status{color:var(--muted);font-size:.9rem}.status{min-height:1.5em;font-weight:600}
.lbl,label[for=sheet]{font-weight:600}
select,textarea{width:100%;font:inherit;padding:10px;border:1px solid var(--line);border-radius:6px;background:var(--card);color:var(--ink)}
textarea{font:12px/1.4 ui-monospace,Consolas,monospace}
.row{display:flex;flex-wrap:wrap;gap:8px}
.btn{flex:1 1 130px;text-align:center;padding:12px;border:1px solid var(--accent);border-radius:6px;background:transparent;color:var(--accent);font:inherit;font-weight:600;cursor:pointer}
.btn.primary{background:var(--accent);color:var(--on-accent)}
.btn:focus-visible,select:focus-visible{outline:3px solid var(--accent);outline-offset:2px}
.busy .btn{opacity:.5;pointer-events:none}
.file{position:absolute;width:1px;height:1px;opacity:0}
.check{display:flex;gap:8px;align-items:center;font-size:.92rem}
.metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:0}
.metrics div{background:var(--code);border-radius:6px;padding:8px 10px;min-width:0}
.metrics dt{font-size:.8rem;color:var(--muted)}.metrics dd{margin:0;font-weight:700;direction:ltr;text-align:right;overflow-wrap:anywhere}
.preview canvas{display:block;width:100%;max-width:280px;height:auto;border:1px solid var(--line);border-radius:4px}
.ocr{background:var(--code);border-radius:6px;padding:10px;font:13px/1.55 ui-monospace,Consolas,monospace;text-align:left;overflow-x:auto}
.ocr div{white-space:pre-wrap;overflow-wrap:anywhere}
mark{background:var(--flag);color:var(--flag-ink);border-radius:2px;padding:0 2px}
#wrong{color:var(--bad);font-size:.9rem;direction:ltr;text-align:left;overflow-wrap:anywhere}
