: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{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,body{min-height:100dvh}.container{display:flex;align-items:flex-start;justify-content:center;padding:clamp(16px,6vw,48px) 16px}.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}}.candidatos-altos{max-height:none}.item-estoque{display:flex;align-items:center;gap:12px;padding:12px 14px;border:2px solid var(--borda);border-radius:12px;background:#fff}.item-estoque-texto{display:flex;flex-direction:column;gap:3px;min-width:0;flex:1 1}.item-estoque-qtd{display:flex;flex-direction:column;align-items:flex-end;flex-shrink:0;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;color:var(--primaria)}.item-estoque-qtd strong{font-size:1.3rem;line-height:1.1}.item-estoque-qtd span{font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;color:var(--texto-suave)}.item-estoque-vazio{color:var(--erro)}.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}