*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--color-bg: #f0f2f5;--color-surface: #ffffff;--color-primary: #2563eb;--color-primary-hover: #1d4ed8;--color-success: #16a34a;--color-warning: #ca8a04;--color-error: #dc2626;--color-text: #1e293b;--color-text-muted: #64748b;--color-border: #e2e8f0;--radius: 8px;--shadow: 0 1px 3px rgba(0, 0, 0, .1), 0 1px 2px rgba(0, 0, 0, .06);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -2px rgba(0, 0, 0, .05)}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;background-color:var(--color-bg);color:var(--color-text);min-height:100vh;line-height:1.6}.container{max-width:1200px;margin:0 auto;padding:24px}header{text-align:center;margin-bottom:24px}header h1{font-size:2rem;font-weight:700;color:var(--color-text);margin-bottom:16px}.tab-nav{display:flex;justify-content:center;gap:4px;border-bottom:2px solid var(--color-border);padding-bottom:0}.tab-btn{padding:10px 24px;border:none;border-bottom:3px solid transparent;background:none;font-size:.95rem;font-weight:500;color:var(--color-text-muted);cursor:pointer;transition:color .2s,border-color .2s;margin-bottom:-2px}.tab-btn:hover{color:var(--color-text)}.tab-btn.active{color:var(--color-primary);border-bottom-color:var(--color-primary);font-weight:600}.tab-panel{display:none}.tab-panel.active{display:block}.tab-placeholder{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:400px;background:var(--color-surface);border-radius:var(--radius);box-shadow:var(--shadow);color:var(--color-text-muted);text-align:center}.tab-placeholder .placeholder-icon{font-size:4rem;margin-bottom:16px}.tab-placeholder p{font-size:1.1rem}.subtitle{color:var(--color-text-muted);margin-top:8px;font-size:1rem}.subtitle kbd{display:inline-block;background:var(--color-surface);border:1px solid var(--color-border);border-radius:4px;padding:2px 8px;font-family:monospace;font-size:.9rem;box-shadow:0 1px #0003}.main-grid{display:grid;grid-template-columns:1fr 400px;gap:24px;align-items:start}.camera-section{position:relative}.camera-select{width:100%;max-width:320px;padding:8px 12px;margin-bottom:10px;border:1px solid var(--color-border);border-radius:var(--radius);font-size:.85rem;color:var(--color-text);background:var(--color-surface);appearance:auto;cursor:pointer;transition:border-color .2s,box-shadow .2s}.camera-select:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px #2563eb26}.camera-wrapper{position:relative;background:#000;border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow-lg);aspect-ratio:16 / 9;min-height:360px}.camera-wrapper video{width:100%;height:100%;object-fit:cover}.camera-placeholder{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#1e293b;color:#94a3b8;text-align:center}.placeholder-icon{font-size:3rem;margin-bottom:12px}.error-detail{font-size:.8rem;margin-top:8px;opacity:.7;max-width:300px}.capture-flash{position:absolute;inset:0;background:#fff;opacity:0;pointer-events:none;transition:opacity .1s ease-out;border-radius:var(--radius)}.capture-flash.active{opacity:.6}.capture-hint{text-align:center;margin-top:10px;font-size:.85rem;color:var(--color-text-muted)}.capture-hint kbd{display:inline-block;background:var(--color-surface);border:1px solid var(--color-border);border-radius:4px;padding:2px 10px;font-family:monospace;font-size:.9rem;font-weight:600;box-shadow:0 1px #0003}.card{background:var(--color-surface);border-radius:var(--radius);padding:24px;box-shadow:var(--shadow);margin-bottom:16px}.card h2{font-size:1.1rem;font-weight:600;margin-bottom:16px;padding-bottom:8px;border-bottom:2px solid var(--color-border)}.form-group{margin-bottom:14px}.form-group label{display:block;font-size:.85rem;font-weight:500;color:var(--color-text-muted);margin-bottom:4px}.form-group input{width:100%;padding:10px 12px;border:1px solid var(--color-border);border-radius:var(--radius);font-size:.95rem;color:var(--color-text);background:#f8fafc;transition:border-color .2s,box-shadow .2s}.form-group input:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px #2563eb26;background:var(--color-surface)}.form-group input::placeholder{color:#94a3b8}.capture-list{max-height:300px;overflow-y:auto}.empty-state{color:var(--color-text-muted);text-align:center;padding:24px 0;font-size:.9rem}.capture-item{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:var(--radius);margin-bottom:6px;background:#f8fafc;font-size:.85rem;transition:background .2s}.capture-item .capture-thumb{width:40px;height:40px;border-radius:4px;object-fit:cover;flex-shrink:0;background:#e2e8f0}.capture-item .capture-info{flex:1;min-width:0}.capture-item .capture-id{font-weight:600;font-size:.8rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.capture-item .capture-time{color:var(--color-text-muted);font-size:.75rem}.capture-item .capture-status{flex-shrink:0;font-size:.75rem;font-weight:600;padding:2px 8px;border-radius:20px}.status-pending{background:#fef3c7;color:#92400e}.status-uploading{background:#dbeafe;color:#1e40af}.status-sent{background:#dcfce7;color:#166534}.status-failed{background:#fee2e2;color:#991b1b}.capture-actions{display:flex;gap:4px;flex-shrink:0}.btn-action{width:28px;height:28px;border:none;border-radius:4px;cursor:pointer;font-size:.9rem;font-weight:600;display:flex;align-items:center;justify-content:center;transition:background .2s,transform .1s;line-height:1}.btn-action:active{transform:scale(.9)}.btn-retry{background:#dbeafe;color:#1e40af}.btn-retry:hover{background:#bfdbfe}.btn-delete{background:#fee2e2;color:#991b1b}.btn-delete:hover{background:#fecaca}footer{margin-top:24px;padding-top:16px;border-top:1px solid var(--color-border)}.status-bar{display:flex;align-items:center;gap:8px;font-size:.85rem;color:var(--color-text-muted)}.status-dot{width:10px;height:10px;border-radius:50%;display:inline-block}.status-dot.online{background:var(--color-success);box-shadow:0 0 6px #16a34a66}.status-dot.offline{background:var(--color-error)}.separator{color:var(--color-border)}@media(max-width:768px){.main-grid{grid-template-columns:1fr}header h1{font-size:1.5rem}}
