/* estilo.css — Controle Interno · identidade visual da FRONTI SOLUÇÕES
   Paleta e fontes do site institucional (frontisolucoes.com.br, :root --fs-*). */

@font-face { font-family: 'Plus Jakarta Sans'; font-weight: 600; font-display: swap; src: url(/fontes/plus-jakarta-sans-latin-600-normal.woff2) format('woff2'); }
@font-face { font-family: 'Plus Jakarta Sans'; font-weight: 800; font-display: swap; src: url(/fontes/plus-jakarta-sans-latin-800-normal.woff2) format('woff2'); }
@font-face { font-family: 'DM Sans'; font-weight: 400; font-display: swap; src: url(/fontes/dm-sans-latin-400-normal.woff2) format('woff2'); }
@font-face { font-family: 'DM Sans'; font-weight: 500; font-display: swap; src: url(/fontes/dm-sans-latin-500-normal.woff2) format('woff2'); }
@font-face { font-family: 'DM Sans'; font-weight: 700; font-display: swap; src: url(/fontes/dm-sans-latin-700-normal.woff2) format('woff2'); }

:root {
  --fs-dark: #0f1c2e;
  --fs-blue: #1a3a5c;
  --fs-blue-light: #2a5a8c;
  --fs-teal: #1a8a8a;
  --fs-teal-light: #22b8b8;
  --fs-teal-bg: #e8f6f6;
  --fs-accent: #e8a530;
  --fs-radius: 12px;
  --fs-radius-lg: 20px;

  --fundo: #f7f8fa;
  --superficie: #ffffff;
  --superficie-2: #eef0f4;
  --texto: #0f1c2e;
  --texto-2: #374151;
  --suave: #6b7280;
  --borda: #e3e7ee;
  --marca-nome: #1e3a5f;
  --marca-sub: #6b8a8a;
  --sombra: 0 1px 3px rgba(0,0,0,.06), 0 8px 24px rgba(0,0,0,.04);

  --aberta: #6b7280;     --aberta-bg: #eef0f4;
  --liberada: #1a8a8a;   --liberada-bg: #e8f6f6;
  --execucao: #2a5a8c;   --execucao-bg: #e8eef7;
  --bloqueada: #b45309;  --bloqueada-bg: #fff3e0;
  --feita: #1a7a5e;      --feita-bg: #e8f5e9;
  --cancelada: #9ca3af;  --cancelada-bg: #f3f4f6;
  --perigo: #c62828;
}

@media (prefers-color-scheme: dark) {
  :root {
    --fundo: #0b1522;
    --superficie: #12223a;
    --superficie-2: #1a2d48;
    --texto: #e8eef7;
    --texto-2: #c3cfdf;
    --suave: #8fa3bd;
    --borda: #22385a;
    --marca-nome: #7aafcf;
    --marca-sub: #5a8aaa;
    --sombra: 0 1px 3px rgba(0,0,0,.4);
    --aberta-bg: #1f2f47;    --aberta: #a5b4c8;
    --liberada-bg: #0f3a3d;  --liberada: #4dd8d8;
    --execucao-bg: #1a3358;  --execucao: #8fb8e8;
    --bloqueada-bg: #3d2a0f; --bloqueada: #f0b45a;
    --feita-bg: #123a2c;     --feita: #6fd3a8;
    --cancelada-bg: #1f2937; --cancelada: #6b7280;
  }
}

* { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  background: var(--fundo);
  color: var(--texto);
  font: 400 15px/1.45 'DM Sans', system-ui, sans-serif;
  padding-bottom: calc(72px + env(safe-area-inset-bottom));
}
h1, h2, h3, h4 { font-family: 'Plus Jakarta Sans', system-ui, sans-serif; font-weight: 800; margin: 0; }
h2 { font-size: 1.05rem; }
h3 { font-size: 1.1rem; line-height: 1.3; margin: .25rem 0 .75rem; }
h4 { font-size: .8rem; letter-spacing: .08em; text-transform: uppercase; color: var(--suave); margin: 1.25rem 0 .5rem; }
button, input, select { font: inherit; color: inherit; }
[hidden] { display: none !important; }

