:root{--bg: #f4f5f2;--surface: #ffffff;--surface-alt: #eef0ec;--divider: #d8dcd5;--ink: #14181a;--ink-2: #4a5157;--ink-3: #7a8188;--ink-invert: #f4f5f2;--struct: #0f1416;--erro: #9c2b1c;--erro-bg: #fbeceb;--aviso: #a86a08;--aviso-bg: #fbf1dc;--sucesso: #3a6b34;--sucesso-bg: #e9f0e6;--info: #2c5b7a;--info-bg: #e6eff5;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 24px;--sp-6: 32px;--sp-7: 48px;--sp-8: 64px;--r-0: 0;--r-1: 2px;--r-2: 4px;--font-sans: "Inter", -apple-system, BlinkMacSystemFont, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, "SF Mono", Consolas, monospace;--fs-xs: 11px;--fs-sm: 13px;--fs-md: 14px;--fs-lg: 16px;--fs-xl: 20px;--fs-2xl: 28px;--fs-3xl: 40px;--lh-tight: 1.2;--lh-normal: 1.5;--shadow-1: 0 1px 2px rgba(15, 20, 22, .06);--shadow-2: 0 2px 8px rgba(15, 20, 22, .08)}*,*:before,*:after{box-sizing:border-box}html,body,#root{margin:0;padding:0;height:100%;background:var(--bg);color:var(--ink);font-family:var(--font-sans);font-size:var(--fs-md);line-height:var(--lh-normal);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}button{font:inherit;color:inherit;cursor:pointer}button:focus-visible,input:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--struct);outline-offset:2px}.grid-relatorios{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:var(--sp-3)}.card-relatorio{background:var(--surface);border:1px solid var(--divider);padding:var(--sp-4);display:flex;flex-direction:column;gap:var(--sp-2);transition:border-color .12s,background .12s}.card-relatorio:hover:not(.indisponivel){border-color:var(--ink-3);background:var(--surface)}.card-relatorio.indisponivel{opacity:.5}.card-relatorio .titulo{font-size:var(--fs-md);font-weight:600;color:var(--ink);letter-spacing:-.005em}.card-relatorio .subtitulo{font-size:var(--fs-xs);color:var(--ink-2);line-height:1.45}.card-relatorio .resumo{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--ink-3);text-transform:uppercase;letter-spacing:.06em;padding:var(--sp-1) 0;border-top:1px solid var(--divider);border-bottom:1px solid var(--divider);margin-top:var(--sp-1)}.card-relatorio .acoes{display:flex;gap:var(--sp-2);margin-top:auto}.card-relatorio .acoes .btn{flex:1;padding:var(--sp-2) var(--sp-3)}.card-relatorio .acoes .btn:last-child:not(:only-child){flex:0 0 auto}.app{min-height:100%;display:grid;grid-template-columns:260px 1fr}.sidebar{background:var(--struct);color:var(--ink-invert);display:flex;flex-direction:column;height:100vh;position:sticky;top:0;overflow-y:auto}.sidebar-brand{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-5) var(--sp-4);border-bottom:1px solid rgba(255,255,255,.08)}.sidebar-brand .brand-text{display:flex;flex-direction:column;gap:2px;min-width:0}.sidebar-brand .brand-name{font-family:var(--font-sans);font-size:var(--fs-md);font-weight:600;letter-spacing:-.005em;color:var(--ink-invert)}.sidebar-brand .brand-tag{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--ink-3);text-transform:uppercase;letter-spacing:.08em}.sidebar-nav{flex:1;padding:var(--sp-4) 0;display:flex;flex-direction:column;gap:var(--sp-5)}.nav-group ul{list-style:none;margin:0;padding:0}.nav-group-label{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--ink-3);text-transform:uppercase;letter-spacing:.1em;padding:0 var(--sp-4);margin-bottom:var(--sp-2)}.nav-item{width:100%;background:transparent;border:0;color:var(--ink-invert);padding:var(--sp-2) var(--sp-4);display:flex;align-items:center;gap:var(--sp-3);text-align:left;cursor:pointer;transition:background .12s,border-color .12s;border-left:3px solid transparent}.nav-item:hover:not(.desabilitado){background:#ffffff0a}.nav-item.ativo{background:#a86a081f;border-left-color:var(--aviso)}.nav-item.desabilitado{cursor:not-allowed;color:var(--ink-3);opacity:.55}.nav-item .nav-marker{font-family:var(--font-mono);font-size:var(--fs-lg);color:var(--aviso);line-height:1;width:12px;text-align:center}.nav-item.desabilitado .nav-marker{color:var(--ink-3);font-size:var(--fs-sm)}.nav-item .nav-body{display:flex;flex-direction:column;gap:1px;min-width:0}.nav-item .nav-nome{font-size:var(--fs-sm);font-weight:500}.nav-item .nav-contexto{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--ink-3);text-transform:uppercase;letter-spacing:.06em}.sidebar-foot{padding:var(--sp-4);border-top:1px solid rgba(255,255,255,.08);font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--ink-3);line-height:1.5}.app-main{padding:var(--sp-6);max-width:1400px;width:100%;min-width:0}.validator-head{padding-bottom:var(--sp-4);margin-bottom:var(--sp-5);border-bottom:1px solid var(--divider)}.validator-title{display:flex;align-items:baseline;gap:var(--sp-3);flex-wrap:wrap}.validator-title h1{margin:0;font-size:var(--fs-2xl);font-weight:600;letter-spacing:-.01em;color:var(--ink)}.validator-title .validator-context{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--ink-3);text-transform:uppercase;letter-spacing:.08em}.validator-body{display:flex;flex-direction:column}@media (max-width: 800px){.app{grid-template-columns:1fr}.sidebar{height:auto;position:static}.sidebar-nav{flex-direction:row;overflow-x:auto;padding:var(--sp-3) var(--sp-4);gap:var(--sp-4)}.nav-group{flex-shrink:0}.nav-group ul{display:flex;gap:var(--sp-2)}.nav-item{padding:var(--sp-2) var(--sp-3);border-left:0;border-bottom:3px solid transparent;white-space:nowrap}.nav-item.ativo{border-left:0;border-bottom-color:var(--aviso)}.sidebar-foot{display:none}}.card{background:var(--surface);border:1px solid var(--divider);padding:var(--sp-5);margin-bottom:var(--sp-5)}.card h2{margin:0 0 var(--sp-4) 0;font-size:var(--fs-lg);font-weight:600;letter-spacing:-.005em;display:flex;align-items:baseline;gap:var(--sp-3)}.card h2 .step{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--ink-3);font-weight:500;text-transform:uppercase;letter-spacing:.1em}.dropzone{border:2px dashed var(--divider);padding:var(--sp-8) var(--sp-6);text-align:center;transition:border-color .12s,background .12s;cursor:pointer}.dropzone.dragging{border-color:var(--struct);background:var(--surface-alt)}.dropzone .icon{font-family:var(--font-mono);font-size:var(--fs-3xl);color:var(--aviso);line-height:1;margin-bottom:var(--sp-3);letter-spacing:-.05em}.dropzone h3{margin:0 0 var(--sp-2) 0;font-size:var(--fs-lg);font-weight:500}.dropzone p{margin:0;color:var(--ink-2);font-size:var(--fs-sm)}.dropzone input[type=file]{position:absolute;opacity:0;width:.1px;height:.1px}.progress{padding:var(--sp-5) 0}.progress .bar{height:6px;background:var(--surface-alt);overflow:hidden;margin:var(--sp-3) 0}.progress .fill{height:100%;background:var(--struct);transition:width .2s}.progress .meta{font-family:var(--font-mono);font-size:var(--fs-sm);color:var(--ink-2);display:flex;justify-content:space-between}.summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:1px;background:var(--divider);border:1px solid var(--divider);margin-bottom:var(--sp-5)}.summary .cell{background:var(--surface);padding:var(--sp-4)}.summary .cell .label{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--ink-3);text-transform:uppercase;letter-spacing:.08em;margin-bottom:var(--sp-1)}.summary .cell .value{font-family:var(--font-mono);font-size:var(--fs-xl);color:var(--ink);font-weight:500}.summary .cell.erro .value{color:var(--erro)}.summary .cell.aviso .value{color:var(--aviso)}.summary .cell.sucesso .value{color:var(--sucesso)}.problemas{display:flex;flex-direction:column;gap:var(--sp-3)}.problema{background:var(--surface);border-left:3px solid var(--divider);padding:var(--sp-4);display:grid;grid-template-columns:1fr auto;gap:var(--sp-4);align-items:start}.problema.erro{border-left-color:var(--erro);background:var(--surface)}.problema.aviso{border-left-color:var(--aviso);background:var(--surface)}.problema.info{border-left-color:var(--info);background:var(--surface)}.problema .head{display:flex;gap:var(--sp-3);align-items:baseline;margin-bottom:var(--sp-2);flex-wrap:wrap}.problema .codigo{font-family:var(--font-mono);font-size:var(--fs-sm);font-weight:500;color:var(--ink);background:var(--surface-alt);padding:2px 6px}.problema .linha{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--ink-3)}.problema .severidade{font-family:var(--font-mono);font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.1em;font-weight:600}.problema.erro .severidade{color:var(--erro)}.problema.aviso .severidade{color:var(--aviso)}.problema.info .severidade{color:var(--info)}.problema .mensagem{font-size:var(--fs-sm);color:var(--ink);margin-bottom:var(--sp-2)}.problema .contexto-item{background:var(--surface-alt);border-left:2px solid var(--ink-3);padding:var(--sp-2) var(--sp-3);margin-bottom:var(--sp-2);font-size:var(--fs-xs);color:var(--ink-2);display:flex;gap:var(--sp-2);align-items:baseline;flex-wrap:wrap}.problema .contexto-item .k{font-family:var(--font-mono);color:var(--ink-3);text-transform:uppercase;letter-spacing:.06em}.problema .contexto-item .v{color:var(--ink);font-weight:500}.problema .contexto-item .v.mono{font-family:var(--font-mono)}.problema .contexto-item .sep{color:var(--ink-3)}.problema .ref{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--ink-3)}.problema .correcao{background:var(--surface-alt);padding:var(--sp-3);margin-top:var(--sp-3);font-size:var(--fs-sm)}.problema .correcao .diff{font-family:var(--font-mono);font-size:var(--fs-sm);margin:var(--sp-2) 0}.problema .correcao .diff .de{color:var(--erro);text-decoration:line-through;text-decoration-color:var(--erro)}.problema .correcao .diff .para{color:var(--sucesso);font-weight:500}.problema .correcao .just{color:var(--ink-2);font-size:var(--fs-xs);margin-top:var(--sp-2)}.problema .acoes{display:flex;flex-direction:column;gap:var(--sp-1);min-width:120px}.btn{padding:var(--sp-2) var(--sp-4);border:1px solid var(--divider);background:var(--surface);font-family:var(--font-sans);font-size:var(--fs-sm);font-weight:500;transition:background .12s,border-color .12s}.btn:hover{background:var(--surface-alt)}.btn.primary{background:var(--struct);color:var(--ink-invert);border-color:var(--struct)}.btn.primary:hover{background:#22292c}.btn.aprovar{background:var(--sucesso-bg);color:var(--sucesso);border-color:var(--sucesso)}.btn.aprovar.selecionada{background:var(--sucesso);color:var(--ink-invert)}.btn.rejeitar{background:var(--erro-bg);color:var(--erro);border-color:var(--erro)}.btn.rejeitar.selecionada{background:var(--erro);color:var(--ink-invert)}.btn:disabled{opacity:.5;cursor:not-allowed}.actions-row{display:flex;gap:var(--sp-3);justify-content:space-between;align-items:center;padding:var(--sp-4) 0;border-top:1px solid var(--divider);margin-top:var(--sp-4)}.actions-row .info{font-family:var(--font-mono);font-size:var(--fs-sm);color:var(--ink-2)}.cabecalho-arq{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:var(--sp-4);font-family:var(--font-mono);font-size:var(--fs-sm)}.cabecalho-arq .campo .k{color:var(--ink-3);font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.08em}.cabecalho-arq .campo .v{color:var(--ink);font-weight:500}.filtros{display:flex;gap:var(--sp-2);margin-bottom:var(--sp-4);padding-bottom:var(--sp-3);border-bottom:1px solid var(--divider);flex-wrap:wrap}.filtro{padding:var(--sp-1) var(--sp-3);font-family:var(--font-mono);font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.06em;background:transparent;border:1px solid var(--divider)}.filtro.ativo{background:var(--struct);color:var(--ink-invert);border-color:var(--struct)}
