/*!
 * WePoint — Sistema de Registro Eletrônico de Ponto (REP-P)
 * Copyright (c) 2026 Hiarlle Oliveira Costa. Todos os direitos reservados.
 * Software proprietário — uso sujeito à licença (arquivo LICENSE).
 */
:root{
  --bg:#080b12;--bg2:#0f1623;--card:#141c2b;--line:#233045;
  --txt:#e7eefb;--muted:#8593ad;
  --cyan:#22d3ee;--blue:#3b82f6;--purple:#a855f7;
  --ok:#22c55e;--warn:#f59e0b;--err:#ef4444;
}
*{box-sizing:border-box;margin:0;padding:0}
body{
  font-family:'Segoe UI',system-ui,-apple-system,sans-serif;
  background:
    radial-gradient(900px 500px at 10% -10%, rgba(34,211,238,.10), transparent 60%),
    radial-gradient(900px 500px at 95% 0%, rgba(168,85,247,.10), transparent 55%),
    var(--bg);
  color:var(--txt);min-height:100vh;padding:26px 16px 60px;
}
.app{max-width:1280px;margin:0 auto}
h1{
  font-size:clamp(1.5rem,4vw,2.2rem);font-weight:800;letter-spacing:-.5px;
  background:linear-gradient(90deg,var(--cyan),var(--purple));
  -webkit-background-clip:text;background-clip:text;color:transparent;
}
a{color:var(--cyan)}
button{font-family:inherit;cursor:pointer}
input,select{font-family:inherit}

.dot{width:9px;height:9px;border-radius:50%;background:var(--err);
  box-shadow:0 0 10px currentColor;flex-shrink:0;transition:.25s}
.dot.on{background:var(--ok)}
.dot.load{background:var(--warn);animation:pulse 1s infinite}
@keyframes pulse{50%{opacity:.35}}

.panel{background:var(--card);border:1px solid var(--line);border-radius:16px;overflow:hidden;margin-bottom:14px}
.panel:last-child{margin-bottom:0}
.panel-head{padding:12px 16px;border-bottom:1px solid var(--line);
  display:flex;justify-content:space-between;align-items:center;
  font-weight:700;font-size:.88rem}
.panel-body{padding:16px}

.btn{padding:10px 14px;border-radius:10px;border:1px solid var(--line);
  background:var(--bg2);color:var(--txt);font-weight:600;font-size:.85rem;
  transition:.15s;display:inline-flex;align-items:center;justify-content:center;gap:6px}
.btn:hover:not(:disabled){border-color:var(--cyan)}
.btn:disabled{opacity:.4;cursor:not-allowed}
.btn.primary{background:linear-gradient(135deg,var(--cyan),var(--blue));
  color:#04121f;border:none;box-shadow:0 6px 18px rgba(34,211,238,.25)}
.btn.purple{background:linear-gradient(135deg,var(--purple),#7c3aed);
  color:#fff;border:none;box-shadow:0 6px 18px rgba(168,85,247,.25)}
.btn.danger{color:var(--err);border-color:rgba(239,68,68,.35)}
.btn.danger:hover:not(:disabled){border-color:var(--err);background:rgba(239,68,68,.08)}

.toast-container{position:fixed;top:20px;right:20px;z-index:9999;
  display:flex;flex-direction:column;gap:8px;pointer-events:none}
.toast{background:var(--card);border:1px solid var(--line);border-left:4px solid var(--cyan);
  border-radius:10px;padding:12px 16px;box-shadow:0 10px 30px rgba(0,0,0,.5);
  font-size:.85rem;min-width:260px;max-width:340px;animation:slideIn .3s ease}
.toast.ok{border-left-color:var(--ok)}
.toast.err{border-left-color:var(--err)}
.toast.warn{border-left-color:var(--warn)}
@keyframes slideIn{from{transform:translateX(120%);opacity:0}to{transform:translateX(0);opacity:1}}
/* ---------- Ícones em imagem (public/shared/img, PNG 512×512) ---------- */
img.ic{width:1.25em;height:1.25em;object-fit:contain;vertical-align:-.25em;display:inline-block;flex:0 0 auto}
.ic-fb{display:inline-block;line-height:1}
.btn img.ic,.tab img.ic{margin-right:2px}
.icon img.ic{width:1em;height:1em}
.dt-btn img.ic,.cp-icon-btn img.ic,.cp-nav-btn img.ic,.icon-btn img.ic{width:20px;height:20px;vertical-align:middle}
.cad-nav button img.ic{width:20px;height:20px}
.dt-title img.ic,.panel-head img.ic{width:22px;height:22px}