:root{--font-sans: "Inter", ui-sans-serif, system-ui, -apple-system, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace;--bg: oklch(.99 .002 250);--bg-2: oklch(.975 .003 250);--bg-3: oklch(.96 .004 250);--panel: #ffffff;--line: oklch(.92 .005 250);--line-2: oklch(.88 .006 250);--line-3: oklch(.82 .008 250);--ink: oklch(.22 .01 250);--ink-2: oklch(.42 .01 250);--ink-3: oklch(.58 .008 250);--ink-4: oklch(.72 .006 250);--accent: oklch(.52 .15 250);--accent-2: oklch(.62 .14 250);--accent-3: oklch(.94 .025 250);--accent-4: oklch(.97 .012 250);--st-neutral: oklch(.62 .005 250);--st-neutral-bg: oklch(.95 .004 250);--st-blue: oklch(.58 .13 250);--st-blue-bg: oklch(.95 .025 250);--st-green: oklch(.58 .12 155);--st-green-bg:oklch(.95 .025 155);--st-yellow: oklch(.72 .13 85);--st-yellow-bg: oklch(.96 .04 85);--st-orange: oklch(.66 .15 55);--st-orange-bg: oklch(.96 .035 55);--st-red: oklch(.58 .17 25);--st-red-bg: oklch(.96 .025 25);--s1: 4px;--s2: 8px;--s3: 12px;--s4: 16px;--s5: 20px;--s6: 24px;--s7: 32px;--s8: 40px;--s9: 56px;--s10: 80px;--r-1: 4px;--r-2: 6px;--r-3: 8px;--r-4: 10px;--r-5: 14px;--shadow-1: 0 1px 0 rgba(15, 23, 42, .04), 0 1px 2px rgba(15, 23, 42, .04);--shadow-2: 0 1px 0 rgba(15, 23, 42, .04), 0 4px 12px rgba(15, 23, 42, .06);--shadow-3: 0 8px 32px rgba(15, 23, 42, .1), 0 2px 6px rgba(15, 23, 42, .06);--row-h: 40px;--pad-cell-y: 10px;--pad-card: 20px}[data-density=compact]{--row-h: 32px;--pad-cell-y: 6px;--pad-card: 14px}[data-theme=dark]{--bg: oklch(.18 .012 250);--bg-2: oklch(.21 .013 250);--bg-3: oklch(.24 .014 250);--panel: oklch(.22 .013 250);--line: oklch(.28 .015 250);--line-2: oklch(.32 .016 250);--line-3: oklch(.4 .018 250);--ink: oklch(.96 .006 250);--ink-2: oklch(.78 .008 250);--ink-3: oklch(.62 .01 250);--ink-4: oklch(.5 .01 250);--accent: oklch(.72 .14 250);--accent-2: oklch(.78 .13 250);--accent-3: oklch(.3 .06 250);--accent-4: oklch(.26 .04 250);--st-neutral-bg: oklch(.28 .008 250);--st-blue-bg: oklch(.3 .06 250);--st-green-bg: oklch(.3 .05 155);--st-yellow-bg:oklch(.32 .07 85);--st-orange-bg:oklch(.32 .07 55);--st-red-bg: oklch(.3 .07 25);--shadow-1: 0 1px 0 rgba(0,0,0,.3), 0 1px 2px rgba(0,0,0,.3);--shadow-2: 0 1px 0 rgba(0,0,0,.3), 0 4px 12px rgba(0,0,0,.4);--shadow-3: 0 8px 32px rgba(0,0,0,.5), 0 2px 6px rgba(0,0,0,.3)}*{box-sizing:border-box}html,body{margin:0;padding:0;height:100%}body{font-family:var(--font-sans);font-size:13.5px;line-height:1.45;color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;font-feature-settings:"cv11","ss01"}button{font-family:inherit}input,select,textarea{font-family:inherit;color:inherit}.mono{font-family:var(--font-mono);font-feature-settings:"zero"}.muted{color:var(--ink-3)}.muted-2{color:var(--ink-2)}.tnum{font-variant-numeric:tabular-nums}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:32px;padding:0 12px;border-radius:var(--r-2);border:1px solid var(--line-2);background:var(--panel);color:var(--ink);font-size:12.5px;font-weight:500;cursor:default;transition:background .12s ease,border-color .12s ease;white-space:nowrap}.btn:hover{background:var(--bg-2);border-color:var(--line-3)}.btn.sm{height:26px;padding:0 10px;font-size:12px}.btn.lg{height:38px;padding:0 16px;font-size:13px}.btn.primary{background:var(--accent);color:#fff;border-color:var(--accent)}.btn.primary:hover{background:var(--accent-2);border-color:var(--accent-2)}.btn.ghost{background:transparent;border-color:transparent;color:var(--ink-2)}.btn.ghost:hover{background:var(--bg-3);color:var(--ink)}.btn.danger{background:var(--panel);border-color:var(--line-2);color:var(--st-red)}.btn.danger:hover{background:var(--st-red-bg);border-color:var(--st-red)}.btn.danger.solid{background:var(--st-red);color:#fff;border-color:var(--st-red)}.input{height:32px;padding:0 10px;border-radius:var(--r-2);border:1px solid var(--line-2);background:var(--panel);color:var(--ink);font-size:13px;outline:none;transition:border-color .12s ease,box-shadow .12s ease;width:100%}.input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-3)}.input::placeholder{color:var(--ink-4)}.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-4)}.pill{display:inline-flex;align-items:center;gap:6px;height:22px;padding:0 8px;border-radius:999px;font-size:11.5px;font-weight:500;letter-spacing:.01em;white-space:nowrap}.pill .dot{width:6px;height:6px;border-radius:50%;background:currentColor;flex:none}.pill.neutral{color:var(--st-neutral);background:var(--st-neutral-bg)}.pill.blue{color:var(--st-blue);background:var(--st-blue-bg)}.pill.green{color:var(--st-green);background:var(--st-green-bg)}.pill.yellow{color:var(--st-yellow);background:var(--st-yellow-bg)}.pill.orange{color:var(--st-orange);background:var(--st-orange-bg)}.pill.red{color:var(--st-red);background:var(--st-red-bg)}.pill.live .dot{position:relative;animation:pulse 1.6s ease-in-out infinite}@keyframes pulse{0%,to{box-shadow:0 0 0 0 currentColor;opacity:1}50%{box-shadow:0 0 0 4px transparent;opacity:.6}}.tbl{width:100%;border-collapse:separate;border-spacing:0;font-size:13px}.tbl thead th{text-align:left;padding:8px 14px;font-size:11px;font-weight:500;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-3);border-bottom:1px solid var(--line);background:var(--bg-2);position:sticky;top:0}.tbl tbody td{padding:var(--pad-cell-y) 14px;border-bottom:1px solid var(--line);vertical-align:middle;height:var(--row-h)}.tbl tbody tr:hover td{background:var(--bg-2)}.tbl tbody tr:last-child td{border-bottom:none}.h-page{font-size:22px;font-weight:600;letter-spacing:-.01em;margin:0}.h-sec{font-size:13px;font-weight:600;letter-spacing:.02em;text-transform:uppercase;color:var(--ink-3);margin:0}.h-card{font-size:14px;font-weight:600;margin:0}.lbl{font-size:11px;font-weight:500;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-3)}.cap{font-size:11.5px;color:var(--ink-3)}.scroll-y{overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--line-3) transparent}.scroll-y::-webkit-scrollbar{width:8px}.scroll-y::-webkit-scrollbar-thumb{background:var(--line-3);border-radius:4px}@keyframes shimmer{0%{background-position:-400px 0}to{background-position:400px 0}}.skeleton{background:linear-gradient(90deg,var(--bg-2) 0%,var(--bg-3) 50%,var(--bg-2) 100%);background-size:800px 100%;animation:shimmer 1.6s linear infinite;border-radius:var(--r-2)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Arial,Helvetica,sans-serif;line-height:1.6;color:#333}.text-center{text-align:center}.mt-2{margin-top:1rem}.mb-2{margin-bottom:1rem}.login-page{min-height:100vh;background:#fbfcfd;display:flex;align-items:center;justify-content:center;padding:24px;position:relative;font-family:Inter,ui-sans-serif,system-ui,-apple-system,sans-serif;-webkit-font-smoothing:antialiased}.login-backdrop{position:absolute;inset:0;pointer-events:none;overflow:hidden}.login-backdrop-glow{position:absolute;top:-20%;left:50%;transform:translate(-50%);width:800px;height:800px;border-radius:50%;background:radial-gradient(circle,oklch(.97 .012 250) 0%,transparent 70%);opacity:.7}.login-center{position:relative;width:380px;display:flex;flex-direction:column;align-items:center}.login-brand{display:flex;align-items:center;gap:9px;margin-bottom:28px;color:#171b1f}.login-brand span{font-size:17px;font-weight:600;letter-spacing:-.01em}.login-card{width:100%;padding:32px;background:#fff;border:1px solid oklch(.92 .005 250);border-radius:10px;box-shadow:0 1px #0f172a0a,0 4px 12px #0f172a0f}.login-heading{margin-bottom:22px;text-align:center}.login-heading h1{font-size:18px;font-weight:600;margin:0;letter-spacing:-.01em;color:#171b1f}.login-heading p{color:#777b7f;font-size:12.5px;margin:4px 0 0}.login-form{display:flex;flex-direction:column;gap:12px}.login-lbl{display:block;margin-bottom:6px;font-size:11px;font-weight:500;letter-spacing:.05em;text-transform:uppercase;color:#777b7f}.login-pw-row{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:6px}.login-pw-row .login-lbl{margin-bottom:0}.login-forgot{font-size:11px;color:#006bb9;color:oklch(.52 .15 250);text-decoration:none;cursor:pointer}.login-forgot:hover{text-decoration:underline}.login-input{height:32px;width:100%;padding:0 10px;border-radius:6px;border:1px solid oklch(.88 .006 250);background:#fff;color:#171b1f;font-size:13px;font-family:inherit;outline:none;transition:border-color .12s ease,box-shadow .12s ease;box-sizing:border-box}.login-input:focus{border-color:#006bb9;border-color:oklch(.52 .15 250);box-shadow:0 0 0 3px #dfedfc}.login-input::placeholder{color:#a2a5a8}.login-btn{height:38px;width:100%;margin-top:6px;padding:0 16px;background:#006bb9;background:oklch(.52 .15 250);color:#fff;border:1px solid oklch(.52 .15 250);border-radius:6px;font-size:13px;font-weight:500;font-family:inherit;cursor:pointer;transition:background .12s ease,border-color .12s ease}.login-btn:hover:not(:disabled){background:#398ad6;border-color:#398ad6}.login-btn:disabled{opacity:.65;cursor:not-allowed}.login-error{margin-bottom:14px;padding:8px 12px;background:#ffedea;background:oklch(.96 .025 25);color:#cb4644;border:1px solid oklch(.88 .06 25);border-radius:6px;font-size:13px;text-align:center}.login-toggle{margin-top:18px;text-align:center;font-size:12.5px;color:#777b7f;display:flex;align-items:center;justify-content:center;gap:5px}.login-toggle-btn{background:none;border:none;padding:0;font-size:12.5px;font-family:inherit;color:#006bb9;color:oklch(.52 .15 250);cursor:pointer;font-weight:500}.login-toggle-btn:hover{text-decoration:underline}.login-note{margin-top:18px;font-size:11.5px;color:#777b7f;display:flex;align-items:center;gap:6px}.login-footer{position:absolute;bottom:18px;left:0;right:0;text-align:center;font-family:JetBrains Mono,ui-monospace,SF Mono,Menlo,monospace;font-size:10.5px;color:#a2a5a8;letter-spacing:.05em}.app-container{min-height:100vh;display:flex;flex-direction:column;background:#f8fafc}.app-main{flex:1;padding:2rem;max-width:1200px;width:100%;margin:0 auto}.app-footer{text-align:center;padding:.75rem;font-size:.75rem;color:#94a3b8;border-top:1px solid #e2e8f0}.navbar{background:#fff;border-bottom:1px solid #e2e8f0;padding:0 2rem;height:56px;display:flex;align-items:center;gap:2rem}.navbar-brand{display:flex;align-items:center;gap:.5rem;font-weight:700;font-size:1.1rem;color:#1e40af;text-decoration:none}.navbar-links{display:flex;align-items:center;gap:.5rem;flex:1}.nav-link{display:flex;align-items:center;gap:.4rem;padding:.4rem .75rem;border-radius:6px;text-decoration:none;color:#475569;font-size:.9rem;transition:background .15s}.nav-link:hover{background:#f1f5f9;color:#1e293b}.navbar-user{display:flex;align-items:center;gap:1rem;margin-left:auto}.user-name{font-size:.875rem;color:#64748b}.btn-primary{display:inline-flex;align-items:center;gap:.4rem;padding:.5rem 1rem;background:#1e40af;color:#fff;border:none;border-radius:6px;font-size:.875rem;cursor:pointer;text-decoration:none;transition:background .15s}.btn-primary:hover:not(:disabled){background:#1d3a9e}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.btn-primary.full-width{width:100%;justify-content:center;margin-top:1rem}.btn-ghost{display:inline-flex;align-items:center;gap:.4rem;padding:.4rem .75rem;background:transparent;color:#475569;border:1px solid #e2e8f0;border-radius:6px;font-size:.875rem;cursor:pointer;transition:background .15s}.btn-ghost:hover{background:#f1f5f9}.btn-ghost.small{padding:.25rem .5rem;font-size:.8rem}.logout-button{display:inline-flex;align-items:center;gap:.4rem;padding:.4rem .75rem;background:transparent;color:#ef4444;border:1px solid #fecaca;border-radius:6px;font-size:.875rem;cursor:pointer;transition:background .15s}.logout-button:hover{background:#fef2f2}.page{display:flex;flex-direction:column;gap:1.5rem}.page-header{display:flex;align-items:center;gap:1rem}.page-header h2{margin:0;font-size:1.25rem;font-weight:600;color:#1e293b;flex:1}.page-header-right{display:flex;align-items:center;gap:.75rem;margin-left:auto}.card{background:#fff;border:1px solid #e2e8f0;border-radius:10px;padding:1.5rem}.card-title{margin:0 0 1rem;font-size:.9rem;font-weight:600;color:#64748b;text-transform:uppercase;letter-spacing:.05em}.analysis-table{width:100%;border-collapse:collapse;background:#fff;border:1px solid #e2e8f0;border-radius:10px;overflow:hidden;font-size:.875rem}.analysis-table th{padding:.75rem 1rem;text-align:left;font-size:.75rem;font-weight:600;color:#64748b;text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid #e2e8f0;background:#f8fafc}.analysis-table td{padding:.875rem 1rem;border-bottom:1px solid #f1f5f9;color:#334155}.table-row-clickable{cursor:pointer;transition:background .1s}.table-row-clickable:hover{background:#f8fafc}.table-thumbnail{width:48px;height:48px;object-fit:cover;border-radius:6px;border:1px solid #e2e8f0}.table-thumbnail-placeholder{width:48px;height:48px;border-radius:6px;background:#f1f5f9}.badge{display:inline-block;padding:.2rem .6rem;background:#eff6ff;color:#1e40af;border-radius:99px;font-size:.75rem;font-weight:500;text-transform:capitalize}.status-badge{display:inline-flex;align-items:center;gap:.3rem;padding:.2rem .6rem;border-radius:99px;font-size:.75rem;font-weight:500}.status-PENDING,.status-IN_QUEUE{background:#fef9c3;color:#854d0e}.status-IN_PROGRESS{background:#dbeafe;color:#1e40af}.status-COMPLETED{background:#dcfce7;color:#166534}.status-FAILED{background:#fee2e2;color:#991b1b}.status-icon{display:inline-flex}.empty-state{display:flex;flex-direction:column;align-items:center;gap:1rem;padding:4rem 2rem;color:#94a3b8;text-align:center}.new-analysis-layout{display:grid;grid-template-columns:320px 1fr;gap:1.5rem;align-items:start}.type-list{display:flex;flex-direction:column;gap:.5rem}.type-card{display:flex;align-items:flex-start;gap:.75rem;padding:.875rem 1rem;border:1.5px solid #e2e8f0;border-radius:8px;background:#fff;cursor:pointer;text-align:left;transition:border-color .15s,background .15s;width:100%}.type-card:hover:not(.type-card-disabled){border-color:#93c5fd;background:#eff6ff}.type-card-selected{border-color:#1e40af;background:#eff6ff}.type-card-disabled{opacity:.45;cursor:not-allowed}.type-icon{color:#1e40af;flex-shrink:0;margin-top:2px}.type-label{font-weight:600;font-size:.9rem;color:#1e293b;display:flex;align-items:center;gap:.5rem}.type-description{font-size:.8rem;color:#64748b;margin-top:.2rem}.coming-soon{font-size:.7rem;font-weight:500;padding:.1rem .4rem;background:#f1f5f9;color:#94a3b8;border-radius:99px}.drop-zone{border:2px dashed #cbd5e1;border-radius:10px;min-height:200px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:border-color .15s,background .15s;overflow:hidden}.drop-zone:hover{border-color:#93c5fd;background:#f8fafc}.drop-zone-filled{border-style:solid;border-color:#bfdbfe;cursor:default}.drop-zone-prompt{display:flex;flex-direction:column;align-items:center;gap:.5rem;color:#94a3b8;text-align:center;padding:2rem}.drop-zone-prompt .hint{font-size:.8rem}.link-text{color:#1e40af;text-decoration:underline}.image-preview{width:100%;height:100%;max-height:320px;object-fit:contain;background:#0f172a}.file-info{display:flex;align-items:center;justify-content:space-between;padding:.5rem 0;font-size:.875rem;color:#475569}.results-layout{display:grid;grid-template-columns:1fr 220px;gap:1.5rem;align-items:start}.viewer-area{display:flex;flex-direction:column;gap:.75rem}.side-by-side{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.viewer-panel{display:flex;flex-direction:column;gap:.5rem}.viewer-label{font-size:.8rem;font-weight:600;color:#64748b;text-transform:uppercase;letter-spacing:.05em;margin:0}.viewer-image{width:100%;border-radius:8px;display:block;background:#0f172a}.overlay-container{position:relative}.viewer-mask{position:absolute;inset:0;width:100%;border-radius:8px;mix-blend-mode:screen;opacity:.7}.viewer-placeholder{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:200px;background:#f8fafc;border-radius:8px;color:#94a3b8;gap:.75rem}.overlay-toggle{display:inline-flex;align-items:center;gap:.5rem;cursor:pointer;color:#475569;font-size:.875rem;-webkit-user-select:none;user-select:none;align-self:flex-start}.overlay-toggle:hover{color:#1e293b}.legend{background:#fff;border:1px solid #e2e8f0;border-radius:10px;padding:1.25rem;display:flex;flex-direction:column;gap:.5rem;font-size:.875rem}.legend h4{margin:0;font-size:.75rem;font-weight:600;color:#64748b;text-transform:uppercase;letter-spacing:.05em}.legend-item{display:flex;align-items:center;gap:.6rem;cursor:pointer;padding:.3rem .25rem;border-radius:4px;transition:background .1s}.legend-item:hover{background:#f8fafc}.legend-item-hidden{opacity:.35}.legend-swatch{width:14px;height:14px;border-radius:3px;flex-shrink:0}.legend-divider{border:none;border-top:1px solid #e2e8f0;margin:.25rem 0}.info-row{display:flex;justify-content:space-between;font-size:.8rem;color:#475569;gap:.5rem}.info-row span:first-child{color:#94a3b8;flex-shrink:0}.info-row span:last-child{text-align:right;word-break:break-all}.error-text{color:#ef4444;font-size:.875rem;margin:0}.spin{animation:spin 1s linear infinite}.loading-container{display:flex;flex-direction:column;justify-content:center;align-items:center;min-height:100vh;background:linear-gradient(135deg,#1e3a8a,#1e40af);color:#fff;gap:1rem}.loading-spinner{width:48px;height:48px;border:4px solid rgba(255,255,255,.3);border-top:4px solid white;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
