:root{--bg:#0f172a;--bg-grad:radial-gradient(1200px 600px at 50% -10%,#1e293b 0%,#0f172a 55%);--card:#ffffff;--texto:#0f172a;--texto-suave:#64748b;--primaria:#16a34a;--primaria-hover:#15803d;--borda:#e2e8f0;--alerta:#b45309;--alerta-bg:#fffbeb;--erro:#b91c1c;--erro-bg:#fef2f2;--info:#1d4ed8}*{box-sizing:border-box}body,html{margin:0;padding:0}body{min-height:100dvh;background:var(--bg);background-image:var(--bg-grad);color:var(--texto);font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased}.container{align-items:flex-start;padding:clamp(16px,6vw,48px) 16px}.container,.flex-center{min-height:100dvh;display:flex;justify-content:center}.flex-center{align-items:center;padding:20px}.flex-center .card{margin-top:0}.card{width:100%;max-width:460px;background:var(--card);border-radius:20px;padding:clamp(20px,6vw,32px);box-shadow:0 20px 40px -12px rgba(0,0,0,.35);margin-top:clamp(8px,6vh,64px)}.header{text-align:center;margin-bottom:24px}.header h1{margin:0;font-size:clamp(1.4rem,5vw,1.75rem);letter-spacing:-.02em}.header p{margin:8px 0 0;color:var(--texto-suave);font-size:.95rem}.form{display:flex;flex-direction:column;gap:12px}.input{width:100%;padding:16px 18px;font-size:1.15rem;border:2px solid var(--borda);border-radius:12px;outline:none;transition:border-color .15s ease,box-shadow .15s ease}.input:focus{border-color:var(--primaria);box-shadow:0 0 0 4px rgba(22,163,74,.15)}.button{width:100%;padding:16px 18px;font-size:1.1rem;font-weight:600;color:#fff;background:var(--primaria);border:none;border-radius:12px;cursor:pointer;transition:background .15s ease,transform .05s ease}.button:hover:not(:disabled){background:var(--primaria-hover)}.button:active:not(:disabled){transform:scale(.99)}.button:disabled{opacity:.6;cursor:default}.resultado{margin-top:24px;min-height:40px}.msg{margin:0;padding:14px 16px;border-radius:12px;font-size:1rem;text-align:center;display:flex;flex-direction:column;gap:4px}.msg-info{color:var(--info);background:#eff6ff}.msg-alerta{color:var(--alerta);background:var(--alerta-bg)}.msg-erro{color:var(--erro);background:var(--erro-bg)}.detalhe{font-size:.8rem;opacity:.75;font-weight:400}.produto{text-align:center;padding:24px 16px;border:2px solid var(--borda);border-radius:16px;background:#f8fafc}.produto-nome{margin:0;font-size:1.25rem;line-height:1.3}.produto-preco{margin:12px 0 0;font-size:2.25rem;font-weight:700;color:var(--primaria);letter-spacing:-.02em}.produto-preco-sufixo{font-size:1.1rem;font-weight:600;color:var(--texto-suave);letter-spacing:0}.produto-codigo{margin:12px 0 0;font-size:.9rem;color:var(--texto-suave);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.produto-ajuda{margin:14px 0 0}.produto .button-fraco{margin-top:16px}.tags{display:flex;flex-wrap:wrap;gap:6px;justify-content:center;margin-bottom:12px}.tags:empty{display:none}.tag{font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;padding:5px 10px;border-radius:999px}.tag-balanca{color:var(--info);background:#eff6ff}.tag-industrial{color:#6d28d9;background:#f5f3ff}.tag-interno{color:#0f766e;background:#f0fdfa}.tag-nome{color:#9d174d;background:#fdf2f8}.lista-titulo{margin:0 0 12px;font-size:.9rem;color:var(--texto-suave);text-align:center}.linhas{margin:16px 0 0;padding:14px 0 0;border-top:1px solid var(--borda);display:flex;flex-direction:column;gap:8px}.linha{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.linha dt{color:var(--texto-suave);font-size:.95rem}.linha dd{margin:0;font-size:1.15rem;font-weight:600;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.linha-sub{font-size:.85rem;font-weight:400;color:var(--texto-suave)}.aviso{margin:14px 0 0;padding:10px 12px;border-radius:10px;font-size:.85rem;color:var(--alerta);background:var(--alerta-bg)}.campo{display:flex;flex-direction:column;gap:6px}.campo-rotulo{font-size:.85rem;font-weight:600;color:var(--texto-suave)}.campo-ajuda{font-size:.8rem;color:var(--texto-suave);line-height:1.4}.form-espaco{margin-top:20px}.button-link{display:block;margin-top:12px;text-align:center;text-decoration:none}.button-fraco{color:var(--texto);background:#eef2f7}.button-fraco:hover:not(:disabled){background:#e2e8f0}.tag-neutra{color:var(--texto-suave);background:#f1f5f9}.tag-novo{color:#166534;background:#dcfce7}.tag-editar{color:var(--alerta);background:var(--alerta-bg)}.msg-ok{color:#166534;background:#dcfce7}.previa{padding:14px 16px;border:2px dashed var(--borda);border-radius:12px;background:#f8fafc}.previa-titulo{margin:0;font-size:.85rem;font-weight:600;color:var(--texto-suave)}.linhas-topo{margin-top:10px;padding-top:0;border-top:none}.previa .campo-ajuda{margin:12px 0 0}.vincular{margin-top:24px;padding-top:20px;border-top:1px solid var(--borda)}.vincular-titulo{margin:0 0 4px;font-size:.95rem;font-weight:600}.vincular-texto{margin:0 0 12px;font-size:.85rem;color:var(--texto-suave);line-height:1.45}.candidatos{list-style:none;margin:12px 0 0;padding:0;gap:8px;max-height:320px;overflow-y:auto}.candidato,.candidatos{display:flex;flex-direction:column}.candidato{width:100%;gap:3px;padding:12px 14px;text-align:left;border:2px solid var(--borda);border-radius:12px;background:#fff;cursor:pointer;font:inherit}.candidato:hover{border-color:var(--primaria);background:#f8fafc}.candidato-nome{font-weight:600;line-height:1.3}.candidato-info{font-size:.82rem;color:var(--texto-suave);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.menu{position:-webkit-sticky;position:sticky;top:0;z-index:10;display:flex;align-items:center;gap:16px;padding:10px clamp(12px,4vw,24px);background:rgba(15,23,42,.85);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid rgba(255,255,255,.08)}.menu-marca{font-size:.85rem;font-weight:700;letter-spacing:.02em;color:rgba(255,255,255,.55);white-space:nowrap}@media (max-width:480px){.menu-marca{display:none}}.menu-lista{list-style:none;display:flex;gap:6px;margin:0;padding:0;overflow-x:auto;scrollbar-width:none}.menu-lista::-webkit-scrollbar{display:none}.menu-item{display:block;padding:7px 14px;border-radius:999px;font-size:.9rem;font-weight:600;text-decoration:none;white-space:nowrap;color:rgba(255,255,255,.75);transition:background .15s ease,color .15s ease}.menu-item:hover{background:rgba(255,255,255,.1);color:#fff}.menu-item-ativo,.menu-item-ativo:hover{background:var(--primaria);color:#fff}.container-menu{min-height:calc(100dvh - 57px);padding-top:16px}.container-menu .card{margin-top:0}.card-largo{max-width:560px}.opcao{display:flex;align-items:center;gap:8px;margin-top:14px;font-size:.9rem;color:var(--texto-suave);cursor:pointer}.opcao input{width:18px;height:18px;accent-color:var(--primaria);cursor:pointer}.candidato-tag{margin-left:8px;vertical-align:middle}.candidato-via{font-size:.82rem;color:var(--info)}.campo-opcional{font-weight:400;text-transform:none;letter-spacing:0}.autorizado{display:grid;grid-template-columns:1fr 1fr auto;grid-gap:8px;gap:8px;margin-top:8px}.input-menor{padding:11px 12px;font-size:.95rem}.autorizado-remover{width:42px;border:2px solid var(--borda);border-radius:12px;background:#fff;color:var(--texto-suave);font-size:1.3rem;line-height:1;cursor:pointer;transition:border-color .15s ease,color .15s ease}.autorizado-remover:hover{border-color:var(--erro);color:var(--erro)}.acoes{display:flex;flex-wrap:wrap;gap:10px;margin-top:16px}.acoes .button{flex:1 1 180px;width:auto}.button-perigo{color:var(--erro);background:var(--erro-bg);border:2px solid #fecaca}.button-perigo:hover:not(:disabled){background:#fee2e2}@media (max-width:420px){.autorizado{grid-template-columns:1fr auto}.autorizado>:first-child{grid-area:1/1/2/2}.autorizado-remover{grid-area:1/2/2/3}.autorizado>:nth-child(2){grid-area:2/1/3/3}}.card-tabela{max-width:1240px}.codigo-inline{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.9em;padding:1px 5px;border-radius:5px;background:#f1f5f9;color:var(--texto)}.form-linha{flex-direction:row;flex-wrap:wrap}.form-linha .input{flex:1 1 240px;width:auto}.form-linha .button{flex:0 0 auto;width:auto;padding-inline:24px}.grade-rolagem{overflow:auto;max-height:70vh;border:1px solid var(--borda);border-radius:12px;background:#fff;-webkit-overflow-scrolling:touch}.grade{border-collapse:separate;border-spacing:0;width:100%;font-size:.82rem;white-space:nowrap}.grade td,.grade th{padding:8px 12px;border-bottom:1px solid var(--borda);border-right:1px solid #f1f5f9;text-align:left}.grade td:last-child,.grade th:last-child{border-right:none}.grade tbody tr:last-child td{border-bottom:none}.grade tbody tr:hover td,.grade thead th{background:#f8fafc}.grade thead th{position:-webkit-sticky;position:sticky;top:0;z-index:2;border-bottom:2px solid var(--borda);vertical-align:bottom}.grade-coluna{display:block;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.78rem;font-weight:700;color:var(--texto)}.grade-tipo{display:block;margin-top:2px;font-size:.68rem;font-weight:400;color:var(--texto-suave)}.grade-cadeado{margin-left:5px;font-size:.7rem}.grade-fixa{position:-webkit-sticky;position:sticky;left:0;z-index:1;background:#fff;min-width:200px;max-width:280px;white-space:normal;border-right:1px solid var(--borda)}.grade thead .grade-fixa{z-index:3;background:#f8fafc}.grade tbody tr:hover .grade-fixa{background:#f8fafc}.grade-num{text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.grade-nulo{color:#94a3b8;font-style:italic;font-size:.78rem}.grade-zerado{color:var(--erro);font-weight:700}.grade-bool{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.72rem;font-weight:700;padding:2px 8px;border-radius:5px}.grade-bool-sim{color:#166534;background:#dcfce7}.grade-bool-nao{color:var(--texto-suave);background:#f1f5f9}.grade-nota{margin:12px 0 0;font-size:.8rem;line-height:1.5;color:var(--texto-suave)}@media (max-width:480px){.grade td,.grade th{padding:7px 9px}.grade-fixa{min-width:132px;max-width:150px;white-space:normal}}.rodape{margin:24px 0 0;text-align:center;font-size:.9rem}.rodape a{color:var(--texto-suave);text-decoration:none}.rodape a:hover{color:var(--primaria);text-decoration:underline}.financeiro-container{max-width:1100px;margin:0 auto;padding:24px 16px}.financeiro-header{display:flex;justify-content:space-between;align-items:flex-start;flex-wrap:wrap;gap:16px;margin-bottom:24px}.financeiro-header h1{margin:0;font-size:1.8rem;color:#0f172a}.subtitulo{margin:4px 0 0;color:var(--texto-suave);font-size:.95rem}.financeiro-acoes-topo{display:flex;gap:10px}.btn{padding:10px 18px;border-radius:10px;font-weight:600;font-size:.95rem;cursor:pointer;border:none;transition:all .15s ease}.btn-primario{background:var(--primaria);color:#fff}.btn-primario:hover{background:var(--primaria-hover)}.btn-secundario{background:#e2e8f0;color:#334155}.btn-secundario:hover{background:#cbd5e1}.financeiro-resumo{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));grid-gap:16px;gap:16px;margin-bottom:24px}.card-resumo{background:#fff;padding:20px;border-radius:14px;border:1px solid var(--borda);display:flex;flex-direction:column;gap:6px;box-shadow:0 1px 3px rgba(0,0,0,.05)}.card-titulo{font-size:.85rem;font-weight:600;color:var(--texto-suave);text-transform:uppercase;letter-spacing:.03em}.card-valor{font-size:1.6rem;font-weight:700;color:#0f172a}.card-sucesso{border-left:5px solid #16a34a}.card-alerta{border-left:5px solid #d97706}.card-perigo{border-left:5px solid #dc2626}.card-atencao{border-left:5px solid #2563eb}.financeiro-filtros{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:20px;background:#fff;padding:16px;border-radius:14px;border:1px solid var(--borda)}.filtro-grupo{flex:1 1 200px}.input-busca,.select-filtro{width:100%;padding:10px 14px;border:1px solid var(--borda);border-radius:10px;font-size:.95rem;outline:none;background:#fff}.input-busca:focus,.select-filtro:focus{border-color:var(--primaria)}.mensagem{padding:12px 16px;border-radius:10px;margin-bottom:20px;font-weight:500}.mensagem-erro{background:#fef2f2;color:#991b1b;border:1px solid #fecaca}.mensagem-sucesso{background:#f0fdf4;color:#166534;border:1px solid #bbf7d0}.tabela-wrapper{background:#fff;border-radius:14px;border:1px solid var(--borda);overflow-x:auto;box-shadow:0 1px 3px rgba(0,0,0,.05)}.tabela-financeiro{width:100%;border-collapse:collapse;text-align:left;font-size:.95rem}.tabela-financeiro th{background:#f8fafc;padding:14px 16px;font-weight:600;color:#475569;border-bottom:2px solid var(--borda);white-space:nowrap}.tabela-financeiro td{padding:14px 16px;border-bottom:1px solid var(--borda);color:#1e293b}.tabela-financeiro tr:last-child td{border-bottom:none}.linha-atrasada{background-color:#fff1f2}.valor-destaque{font-weight:700;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.badge{display:inline-block;padding:4px 10px;border-radius:999px;font-size:.75rem;font-weight:700;text-transform:uppercase}.badge-sucesso{background:#dcfce7;color:#15803d}.badge-alerta{background:#fef3c7;color:#b45309}.badge-erro{background:#fee2e2;color:#b91c1c}.ml-2{margin-left:8px}.acoes-coluna{display:flex;gap:6px}.btn-acao{padding:6px 10px;border-radius:6px;border:1px solid var(--borda);background:#fff;cursor:pointer;font-size:.85rem;font-weight:600;transition:all .15s ease}.btn-quitar:hover{background:#dcfce7;color:#15803d;border-color:#86efac}.btn-editar:hover{background:#e0f2fe;color:#0369a1;border-color:#7dd3fc}.btn-excluir:hover{background:#fee2e2;color:#b91c1c;border-color:#fca5a5}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(15,23,42,.6);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:100;padding:16px}.modal-conteudo{background:#fff;border-radius:16px;width:100%;max-width:500px;padding:24px;box-shadow:0 20px 25px -5px rgba(0,0,0,.1)}.modal-conteudo h2{margin:0 0 20px;font-size:1.3rem;color:#0f172a}.form-grupo{display:flex;flex-direction:column;gap:6px;margin-bottom:16px}.form-grupo label{font-size:.85rem;font-weight:600;color:#475569}.form-grupo input,.form-grupo textarea{padding:10px 12px;border:1px solid var(--borda);border-radius:8px;font-size:.95rem;outline:none}.form-grupo input:focus,.form-grupo textarea:focus{border-color:var(--primaria)}.form-row{display:grid;grid-template-columns:1fr 1fr;grid-gap:12px;gap:12px}.modal-acoes{display:flex;justify-content:flex-end;gap:10px;margin-top:24px}@media print{.menu,.no-print{display:none!important}body{background:#fff;color:#000}.financeiro-container{max-width:100%;padding:0}.tabela-wrapper{box-shadow:none;border:1px solid #ccc}.tabela-financeiro td,.tabela-financeiro th{border:1px solid #ccc;padding:8px}}