:root{--bg:#0f172a;--card:#fff;--text:#111827;--muted:#6b7280;--brand:#2563eb;--good:#16a34a;--bad:#dc2626}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);margin:0;font-family:-apple-system,system-ui,Segoe UI,Roboto,sans-serif}.app{flex-direction:column;gap:14px;max-width:480px;min-height:100vh;margin:0 auto;padding:16px;display:flex}.app>h1{color:#e2e8f0;text-align:center;margin:12px 0 4px;font-size:20px}.top{color:#e2e8f0;justify-content:space-between;align-items:center;font-size:16px;display:flex}.link{color:#93c5fd;cursor:pointer;background:0 0;border:0;font-size:14px}.card{background:var(--card);border-radius:16px;flex-direction:column;gap:6px;padding:20px;display:flex}.card h2{margin:0 0 2px}.card label{color:var(--muted);margin-top:8px;font-size:13px}.card input,.manual input{border:1px solid #d1d5db;border-radius:10px;width:100%;height:46px;padding:0 12px;font-size:16px}.primary{background:var(--brand);color:#fff;cursor:pointer;border:0;border-radius:12px;height:50px;margin-top:14px;font-size:16px;font-weight:600}.primary:disabled{opacity:.5}.muted{color:var(--muted);font-size:14px}.err{color:#991b1b;background:#fee2e2;border-radius:8px;margin-top:8px;padding:8px 10px;font-size:13px}.note{text-align:center;color:var(--muted);background:#fff;border-radius:12px;padding:18px}.camwrap{aspect-ratio:1;background:#000;border-radius:16px;position:relative;overflow:hidden}.cam{object-fit:cover;width:100%;height:100%}.reticle{border:3px solid #ffffffd9;border-radius:16px;position:absolute;inset:18%;box-shadow:0 0 0 100vmax #00000040}.manual{gap:8px;display:flex}.manual button{cursor:pointer;background:#fff;border:1px solid #d1d5db;border-radius:10px;flex-shrink:0;padding:0 16px;font-size:15px}.result{color:#fff;border-radius:16px;flex-direction:column;justify-content:center;gap:10px;min-height:60vh;padding:28px 20px;display:flex}.result.good{background:var(--good)}.result.bad{background:var(--bad)}.result .big{text-align:center;font-size:34px;font-weight:800}.result .reason{text-align:center;opacity:.95;margin-bottom:6px;font-size:17px}.result .row{background:#ffffff26;border-radius:10px;justify-content:space-between;gap:12px;padding:10px 14px;font-size:16px;display:flex}.result .row span{opacity:.85}.result .primary{color:#111827;background:#fffffff2;margin-top:18px}
