:root{--bg: #0b0e14;--bg-panel: #12161f;--bg-panel-2: #171c28;--border: #232a3a;--text: #e6e9f0;--text-dim: #8b93a7;--accent: #22d3ee;--accent-strong: #06b6d4;--green: #34d399;--amber: #fbbf24;--red: #f87171;--mono: "SFMono-Regular", "Cascadia Code", "JetBrains Mono", Consolas, monospace}*{margin:0;padding:0;box-sizing:border-box}html,body{height:100%}body{background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif;font-size:14px;overflow-x:hidden}.hidden{display:none!important}.topbar{display:flex;align-items:center;justify-content:space-between;height:60px;padding:0 24px;border-bottom:1px solid var(--border);background:var(--bg-panel);position:sticky;top:0;z-index:10}.brand{display:flex;align-items:center;gap:12px}.brand-mark{width:34px;height:34px;border-radius:8px;background:linear-gradient(135deg,var(--accent),#6366f1);position:relative}.brand-mark:after{content:"";position:absolute;top:7px;right:7px;bottom:7px;left:7px;border:2px solid #0b0e14;border-radius:4px}.brand-text h1{font-size:16px;font-weight:600;letter-spacing:.5px}.brand-text p{font-size:11px;color:var(--text-dim);letter-spacing:1px}.sys-status{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--text-dim)}.dot{width:9px;height:9px;border-radius:50%}.dot-off{background:#475069}.dot-on{background:var(--green);box-shadow:0 0 8px var(--green)}.dot-scan{background:var(--accent);box-shadow:0 0 8px var(--accent)}.layout{display:grid;grid-template-columns:1.3fr 1fr 1fr;gap:16px;padding:16px 24px 32px;max-width:1600px;margin:0 auto}@media (max-width: 1100px){.layout{grid-template-columns:1fr}}.panel{background:var(--bg-panel);border:1px solid var(--border);border-radius:12px;padding:16px;display:flex;flex-direction:column;gap:14px}.panel-title{display:flex;align-items:center;justify-content:space-between;font-size:13px;font-weight:600;color:var(--text);letter-spacing:.5px}.panel-title .hint{font-size:11px;font-weight:400;color:var(--text-dim)}.feed-wrap{position:relative;width:100%;aspect-ratio:4 / 3;border-radius:10px;overflow:hidden;background:#05070c;border:1px solid var(--border)}#video{width:100%;height:100%;object-fit:cover;display:none}#video.mirrored{transform:scaleX(-1)}#scanCanvas{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none}.feed-placeholder{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;color:var(--text-dim);z-index:2}.placeholder-mark{width:56px;height:56px;border:2px dashed #2a3145;border-radius:50%;position:relative}.placeholder-mark:after{content:"";position:absolute;top:12px;right:12px;bottom:12px;left:12px;border-radius:50%;border:2px solid #2a3145}.feed-placeholder p{font-size:14px}.feed-placeholder .placeholder-sub{font-size:11px;color:#5a627a}.overlay-hit{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:55%;height:55%;pointer-events:none;z-index:3;opacity:0;transition:opacity .25s}.overlay-hit.active{opacity:1}.hit-corner{position:absolute;width:26px;height:26px;border:3px solid var(--accent)}.corner-tl{top:0;left:0;border-right:none;border-bottom:none;border-radius:4px 0 0}.corner-tr{top:0;right:0;border-left:none;border-bottom:none;border-radius:0 4px 0 0}.corner-bl{bottom:0;left:0;border-right:none;border-top:none;border-radius:0 0 0 4px}.corner-br{bottom:0;right:0;border-left:none;border-top:none;border-radius:0 0 4px}.flash-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff;opacity:0;pointer-events:none;z-index:4;transition:opacity .15s}.flash-overlay.active{opacity:.55}.ctrl-group{display:flex;flex-direction:column;gap:8px}.ctrl-label{font-size:11px;color:var(--text-dim);letter-spacing:.5px}.ctrl-select{width:100%;padding:9px 12px;background:var(--bg-panel-2);border:1px solid var(--border);border-radius:8px;color:var(--text);font-size:13px;outline:none}.ctrl-select:focus{border-color:var(--accent)}.ctrl-select:disabled{opacity:.5;cursor:not-allowed}.ctrl-row{flex-direction:row;flex-wrap:wrap;gap:16px}.ctrl-check{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text-dim);cursor:pointer;-webkit-user-select:none;user-select:none}.ctrl-check input{accent-color:var(--accent)}.mode-switch{display:flex;background:var(--bg-panel-2);border:1px solid var(--border);border-radius:8px;padding:3px}.mode-btn{flex:1;padding:8px 0;background:transparent;border:none;border-radius:6px;color:var(--text-dim);font-size:12px;cursor:pointer;transition:all .2s}.mode-btn.active{background:var(--accent);color:#05242b;font-weight:600}.btn{padding:10px 16px;border:1px solid var(--border);border-radius:8px;background:var(--bg-panel-2);color:var(--text);font-size:13px;cursor:pointer;transition:all .2s;font-family:inherit}.btn:hover{border-color:var(--accent)}.btn:active{transform:translateY(1px)}.btn-primary{background:var(--accent);border-color:var(--accent);color:#05242b;font-weight:600}.btn-primary:hover{background:var(--accent-strong);border-color:var(--accent-strong)}.btn-primary.running{background:transparent;color:var(--red);border-color:var(--red);font-weight:600}.btn-block{width:100%}.btn-ghost{background:transparent}.drop-zone{border:1px dashed var(--border);border-radius:10px;padding:18px 12px;text-align:center;cursor:pointer;transition:all .2s}.drop-zone:hover,.drop-zone.dragover{border-color:var(--accent);background:#22d3ee0d}.drop-zone p{font-size:13px;color:var(--text)}.drop-zone .drop-sub{font-size:11px;color:var(--text-dim);margin-top:4px}.result-empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:40px 0;color:var(--text-dim)}.empty-mark{width:48px;height:48px;border-radius:50%;border:2px dashed #2a3145;position:relative}.empty-mark:after{content:"";position:absolute;top:10px;right:10px;bottom:10px;left:10px;border-radius:50%;border:2px solid #2a3145}.result-empty p{font-size:13px}.result-empty .empty-sub{font-size:11px;color:#5a627a}.result-card{display:flex;flex-direction:column;gap:10px;background:var(--bg-panel-2);border:1px solid var(--border);border-radius:10px;padding:14px}.result-head{display:flex;align-items:center;justify-content:space-between}.result-type{font-size:11px;font-weight:600;padding:3px 10px;border-radius:20px;letter-spacing:.5px}.result-type.type-url{background:#22d3ee26;color:var(--accent);border:1px solid rgba(34,211,238,.35)}.result-type.type-text{background:#fbbf2426;color:var(--amber);border:1px solid rgba(251,191,36,.35)}.result-time{font-size:11px;color:var(--text-dim);font-family:var(--mono)}.result-text{width:100%;min-height:88px;background:#0b0e14;border:1px solid var(--border);border-radius:8px;padding:10px;color:var(--text);font-family:var(--mono);font-size:12px;resize:vertical;outline:none;line-height:1.6}.result-actions{display:flex;gap:8px}.result-actions .btn{flex:1}.result-history{display:flex;flex-direction:column;gap:10px;border-top:1px solid var(--border);padding-top:14px}.history-list{list-style:none;display:flex;flex-direction:column;gap:6px;max-height:260px;overflow-y:auto}.history-item{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 10px;background:var(--bg-panel-2);border:1px solid var(--border);border-radius:8px;cursor:pointer;transition:all .15s}.history-item:hover{border-color:var(--accent)}.history-item .h-type{font-size:10px;font-weight:600;color:var(--accent);flex-shrink:0}.history-item .h-content{flex:1;font-family:var(--mono);font-size:11px;color:var(--text-dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.history-empty{font-size:12px;color:#5a627a;padding:6px 2px}.toast{position:fixed;left:50%;bottom:28px;transform:translate(-50%);background:var(--bg-panel-2);border:1px solid var(--accent);color:var(--text);padding:10px 20px;border-radius:8px;font-size:13px;box-shadow:0 8px 24px #00000080;z-index:100;animation:toast-in .2s ease-out}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%)}}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:#2a3145;border-radius:4px}::-webkit-scrollbar-track{background:transparent}
