:root{color:#1a1f16;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;background:#f3f0e8;font-family:Segoe UI,system-ui,-apple-system,sans-serif;font-weight:400;line-height:1.5}*{box-sizing:border-box}body{min-height:100vh;margin:0}#root{min-height:100vh}.auth-page{background:#f3f0e8;place-items:center;min-height:100vh;padding:1.5rem;display:grid}.auth-card{background:#fff;border:1px solid #ddd7c8;border-radius:14px;flex-direction:column;gap:.85rem;width:min(100%,420px);padding:1.5rem;display:flex;box-shadow:0 8px 24px #24301914}.auth-card h1{margin:0;font-size:1.35rem}.auth-subtitle{color:#5a6650;margin:0 0 .25rem}.auth-card label{color:#3a4530;flex-direction:column;gap:.35rem;font-size:.82rem;font-weight:600;display:flex}.auth-card input{border:1px solid #d8d0c0;border-radius:8px;padding:.55rem .65rem;font-size:.9rem;font-weight:400}.auth-card button[type=submit]{color:#fff;cursor:pointer;background:#3d5a28;border:none;border-radius:8px;margin-top:.25rem;padding:.65rem;font-weight:600}.auth-card button[type=submit]:disabled{opacity:.6;cursor:not-allowed}.auth-hint{color:#6a7560;margin:0;font-size:.78rem;line-height:1.45}.auth-error{color:#8b1e1e;margin:0;font-size:.85rem}.auth-success{color:#1f5f1f;margin:0;font-size:.85rem}.user-management{position:relative}.user-panel{z-index:20;width:min(92vw,360px);padding:1rem;position:absolute;top:calc(100% + .5rem);right:0}.user-panel h3,.user-panel h4{margin:0 0 .75rem}.user-list{max-height:160px;margin:0 0 1rem;padding:0;list-style:none;overflow:auto}.user-list li{border-bottom:1px solid #ece7db;flex-direction:column;gap:.15rem;padding:.5rem 0;font-size:.82rem;display:flex}.user-list li span{color:#6b7563}.user-form{border-top:1px solid #ece7db;flex-direction:column;gap:.55rem;padding-top:.75rem;display:flex}.user-form label{flex-direction:column;gap:.25rem;font-size:.78rem;font-weight:600;display:flex}.user-form input{border:1px solid #d8d0c0;border-radius:8px;padding:.45rem .55rem;font-weight:400}.user-form button{color:#fff;cursor:pointer;background:#3d5a28;border:none;border-radius:8px;padding:.5rem;font-weight:600}.user-badge{color:#5a6650;background:#faf9f6;border:1px solid #ddd7c8;border-radius:8px;padding:.45rem .65rem;font-size:.82rem}.auth-loading{color:#5a6650;place-items:center;min-height:100vh;display:grid}.app{min-height:100vh;padding:1.5rem}.app-header{justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1.5rem;display:flex}.eyebrow{letter-spacing:.08em;text-transform:uppercase;color:#6b7a55;margin:0 0 .25rem;font-size:.75rem;font-weight:600}.app-header h1{color:#243019;margin:0;font-size:1.75rem}.subtitle{color:#5a6650;margin:.35rem 0 0}.docs-link{color:#3d5a28;background:#fff;border:1px solid #c8d4b8;border-radius:8px;padding:.5rem .75rem;font-weight:600;text-decoration:none}.docs-link:hover{background:#eef3e8}.layout{grid-template-columns:340px 1fr;align-items:start;gap:1rem;display:grid}.panel{background:#fff;border:1px solid #ddd7c8;border-radius:14px;min-width:0;padding:1rem;box-shadow:0 8px 24px #2430190f}.detail-panel{overflow:hidden}.upload-zone{text-align:center;cursor:pointer;background:#f8faf4;border:2px dashed #b8c9a3;border-radius:12px;padding:2rem 1rem;transition:border-color .15s,background .15s}.upload-zone:hover,.upload-zone.dragging{background:#eef5e6;border-color:#6b8f4e}.upload-zone.disabled{opacity:.6;cursor:not-allowed}.upload-icon{color:#6b8f4e;margin-bottom:.5rem;font-size:2rem}.upload-title{margin:0;font-weight:600}.upload-hint{color:#6b7563;margin:.35rem 0 0;font-size:.85rem}.upload-progress{color:#3d5a28;margin:.65rem 0 0;font-size:.82rem;font-weight:600}.jobs-list{margin-top:1.25rem}.jobs-list h2,.json-section h3{color:#3a4530;margin:0 0 .75rem;font-size:.95rem}.empty-state,.empty-detail,.empty-log{color:#6b7563;font-size:.9rem}.job-card{cursor:pointer;text-align:left;background:#faf9f6;border:1px solid #e5e0d4;border-radius:10px;grid-template-columns:56px 1fr auto;align-items:center;gap:.65rem;width:100%;margin-bottom:.5rem;padding:.65rem;display:grid}.job-card.selected{background:#f2f7eb;border-color:#6b8f4e}.job-thumb{object-fit:cover;border-radius:8px;width:56px;height:56px}.placeholder-thumb{color:#6b7563;text-transform:uppercase;background:#ece7db;justify-content:center;align-items:center;font-size:.75rem;font-weight:600;display:flex}.detail-preview.placeholder-thumb{border:1px solid #e5e0d4;border-radius:10px;width:120px;height:120px}.import-form{border-top:1px solid #ece7db;margin-top:1rem;padding-top:1rem}.import-form label{color:#3a4530;margin-bottom:.4rem;font-size:.82rem;font-weight:600;display:block}.import-row{gap:.5rem;display:flex}.import-row input{border:1px solid #d8d0c0;border-radius:8px;flex:1;min-width:0;padding:.5rem .65rem;font-size:.82rem}.import-row button{color:#fff;cursor:pointer;background:#3d5a28;border:none;border-radius:8px;padding:.5rem .85rem;font-weight:600}.import-row button:disabled{opacity:.5;cursor:not-allowed}.db-error{margin-bottom:1rem}.job-meta{flex-direction:column;gap:.15rem;min-width:0;display:flex}.job-name{white-space:nowrap;text-overflow:ellipsis;font-size:.85rem;font-weight:600;overflow:hidden}.job-time,.job-duration{color:#6b7563;font-size:.75rem}.job-status{font-size:.75rem;font-weight:600}.job-status.status-uploading,.job-status.status-processing{color:#b8860b}.job-status.status-done{color:#3d7a3d}.job-status.status-error{color:#b33a3a}.job-status.status-timed_out{color:#8a5a00}.verdict-timeout{color:#8a5a00;background:#fff0d6}.timeout-banner{color:#7a4a00;background:#fff8ee;border:1px solid #f0d090;border-radius:8px;margin-bottom:1rem;padding:.85rem 1rem;font-size:.9rem}.toolbar-actions button.primary{color:#fff;background:#3d5a28;border-color:#3d5a28}.verdict-badge{text-transform:uppercase;letter-spacing:.04em;border-radius:999px;padding:.25rem .45rem;font-size:.7rem;font-weight:700}.verdict-positivo{color:#1f5f1f;background:#d8f0d0}.verdict-negativo{color:#8b1e1e;background:#fde2e2}.verdict-erro{color:#8a5a00;background:#fff0d6}.verdict-indeterminado{color:#555;background:#e8e8e8}.detail-header{gap:1rem;margin-bottom:1rem;display:flex}.detail-preview{object-fit:cover;border:1px solid #e5e0d4;border-radius:10px;width:120px;height:120px}.detail-header h2{margin:0 0 .35rem;font-size:1.1rem}.task-id{color:#5a6650;word-break:break-all;margin:0 0 .35rem;font-size:.8rem}.task-id span{color:#3a4530;font-weight:700}.detail-status{color:#5a6650;margin:0;font-size:.85rem}.verdict-banner{border-radius:10px;flex-wrap:wrap;align-items:center;gap:.75rem;margin-bottom:1rem;padding:1rem 1.25rem;font-size:1.25rem;font-weight:700;display:flex}.avariado-badge{background:#0000001f;border-radius:999px;padding:.25rem .65rem;font-size:.9rem;font-weight:600}.result-summary,.classes-section{margin-bottom:1rem}.classes-table-wrap{border:1px solid #e5e0d4;border-radius:8px;max-width:100%;overflow-x:auto}.classes-table{border-collapse:collapse;width:100%;font-size:.82rem}.classes-table.compact{table-layout:fixed;font-size:.72rem}.classes-table.compact th,.classes-table.compact td{text-overflow:ellipsis;white-space:nowrap;padding:.3rem .4rem;overflow:hidden}.classes-table.compact th:first-child,.classes-table.compact td:first-child{text-align:center;width:2rem}.classes-table.compact th:nth-child(2),.classes-table.compact td:nth-child(2){width:5.5rem}.classes-table.compact th:nth-child(3),.classes-table.compact td:nth-child(3),.classes-table.compact th:nth-child(6),.classes-table.compact td:nth-child(6),.classes-table.compact th:nth-child(4),.classes-table.compact td:nth-child(4){text-align:right;width:2.75rem}.classes-table.compact th:nth-child(5),.classes-table.compact td:nth-child(5){text-align:right;width:3.25rem}.classes-table.compact .class-name{font-size:.7rem}.classes-table.compact td{font-variant-numeric:tabular-nums}.classes-table th,.classes-table td{text-align:left;border-bottom:1px solid #ece7db;padding:.5rem .65rem}.classes-table th{color:#3a4530;background:#f5f2eb;font-weight:600}.classes-table tr.has-defect td:nth-child(5){color:#8b1e1e;font-weight:700}.classes-table tr:last-child td{border-bottom:none}.log-details{background:#faf9f6;border:1px solid #e5e0d4;border-radius:8px;min-width:0;margin-bottom:1rem;padding:.5rem .75rem}.log-details summary{cursor:pointer;color:#3a4530;font-weight:600}.collapsible-pre{background:#faf9f6;border:1px solid #e5e0d4;border-radius:8px;min-width:0;margin-bottom:.75rem;padding:.5rem .75rem}.collapsible-pre summary{cursor:pointer;color:#3a4530;margin-bottom:.35rem;font-size:.9rem;font-weight:600}.scroll-pre{background:#1e2418;border:1px solid #2a3224;border-radius:8px;max-width:100%;overflow:auto}.scroll-pre pre{color:#d8e8c8;white-space:pre;background:0 0;width:max-content;min-width:100%;margin:0;padding:.65rem .75rem;font-size:.72rem;line-height:1.55}.verdict-banner.verdict-positivo{color:#1a4d1a;background:linear-gradient(135deg,#d8f0d0,#b8e0a8);border:2px solid #6b8f4e}.verdict-banner.verdict-negativo{color:#7a1515;background:linear-gradient(135deg,#fde2e2,#f5b8b8);border:2px solid #c44}.verdict-banner.verdict-erro{color:#7a4a00;background:linear-gradient(135deg,#fff0d6,#ffe0a8);border:2px solid #d4a017}.verdict-banner.verdict-indeterminado{color:#444;background:#f0f0f0;border:2px solid #bbb}.error-box{background:#fff8ee;border:1px solid #f0d090;border-radius:8px;margin-bottom:1rem;padding:.75rem 1rem;font-size:.85rem}.error-box p{word-break:break-word;margin:.35rem 0 0}.json-section{min-width:0;margin-bottom:1rem}.activity-log-scroll{background:#faf9f6;border:1px solid #e5e0d4;border-radius:8px;max-width:100%;max-height:240px;padding:.5rem;overflow:auto}.activity-log-scroll .activity-log pre{color:#d8e8c8;white-space:pre;background:#1e2418;border-radius:6px;width:max-content;min-width:100%;margin:0;padding:.5rem .65rem;font-size:.72rem;line-height:1.5}.activity-log-scroll .activity-log li:last-child{margin-bottom:0}.activity-log{margin:0;padding:0;list-style:none}.activity-log li{margin-bottom:.75rem}.log-header{color:#5a6650;justify-content:space-between;margin-bottom:.35rem;font-size:.8rem;display:flex}.log-status{font-weight:600}.header-actions{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.ghost-btn{color:#3d5a28;cursor:pointer;background:#fff;border:1px solid #c8d4b8;border-radius:8px;padding:.5rem .75rem;font-weight:600}.ghost-btn:disabled{opacity:.5;cursor:not-allowed}.ghost-btn.danger{color:#8b1e1e;border-color:#e8b4b4}.stats-bar{color:#5a6650;background:#fff;border:1px solid #ddd7c8;border-radius:10px;flex-wrap:wrap;gap:1rem;margin-bottom:1rem;padding:.75rem 1rem;font-size:.85rem;display:flex}.stat-positivo strong{color:#1f5f1f}.stat-negativo strong{color:#8b1e1e}.jobs-list-header{justify-content:space-between;align-items:center;margin-bottom:.5rem;display:flex}.search-input{border:1px solid #d8d0c0;border-radius:8px;width:100%;margin-bottom:.65rem;padding:.5rem .65rem;font-size:.82rem}.job-filters{flex-wrap:wrap;gap:.35rem;margin-bottom:.75rem;display:flex}.job-filters button{cursor:pointer;background:#faf9f6;border:1px solid #d8d0c0;border-radius:999px;padding:.3rem .55rem;font-size:.75rem}.job-filters button.active{color:#fff;background:#3d5a28;border-color:#3d5a28}.detail-header-content{flex:1;min-width:0}.job-toolbar{margin-top:.75rem}.toolbar-actions{flex-wrap:wrap;gap:.4rem;display:flex}.toolbar-actions button{cursor:pointer;background:#fff;border:1px solid #d8d0c0;border-radius:8px;padding:.4rem .65rem;font-size:.78rem;font-weight:600}.toolbar-actions button:disabled{opacity:.5;cursor:not-allowed}.toolbar-actions button.danger{color:#8b1e1e;border-color:#e8b4b4}.toolbar-feedback{color:#3d5a28;margin:.4rem 0 0;font-size:.78rem;font-weight:600}.import-force{color:#5a6650;align-items:center;gap:.4rem;margin-top:.5rem;font-size:.78rem;display:flex}@media (width<=900px){.layout{grid-template-columns:1fr}.app-header{flex-direction:column}}