/* ---------- topo */
.topo {
  position: sticky; top: 0; z-index: 10;
  display: flex; align-items: center; justify-content: space-between;
  padding: calc(10px + env(safe-area-inset-top)) 16px 10px;
  background: color-mix(in srgb, var(--superficie) 92%, transparent);
  backdrop-filter: blur(10px);
  border-bottom: 1px solid var(--borda);
}
.marca { display: flex; align-items: center; gap: .6rem; }
.marca-icone {
  width: 36px; height: 36px; border-radius: 10px;
  background: linear-gradient(135deg, var(--fs-teal), var(--fs-blue));
  color: #fff; display: grid; place-items: center;
  font: 800 .8rem 'Plus Jakarta Sans', sans-serif;
}
.marca-texto { display: flex; flex-direction: column; line-height: 1.1; }
.marca-nome { font: 800 1.05rem 'Plus Jakarta Sans', sans-serif; color: var(--marca-nome); letter-spacing: .5px; }
.marca-nome span { font-weight: 600; opacity: .8; }
.marca-sub { font: 500 .62rem 'DM Sans', sans-serif; color: var(--marca-sub); letter-spacing: 1.5px; margin-top: 2px; }
.topo-acoes { display: flex; align-items: center; gap: .5rem; }
.conexao { width: 9px; height: 9px; border-radius: 50%; background: var(--feita); }
.conexao.fora { background: var(--perigo); }
.icone-btn {
  width: 40px; height: 40px; border: 0; border-radius: 10px; background: transparent;
  display: grid; place-items: center; cursor: pointer; color: var(--texto-2);
}
.icone-btn:hover { background: var(--superficie-2); }
.icone-btn svg { width: 20px; height: 20px; }
.icone-btn.girando svg { animation: gira 0.8s linear infinite; }
@keyframes gira { to { transform: rotate(360deg); } }

.aviso { margin: 10px 16px 0; padding: 10px 12px; border-radius: var(--fs-radius); background: var(--bloqueada-bg); color: var(--bloqueada); font-size: .9rem; }

main { max-width: 760px; margin: 0 auto; padding: 14px 16px 24px; }

/* ---------- resumo */
.resumo { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; margin-bottom: 14px; }
.resumo div {
  background: var(--superficie); border: 1px solid var(--borda); border-radius: var(--fs-radius);
  padding: 10px 8px; text-align: center; box-shadow: var(--sombra);
}
.resumo b { display: block; font: 800 1.35rem 'Plus Jakarta Sans', sans-serif; }
.resumo span { font-size: .72rem; color: var(--suave); }

