/* =========================================================
   PRIME SISTEMAS — estilo compartilhado por todos os módulos
========================================================= */
:root{
  --azul:#0d6e6e; --azul-esc:#0a5555; --azul-claro:#e6f4f4;
  --cinza:#64748b; --cinza-cl:#f1f5f9; --borda:#e2e8f0;
  --texto:#1e293b; --verde:#16a34a; --vermelho:#dc2626; --amarelo:#d97706;
  --sombra:0 10px 30px rgba(13,110,110,.12);
}
*{box-sizing:border-box;margin:0;padding:0}
body{
  font-family:'Segoe UI',system-ui,-apple-system,sans-serif;
  color:var(--texto); min-height:100vh; background:#f8fafc;
}
.oculto{display:none !important}
a{color:inherit}

/* ---------------- LOGIN ---------------- */
.fundo-login{
  min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px;
  background:linear-gradient(135deg,#0d6e6e 0%,#083f3f 100%);
}
.card-login{background:#fff;border-radius:18px;box-shadow:var(--sombra);width:100%;max-width:400px;padding:38px 34px}
.logo{text-align:center;margin-bottom:26px}
.logo .marca{font-size:26px;font-weight:800;color:var(--azul);letter-spacing:.5px}
.logo .sub{font-size:13px;color:var(--cinza);margin-top:4px}
.campo{margin-bottom:16px}
.campo label{display:block;font-size:13px;font-weight:600;color:var(--cinza);margin-bottom:6px}
.campo input{width:100%;padding:12px 14px;border:1.5px solid var(--borda);border-radius:10px;font-size:15px;transition:border .15s}
.campo input:focus{outline:none;border-color:var(--azul)}
.btn{width:100%;padding:13px;border:none;border-radius:10px;font-size:15px;font-weight:700;cursor:pointer;transition:.15s}
.btn-primario{background:var(--azul);color:#fff}
.btn-primario:hover{background:var(--azul-esc)}
.btn-primario:disabled{opacity:.6;cursor:default}
.link-alt{text-align:center;margin-top:18px;font-size:14px;color:var(--cinza)}
.link-alt a{color:var(--azul);font-weight:600;cursor:pointer;text-decoration:none}
.aviso{padding:12px 14px;border-radius:10px;font-size:14px;margin-bottom:16px;line-height:1.4}
.aviso-erro{background:#fef2f2;color:var(--vermelho);border:1px solid #fecaca}
.aviso-ok{background:#f0fdf4;color:var(--verde);border:1px solid #bbf7d0}
.aviso-info{background:#fffbeb;color:var(--amarelo);border:1px solid #fde68a}

/* ---------------- BARRA SUPERIOR (compartilhada) ---------------- */
header.topo{
  background:#fff;border-bottom:1px solid var(--borda);
  display:flex;align-items:center;gap:22px;
  padding:12px 26px;position:sticky;top:0;z-index:20;flex-wrap:wrap;
}
header .marca{font-size:19px;font-weight:800;color:var(--azul);text-decoration:none;white-space:nowrap}
nav.menu{display:flex;gap:6px;flex:1;flex-wrap:wrap}
nav.menu a{
  padding:8px 14px;border-radius:9px;font-size:14px;font-weight:600;color:var(--cinza);
  text-decoration:none;transition:.12s;white-space:nowrap;
}
nav.menu a:hover{background:var(--cinza-cl);color:var(--texto)}
nav.menu a.ativo{background:var(--azul-claro);color:var(--azul)}
.topo-dir{display:flex;align-items:center;gap:14px}
.usuario{text-align:right;line-height:1.2}
.usuario .nome{font-weight:700;font-size:14px}
.usuario .papel{font-size:12px;color:var(--cinza)}
.btn-sair{background:var(--cinza-cl);color:var(--texto);border:none;padding:9px 16px;border-radius:9px;font-weight:600;cursor:pointer;font-size:14px}
.btn-sair:hover{background:#e2e8f0}

/* ---------------- CONTEÚDO ---------------- */
.container{max-width:1080px;margin:0 auto;padding:30px 26px}
h1.titulo{font-size:22px;margin-bottom:4px}
p.legenda{color:var(--cinza);margin-bottom:24px;font-size:15px}
/* boas-vindas */
.hero{background:linear-gradient(120deg,var(--azul) 0%,#0a5b5b 100%);border-radius:16px;padding:26px 28px;color:#fff;margin-bottom:26px}
.hero h1{font-size:23px;margin-bottom:4px}
.hero p{opacity:.9;font-size:14px}

/* categorias */
.cat-titulo{grid-column:1/-1;font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.7px;color:var(--cinza);margin:16px 0 2px;display:flex;align-items:center;gap:8px}
.cat-titulo:first-child{margin-top:0}
.cat-titulo::after{content:"";flex:1;height:1px;background:var(--borda)}

.grade{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:18px}
.modulo{position:relative;background:#fff;border:1px solid var(--borda);border-radius:14px;padding:22px;cursor:pointer;transition:.15s;text-decoration:none;color:inherit;display:block}
.modulo:hover{transform:translateY(-3px);box-shadow:var(--sombra);border-color:var(--azul)}
.modulo .ico{font-size:34px;margin-bottom:12px}
.modulo .nm{font-size:17px;font-weight:700;margin-bottom:6px}
.modulo .ds{font-size:13px;color:var(--cinza);line-height:1.4}
.modulo.embreve{opacity:.72;cursor:default;background:#fbfcfd}
.modulo.embreve:hover{transform:none;box-shadow:none;border-color:var(--borda)}
.badge-breve{position:absolute;top:12px;right:12px;background:#fef3c7;color:#b45309;font-size:11px;font-weight:800;padding:3px 9px;border-radius:20px;letter-spacing:.3px}
.vazio{background:#fff;border:1px dashed var(--borda);border-radius:14px;padding:40px;text-align:center;color:var(--cinza)}
.bloqueio{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;text-align:center;padding:30px}
.bloqueio .em{font-size:46px}
.bloqueio a{color:var(--azul);font-weight:700;text-decoration:none}

/* ---------------- ADMIN ---------------- */
.secao-admin{margin-top:40px}
.secao-admin h2{font-size:18px;margin-bottom:14px;display:flex;align-items:center;gap:8px}
.tabela-wrap{background:#fff;border:1px solid var(--borda);border-radius:14px;overflow:auto}
table{width:100%;border-collapse:collapse;font-size:14px;min-width:640px}
th,td{padding:12px 14px;text-align:left;border-bottom:1px solid var(--borda);white-space:nowrap}
th{background:var(--cinza-cl);font-weight:700;color:var(--cinza);font-size:12px;text-transform:uppercase;letter-spacing:.4px}
tr:last-child td{border-bottom:none}
.sw{position:relative;display:inline-block;width:42px;height:24px}
.sw input{opacity:0;width:0;height:0}
.sw span{position:absolute;inset:0;background:#cbd5e1;border-radius:24px;cursor:pointer;transition:.2s}
.sw span:before{content:"";position:absolute;height:18px;width:18px;left:3px;top:3px;background:#fff;border-radius:50%;transition:.2s}
.sw input:checked + span{background:var(--verde)}
.sw input:checked + span:before{transform:translateX(18px)}
.chk{width:18px;height:18px;cursor:pointer;accent-color:var(--azul)}
td.centro,th.centro{text-align:center}
.mini{font-size:12px;color:var(--cinza);margin-top:4px}
.salvo{color:var(--verde);font-size:12px;font-weight:600;opacity:0;transition:.3s}
.salvo.show{opacity:1}

@media(max-width:520px){
  .container{padding:22px 16px}
  header.topo{padding:10px 16px;gap:12px}
}
