*,*:before,*:after{box-sizing:border-box}:root{--color-bg: #f5f5f7;--color-surface: #ffffff;--color-border: #d1d5db;--color-text: #1f2937;--color-text-secondary: #6b7280;--color-primary: #2563eb;--color-primary-hover: #1d4ed8;--color-ok: #16a34a;--color-pending: #ca8a04;--color-error: #dc2626;--color-warn: #ea580c;--radius: 8px;--shadow: 0 1px 3px rgba(0, 0, 0, .1), 0 1px 2px rgba(0, 0, 0, .06);--color-bg-muted: #fafafa;--color-border-muted: #f0f0f0;--color-bg-light: #f3f4f6;--color-bg-hover: #f3f4f6}[data-theme=dark]{--color-bg: #111827;--color-surface: #1f2937;--color-border: #374151;--color-text: #f3f4f6;--color-text-secondary: #9ca3af;--color-primary: #60a5fa;--color-primary-hover: #3b82f6;--color-ok: #4ade80;--color-pending: #facc15;--color-error: #f87171;--color-warn: #fb923c;--shadow: 0 1px 3px rgba(0, 0, 0, .3), 0 1px 2px rgba(0, 0, 0, .2);--color-bg-muted: #111827;--color-border-muted: #1f2937;--color-bg-light: #374151;--color-bg-hover: #374151}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;background:var(--color-bg);color:var(--color-text);line-height:1.5}.app-header{background:var(--color-surface);border-bottom:1px solid var(--color-border);padding:12px 24px;display:flex;align-items:center;gap:16px;box-shadow:var(--shadow)}.app-header h1{margin:0;font-size:1.25rem;font-weight:600}.app-header .back-link{color:var(--color-primary);text-decoration:none;font-size:.875rem}.app-header .back-link:hover{text-decoration:underline}.app-content{max-width:960px;margin:24px auto;padding:0 16px}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:16px 20px;box-shadow:var(--shadow)}.card+.card{margin-top:12px}.card-row{display:flex;justify-content:space-between;align-items:center;gap:12px}.card-title{font-size:1rem;font-weight:600;margin:0}.card-subtitle{font-size:.85rem;color:var(--color-text-secondary);margin:4px 0 0}.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;border:1px solid var(--color-border);border-radius:var(--radius);font-size:.875rem;font-weight:500;cursor:pointer;background:var(--color-surface);color:var(--color-text);transition:background .15s,border-color .15s;text-decoration:none}.btn:hover{background:#f3f4f6}.btn-primary{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.btn-primary:hover{background:var(--color-primary-hover)}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.btn-danger{color:var(--color-error);border-color:var(--color-error)}.btn-danger:hover{background:#fef2f2}.form-group{margin-bottom:16px}.form-group label{display:block;font-size:.875rem;font-weight:500;margin-bottom:4px}.form-group input,.form-group textarea{width:100%;padding:8px 12px;border:1px solid var(--color-border);border-radius:var(--radius);font-size:.875rem;font-family:inherit}.form-group textarea{min-height:80px;resize:vertical}.status-badge{display:inline-block;padding:2px 8px;border-radius:12px;font-size:.75rem;font-weight:600;white-space:nowrap}.status-ok{background:#dcfce7;color:#166534}.status-pending{background:#fef9c3;color:#854d0e}.status-error{background:#fee2e2;color:#991b1b}.status-warn{background:#ffedd5;color:#9a3412}.upload-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:100}.upload-overlay-content{background:var(--color-surface);border-radius:var(--radius);padding:24px;min-width:400px;max-width:600px;max-height:80vh;overflow-y:auto;box-shadow:0 20px 60px #0000004d}.upload-overlay-content h2{margin:0 0 16px;font-size:1.1rem}.upload-progress-item{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid #f3f4f6}.upload-progress-item:last-child{border-bottom:none}.upload-progress-item .file-icon{width:24px;height:24px;flex-shrink:0}.phase-indicators{display:flex;align-items:center;gap:4px}.phase-step{display:flex;align-items:center;gap:4px;font-size:.8rem;color:var(--color-text-secondary);padding:4px 10px;border-radius:20px;background:#f3f4f6}.phase-step.phase-active{background:#eff6ff;color:var(--color-primary);font-weight:600}.phase-step.phase-done{background:#dcfce7;color:#166534}.phase-step.phase-pending{opacity:.5}.phase-number{font-size:.85rem;line-height:1}@media(max-width:640px){.phase-indicators{flex-wrap:wrap}}.drop-zone{border:2px dashed var(--color-border);border-radius:var(--radius);padding:32px 16px;text-align:center;cursor:pointer;transition:border-color .15s,background .15s}.drop-zone:hover,.drop-zone.drag-over{border-color:var(--color-primary);background:#eff6ff}.drop-zone p{margin:0;color:var(--color-text-secondary);font-size:.875rem}.file-list{margin-top:12px}.file-list-item{display:flex;align-items:center;gap:8px;padding:6px 0;font-size:.875rem}.file-list-item .remove-file{color:var(--color-error);cursor:pointer;background:none;border:none;font-size:1.1rem;padding:0 4px}.doc-table{width:100%;border-collapse:collapse;font-size:.875rem}.doc-table th,.doc-table td{text-align:left;padding:10px 8px;border-bottom:1px solid #f3f4f6}.doc-table th{font-weight:600;color:var(--color-text-secondary);font-size:.8rem;text-transform:uppercase;letter-spacing:.05em}.empty-state{text-align:center;padding:48px 16px;color:var(--color-text-secondary)}.empty-state p{font-size:1rem;margin:0 0 16px}.spinner{display:inline-block;width:16px;height:16px;border:2px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:spin .6s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.banner{padding:10px 14px;border-radius:var(--radius);font-size:.875rem;margin-bottom:12px}.banner-error{background:#fee2e2;color:#991b1b;border:1px solid #fecaca}.banner-success{background:#dcfce7;color:#166534;border:1px solid #bbf7d0}@media(max-width:640px){.app-content{padding:0 8px}.upload-overlay-content{min-width:0;width:calc(100vw - 32px);max-height:calc(100vh - 32px);padding:16px}.app-header{align-items:flex-start;flex-direction:column;gap:10px}.app-header>div:first-child{flex-wrap:wrap;gap:8px!important}.app-header h1{font-size:1.25rem}.header-nav{width:100%;justify-content:space-between}.card{padding:14px}.card-row{align-items:flex-start}.dossier-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}.dossier-actions .btn{justify-content:center;padding-inline:8px}.doc-table{display:block;overflow-x:auto;white-space:nowrap}.file-list-item>span:nth-child(2),.upload-progress-item>span:nth-child(2){min-width:0;overflow-wrap:anywhere}}.app-header{display:flex;justify-content:space-between;align-items:center}.header-nav{display:flex;align-items:center;gap:8px}.nav-link{color:var(--color-primary);text-decoration:none;font-size:.85rem;padding:4px 10px;border-radius:var(--radius);border:1px solid var(--color-border);transition:background .15s}.nav-link:hover{background:#f3f4f6}.report-group-card{border-left:4px solid transparent}.report-group-header{display:flex;align-items:center;gap:12px;margin-bottom:12px;padding-bottom:12px;border-bottom:1px solid var(--color-border)}.report-category-icon{width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;font-size:1rem;font-weight:700;flex-shrink:0}.report-group-title{margin:0;font-size:1.1rem;font-weight:600}.report-empty-group{text-align:center;color:var(--color-text-secondary);font-size:.875rem;padding:16px}.report-item{padding:12px;margin-bottom:8px;border-radius:var(--radius);background:#fafafa;border:1px solid #f0f0f0}.report-item-header{display:flex;align-items:center;gap:8px;margin-bottom:8px}.report-confidence-badge{font-size:.7rem;font-weight:600;padding:2px 8px;border-radius:10px;white-space:nowrap}.report-category-tag{font-size:.7rem;font-weight:600;padding:2px 8px;border-radius:10px;border:1px solid;white-space:nowrap}.report-item-content{margin:0 0 8px;font-size:.9rem;line-height:1.5;color:var(--color-text)}.report-item-evidence{display:flex;align-items:center;gap:8px;font-size:.8rem;flex-wrap:wrap}.evidence-label{color:var(--color-text-secondary);font-weight:500}.evidence-link{color:var(--color-primary);text-decoration:none;cursor:pointer}.evidence-link:hover{text-decoration:underline}.evidence-page{color:var(--color-text-secondary);background:#f3f4f6;padding:1px 6px;border-radius:4px;font-size:.75rem}.evidence-source{color:var(--color-text-secondary);font-style:italic;font-size:.75rem}.prompt-form-card{border:2px solid var(--color-primary)}.form-row{display:flex;gap:12px}.version-list{display:flex;flex-direction:column;gap:8px}.version-item{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;border-radius:var(--radius);background:#fafafa;border:1px solid #f0f0f0}.version-item-main{display:flex;align-items:center;gap:10px}.version-badge{font-weight:700;font-size:.85rem;color:var(--color-primary);background:#eff6ff;padding:2px 10px;border-radius:10px}.version-model{font-size:.8rem;color:var(--color-text-secondary);font-family:monospace}.version-item-actions{display:flex;gap:6px}.btn-sm{padding:4px 10px;font-size:.8rem}.prompt-textarea{width:100%;min-height:200px;padding:10px 12px;border:1px solid var(--color-border);border-radius:var(--radius);font-size:.85rem;font-family:SF Mono,Fira Code,Fira Mono,monospace;line-height:1.5;resize:vertical}.prompt-textarea:focus{outline:2px solid var(--color-primary);outline-offset:-1px}[data-theme=dark] .status-ok{background:#064e3b;color:#6ee7b7}[data-theme=dark] .status-pending{background:#422006;color:#fde047}[data-theme=dark] .status-error{background:#3b0a0a;color:#fca5a5}[data-theme=dark] .status-warn{background:#3b1a0a;color:#fdba74}[data-theme=dark] .banner-error{background:#3b0a0a;color:#fca5a5;border-color:#5f1a1a}[data-theme=dark] .banner-success{background:#064e3b;color:#6ee7b7;border-color:#0b6b4a}[data-theme=dark] .report-item,[data-theme=dark] .version-item{background:var(--color-surface);border-color:var(--color-border)}[data-theme=dark] .version-badge{background:#1e3a5f;color:#93c5fd}[data-theme=dark] .upload-progress-item,[data-theme=dark] .doc-table th,[data-theme=dark] .doc-table td{border-color:var(--color-border)}[data-theme=dark] .btn:hover{background:var(--color-bg-hover)}[data-theme=dark] .btn-danger:hover{background:#3b0a0a}[data-theme=dark] .drop-zone.drag-over,[data-theme=dark] .drop-zone:hover{background:#1e3a5f}[data-theme=dark] .phase-step{background:var(--color-bg-light)}[data-theme=dark] .phase-step.phase-active{background:#1e3a5f}[data-theme=dark] .phase-step.phase-done{background:#064e3b;color:#6ee7b7}[data-theme=dark] .evidence-page{background:var(--color-bg-light)}[data-theme=dark] .nav-link:hover{background:var(--color-bg-hover)}[data-theme=dark] .upload-overlay-content{background:var(--color-surface)}[data-theme=dark] .upload-overlay{background:#0009}.theme-toggle{border:1px solid var(--color-border);min-width:36px;display:flex;align-items:center;justify-content:center}.report-severity-badge{font-size:.7rem;font-weight:600;padding:2px 8px;border-radius:10px;white-space:nowrap;text-transform:capitalize}.severity-high{background:#fee2e2;color:#991b1b}.severity-medium{background:#ffedd5;color:#9a3412}.severity-low{background:#fef9c3;color:#854d0e}.severity-critical{background:#fecaca;color:#7f1d1d;font-weight:700}[data-theme=dark] .severity-high{background:#3b0a0a;color:#fca5a5}[data-theme=dark] .severity-medium{background:#3b1a0a;color:#fdba74}[data-theme=dark] .severity-low{background:#422006;color:#fde047}[data-theme=dark] .severity-critical{background:#4a0a0a;color:#f87171}.report-rule-tag{font-size:.7rem;font-weight:500;padding:2px 8px;border-radius:10px;white-space:nowrap;background:#f3f4f6;color:var(--color-text-secondary)}[data-theme=dark] .report-rule-tag{background:var(--color-bg-light)}.vertex-json-upload{display:flex;align-items:center;gap:8px;margin-bottom:8px}.vertex-upload-btn{cursor:pointer;display:inline-flex;align-items:center;gap:6px;white-space:nowrap}.vertex-current-key{display:flex;align-items:center;gap:8px;margin-top:4px;flex-wrap:wrap}.vertex-json-preview{background:#1e293b;color:#e2e8f0;padding:12px;border-radius:var(--radius);font-size:.75rem;line-height:1.4;overflow-x:auto;max-height:300px;overflow-y:auto;white-space:pre-wrap;word-break:break-all}[data-theme=dark] .vertex-json-preview{background:#0f172a;color:#cbd5e1}
