/* ServiceDesk GCF — folha de estilos própria (sem dependências externas).
   Tratamento "premium": paleta mais rica que o utilitário do CRM, com gradientes
   subtis, cartões elevados e gráficos com a mesma linguagem visual. */

:root{
  --ink:#171b23; --muted:#5c6875; --bg:#eef1f5; --surface:#ffffff; --surface-2:#f2f4f8;
  --rule:#dde2e9;
  --accent:#8a1c1c;        /* vermelho do brasão GCF */
  --accent-ink:#ffffff;
  --accent-soft:#fbe9e7;
  --gold:#b8860b;          /* dourado do brasão */
  --gold-soft:#fbf3df;
  --warn:#a15c07; --warn-soft:#fbf1de;
  --danger:#b3261e; --danger-soft:#fcebea;
  --ok:#1f7a3d; --ok-soft:#e9f6ec;
  --info:#2563a8; --info-soft:#e8f1fb;
  --radius:10px;
  --shadow:0 1px 2px rgba(20,20,30,.06), 0 10px 28px -14px rgba(20,20,30,.18);
  --shadow-lg:0 4px 10px rgba(20,20,30,.08), 0 24px 48px -20px rgba(20,20,30,.28);
  --sidebar-w:232px;
}

*{ box-sizing:border-box; }
html,body{ margin:0; padding:0; }
body{
  background:var(--bg); color:var(--ink);
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;
  font-size:14px; line-height:1.5;
}
a{ color:var(--accent); text-decoration:none; }
a:hover{ text-decoration:underline; }
h1,h2,h3{ margin:0 0 10px; line-height:1.25; }
h1{ font-size:23px; } h2{ font-size:17px; } h3{ font-size:14.5px; }
p{ margin:0 0 10px; }
.muted{ color:var(--muted); }
.mono{ font-variant-numeric:tabular-nums; }

