:root{color-scheme:dark;font:16px system-ui,sans-serif;background:#0a1c1f;color:#effaf8;--green:#c9f875;--line:#315054}*{box-sizing:border-box}[hidden]{display:none!important}body{margin:0}main{max-width:520px;margin:auto;padding:16px}header,.intro label,.actions,.controls{display:flex;align-items:center;gap:10px}header{justify-content:space-between;border-bottom:1px solid var(--line);padding-bottom:15px}.brand{font-weight:900;color:var(--green)}.brand span{font-size:.66rem;letter-spacing:.1em;color:#e1efec}.pill{font-size:.73rem;border:1px solid var(--line);border-radius:20px;padding:5px 9px}.intro p{font-size:.65rem;letter-spacing:.2em;color:#a3c6c1;margin:20px 0 4px}h1{margin:0 0 10px;font-size:1.85rem}h2{margin:0 0 10px;font-size:1.05rem}.intro label{font-size:.8rem;color:#bfd6d3;margin-bottom:14px}.intro input{width:9em}input,button,.file{font:inherit;color:inherit;border:1px solid var(--line);background:#183337;border-radius:9px;padding:9px}button,.file{cursor:pointer;min-height:44px;font-weight:700}.primary{background:var(--green);color:#142312;border-color:transparent}.camera{aspect-ratio:1.32;position:relative;display:grid;place-items:center;border:1px solid var(--line);border-radius:18px;overflow:hidden;background:radial-gradient(ellipse,#203e40,#0a1315)}video{width:100%;height:100%;position:absolute;object-fit:cover}.target{position:absolute;width:84%;height:44%;border:2px solid var(--green);border-radius:16px;pointer-events:none;box-shadow:0 0 0 300px #0004}.target i{position:absolute;top:50%;width:100%;height:1px;background:#c9f87588}.camera button{position:relative}.camera.running button{align-self:end;margin-bottom:8px;font-size:.75rem;min-height:32px;padding:5px 10px}.controls{margin-top:8px;flex-wrap:wrap}.controls label{font-size:.8rem}#status{overflow-wrap:anywhere;background:#173034;border-radius:10px;padding:12px;color:#d1e7e2;font-size:.9rem;min-height:46px}.actions>*{flex:1}.actions b{color:var(--green);margin-left:4px}.data{border:1px solid var(--line);border-radius:12px;margin-top:16px;padding:14px}.data p,.data small{font-size:.8rem;color:#b9d1ce}.file{display:inline-flex;align-items:center;position:relative;margin-right:6px}.file input{position:absolute;inset:0;width:100%;opacity:0;cursor:pointer}.file:focus-within{outline:2px solid var(--green)}dialog{max-width:min(440px,92vw);width:100%;border:1px solid var(--line);border-radius:14px;background:#122d30;color:inherit;padding:18px}dialog::backdrop{background:#000a}dialog input{width:100%;margin:6px 0 14px}ol{max-height:50vh;overflow:auto;padding-left:24px}li{margin-bottom:8px;overflow-wrap:anywhere}
