:root{--ink: #16202c;--muted: #5d6b7a;--line: #dde3ea;--bg: #f2f5f8;--card: #fff;--brand: #1f5fbf;--good: #14803c;--warn: #b26a00;--bad: #b3261e;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;color:var(--ink);background:var(--bg)}*{box-sizing:border-box}body{margin:0;min-height:100vh;padding:16px;display:flex;justify-content:center}.card{width:100%;max-width:560px;background:var(--card);border-radius:16px;padding:24px;box-shadow:0 2px 16px #14284614;align-self:flex-start;position:relative}.card.wide{max-width:860px}h1{font-size:1.45rem;margin:.2em 0 .5em}h2{font-size:1.02rem;margin:1.5em 0 .5em}p{line-height:1.5;margin:.4em 0 1em}.muted{color:var(--muted);font-size:.9rem}code{font-size:.8em;color:var(--muted)}.progress{display:flex;justify-content:space-between;gap:4px;list-style:none;padding:0;margin:0 0 20px;font-size:.72rem;color:var(--muted)}.progress li{flex:1;text-align:center}.progress .dot{display:block;height:5px;border-radius:3px;background:var(--line);margin-bottom:5px}.progress .active{color:var(--ink);font-weight:600}.progress .active .dot,.progress .done .dot{background:var(--brand)}button,.primary,.secondary{font:inherit;font-weight:600;border:0;border-radius:10px;padding:13px 18px;cursor:pointer;display:inline-block;text-align:center;text-decoration:none}.primary{background:var(--brand);color:#fff;width:100%}.secondary{background:#e9eef4;color:var(--ink);width:100%}button:disabled{opacity:.45;cursor:not-allowed}.link{background:none;color:var(--muted);font-weight:400;font-size:.85rem;text-decoration:underline;padding:12px 0 0;display:block;margin:0 auto;text-align:center}.actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:14px}.consent{white-space:pre-wrap;background:var(--bg);border-radius:10px;padding:14px;max-height:340px;overflow:auto;font-size:.92rem;line-height:1.5}.check{display:flex;gap:10px;margin:16px 0;align-items:flex-start}.check input{width:20px;height:20px;flex:none}.viewfinder{position:relative;border-radius:12px;overflow:hidden;background:#101820;aspect-ratio:4 / 3}.viewfinder video{width:100%;height:100%;object-fit:cover;display:block}.viewfinder.mirrored video{transform:scaleX(-1)}.frame-card{position:absolute;inset:16% 8%;border:3px solid #fff;border-radius:14px;box-shadow:0 0 0 999px #0000006b}.frame-oval{position:absolute;left:50%;top:50%;width:52%;height:80%;transform:translate(-50%,-50%);border:3px solid #fff;border-radius:50%;box-shadow:0 0 0 999px #0000006b}.hint,.instruction{position:absolute;left:50%;bottom:12px;transform:translate(-50%);background:#000000b8;color:#fff;padding:8px 14px;border-radius:20px;font-size:.9rem;white-space:nowrap;max-width:94%;overflow:hidden;text-overflow:ellipsis}.hint.wrap{white-space:normal;width:92%;text-align:center;border-radius:12px}.hint:empty{display:none}.hint.ok,.instruction.ok{background:var(--good)}.instruction{z-index:11;background:#000000d1;top:14px;bottom:auto;font-size:1.3rem;font-weight:700;white-space:normal;width:max-content;text-align:center}.flash{position:fixed;inset:0;opacity:.45;pointer-events:none;z-index:10;transition:background .12s linear}.dots{display:flex;justify-content:center;gap:8px;margin-top:14px}.dots span{width:12px;height:12px;border-radius:50%;background:var(--line)}.dots .on{background:var(--good)}.warning{background:#fff7e6;color:var(--warn);padding:10px 12px;border-radius:8px;font-size:.9rem}.error{background:#fdecea;color:var(--bad);padding:10px 12px;border-radius:8px;margin-top:12px}.error p{margin:.3em 0 0}.center{text-align:center;padding:30px 0}.spinner{width:42px;height:42px;margin:10px auto 20px;border:4px solid var(--line);border-top-color:var(--brand);border-radius:50%;animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.lang{position:absolute;top:14px;right:14px;display:flex;gap:4px}.lang button{padding:4px 8px;font-size:.75rem;background:none;color:var(--muted);border-radius:6px}.lang .on{background:#e9eef4;color:var(--ink)}.choice{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:16px}.choice label{display:flex;gap:8px;padding:12px;border:2px solid var(--line);border-radius:10px;cursor:pointer}.choice .on{border-color:var(--brand)}.tips{padding-left:18px;color:var(--muted);font-size:.92rem}.tips li{margin-bottom:6px;line-height:1.45}.verdict{border-radius:12px;padding:18px 80px 18px 20px;color:#fff;background:var(--muted)}.verdict p{margin:0}.verdict.APPROVE{background:var(--good)}.verdict.REVIEW{background:var(--warn)}.verdict.REJECT{background:var(--bad)}table{width:100%;border-collapse:collapse;font-size:.86rem}td{border-bottom:1px solid var(--line);padding:7px 6px;vertical-align:top;word-break:break-word}.status{font-weight:600}.status.PASS{color:var(--good)}.status.FAIL{color:var(--bad)}.status.INCONCLUSIVE,.status.NOT_RUN,.status.ERROR{color:var(--warn)}.field{display:block;margin:14px 0;font-size:.9rem}.field input,.field textarea{display:block;width:100%;font:inherit;padding:10px;margin-top:6px;border:1px solid var(--line);border-radius:8px;min-height:44px}.cases{list-style:none;padding:0}.cases li{margin-bottom:8px}.images{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px;margin-bottom:16px}.images img{width:100%;border-radius:8px;display:block}figure{margin:0}figcaption{font-size:.78rem;color:var(--muted);margin-top:4px}@media(max-width:520px){body{padding:0}.card{border-radius:0;min-height:100vh}.progress{font-size:.62rem}}
