:root { --fundo:#0b1020; --cartao:#121a30; --borda:#24304f; --texto:#e8ecf6; --suave:#9aa6c4; --acento:#7c5cff; --acento2:#22d3ee; --erro:#ff6b7a; --aviso:#fbbf24; }
* { box-sizing: border-box; }
[hidden] { display:none !important; }
body { margin:0; background:var(--fundo); color:var(--texto); font:16px/1.5 system-ui, -apple-system, "Segoe UI", Roboto, sans-serif; }
.topo { display:flex; justify-content:space-between; align-items:center; gap:12px; padding:14px 20px; border-bottom:1px solid var(--borda); flex-wrap:wrap; }
.marca strong { display:block; letter-spacing:.04em; background:linear-gradient(90deg,var(--acento),var(--acento2)); -webkit-background-clip:text; background-clip:text; color:transparent; font-size:1.15rem; }
.marca span { color:var(--suave); font-size:.85rem; }
.selo { font-size:.8rem; padding:4px 10px; border-radius:999px; border:1px solid var(--acento2); color:var(--acento2); }
.selo.off { border-color:var(--erro); color:var(--erro); }
main { max-width:960px; margin:0 auto; padding:20px 16px 40px; display:grid; gap:20px; }
.cartao { background:var(--cartao); border:1px solid var(--borda); border-radius:14px; padding:22px; }
h1 { margin:0 0 6px; font-size:1.45rem; } h2 { margin:0 0 4px; font-size:1.25rem; } h3 { font-size:1rem; margin:18px 0 6px; }
.sub { color:var(--suave); margin:0 0 16px; }
label { display:block; font-size:.9rem; color:var(--suave); margin-bottom:12px; }
label small { float:right; }
input, select, textarea { width:100%; margin-top:4px; padding:10px 12px; border-radius:10px; border:1px solid var(--borda); background:#0d1428; color:var(--texto); font:inherit; }
textarea { resize:vertical; }
input:focus, select:focus, textarea:focus { outline:2px solid var(--acento); border-color:transparent; }
.grade { display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:0 14px; }
button { border:0; border-radius:10px; padding:11px 18px; font:inherit; font-weight:600; cursor:pointer; color:#fff; background:linear-gradient(90deg,var(--acento),#5b8cff); }
button:disabled { opacity:.5; cursor:not-allowed; }
button.sec { background:transparent; border:1px solid var(--borda); color:var(--texto); font-weight:500; padding:8px 12px; font-size:.88rem; }
.msg { min-height:1.4em; margin:10px 0 0; color:var(--suave); } .msg.erro { color:var(--erro); }
.cab-resultado { display:flex; justify-content:space-between; gap:16px; flex-wrap:wrap; }
.acoes { display:flex; gap:8px; flex-wrap:wrap; align-items:flex-start; }
.aviso { border-left:3px solid var(--aviso); padding:8px 12px; background:rgba(251,191,36,.08); color:#f5deb0; font-size:.88rem; border-radius:6px; }
.avisos { color:var(--aviso); font-size:.9rem; padding-left:20px; }
.avisos:empty { display:none; }
.cenas { list-style:none; padding:0; margin:16px 0; display:grid; gap:12px; }
.cena { border:1px solid var(--borda); border-radius:12px; padding:14px; background:#0e1529; }
.cena p { margin:6px 0; overflow-wrap:anywhere; }
.cena-cab { font-weight:700; color:var(--acento2); }
.cena .prompt { font-family:ui-monospace, Consolas, monospace; font-size:.83rem; color:var(--suave); }
.meta { color:var(--suave); font-size:.82rem; }
.rodape { text-align:center; color:var(--suave); font-size:.82rem; padding:18px; border-top:1px solid var(--borda); }
.usuario { display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.usuario .conta { color:var(--suave); font-size:.88rem; }
.entrada { max-width:420px; width:100%; margin:24px auto 0; }
.esqueci-linha { display:flex; justify-content:flex-end; margin:-4px 0 14px; }
button.link { background:none; border:0; padding:4px 0; color:var(--acento2); font-weight:500; font-size:.88rem; }
.entrada form > button[type=submit] { width:100%; }
.entrada .link#voltar-login { display:block; margin:12px auto 0; }
.centro { text-align:center; }
.pacotes { display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:10px; margin-bottom:14px; }
.pacote { display:grid; gap:2px; border:1px solid var(--borda); border-radius:12px; padding:12px; margin:0; cursor:pointer; color:var(--texto); background:#0e1529; }
.pacote input { width:auto; margin:0 0 4px; accent-color:var(--acento); }
.pacote span { font-size:1.15rem; font-weight:700; }
.pacote small { color:var(--suave); }
.pacote:has(input:checked) { border-color:var(--acento); box-shadow:0 0 0 1px var(--acento); }
#compra .acoes { margin-top:4px; }
.msg a { color:var(--acento2); }

/* ---- painel de entrada (mesmo desenho do IVARIX): tela cheia com degradê, cartão estreito, borda de cor no topo ---- */
.marca-entrada { display:flex; align-items:center; gap:12px; justify-content:center; margin-bottom:14px; }
.marca-svg { width:42px; height:42px; flex:none; }
.marca-txt strong { display:block; font-size:1.3rem; font-weight:900; letter-spacing:.09em; color:#fff; line-height:1.1; }
.marca-txt strong span { color:var(--acento2); }
.marca-txt small { display:block; font-size:.62rem; font-weight:800; color:#10b981; text-transform:uppercase; letter-spacing:.1em; }
body.entrada-ativa { background:radial-gradient(circle at 20% 20%, rgba(124,92,255,.24), transparent 45%), radial-gradient(circle at 80% 80%, rgba(34,211,238,.15), transparent 45%), #03060c; min-height:100vh; }
body.entrada-ativa .topo, body.entrada-ativa .rodape { display:none; }
body.entrada-ativa main { min-height:100vh; display:grid; align-content:center; padding:20px 16px; }
body.entrada-ativa .entrada { max-width:380px; margin:0 auto; padding:28px 24px 22px; border-top:4px solid var(--acento); border-radius:18px; background:rgba(15,23,42,.96); box-shadow:0 25px 60px rgba(0,0,0,.85); }
body.entrada-ativa .entrada h1 { font-size:1.5rem; font-weight:800; margin:18px 0 6px; }
body.entrada-ativa .entrada .sub { font-size:.9rem; margin:0 0 4px; }
.entrada label { font-size:.85rem; font-weight:700; color:#fff; margin:16px 0 6px; }
.campo { position:relative; }
.campo input { margin-top:0; padding:12px 42px 12px 14px; font-size:.9rem; }
.entrada input { background:#070d1d; border-color:#1d2b4b; color:#eaf0fb; }   /* mesmas cores dos campos do painel do LICITIX */
.entrada input:focus { border-color:transparent; }
.icone { position:absolute; right:6px; top:50%; transform:translateY(-50%); width:34px; height:34px; display:grid; place-items:center; padding:0; background:transparent; border:0; border-radius:8px; color:var(--suave); cursor:pointer; }
.icone:hover, .icone[aria-pressed="true"] { color:var(--acento2); }
.icone svg { width:20px; height:20px; fill:none; stroke:currentColor; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; }
.entrada .esqueci-linha { margin:8px 0 0; }
.entrada .esqueci-linha .link { font-size:.82rem; font-weight:600; color:#38bdf8; }
.entrada .msg { min-height:20px; margin:8px 0 0; font-size:.78rem; font-weight:700; }
.entrada form > button[type=submit] { padding:13px; font-size:.9rem; margin-top:6px; }
.entrada form > button[type=submit]:disabled { background:#1e293b; color:#64748b; cursor:not-allowed; opacity:1; }
.entrada .ajuda { margin:16px 0 0; text-align:center; font-size:.75rem; color:var(--suave); line-height:1.7; }

/* ---- primeira tela: faixa de destaque + título + frase de apoio + garantias ao lado do cartão de acesso, e botões em pílula ---- */
body.entrada-ativa .entrada h2 { font-size:1.5rem; font-weight:800; margin:18px 0 6px; }
body.entrada-ativa::before { content:""; position:fixed; inset:0; pointer-events:none; background-image:radial-gradient(rgba(255,255,255,.07) 1px, transparent 1px); background-size:28px 28px; -webkit-mask-image:radial-gradient(circle at 50% 42%, #000, transparent 72%); mask-image:radial-gradient(circle at 50% 42%, #000, transparent 72%); }
.entrada-dupla { display:grid; gap:28px; max-width:1000px; width:100%; margin:0 auto; position:relative; }
.hero-kicker { margin:0 0 10px; font-size:.78rem; font-weight:800; letter-spacing:.14em; text-transform:uppercase; color:var(--acento2); }
.hero-titulo { margin:0; font-size:clamp(1.7rem, 5.6vw, 3rem); line-height:1.08; font-weight:800; letter-spacing:-.02em; color:#fff; }
.hero-sub { margin:16px 0 0; font-size:1.05rem; color:var(--suave); max-width:34em; }
.hero-sub strong { color:#fff; }
.hero-chips { list-style:none; padding:0; margin:22px 0 0; display:flex; flex-wrap:wrap; gap:8px; }
.hero-chips li { border:1px solid rgba(34,211,238,.35); background:rgba(34,211,238,.08); color:#bdf3fb; font-size:.82rem; padding:6px 12px; border-radius:999px; }
@media (min-width: 900px) { .entrada-dupla { grid-template-columns:1fr 380px; gap:64px; align-items:center; } }
@media (max-width: 899px) { .hero { text-align:center; } .hero-sub { margin-left:auto; margin-right:auto; } .hero-chips { justify-content:center; } }
@media (max-width: 640px) { .hero-sub, .hero-chips { display:none; } .hero-titulo { font-size:1.75rem; } }
/* botões de ação em pílula, com brilho interno e seta */
.entrada form > button[type=submit] { border-radius:999px; box-shadow:inset 0 0 16px rgba(255,255,255,.28); display:flex; align-items:center; justify-content:center; gap:8px; }
.entrada form > button[type=submit]::after { content:"→"; font-weight:700; }
.entrada form > button[type=submit]:disabled { box-shadow:none; }
.pedir-acesso { display:block; margin-top:12px; text-align:center; padding:11px 18px; border:1px solid var(--borda); border-radius:999px; color:#fff; text-decoration:none; font-weight:600; font-size:.88rem; }
.pedir-acesso:hover { border-color:var(--acento2); color:var(--acento2); }

/* ---- interior do app: barra lateral + área principal ---- */
body.app-ativa main { max-width:1180px; }
.rotulo-oculto { position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; }
.app { display:grid; grid-template-columns:240px minmax(0,1fr); border:1px solid var(--borda); border-radius:16px; background:var(--cartao); overflow:hidden; min-height:calc(100vh - 150px); }
.app svg { width:16px; height:16px; fill:none; stroke:currentColor; stroke-width:1.9; stroke-linecap:round; stroke-linejoin:round; flex:none; }
.principal .cartao { background:transparent; border:0; padding:0; border-radius:0; }
.principal .visao { margin-top:6px; }
.lateral { background:#0e1529; border-right:1px solid var(--borda); padding:14px; display:flex; flex-direction:column; gap:8px; min-width:0; }
.novo { display:flex; align-items:center; justify-content:center; gap:7px; background:transparent; border:1px solid var(--borda); color:var(--texto); font-weight:600; font-size:.88rem; padding:8px 10px; }
.novo:hover, .novo.ativo { border-color:var(--acento); }
.lateral-rotulo { margin:10px 0 0; font-size:.7rem; letter-spacing:.1em; text-transform:uppercase; color:var(--suave); }
.lateral-nota { margin:0; font-size:.74rem; color:var(--suave); line-height:1.4; }
.sessao-lista { list-style:none; padding:0; margin:0; display:flex; flex-direction:column; gap:2px; max-height:38vh; overflow:auto; }
.sessao-item { width:100%; text-align:left; background:transparent; color:var(--texto); font-weight:400; font-size:.84rem; padding:6px 8px; border-radius:8px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.sessao-item:hover { background:rgba(255,255,255,.06); }
.sessao-item.ativo { background:rgba(124,92,255,.2); }
.lateral-rodape { margin-top:auto; display:flex; flex-direction:column; gap:2px; border-top:1px solid var(--borda); padding-top:10px; }
.lateral-link { display:flex; align-items:center; gap:8px; width:100%; background:transparent; color:var(--suave); font-weight:500; font-size:.85rem; padding:7px 8px; text-align:left; }
.lateral-link:hover, .lateral-link.ativo { color:var(--texto); background:rgba(255,255,255,.06); }
.principal { padding:16px 26px 26px; min-width:0; display:flex; flex-direction:column; }
.barra { display:flex; align-items:center; gap:10px; }
.icone-barra { display:none; place-items:center; width:36px; height:36px; padding:0; background:transparent; border:1px solid var(--borda); color:var(--texto); }
.passos { padding-left:20px; line-height:1.6; max-width:640px; }
.passos li { margin:8px 0; }

/* ---- CONTRATIX: formulário do planejamento, pesquisa de preços, caderno de documentos e impressão ---- */
.barra { gap:12px; margin-bottom:6px; }
.titulo-visao { margin:0; font-size:1.3rem; }
.acoes.espaco { margin:8px 0 14px; }
#visao-planejar > .acoes { margin:10px 0 4px; }
.bloco { border:1px solid var(--borda); border-radius:14px; padding:14px 18px 6px; margin:16px 0; background:#0e1529; min-width:0; }
.bloco legend { padding:0 8px; font-weight:700; color:var(--acento2); font-size:.92rem; }
.bloco .sub { margin:0 0 12px; font-size:.88rem; }
label.marcar { display:flex; gap:8px; align-items:flex-start; color:var(--texto); font-size:.86rem; }
label.marcar input { width:auto; margin:3px 0 0; accent-color:var(--acento); flex:none; }
.grade .marcar { grid-column:1 / -1; }
.cotacoes-cab, .cotacao { display:grid; grid-template-columns:minmax(150px,1.3fr) minmax(150px,1.5fr) 140px 130px minmax(140px,1.3fr) 84px; gap:8px; align-items:center; }
.cotacoes-cab { color:var(--suave); font-size:.74rem; letter-spacing:.04em; text-transform:uppercase; margin-bottom:4px; }
.cotacoes { display:grid; gap:8px; margin-bottom:10px; }
.cotacao input, .cotacao select { margin:0; padding:8px 10px; font-size:.88rem; min-width:0; }
.cotacao button { padding:7px 8px; }
.calc-campos { margin-top:14px; }
.calculo { margin:4px 0 12px; display:grid; gap:12px; }
.precos, .dispensa { border:1px solid var(--borda); border-radius:12px; padding:12px 14px; background:var(--fundo); }
.destaque { margin:0 0 4px; font-size:1.02rem; }
.dispensa p { margin:6px 0 0; }
.dispensa-ok { border-color:#1f8f6a; } .dispensa-erro { border-color:var(--erro); } .dispensa-aviso { border-color:var(--aviso); }
.tag { display:inline-block; padding:3px 9px; border-radius:999px; font-size:.72rem; font-weight:800; letter-spacing:.03em; text-transform:uppercase; border:1px solid; }
.tag-ok { color:#6ee7b7; border-color:#1f8f6a; background:rgba(16,185,129,.12); } .tag-erro { color:#fca5a5; border-color:var(--erro); background:rgba(255,107,122,.12); } .tag-aviso { color:#fcd34d; border-color:var(--aviso); background:rgba(251,191,36,.1); }
table { border-collapse:collapse; width:100%; font-size:.84rem; }
.tabela-dados, .tabela-linhas { margin:8px 0; display:block; overflow-x:auto; }
th, td { border:1px solid var(--borda); padding:6px 9px; text-align:left; vertical-align:top; overflow-wrap:anywhere; }
th { background:#0b1226; color:var(--suave); font-weight:700; font-size:.76rem; text-transform:uppercase; letter-spacing:.03em; }
.tabela-linhas th { width:30%; text-transform:none; letter-spacing:0; font-size:.82rem; }
.gerar-acoes { margin:10px 0 4px; }
.gerar-doc { background:transparent; border:1px solid var(--acento); color:var(--texto); font-weight:600; }
.gerar-doc:hover:not(:disabled) { background:rgba(124,92,255,.18); }
.gerar-caderno { margin-left:auto; }
.dica { color:var(--suave); font-size:.82rem; margin:8px 0 10px; }
#aviso-saldo { margin:8px 0 12px; }
.caderno-nav { display:flex; gap:6px; flex-wrap:wrap; margin:12px 0; }
.doc { background:#0e1529; border:1px solid var(--borda); border-radius:14px; padding:20px 22px; margin:16px 0; }
.doc-titulo { margin:0 0 10px; font-size:1.25rem; }
.secao { margin:16px 0 0; padding-top:4px; }
.secao-titulo { margin:0 0 6px; font-size:.98rem; color:#fff; }
.secao-titulo .base { color:var(--suave); font-weight:400; font-size:.74rem; }
.texto { white-space:pre-wrap; overflow-wrap:anywhere; line-height:1.55; padding:6px 8px; border-radius:8px; border:1px dashed transparent; }
.lista { margin:0; padding-left:22px; } .lista li { margin:4px 0; padding:2px 6px; border-radius:6px; border:1px dashed transparent; }
.texto:hover, .lista li:hover, td[contenteditable]:hover { border-color:var(--borda); }
.texto:focus, .lista li:focus, td[contenteditable]:focus { outline:2px solid var(--acento); border-color:transparent; }
.pontos .lista li { color:var(--aviso); }
@media (max-width: 1000px) {
  .cotacoes-cab { display:none; }
  .cotacao { grid-template-columns:1fr 1fr; padding:10px; border:1px solid var(--borda); border-radius:10px; }
  .cotacao > :first-child, .cotacao > :nth-child(2), .cotacao > :nth-child(5) { grid-column:1 / -1; }
  .gerar-caderno { margin-left:0; }
}
@media (max-width: 860px) {
  .app { grid-template-columns:minmax(0,1fr); }
  .lateral { display:none; border-right:0; border-bottom:1px solid var(--borda); }
  body.lateral-aberta .lateral { display:flex; }
  .icone-barra { display:grid; }
  .principal { padding:14px 14px 22px; }
  .doc { padding:14px; }
}

/* Impressão em A4: só os documentos do caderno, em preto no branco, uma peça por página */
@page { size:A4; margin:14mm; }
@media print {
  body, body.app-ativa { background:#fff !important; color:#000 !important; font-size:10.5pt; }
  .topo, .rodape, .lateral, .barra, .cab-resultado, .caderno-nav, #visao-planejar, #visao-ajuda, .avisos, .aviso, #caderno-sub, .icone-barra, button { display:none !important; }
  main, body.app-ativa main { max-width:none; padding:0; display:block; }
  .app { display:block; border:0; background:#fff; min-height:0; }
  .principal { padding:0; display:block; }
  #visao-caderno { display:block !important; }
  .doc { background:#fff; color:#000; border:0; padding:0; margin:0; break-after:page; }
  .doc:last-child { break-after:auto; }
  .doc-titulo, .secao-titulo { color:#000; } .secao-titulo .base, .meta, .sub { color:#444; }
  .secao { break-inside:avoid-page; }
  th, td { border:1px solid #888; color:#000; } th { background:#eee; color:#000; }
  .precos, .dispensa { background:#fff; border:1px solid #888; color:#000; }
  .tag { color:#000; border-color:#000; background:#fff; }
  .texto, .lista li, td { border:0 !important; outline:0 !important; }
}
.precos .tabela-dados td:nth-child(4), .precos .tabela-dados td:nth-child(5), .precos .tabela-dados th { white-space:nowrap; }
