:root{--bg:#0b1020;--bg-alt:#111831;--bg-card:#151d3a;--border:#1f2a4d;--text:#e6eaf5;--text-dim:#8a94b8;--accent:#0f8;--accent-2:#4f8cff;--danger:#ef4444;--warn:#f59e0b;--ok:#22c55e;--mono:ui-monospace, "Cascadia Code", Consolas, monospace}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Inter,sans-serif;font-size:14px}button{font:inherit;color:inherit;border:1px solid var(--border);cursor:pointer;background:0 0;border-radius:6px;padding:6px 12px;transition:all .15s}button:hover{background:var(--bg-card);border-color:var(--accent)}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:var(--bg)}::-webkit-scrollbar-thumb{background:var(--border);border-radius:5px}::-webkit-scrollbar-thumb:hover{background:#2d3a66}.app{grid-template-columns:320px 1fr;height:100vh;display:grid;overflow:hidden}.sidebar{background:var(--bg-alt);border-right:1px solid var(--border);flex-direction:column;display:flex;overflow:hidden}.nav-section{border-bottom:1px solid var(--border);padding:12px 0}.nav-brand{padding:16px 16px 12px}.nav-brand h1{color:var(--accent);font-size:16px;font-family:var(--mono);letter-spacing:1px;margin:0;font-weight:700}.nav-brand .icon-btn{color:#475569;cursor:pointer;opacity:.6;background:0 0;border:none;border-radius:4px;padding:4px 6px;font-size:14px;transition:all .15s}.nav-brand .icon-btn:hover{opacity:1;color:var(--danger);background:#ef444414}.nav-brand .user-name{color:#94a3b8;margin-top:4px;font-size:13px;font-weight:500}.section-label{text-transform:uppercase;letter-spacing:1px;color:#475569;font-size:10px;font-family:var(--mono);padding:2px 16px 6px}.nav-item{cursor:pointer;color:#94a3b8;border-left:3px solid #0000;align-items:center;gap:10px;padding:9px 16px;font-size:13px;transition:all .15s;display:flex}.nav-item:hover{background:var(--bg-card);color:#e2e8f0}.nav-item.active{border-left-color:var(--accent);color:var(--accent);background:#00ff880a;font-weight:500}.nav-item.dim{opacity:.55}.nav-item.dim:hover{opacity:1}.nav-item .nav-icon{text-align:center;flex-shrink:0;width:18px;font-size:14px}.search{border-bottom:1px solid var(--border);padding:10px 16px}.search input{background:var(--bg);border:1px solid var(--border);width:100%;color:var(--text);font:inherit;border-radius:6px;outline:none;padding:8px 10px;font-size:12px}.search input:focus{border-color:var(--accent)}.exam-list{flex:1;padding:4px 0;overflow-y:auto}.exam-group{color:#475569;text-transform:uppercase;letter-spacing:1px;font-size:10px;font-family:var(--mono);padding:10px 16px 4px}.exam-item{cursor:pointer;border-left:3px solid #0000;justify-content:space-between;align-items:center;gap:8px;padding:7px 16px;font-size:12px;display:flex}.exam-item:hover{background:var(--bg-card)}.exam-item.active{background:var(--bg-card);border-left-color:var(--accent)}.exam-item .name{text-overflow:ellipsis;white-space:nowrap;color:#cbd5e1;flex:1;overflow:hidden}.exam-item .count{color:var(--text-dim);font-size:10px;font-family:var(--mono)}.exam-item .dot{border-radius:50%;flex-shrink:0;width:7px;height:7px}.sidebar-footer{border-top:1px solid var(--border);padding:0;display:flex}.sidebar-footer .footer-btn{color:#64748b;cursor:pointer;background:0 0;border:none;border-radius:0;flex:1;justify-content:center;align-items:center;gap:6px;padding:10px 8px;font-size:11px;transition:all .15s;display:flex}.sidebar-footer .footer-btn:hover{color:#e2e8f0;background:var(--bg-card)}.sidebar-footer .footer-divider{background:var(--border);width:1px}.main{padding:24px 32px;overflow-y:auto}.main h2{margin:0 0 4px;font-size:24px}.main .subtitle{color:var(--text-dim);margin-bottom:20px;font-size:13px}.cards{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;margin-bottom:24px;display:grid}.card{background:var(--bg-card);border:1px solid var(--border);border-radius:8px;padding:16px}.card .label{color:var(--text-dim);text-transform:uppercase;letter-spacing:1px;font-size:11px;font-family:var(--mono);margin-bottom:6px}.card .value{font-size:24px;font-weight:600;font-family:var(--mono)}.card .sub{color:var(--text-dim);margin-top:4px;font-size:12px}.card.ok{border-color:#1d5c35}.card.alto{border-color:#6d2424}.card.baixo{border-color:#6d5024}.badge{font-size:11px;font-family:var(--mono);text-transform:uppercase;letter-spacing:.5px;border-radius:10px;padding:2px 8px;display:inline-block}.badge.normal{color:#4ade80;background:#22c55e26}.badge.alto{color:#f87171;background:#ef444426}.badge.baixo{color:#fbbf24;background:#f59e0b26}.badge.desconhecido{color:#94a3b8;background:#64748b26}.chart-card{background:var(--bg-card);border:1px solid var(--border);border-radius:8px;margin-bottom:20px;padding:20px}.chart-card h3{margin:0 0 4px;font-size:16px}.chart-card .desc{color:var(--text-dim);margin-bottom:16px;font-size:12px}.chart-legend{color:var(--text-dim);flex-wrap:wrap;gap:16px;margin-top:8px;font-size:12px;display:flex}.chart-legend span{align-items:center;gap:6px;display:flex}.chart-legend .swatch{width:12px;height:3px}.history-table{border-collapse:collapse;width:100%;font-size:13px}.history-table th,.history-table td{text-align:left;border-bottom:1px solid var(--border);padding:10px 8px}.history-table th{text-transform:uppercase;letter-spacing:1px;color:var(--text-dim);font-size:11px;font-family:var(--mono)}.history-table td.val{font-family:var(--mono);font-weight:600}.history-table tr:hover td{background:#ffffff05}.alerts{background:var(--bg-card);border:1px solid var(--border);border-radius:8px;margin-bottom:20px;padding:20px}.alerts h3{margin:0 0 12px;font-size:16px}.alert-item{border-bottom:1px solid var(--border);cursor:pointer;justify-content:space-between;padding:8px 0;font-size:13px;display:flex}.alert-item:last-child{border-bottom:none}.alert-item:hover{color:var(--accent)}.loading,.empty{text-align:center;color:var(--text-dim);font-family:var(--mono);padding:40px}.delta{font-size:11px;font-family:var(--mono);margin-left:6px}.delta.up{color:var(--danger)}.delta.down{color:var(--warn)}.delta.flat{color:var(--text-dim)}.login-screen{background:radial-gradient(ellipse at top, #00ff880d, transparent 60%), var(--bg);justify-content:center;align-items:center;min-height:100vh;display:flex}.login-box{background:var(--bg-card);border:1px solid var(--border);border-radius:12px;width:420px;max-width:90vw;padding:40px;box-shadow:0 20px 60px #0006}.login-logo{font-family:var(--mono);color:var(--accent);text-align:center;margin-bottom:4px;font-size:22px}.login-sub{text-align:center;color:var(--text-dim);margin-bottom:32px;font-size:12px}.field{margin-bottom:16px}.field label{color:var(--text-dim);text-transform:uppercase;letter-spacing:1px;font-size:11px;font-family:var(--mono);margin-bottom:6px;display:block}.field input{background:var(--bg);border:1px solid var(--border);width:100%;color:var(--text);font:inherit;border-radius:6px;outline:none;padding:10px 12px}.field input:focus{border-color:var(--accent)}input:-webkit-autofill{caret-color:var(--text);transition:background-color 5000s ease-in-out;-webkit-box-shadow:0 0 0 30px var(--bg) inset!important;-webkit-text-fill-color:var(--text)!important}input:-webkit-autofill:hover{caret-color:var(--text);transition:background-color 5000s ease-in-out;-webkit-box-shadow:0 0 0 30px var(--bg) inset!important;-webkit-text-fill-color:var(--text)!important}input:-webkit-autofill:focus{caret-color:var(--text);transition:background-color 5000s ease-in-out;-webkit-box-shadow:0 0 0 30px var(--bg) inset!important;-webkit-text-fill-color:var(--text)!important}.field select{background:var(--bg);border:1px solid var(--border);width:100%;color:var(--text);font:inherit;border-radius:6px;outline:none;padding:10px 12px}.field select:focus{border-color:var(--accent)}.btn-primary{background:var(--accent);color:#052b15;cursor:pointer;border:none;border-radius:6px;width:100%;margin-top:4px;padding:12px;font-size:14px;font-weight:600}.btn-primary:hover{filter:brightness(1.1)}.btn-primary:disabled{opacity:.5;cursor:wait}.login-switch{text-align:center;color:var(--text-dim);margin-top:20px;font-size:13px}.login-switch a{color:var(--accent);cursor:pointer;text-decoration:underline}.error-box{color:#fca5a5;background:#ef44441a;border:1px solid #ef444466;border-radius:6px;margin-bottom:12px;padding:10px 12px;font-size:13px}.dropzone{border:2px dashed var(--border);text-align:center;cursor:pointer;background:var(--bg-card);border-radius:12px;margin-bottom:20px;padding:48px 20px;transition:all .2s}.dropzone:hover,.dropzone.dragging{border-color:var(--accent);background:#00ff8808}.dropzone-icon{margin-bottom:12px;font-size:48px}.dropzone-text{margin-bottom:6px;font-size:15px}.dropzone-hint{color:var(--text-dim);font-size:12px;font-family:var(--mono)}.modal-overlay{z-index:1000;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#000000b3;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--bg-card);border:1px solid var(--border);border-radius:12px;width:460px;max-width:92vw;padding:28px;box-shadow:0 20px 60px #0009}.modal-title{margin:0 0 12px;font-size:18px}.modal-title.danger{color:#f87171}.modal-body{color:var(--text-dim);font-size:14px;line-height:1.5}.modal-body code{background:var(--bg);border:1px solid var(--border);font-family:var(--mono);color:var(--accent);border-radius:4px;padding:1px 6px}.modal-actions{justify-content:flex-end;gap:10px;margin-top:20px;display:flex}.btn-danger{background:var(--danger);color:#fff;cursor:pointer;border:none;border-radius:6px;padding:10px 18px;font-weight:600}.btn-danger:hover{filter:brightness(1.1)}.btn-danger:disabled{opacity:.4;cursor:not-allowed}.report{max-width:900px}.report-header{justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:16px;display:flex}.report-header h1{margin:0 0 6px;font-size:22px}.report-meta{color:var(--text-dim);margin-bottom:2px;font-size:12px}.report-meta strong{color:var(--text)}.report-legend{color:var(--text-dim);border-bottom:1px solid var(--border);gap:14px;margin-bottom:14px;padding-bottom:10px;font-size:11px;display:flex}.report-legend span{align-items:center;gap:5px;display:flex}.report-legend .swatch{border-radius:2px;width:10px;height:10px;display:inline-block}.report-grid{grid-template-columns:1fr 1fr;gap:4px 18px;display:grid}.report-row{border-bottom:1px dotted var(--border);grid-template-columns:110px 140px 1fr auto;align-items:center;gap:8px;padding:4px 0;font-size:11px;display:grid}.report-name{white-space:nowrap;text-overflow:ellipsis;text-transform:uppercase;font-size:10px;font-weight:600;overflow:hidden}.report-chart{flex-direction:column;align-items:center;display:flex}.sparkline{display:block}.report-dates{width:140px;color:var(--text-dim);font-size:7px;font-family:var(--mono);justify-content:space-between;margin-top:1px;display:flex}.report-value{font-family:var(--mono);text-align:right;white-space:nowrap;font-size:10px}.report-value .v{font-weight:700}.report-value .u{color:var(--text-dim);margin-left:3px;font-size:9px}.report-badge{padding:1px 6px!important;font-size:9px!important}@media print{@page{size:A4;margin:10mm 8mm}html,body,#root,.app,.main{color:#000!important;background:#fff!important;height:auto!important;display:block!important;overflow:visible!important}.app{grid-template-columns:1fr!important}.sidebar,.no-print{display:none!important}.main{padding:0!important;overflow:visible!important}.report{max-width:100%!important}.report-header h1{font-size:16pt;color:#000!important}.report-meta,.report-meta strong{color:#222!important}.report-meta{font-size:9pt}.report-legend{margin-bottom:8px;padding-bottom:6px;font-size:8pt;color:#444!important;border-color:#ccc!important}.report-grid{grid-template-columns:1fr 1fr;gap:2px 14px}.report-row{page-break-inside:avoid;padding:2px 0;border-bottom:1px dotted #bbb!important}.report-name{font-size:8pt;color:#000!important}.report-chart{color:#333!important}.sparkline path{stroke:#333!important}.report-value{font-size:8pt;color:#000!important}.report-value .u{color:#555!important}.badge.normal{border:1px solid #86efac;color:#15803d!important;background:#e6f7ea!important}.badge.alto{border:1px solid #fca5a5;color:#b91c1c!important;background:#fde8e8!important}.badge.baixo{border:1px solid #fcd34d;color:#a16207!important;background:#fef3c7!important}.badge.desconhecido{border:1px solid #cbd5e1;color:#475569!important;background:#f1f5f9!important}}