/* ---------- layout com sidebar ---------- */
.app{ display:flex; min-height:100vh; }
.sidebar{
  width:var(--sidebar-w); flex:none; color:#e9dfc9; display:flex; flex-direction:column; padding:0 0 18px;
  background:linear-gradient(180deg,#1c1210 0%,#241715 55%,#1c1210 100%);
  border-right:1px solid #3a2420;
}
.sidebar .brand{
  display:flex; align-items:center; gap:10px; padding:20px 18px 16px; border-bottom:1px solid #3a2420; margin-bottom:8px;
}
.sidebar .brand img{ width:34px; height:34px; object-fit:contain; flex:none; }
.sidebar .brand .placeholder-logo{
  width:34px; height:34px; border-radius:50%; background:radial-gradient(circle at 30% 30%, var(--gold), var(--accent) 75%);
  flex:none; border:1px solid rgba(255,255,255,.25);
}
.sidebar .brand .txt{ line-height:1.2; }
.sidebar .brand .txt b{ display:block; font-size:14.5px; color:#fff; letter-spacing:.02em; }
.sidebar .brand .txt span{ font-size:10.5px; color:#c9a55c; text-transform:uppercase; letter-spacing:.08em; }

.unit-switch{ padding:0 14px 14px; }
.unit-switch select{
  width:100%; background:#2a1b18; color:#e9dfc9; border:1px solid #4a322c; border-radius:7px;
  padding:8px 10px; font-size:12.5px;
}

.sidebar nav{ display:flex; flex-direction:column; gap:1px; flex:1; padding:4px 10px; }
.sidebar nav a{
  color:#cbb98e; padding:9px 12px; font-size:13.5px; border-radius:7px; display:flex; align-items:center; gap:9px;
}
.sidebar nav a:hover{ background:#2a1b18; text-decoration:none; color:#fff; }
.sidebar nav a.active{ background:linear-gradient(90deg, var(--accent), #6e1616); color:#fff; font-weight:600; }
.sidebar nav .grp-label{ font-size:10px; text-transform:uppercase; letter-spacing:.09em; color:#8a7355; padding:14px 12px 4px; }
.sidebar .foot{ padding:14px 18px 0; font-size:11px; color:#8a7355; border-top:1px solid #3a2420; margin-top:10px; }

.main{ flex:1; min-width:0; display:flex; flex-direction:column; }
.topbar{
  display:flex; align-items:center; justify-content:space-between;
  padding:13px 26px; background:var(--surface); border-bottom:1px solid var(--rule);
}
.topbar .who{ font-size:13px; color:var(--muted); }
.topbar .who strong{ color:var(--ink); }
.content{ padding:26px; flex:1; }

/* ---------- topo de página ---------- */
.page-head{ display:flex; align-items:center; justify-content:space-between; margin-bottom:20px; flex-wrap:wrap; gap:10px; }
.page-head h1{ margin:0; }
.page-head .sub{ color:var(--muted); font-size:13px; margin-top:2px; }

/* ---------- cards / KPIs ---------- */
.grid-kpi{ display:grid; grid-template-columns:repeat(auto-fit,minmax(190px,1fr)); gap:14px; margin-bottom:22px; }
.kpi{
  background:var(--surface); border:1px solid var(--rule); border-radius:var(--radius); padding:17px 19px;
  box-shadow:var(--shadow); position:relative; overflow:hidden;
}
.kpi::before{ content:""; position:absolute; top:0; left:0; right:0; height:3px; background:linear-gradient(90deg, var(--accent), var(--gold)); }
.kpi .v{ font-size:25px; font-weight:700; color:var(--ink); font-variant-numeric:tabular-nums; }
.kpi .v.accent{ color:var(--accent); }
.kpi .l{ font-size:11.5px; color:var(--muted); text-transform:uppercase; letter-spacing:.05em; margin-top:3px; }
.kpi .trend{ font-size:11px; margin-top:6px; }
.kpi .trend.up{ color:var(--danger); } .kpi .trend.down{ color:var(--ok); }

.card{ background:var(--surface); border:1px solid var(--rule); border-radius:var(--radius); box-shadow:var(--shadow); padding:20px 22px; margin-bottom:18px; }
.card.elevated{ box-shadow:var(--shadow-lg); }
.card-head{ display:flex; align-items:center; justify-content:space-between; margin-bottom:12px; }
.card-head h2{ margin:0; }

.grid-2{ display:grid; grid-template-columns:1fr 1fr; gap:16px; }
.grid-3{ display:grid; grid-template-columns:repeat(3,1fr); gap:16px; }

/* ---------- tabelas ---------- */
.table-wrap{ overflow-x:auto; border:1px solid var(--rule); border-radius:var(--radius); background:var(--surface); }
table{ width:100%; border-collapse:collapse; font-size:13.2px; }
th,td{ padding:10px 14px; text-align:left; border-bottom:1px solid var(--rule); vertical-align:middle; }
thead th{ background:var(--surface-2); font-size:11px; text-transform:uppercase; letter-spacing:.04em; color:var(--muted); font-weight:600; }
tbody tr:hover{ background:var(--surface-2); }
tbody tr:last-child td{ border-bottom:none; }
td.num{ font-variant-numeric:tabular-nums; text-align:right; }
td.actions{ white-space:nowrap; text-align:right; }
td.actions a{ margin-left:10px; font-size:12.5px; }
tr.overdue{ background:var(--danger-soft); }
tr.overdue:hover{ background:#fbdedb; }

/* ---------- badges ---------- */
.badge{ display:inline-block; padding:2px 9px; border-radius:20px; font-size:11px; font-weight:600; letter-spacing:.02em; white-space:nowrap; }
.badge-novo, .badge-atribuido{ background:var(--info-soft); color:var(--info); }
.badge-aguarda-aprovacao{ background:var(--warn-soft); color:var(--warn); }
.badge-em-progresso{ background:var(--gold-soft); color:#8a6d16; }
.badge-pendente{ background:var(--surface-2); color:var(--muted); }
.badge-concluido{ background:var(--ok-soft); color:var(--ok); }
.badge-fechado{ background:var(--surface-2); color:var(--muted); }
.badge-reaberto{ background:var(--danger-soft); color:var(--danger); }
.badge-cancelado{ background:var(--surface-2); color:var(--muted); text-decoration:line-through; }
.badge-critica{ background:var(--danger-soft); color:var(--danger); }
.badge-alta{ background:var(--warn-soft); color:var(--warn); }
.badge-media{ background:var(--info-soft); color:var(--info); }
.badge-baixa{ background:var(--ok-soft); color:var(--ok); }
.badge-admin{ background:#f0e6fb; color:#6a2fb0; }
.badge-gestor_unidade{ background:var(--accent-soft); color:var(--accent); }
.badge-responsavel_area{ background:var(--gold-soft); color:#8a6d16; }
.badge-colaborador{ background:var(--surface-2); color:var(--muted); }
.badge-pendente-aprov{ background:var(--warn-soft); color:var(--warn); }
.badge-ativo{ background:var(--ok-soft); color:var(--ok); }
.badge-inativo{ background:var(--danger-soft); color:var(--danger); }
.badge-neutro{ background:var(--surface-2); color:var(--muted); }
.badge-aprovado{ background:var(--ok-soft); color:var(--ok); }
.badge-rejeitado{ background:var(--danger-soft); color:var(--danger); }

/* ---------- formulários ---------- */
form .field{ margin-bottom:14px; }
label{ display:block; font-size:12.5px; font-weight:600; color:var(--ink); margin-bottom:5px; }
label .opt{ font-weight:400; color:var(--muted); }
input[type=text], input[type=email], input[type=password], input[type=number],
input[type=date], input[type=datetime-local], input[type=search], select, textarea{
  width:100%; padding:9px 11px; border:1px solid var(--rule); border-radius:7px;
  font-size:13.5px; font-family:inherit; background:var(--surface); color:var(--ink);
}
input:focus, select:focus, textarea:focus{ outline:2px solid var(--accent); outline-offset:1px; border-color:var(--accent); }
textarea{ resize:vertical; min-height:80px; }
.form-row{ display:grid; grid-template-columns:1fr 1fr; gap:14px; }
.form-row-3{ display:grid; grid-template-columns:1fr 1fr 1fr; gap:14px; }
.form-actions{ display:flex; gap:10px; margin-top:18px; }
.help{ font-size:11.5px; color:var(--muted); margin-top:4px; }
.field-error{ font-size:12px; color:var(--danger); margin-top:4px; }
.checkbox-row{ display:flex; align-items:center; gap:8px; }
.checkbox-row input{ width:auto; }

/* ---------- botões ---------- */
.btn{
  display:inline-flex; align-items:center; gap:6px; padding:9px 16px; border-radius:7px;
  font-size:13.5px; font-weight:600; border:1px solid transparent; cursor:pointer; text-decoration:none;
}
.btn:hover{ text-decoration:none; }
.btn-primary{ background:var(--accent); color:var(--accent-ink); }
.btn-primary:hover{ background:#6e1616; }
.btn-gold{ background:var(--gold); color:#2a1c00; }
.btn-gold:hover{ background:#9c7009; }
.btn-secondary{ background:var(--surface); color:var(--ink); border-color:var(--rule); }
.btn-secondary:hover{ background:var(--surface-2); }
.btn-danger{ background:var(--danger-soft); color:var(--danger); border-color:#f0c9c6; }
.btn-ok{ background:var(--ok-soft); color:var(--ok); border-color:#bfe3c9; }
.btn-sm{ padding:6px 11px; font-size:12.5px; }

/* ---------- alertas / flash ---------- */
.alert{ padding:11px 15px; border-radius:8px; font-size:13.5px; margin-bottom:14px; border:1px solid transparent; }
.alert-success{ background:var(--ok-soft); color:var(--ok); border-color:#bfe3c9; }
.alert-error{ background:var(--danger-soft); color:var(--danger); border-color:#f0c9c6; }
.alert-info{ background:var(--info-soft); color:var(--info); border-color:#c3d9ef; }

/* ---------- timeline ---------- */
.timeline{ list-style:none; margin:0; padding:0; }
.timeline li{ display:flex; gap:12px; padding:12px 0; border-bottom:1px dashed var(--rule); }
.timeline li:last-child{ border-bottom:none; }
.timeline .dot{ width:9px; height:9px; border-radius:50%; background:var(--accent); margin-top:6px; flex:none; }
.timeline .dot.sys{ background:var(--muted); }
.timeline .dot.ok{ background:var(--ok); }
.timeline .body{ flex:1; }
.timeline .meta{ font-size:11.5px; color:var(--muted); margin-top:2px; }

/* ---------- gráficos ---------- */
.chart-card canvas{ max-width:100%; }
.legend-row{ display:flex; gap:16px; flex-wrap:wrap; margin-top:10px; font-size:12px; color:var(--muted); }
.legend-row .sw{ display:inline-block; width:9px; height:9px; border-radius:2px; margin-right:5px; vertical-align:middle; }

/* ---------- login ---------- */
.auth-wrap{ min-height:100vh; display:flex; align-items:center; justify-content:center; background:
  radial-gradient(1200px 600px at 20% -10%, #2a1b18 0%, var(--bg) 55%); padding:20px; }
.auth-card{ width:100%; max-width:380px; background:var(--surface); border:1px solid var(--rule); border-radius:14px; box-shadow:var(--shadow-lg); padding:32px; }
.auth-card .brand{ display:flex; align-items:center; gap:10px; margin-bottom:6px; }
.auth-card .brand img{ width:40px; height:40px; object-fit:contain; }
.auth-card .brand b{ font-size:17px; }
.auth-card .sub{ color:var(--muted); font-size:13px; margin-bottom:22px; }

/* ---------- KB ---------- */
.kb-search{ display:flex; gap:10px; margin-bottom:18px; }
.kb-search input{ flex:1; }
.kb-suggest{ background:var(--gold-soft); border:1px solid #e6d9ab; border-radius:8px; padding:12px 14px; margin-bottom:14px; }
.kb-suggest h3{ font-size:13px; margin-bottom:8px; color:#8a6d16; }
.kb-suggest ul{ margin:0; padding-left:18px; }
.kb-suggest li{ font-size:13px; margin-bottom:4px; }

/* ---------- print ---------- */
@media print{
  .sidebar, .topbar, .page-head .btn, form, .no-print{ display:none !important; }
  body{ background:#fff; }
  .content{ padding:0; }
  .card{ box-shadow:none; border:1px solid #ccc; }
}

/* ---------- menu móvel (hambúrguer) ---------- */
.menu-toggle{
  display:none; background:none; border:1px solid var(--rule); border-radius:7px;
  width:36px; height:36px; align-items:center; justify-content:center; cursor:pointer; color:var(--ink);
  font-size:18px; line-height:1; padding:0;
}
.sidebar-backdrop{ display:none; }

@media (max-width:880px){
  .menu-toggle{ display:inline-flex; }
  .content{ padding:16px; }
  .form-row, .form-row-3, .grid-2, .grid-3{ grid-template-columns:1fr; }

  .sidebar{
    position:fixed; top:0; left:0; height:100vh; z-index:60;
    transform:translateX(-100%); transition:transform .22s ease;
    box-shadow:var(--shadow-lg);
  }
  .app.nav-open .sidebar{ transform:translateX(0); }

  .sidebar-backdrop{
    display:block; position:fixed; inset:0; background:rgba(10,10,15,.45); z-index:50;
    opacity:0; pointer-events:none; transition:opacity .22s ease;
  }
  .app.nav-open .sidebar-backdrop{ opacity:1; pointer-events:auto; }
  .app.nav-open{ overflow:hidden; }
}
@media (prefers-reduced-motion:reduce){ *{ transition:none !important; } }
