:root{--bg-base: #0b0f1a;--bg-elevated: #121826;--surface-glass: rgba(255, 255, 255, .06);--border-hairline: rgba(255, 255, 255, .1);--text-primary: #e6ecf5;--text-muted: #8a95aa;--accent-teal: #14b8a6;--accent-violet: #7c3aed;--accent-coral: #f97066;--status-green: #22c55e;--status-amber: #f59e0b;--status-red: #ef4444;--shadow-rest: 0 4px 12px rgba(0, 0, 0, .18);--shadow-hover: 0 8px 24px rgba(0, 0, 0, .28);--shadow-modal: 0 24px 48px rgba(0, 0, 0, .4);--radius-card: 16px;--radius-tile: 12px;--radius-input: 10px;--motion-fast: .15s ease-out;--motion-base: .2s ease-out;--focus-ring: 0 0 0 2px var(--accent-violet);--gradient-accent: linear-gradient( 90deg, var(--accent-teal), var(--accent-violet), var(--accent-coral) )}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:16px;line-height:1.55;color:var(--text-primary);background:radial-gradient(circle at 20% 0%,rgba(124,58,237,.18),transparent 50%),radial-gradient(circle at 80% 100%,rgba(20,184,166,.14),transparent 50%),var(--bg-base);background-attachment:fixed;min-height:100vh}button{font-family:inherit}.app{max-width:1200px;margin:0 auto;padding:48px 24px 80px;display:flex;flex-direction:column;gap:32px}.app-header h1{font-size:32px;font-weight:600;margin:0 0 8px;letter-spacing:-.01em}.app-header p{margin:0;color:var(--text-muted);max-width:720px}.tag{display:inline-block;font-size:12px;font-weight:500;padding:4px 10px;border-radius:999px;background:var(--surface-glass);border:1px solid var(--border-hairline);color:var(--text-muted);margin-right:8px}.panel{background:var(--bg-elevated);border:1px solid var(--border-hairline);border-radius:var(--radius-card);padding:24px;box-shadow:var(--shadow-modal)}.card{background:var(--surface-glass);border:1px solid var(--border-hairline);border-radius:var(--radius-card);padding:20px;box-shadow:var(--shadow-rest);backdrop-filter:blur(16px) saturate(140%);-webkit-backdrop-filter:blur(16px) saturate(140%);transition:box-shadow var(--motion-base),transform var(--motion-base)}.card:hover{box-shadow:var(--shadow-hover)}.card h3{font-size:14px;font-weight:500;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);margin:0 0 12px}.workflow{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.workflow-step{flex:1 1 140px;display:flex;align-items:center;gap:10px;padding:12px 16px;border-radius:var(--radius-tile);background:var(--surface-glass);border:1px solid var(--border-hairline);color:var(--text-muted);box-shadow:var(--shadow-rest);transition:all var(--motion-base)}.workflow-step .step-number{width:26px;height:26px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;background:#ffffff0d;font-size:13px;font-weight:600}.workflow-step.active{color:var(--text-primary);background:var(--gradient-accent);border-color:transparent;box-shadow:var(--shadow-modal)}.workflow-step.active .step-number{background:#00000040}.workflow-step.done{color:var(--text-primary);border-color:#22c55e66}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:24px}@media (max-width: 900px){.grid-2{grid-template-columns:1fr}}.upload-zone{border:1px dashed var(--border-hairline);border-radius:var(--radius-card);padding:32px;text-align:center;background:#ffffff05;transition:background var(--motion-base),border-color var(--motion-base);cursor:pointer}.upload-zone.dragging{background:#7c3aed1a;border-color:var(--accent-violet)}.upload-zone p{margin:0;color:var(--text-muted)}.preview{margin-top:16px;border-radius:var(--radius-tile);overflow:hidden;border:1px solid var(--border-hairline)}.preview img{display:block;width:100%;height:auto;max-height:360px;object-fit:contain;background:#000}.btn{display:inline-flex;align-items:center;justify-content:center;padding:12px 20px;border:none;border-radius:var(--radius-input);background:var(--gradient-accent);color:#fff;font-weight:600;font-size:14px;cursor:pointer;box-shadow:var(--shadow-rest);transition:box-shadow var(--motion-base),transform var(--motion-fast);margin-top:16px}.btn:hover:not(:disabled){box-shadow:var(--shadow-hover)}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn:focus-visible{outline:none;box-shadow:var(--focus-ring),var(--shadow-rest)}.results-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}@media (max-width: 900px){.results-grid{grid-template-columns:1fr}}.result-tile img{display:block;width:100%;height:auto;border-radius:var(--radius-tile);background:#000}.metrics-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;margin-top:16px}@media (max-width: 700px){.metrics-grid{grid-template-columns:1fr}}.metric-value{font-size:28px;font-weight:600;font-variant-numeric:tabular-nums;color:var(--text-primary);margin:4px 0}.metric-caption{font-size:13px;color:var(--text-muted)}.badge{display:inline-block;font-size:12px;font-weight:500;padding:4px 10px;border-radius:999px;border:1px solid var(--border-hairline)}.badge-model{color:var(--status-green);border-color:#22c55e80;background:#22c55e1a}.badge-fallback{color:var(--status-amber);border-color:#f59e0b80;background:#f59e0b1a}.status-line{display:flex;align-items:center;gap:12px;margin-top:12px;font-size:14px;color:var(--text-muted)}.spinner{width:16px;height:16px;border:2px solid rgba(255,255,255,.15);border-top-color:var(--accent-violet);border-radius:50%;animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.error{margin-top:12px;padding:10px 14px;border-radius:var(--radius-tile);background:#ef44441a;border:1px solid rgba(239,68,68,.4);color:var(--status-red);font-size:14px}.footer-note{font-size:13px;color:var(--text-muted);text-align:center;margin-top:24px}.shell{display:flex;min-height:100vh}.sidebar{width:220px;flex-shrink:0;background:var(--bg-elevated);border-right:1px solid var(--border-hairline);display:flex;flex-direction:column;padding:24px 0;position:sticky;top:0;height:100vh}.sidebar-brand{display:flex;align-items:center;gap:10px;padding:0 20px 24px;font-weight:700;font-size:18px;letter-spacing:-.02em;border-bottom:1px solid var(--border-hairline)}.brand-icon{font-size:22px;color:var(--accent-teal)}.brand-name{background:var(--gradient-accent);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.sidebar-nav{flex:1;padding:16px 12px;display:flex;flex-direction:column;gap:4px}.nav-link{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:var(--radius-input);color:var(--text-muted);text-decoration:none;font-size:14px;font-weight:500;transition:all var(--motion-base)}.nav-link:hover{background:var(--surface-glass);color:var(--text-primary)}.nav-link.active{background:#7c3aed26;color:var(--text-primary);border:1px solid rgba(124,58,237,.3)}.nav-icon{font-size:16px;width:20px;text-align:center}.sidebar-footer{padding:16px 20px 0;border-top:1px solid var(--border-hairline)}.content{flex:1;overflow-y:auto;min-width:0}.page{max-width:1100px;margin:0 auto;padding:40px 32px 80px}.page-header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:32px;gap:16px}.page-title{font-size:26px;font-weight:600;margin:0 0 4px;letter-spacing:-.02em}.page-subtitle{color:var(--text-muted);margin:0;font-size:14px}.stats-row{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:28px}@media (max-width: 900px){.stats-row{grid-template-columns:repeat(2,1fr)}}.stat-card{background:var(--bg-elevated);border:1px solid var(--border-hairline);border-radius:var(--radius-card);padding:20px;box-shadow:var(--shadow-rest)}.table-wrap{overflow:hidden;border-radius:var(--radius-card);border:1px solid var(--border-hairline)}.job-table{width:100%;border-collapse:collapse;font-size:14px}.job-table th{padding:12px 16px;text-align:left;font-size:12px;font-weight:500;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);background:var(--bg-elevated);border-bottom:1px solid var(--border-hairline)}.job-table td{padding:12px 16px;border-bottom:1px solid var(--border-hairline);vertical-align:middle}.job-row{cursor:pointer;transition:background var(--motion-fast)}.job-row:hover{background:var(--surface-glass)}.job-row:last-child td{border-bottom:none}.job-id{font-family:JetBrains Mono,Fira Code,monospace;font-size:13px;color:var(--accent-teal);background:#14b8a614;padding:2px 6px;border-radius:4px}.filename{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-muted)}.ts{color:var(--text-muted);font-size:13px;white-space:nowrap}.annotation-row{padding:12px 0;border-bottom:1px solid var(--border-hairline)}.annotation-row:last-of-type{border-bottom:none}.annotation-text{margin:0 0 6px;font-size:14px;line-height:1.5}.annotation-meta{display:flex;align-items:center;justify-content:space-between;font-size:12px;color:var(--text-muted)}.annotation-form{margin-top:20px;display:flex;flex-direction:column;gap:12px}.note-input{width:100%;background:#ffffff0a;border:1px solid var(--border-hairline);border-radius:var(--radius-input);color:var(--text-primary);font-family:inherit;font-size:14px;line-height:1.5;padding:12px;resize:vertical;transition:border-color var(--motion-fast)}.note-input:focus{outline:none;border-color:var(--accent-violet);box-shadow:var(--focus-ring)}.link-btn{background:none;border:none;color:var(--accent-teal);font-size:14px;cursor:pointer;padding:0;text-decoration:underline;text-underline-offset:3px}.btn-ghost{background:none;border:none;cursor:pointer;padding:4px 8px;border-radius:6px;font-size:13px;color:var(--text-muted);transition:all var(--motion-fast)}.btn-ghost:hover{background:var(--surface-glass)}.btn-danger:hover{color:var(--status-red);background:#ef44441a}.btn-secondary{background:var(--surface-glass);border:1px solid var(--border-hairline);color:var(--text-primary)}.empty-state{padding:48px;text-align:center;color:var(--text-muted);border:1px dashed var(--border-hairline);border-radius:var(--radius-card)}.auth-shell{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}.auth-card{width:100%;max-width:400px;background:var(--bg-elevated);border:1px solid var(--border-hairline);border-radius:var(--radius-card);padding:40px 36px;box-shadow:var(--shadow-modal)}.auth-brand{font-size:22px;font-weight:700;background:var(--gradient-accent);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin-bottom:24px}.auth-title{font-size:22px;font-weight:600;margin:0 0 20px;letter-spacing:-.02em}.auth-form{display:flex;flex-direction:column;gap:12px}.auth-footer{margin-top:20px;font-size:14px;color:var(--text-muted);text-align:center}.field-label{font-size:13px;font-weight:500;color:var(--text-muted);margin-bottom:4px}.field-hint{font-size:12px;color:var(--text-muted);margin:0}.field-input{width:100%;background:#ffffff0a;border:1px solid var(--border-hairline);border-radius:var(--radius-input);color:var(--text-primary);font-family:inherit;font-size:15px;padding:10px 12px;transition:border-color var(--motion-fast);color-scheme:dark}.field-input:focus{outline:none;border-color:var(--accent-violet);box-shadow:var(--focus-ring)}.field-input option{background-color:#1a1a2e;color:#e2e8f0}.field-otp{font-size:24px;letter-spacing:.3em;text-align:center;font-variant-numeric:tabular-nums}.btn-full{width:100%;margin-top:4px}.tab-row{display:flex;gap:4px;margin-bottom:20px;background:var(--surface-glass);border-radius:var(--radius-input);padding:4px}.tab-btn{flex:1;background:none;border:none;color:var(--text-muted);font-family:inherit;font-size:13px;font-weight:500;padding:8px;border-radius:8px;cursor:pointer;transition:all var(--motion-fast)}.tab-btn.active{background:var(--bg-elevated);color:var(--text-primary);box-shadow:var(--shadow-rest)}.oauth-divider{display:flex;align-items:center;gap:12px;margin:20px 0;color:var(--text-muted);font-size:13px}.oauth-divider:before,.oauth-divider:after{content:"";flex:1;height:1px;background:var(--border-hairline)}.oauth-row{display:flex;gap:8px}.oauth-btn{flex:1;display:flex;align-items:center;justify-content:center;gap:7px;padding:10px 8px;border-radius:var(--radius-input);background:var(--surface-glass);border:1px solid var(--border-hairline);color:var(--text-primary);text-decoration:none;font-size:13px;font-weight:500;transition:all var(--motion-base)}.oauth-btn:hover{background:#ffffff14;border-color:#fff3}.user-pill{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 12px;border-radius:var(--radius-input);background:var(--surface-glass);border:1px solid var(--border-hairline)}.user-pill-info{display:flex;flex-direction:column;align-items:flex-start;gap:3px;min-width:0}.user-pill-name{font-size:13px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.badge-role-admin{color:var(--accent-coral);border-color:#f9706666;background:#f970661a}.badge-role-researcher{color:var(--accent-teal);border-color:#14b8a666;background:#14b8a61a}.badge-role-viewer{color:var(--text-muted);border-color:var(--border-hairline);background:transparent}.qr-container{display:flex;flex-direction:column;align-items:center;padding:16px;background:#fff;border-radius:var(--radius-tile)}.role-select{-moz-appearance:none;appearance:none;-webkit-appearance:none;cursor:pointer;font-family:inherit;font-size:12px;font-weight:500;padding:3px 24px 3px 10px;border-radius:999px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%238a95aa' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center;transition:all var(--motion-fast)}.role-select:disabled{opacity:.6;cursor:default}