/* ---------- filtros */
.filtros { display: flex; flex-direction: column; gap: 8px; margin-bottom: 12px; }
.filtros select {
  width: 100%; padding: 10px 12px; border-radius: 10px; border: 1px solid var(--borda); background: var(--superficie);
}
.chips { display: flex; gap: 6px; overflow-x: auto; padding-bottom: 2px; scrollbar-width: none; }
.chip {
  flex: none; padding: 6px 12px; border-radius: 999px; border: 1px solid var(--borda);
  background: var(--superficie); font-size: .82rem; cursor: pointer; color: var(--texto-2);
}
.chip[aria-pressed="true"] { background: var(--fs-blue); border-color: var(--fs-blue); color: #fff; }

/* ---------- lista */
.lista-cab { display: flex; align-items: center; justify-content: space-between; margin: 6px 0 10px; }
.lista { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 10px; }
.cartao {
  background: var(--superficie); border: 1px solid var(--borda); border-radius: var(--fs-radius);
  box-shadow: var(--sombra);
}
.item { display: flex; gap: 10px; padding: 12px; cursor: pointer; }
.item:focus-visible { outline: 2px solid var(--fs-teal); outline-offset: 2px; }
.item-pos {
  flex: none; width: 28px; height: 28px; border-radius: 8px; display: grid; place-items: center;
  background: var(--superficie-2); font: 800 .8rem 'Plus Jakarta Sans', sans-serif; color: var(--texto-2);
}
.item-corpo { flex: 1; min-width: 0; }
.item-topo { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; margin-bottom: 4px; }
.codigo {
  font: 700 .72rem ui-monospace, 'Cascadia Mono', Consolas, monospace; letter-spacing: .02em;
  padding: 2px 7px; border-radius: 6px; background: var(--fs-teal-bg); color: var(--fs-teal);
}
@media (prefers-color-scheme: dark) { .codigo { background: #0f3a3d; color: var(--fs-teal-light); } }
.item-titulo { font-weight: 500; color: var(--texto); overflow-wrap: anywhere; }
.item-meta { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-top: 6px; font-size: .78rem; color: var(--suave); }
.selo { padding: 2px 8px; border-radius: 999px; font-size: .72rem; font-weight: 700; }
.selo.aberta { background: var(--aberta-bg); color: var(--aberta); }
.selo.liberada { background: var(--liberada-bg); color: var(--liberada); }
.selo.execucao { background: var(--execucao-bg); color: var(--execucao); }
.selo.bloqueada { background: var(--bloqueada-bg); color: var(--bloqueada); }
.selo.feita { background: var(--feita-bg); color: var(--feita); }
.selo.cancelada { background: var(--cancelada-bg); color: var(--cancelada); }
.marcador { display: inline-flex; align-items: center; gap: 3px; }
.marcador svg { width: 14px; height: 14px; }
.marcador.prod { color: var(--perigo); }
.marcador.sozinha { color: var(--fs-teal); }
.marcador.sigilo { color: var(--fs-accent); }
.sigilo-caixa { border: 1px solid var(--borda); border-left: 4px solid var(--fs-accent); border-radius: var(--fs-radius); padding: 10px 12px; display: flex; flex-direction: column; gap: 8px; }
.sigilo-caixa p { margin: 0; font-size: .86rem; }
.setas { display: flex; flex-direction: column; gap: 4px; }
.setas button {
  width: 36px; height: 32px; border-radius: 8px; border: 1px solid var(--borda);
  background: var(--superficie-2); cursor: pointer; display: grid; place-items: center;
}
.setas button:disabled { opacity: .35; cursor: default; }
.setas svg { width: 16px; height: 16px; }
.vazio { text-align: center; color: var(--suave); padding: 28px 0; }
.carimbo { text-align: center; font-size: .75rem; color: var(--suave); margin-top: 14px; }
.suave { color: var(--suave); font-size: .88rem; margin: 0 0 12px; }

.barra-ordem {
  position: sticky; top: 66px; z-index: 5;
  display: flex; align-items: center; gap: 8px; padding: 10px 12px; margin-bottom: 10px;
  border-radius: var(--fs-radius); background: var(--fs-blue); color: #fff;
}
.barra-ordem span { flex: 1; font-size: .85rem; }

/* ---------- botões */
.btn {
  padding: 8px 14px; border-radius: 10px; border: 1px solid var(--borda); background: var(--superficie);
  font-weight: 600; font-size: .88rem; cursor: pointer; color: var(--texto-2); min-height: 38px;
}
.btn.primario { background: linear-gradient(135deg, var(--fs-teal), var(--fs-blue)); border: 0; color: #fff; }
.btn.perigo { color: var(--perigo); }
.btn:disabled { opacity: .5; cursor: default; }
.btn-opcao { width: 100%; text-align: left; padding: 12px 14px; }
.decisao { padding: 14px; }
.decisao .suave { margin: 0; }
.decisao .item-titulo { margin: 6px 0 10px; }
.decisao .folha-acoes { margin-top: 0; }

/* ---------- interruptor "pode ir sozinha" */
.interruptor { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 10px 0; border-top: 1px solid var(--borda); }
.interruptor input { appearance: none; width: 46px; height: 28px; border-radius: 999px; background: var(--superficie-2); border: 1px solid var(--borda); position: relative; cursor: pointer; transition: background .15s; flex: none; }
.interruptor input::after { content: ''; position: absolute; top: 3px; left: 3px; width: 20px; height: 20px; border-radius: 50%; background: #fff; box-shadow: 0 1px 2px rgba(0,0,0,.25); transition: transform .15s; }
.interruptor input:checked { background: var(--fs-teal); border-color: var(--fs-teal); }
.interruptor input:checked::after { transform: translateX(18px); }
.interruptor small { display: block; color: var(--suave); }

/* ---------- abas */
.abas {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 10;
  display: flex; justify-content: center; gap: 4px;
  padding: 6px 16px calc(6px + env(safe-area-inset-bottom));
  background: var(--superficie); border-top: 1px solid var(--borda);
}
.abas button {
  flex: 1; max-width: 200px; display: flex; flex-direction: column; align-items: center; gap: 2px;
  border: 0; background: none; padding: 6px; border-radius: 10px; font-size: .75rem; color: var(--suave); cursor: pointer; position: relative;
}
.abas button svg { width: 22px; height: 22px; }
.abas button.ativa { color: var(--fs-teal); font-weight: 700; }
.contador {
  position: absolute; top: 2px; left: calc(50% + 6px);
  min-width: 18px; height: 18px; padding: 0 5px; border-radius: 999px;
  background: var(--fs-accent); color: #fff; font-size: .68rem; font-weight: 700; display: grid; place-items: center;
}

/* ---------- folha de detalhe */
.folha {
  width: min(560px, 100vw); max-height: 88vh; margin: auto auto 0; padding: 14px 16px calc(18px + env(safe-area-inset-bottom));
  border: 0; border-radius: var(--fs-radius-lg) var(--fs-radius-lg) 0 0;
  background: var(--superficie); color: var(--texto); overflow-y: auto;
}
@media (min-width: 640px) { .folha { margin: auto; border-radius: var(--fs-radius-lg); } }
.folha::backdrop { background: rgba(15, 28, 46, .45); }
.folha-cab { display: flex; align-items: center; justify-content: space-between; }
.ficha { display: grid; grid-template-columns: auto 1fr; gap: 6px 12px; margin: 0; font-size: .88rem; }
.ficha dt { color: var(--suave); }
.ficha dd { margin: 0; overflow-wrap: anywhere; }
.folha-acoes { display: flex; flex-direction: column; gap: 8px; margin-top: 14px; }
.linha-tempo { list-style: none; margin: 0; padding: 0 0 0 14px; border-left: 2px solid var(--borda); font-size: .82rem; }
.linha-tempo li { position: relative; padding: 0 0 10px 8px; }
.linha-tempo li::before { content: ''; position: absolute; left: -20px; top: 5px; width: 10px; height: 10px; border-radius: 50%; background: var(--fs-teal); border: 2px solid var(--superficie); }
.linha-tempo time { color: var(--suave); display: block; font-size: .74rem; }

/* ---------- entrar */
.entrar { max-width: 380px; margin: 40px auto; padding: 22px; display: flex; flex-direction: column; gap: 12px; }
.entrar label { display: flex; flex-direction: column; gap: 4px; font-size: .85rem; color: var(--texto-2); }
.entrar input { padding: 11px 12px; border-radius: 10px; border: 1px solid var(--borda); background: var(--superficie); font-size: 1rem; }
.erro { color: var(--perigo); font-size: .85rem; min-height: 1.2em; margin: 0; }

.toast {
  position: fixed; left: 50%; bottom: calc(84px + env(safe-area-inset-bottom)); transform: translateX(-50%);
  background: var(--fs-dark); color: #fff; padding: 10px 16px; border-radius: 10px; font-size: .88rem; z-index: 30;
  box-shadow: 0 8px 24px rgba(0,0,0,.25); max-width: calc(100vw - 32px);
}

@media (max-width: 380px) { .resumo { grid-template-columns: repeat(2, 1fr); } }

.aviso-versao {
  position: fixed; left: 50%; transform: translateX(-50%); bottom: calc(84px + env(safe-area-inset-bottom)); z-index: 25;
  display: flex; align-items: center; gap: 12px; padding: 10px 12px 10px 16px; border-radius: 12px;
  background: var(--fs-dark); color: #fff; box-shadow: 0 8px 24px rgba(0,0,0,.25); max-width: calc(100vw - 32px); font-size: .9rem;
}
.rodape-acoes { text-align: center; margin-top: 18px; }
.conexoes { margin-top: 18px; border: 1px solid var(--borda); border-radius: var(--fs-radius); padding: 10px 12px; }
.conexoes h4 { margin: 0 0 8px; }
.conexao-item { display: flex; align-items: center; justify-content: space-between; gap: 10px; font-size: .85rem; }
.link-btn { border: 0; background: none; color: var(--suave); font-size: .8rem; text-decoration: underline; cursor: pointer; padding: 8px; }

/* ---------- definir acesso (convite) */
body.sem-abas { padding-bottom: env(safe-area-inset-bottom); }
.entrar h2 { font-size: .95rem; margin-top: 8px; }
.entrar .btn { text-align: center; text-decoration: none; }
.definir { display: flex; flex-direction: column; gap: 12px; margin-top: 8px; }
.definir label { display: flex; flex-direction: column; gap: 4px; font-size: .85rem; color: var(--texto-2); }
.definir input { padding: 11px 12px; border-radius: 10px; border: 1px solid var(--borda); background: var(--superficie); font-size: 1rem; }
.segredo {
  display: block; padding: 12px; border-radius: 10px; background: var(--superficie-2);
  font: 700 1rem ui-monospace, 'Cascadia Mono', Consolas, monospace; letter-spacing: .05em; word-break: break-all;
}
.recuperacao { font: 600 1rem ui-monospace, 'Cascadia Mono', Consolas, monospace; columns: 2; padding-left: 1.4rem; }
