*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #111112;--surface: #1c1c1f;--border: #2e2e32;--text: #f0f0f2;--text-muted: #8c8c99;--accent: #4f7ef7;--accent-hover: #3d6de6;--success: #34c77b;--warning: #f5a623;--error: #e5534b;--dot: #ffffff;--radius: 8px}html,body,#root{height:100%;width:100%;overflow:hidden;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased}.screen{position:fixed;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:2rem;max-width:540px;width:100%}.card h1{font-size:1.375rem;font-weight:600;margin-bottom:.5rem}.card p{color:var(--text-muted);margin-bottom:1rem;font-size:.9375rem}.card p:last-child{margin-bottom:0}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.625rem 1.25rem;border-radius:var(--radius);font-size:.9375rem;font-weight:500;cursor:pointer;border:none;transition:background .15s,opacity .15s;text-decoration:none;user-select:none}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover:not(:disabled){background:var(--accent-hover)}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.btn-full{width:100%}.checkbox-row{display:flex;align-items:flex-start;gap:.75rem;padding:1rem;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;margin-bottom:1.25rem}.checkbox-row input[type=checkbox]{width:1.125rem;height:1.125rem;margin-top:2px;accent-color:var(--accent);cursor:pointer;flex-shrink:0}.checkbox-row span{font-size:.875rem;color:var(--text-muted);line-height:1.4}.status-row{display:flex;align-items:center;gap:.75rem;padding:.75rem 0;border-bottom:1px solid var(--border);font-size:.9rem}.status-row:last-child{border-bottom:none}.status-icon{width:1.25rem;height:1.25rem;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.75rem;flex-shrink:0}.status-ok{background:var(--success)}.status-warn{background:var(--warning)}.status-err{background:var(--error)}.status-spin{background:var(--border);animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.calibration-overlay{position:fixed;inset:0;background:var(--bg);cursor:crosshair}.calibration-dot{position:absolute;width:20px;height:20px;border-radius:50%;background:var(--dot);transform:translate(-50%,-50%);transition:left .4s cubic-bezier(.4,0,.2,1),top .4s cubic-bezier(.4,0,.2,1);cursor:pointer;box-shadow:0 0 0 4px #ffffff26}.calibration-dot.collecting{animation:dot-pulse .8s ease-in-out infinite}@keyframes dot-pulse{0%,to{transform:translate(-50%,-50%) scale(1);box-shadow:0 0 0 4px #ffffff26}50%{transform:translate(-50%,-50%) scale(1.3);box-shadow:0 0 0 8px #ffffff0d}}.calibration-progress{position:fixed;bottom:2rem;left:50%;transform:translate(-50%);color:var(--text-muted);font-size:.875rem;pointer-events:none}.calibration-instruction{position:absolute;color:var(--text-muted);font-size:.875rem;pointer-events:none;text-align:center;white-space:nowrap}.stimulus-screen{position:fixed;inset:0;background:#000;display:flex;align-items:center;justify-content:center}.stimulus-image{max-width:100%;max-height:100%;object-fit:contain;display:block;user-select:none;-webkit-user-drag:none}.progress-bar{position:fixed;top:0;left:0;height:3px;background:var(--accent);transition:width .3s linear}.loading-screen{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:var(--bg)}.spinner{width:2rem;height:2rem;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}.video-preview{width:100%;max-width:320px;aspect-ratio:4/3;object-fit:cover;border-radius:var(--radius);border:1px solid var(--border);display:block;margin:0 auto 1.25rem;transform:scaleX(-1)}.validation-points{display:flex;gap:.75rem;margin:1rem 0;flex-wrap:wrap}.val-point{display:flex;flex-direction:column;align-items:center;gap:.25rem;font-size:.8rem}.val-circle{width:2.5rem;height:2.5rem;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.75rem;font-weight:600}.val-ok{background:#34c77b33;border:2px solid var(--success);color:var(--success)}.val-warn{background:#f5a62333;border:2px solid var(--warning);color:var(--warning)}.val-err{background:#e5534b33;border:2px solid var(--error);color:var(--error)}.divider{height:1px;background:var(--border);margin:1.25rem 0}
