:root{--bg:#0b1020;--card:#141a2e;--line:#232b45;--tx:#e8ecf7;--mu:#8b95b3;--ok:#16c784;--warn:#f5a524;--bad:#ef4444;--ac:#4f8cff}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--tx);font:15px/1.45 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}
header{display:flex;justify-content:space-between;align-items:center;padding:14px 16px;border-bottom:1px solid var(--line);position:sticky;top:0;background:#0b1020ee;backdrop-filter:blur(8px);z-index:5}
.brand{font-weight:700;font-size:17px}.tag{font-size:11px;padding:3px 8px;border-radius:99px;background:#f5a52422;color:var(--warn);font-weight:700}
main{max-width:560px;margin:0 auto;padding:14px}.card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:14px;margin-bottom:12px}
h3{margin:0 0 10px;font-size:15px}.cam{position:relative;aspect-ratio:3/4;max-height:60vh;width:100%;background:#000;border-radius:12px;overflow:hidden}
video{width:100%;height:100%;object-fit:cover}.guide{position:absolute;inset:0;display:flex;align-items:flex-end;padding:0 5% 12%;pointer-events:none;box-shadow:inset 0 0 0 2px #ffffff22}
.mrz{width:100%;height:18%;border:2px dashed var(--ac);border-radius:8px;background:#4f8cff14;color:#cfe0ff;font-size:12px;display:flex;align-items:center;justify-content:center;text-align:center}
.camMsg{position:absolute;top:40%;width:100%;text-align:center;color:var(--mu)}
.btns{display:grid;grid-template-columns:1fr 1.4fr;gap:8px;margin-top:10px}button{font:inherit;font-weight:600;border:0;border-radius:12px;padding:13px;cursor:pointer;color:#fff}
.pri{background:var(--ac)}.sec{background:#232b45}.file{display:block;text-align:center;margin-top:8px;padding:12px;border:1px dashed var(--line);border-radius:12px;color:var(--mu)}.file input{display:none}
input,textarea{width:100%;font:13px ui-monospace,Menlo,monospace;background:#0b1020;color:var(--tx);border:1px solid var(--line);border-radius:10px;padding:11px;margin-top:8px}
summary{cursor:pointer;font-weight:600}.muted{color:var(--mu)}.small{font-size:12px}.center{text-align:center}a{color:#8fb3ff}
.verdict{border-radius:18px;padding:18px;margin-bottom:12px;text-align:center;border:1px solid}.verdict .v{font-size:26px;font-weight:800}.verdict .r{font-size:14px;opacity:.9}
.v-AUT{background:#16c7841a;border-color:var(--ok);color:var(--ok)}.v-SOS,.v-REP,.v-SIN{background:#f5a5241a;border-color:var(--warn);color:var(--warn)}.v-FAL{background:#ef44441a;border-color:var(--bad);color:var(--bad)}
.bar{height:8px;background:#ffffff22;border-radius:9px;margin-top:10px;overflow:hidden}.bar i{display:block;height:100%;background:currentColor}
.grid{display:grid;grid-template-columns:1fr auto;gap:6px 10px;font-size:14px}.b{display:inline-block;padding:3px 9px;border-radius:99px;font-size:12px;font-weight:700}
.VALID,.MATCH{background:#16c78422;color:var(--ok)}.INVALID,.MISMATCH{background:#ef444422;color:var(--bad)}.NA{background:#ffffff14;color:var(--mu)}.sim{background:#4f8cff22;color:#8fb3ff}
ul{margin:0;padding-left:18px}li{margin:5px 0}pre{white-space:pre-wrap;word-break:break-all;font-size:11px;color:#c9d2ec}
#busy{position:fixed;inset:0;background:#0b1020cc;display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:9}.spin{width:42px;height:42px;border:4px solid #ffffff33;border-top-color:var(--ac);border-radius:50%;animation:s 1s linear infinite}@keyframes s{to{transform:rotate(1turn)}}
[hidden]{display:none!important}.verdict{scroll-margin-top:70px}
.ex{border-radius:12px;padding:10px 12px;margin:8px 0;border:1px solid var(--line)}.ex.bad{background:#ef44440f;border-color:#ef444455}.ex.ok{background:#16c7840d;border-color:#16c78433;margin:6px 0}.ex p{margin:6px 0}.mz{background:#0b1020;border-radius:10px;padding:8px;overflow-x:auto}.ml{font:11.5px ui-monospace,Menlo,monospace;white-space:pre}mark{border-radius:3px;padding:0 1px}mark.bad{background:#ef4444;color:#fff}mark.good{background:#16c784;color:#000}ol{margin:0;padding-left:20px}
.guide::before{content:"Encuadre la página de datos del pasaporte";position:absolute;left:5%;right:5%;top:50%;transform:translateY(-50%);aspect-ratio:1.42;max-height:92%;border:2px dashed #ffffffaa;border-radius:12px;color:#fff;font-size:12px;padding:6px;text-shadow:0 1px 2px #000}

.steps{display:flex;gap:6px;list-style:none;padding:0;margin:0 0 10px;font-size:11px;flex-wrap:wrap}.steps li{padding:5px 9px;border-radius:99px;background:#141a2e;color:#8b95b3}.steps li.on{background:#4f8cff;color:#fff}.steps li.done{background:#16c78433;color:#16c784}.qmsg{color:#f5a524;font-size:13px}.cam.selfie{aspect-ratio:3/4;position:relative}.cam.selfie video{transform:scaleX(-1)}.oval{position:absolute;inset:12% 18%;border:3px dashed #ffffffaa;border-radius:50%;pointer-events:none}
