/* =========================================================
   SENAC UI — SISTEMA COMPLETO (VERSÃO REFINADA)
   ======================================================= */

/* ================= TOKENS ================= */
:root{
  --senac-blue:#004a8d;
  --senac-blue-hover:#003a6d;
  --senac-blue-light:#eaf2ff;

  --senac-orange:#f7941d;

  --gray-25:#fafbff;
  --gray-50:#f5f7fa;
  --gray-100:#eef2f7;
  --gray-200:#e5e7eb;
  --gray-300:#d1d5db;
  --gray-600:#6b7280;
  --gray-800:#1f2937;

  --success:#16a34a;
  --danger:#dc2626;
  --warning:#f59e0b;

  --border:#e5e7eb;

  --shadow-sm:0 2px 6px rgba(0,0,0,.05);
  --shadow-md:0 8px 24px rgba(0,0,0,.08);

  --radius:14px;
}

/* ================= BASE ================= */
html,body{height:100%}

body{
  font-family:'Comercio Sans', system-ui, -apple-system, 'Segoe UI', Roboto, Arial;
  background:var(--gray-50);
  color:#0f172a;
}

/* ================= LAYOUT ================= */
.content-area{
  width:100%;
  max-width:none;
  padding:1rem;
}

@media(min-width:1200px){
  .content-area{
    padding:1.5rem;
  }
}

/* ================= TIPOGRAFIA ================= */
h1,h2,h3{font-weight:700}
.form-label{font-weight:600}

/* ================= NAVBAR ================= */
.bg-senac{background:var(--senac-blue)!important}
.text-senac{color:var(--senac-blue)!important}

.topbar-elevated{
  box-shadow:0 4px 16px rgba(0,0,0,.08);
}

/* ================= BOTÕES ================= */
.btn{
  border-radius:10px;
  font-weight:600;
}

.btn-senac-blue,
.btn-primary{
  background:var(--senac-blue);
  border-color:var(--senac-blue);
  color:#fff;
}

.btn-senac-blue:hover,
.btn-primary:hover{
  background:var(--senac-blue-hover);
  border-color:var(--senac-blue-hover);
}

.btn-senac{
  background:var(--senac-orange);
  color:#fff;
}

.btn-senac:hover{
  filter:brightness(.95);
}

/* ================= CARDS ================= */
.card{
  background:#fff;
  border:1px solid var(--border);
  border-radius:var(--radius);
  box-shadow:var(--shadow-sm);
  transition:all .2s ease;
}

.card:hover{
  box-shadow:var(--shadow-md);
}

.card-header{
  background:#fff;
  border-bottom:1px solid var(--border);
}

/* ================= KPI ================= */
.kpi-card{
  padding:18px;
  position:relative;
}

.kpi-card::before{
  content:"";
  position:absolute;
  top:0;
  left:0;
  height:4px;
  width:100%;
  background:var(--senac-blue);
}

.kpi-card.orange::before{background:var(--senac-orange)}
.kpi-card.green::before{background:var(--success)}

.kpi-title{
  font-size:.9rem;
  color:var(--gray-600);
}

.kpi-value{
  font-size:2rem;
  font-weight:700;
  color:var(--senac-blue);
}

/* ================= FORM ================= */
.form-control,
.form-select{
  border-radius:10px;
  border:1px solid var(--gray-300);
  min-height:42px;
}

.form-control:focus,
.form-select:focus{
  border-color:var(--senac-blue);
  box-shadow:0 0 0 .2rem rgba(0,74,141,.15);
}

.form-control[readonly]{
  background:var(--gray-25);
}

/* ================= TABELAS ================= */
.table thead th{
  background:var(--gray-50);
  border-bottom:1px solid var(--border);
  font-weight:700;
}

.table tbody td{
  border-color:var(--gray-100);
}

.table tbody tr:hover{
  background:#f9fbfd;
}

/* ================= BADGES ================= */
.badge{
  border-radius:999px;
  padding:.4rem .7rem;
  font-weight:700;
}

/* ================= SECTIONS ================= */
.section-block{
  border:1px solid var(--gray-100);
  border-radius:var(--radius);
  padding:18px;
  margin-bottom:20px;
  background:#fff;
}

.section-title{
  font-size:1rem;
  font-weight:700;
  margin-bottom:12px;
}

/* ================= SUMMARY ================= */
.summary-strip{
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:12px;
  margin-bottom:20px;
}

.summary-item{
  background:#fff;
  border:1px solid var(--border);
  border-radius:12px;
  padding:12px;
}

.summary-label{
  font-size:.8rem;
  color:var(--gray-600);
}

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

@media(max-width:480px){
  .summary-strip{
    grid-template-columns:1fr;
  }
}

/* ================= LINKS ================= */
.link-box .form-control{
  background:#fff;
}

/* ================= QR ================= */
.qr-card{
  border:1px solid var(--border);
  border-radius:var(--radius);
  padding:16px;
  text-align:center;
}

.qr-image{
  max-width:160px;
  margin:10px auto;
}

/* ================= EMPTY ================= */
.empty-state{
  display:flex;
  gap:10px;
  align-items:center;
  padding:16px;
  border:1px dashed var(--gray-300);
  background:#f8fbff;
  border-radius:12px;
}

/* ================= DIVIDER ================= */
.divider-soft{
  height:1px;
  background:linear-gradient(to right, transparent, var(--border), transparent);
}

/* ================= CHIP ================= */
.brand-chip{
  width:40px;
  height:40px;
  border-radius:12px;
  display:flex;
  align-items:center;
  justify-content:center;
  background:var(--senac-blue-light);
  color:var(--senac-blue);
  font-weight:700;
}

/* ================= FOOTER BAR ================= */
.btn-bar{
  background:#fff;
  border-top:1px solid var(--border);
}

/* ================= AUTH ================= */
.auth-body{
  background:
    radial-gradient(1200px 600px at 10% -10%, #e7f0fb 0, transparent 60%),
    radial-gradient(900px 500px at 120% 20%, #fff3e0 0, transparent 58%),
    #f7fafc;
}

/* ================= ROLES ================= */
.badge-role-admin{background:#dc3545;color:#fff}
.badge-role-checkin{background:#f7941d;color:#212529}
.badge-role-gestor{background:#004a8d;color:#fff}
.badge-role-apoio{background:#198754;color:#fff}
.badge-role-relatorio{background:#4eb0fa;color:#0b2239}

/* ================= RESPONSIVO ================= */
@media(max-width:576px){
  .btn-bar{
    position:sticky;
    bottom:0;
  }
}

/* =========================================================
   DASHBOARD
   ======================================================= */

.dashboard-page .page-header{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:1rem;
  margin-bottom:1.25rem;
  flex-wrap:wrap;
}

.dashboard-page .page-title{
  display:flex;
  align-items:center;
  gap:.75rem;
}

.dashboard-page .page-title h1{
  margin:0;
  font-size:2rem;
  line-height:1.1;
  color:#111827;
}

.dashboard-page .page-actions{
  display:flex;
  gap:.75rem;
  flex-wrap:wrap;
  justify-content:flex-end;
}

.dashboard-page .kpi-grid{
  display:grid;
  grid-template-columns:repeat(3, minmax(0, 1fr));
  gap:1rem;
  margin-bottom:1.25rem;
}

.dashboard-page .kpi-card{
  background:#fff;
  border:1px solid var(--border);
  border-radius:16px;
  box-shadow:0 2px 8px rgba(15,23,42,.04);
  padding:1.2rem 1.25rem;
  min-height:132px;
  position:relative;
  overflow:hidden;
}

.dashboard-page .kpi-card::before{
  content:"";
  position:absolute;
  top:0;
  left:0;
  width:100%;
  height:4px;
  background:var(--senac-blue);
}

.dashboard-page .kpi-card.orange::before{
  background:var(--senac-orange);
}

.dashboard-page .kpi-card.green::before{
  background:var(--success);
}

.dashboard-page .kpi-title{
  font-size:.95rem;
  color:var(--gray-600);
  margin-bottom:.6rem;
}

.dashboard-page .kpi-value{
  font-size:2.25rem;
  font-weight:700;
  line-height:1;
  color:var(--senac-blue);
  margin-bottom:.45rem;
}

.dashboard-page .kpi-subtitle{
  font-size:.95rem;
  color:var(--success);
}

.dashboard-page .dashboard-grid{
  display:grid;
  grid-template-columns:1.45fr 1fr;
  gap:1rem;
  align-items:start;
}

.dashboard-page .dashboard-card{
  background:#fff;
  border:1px solid var(--border);
  border-radius:16px;
  box-shadow:0 2px 8px rgba(15,23,42,.04);
  overflow:hidden;
}

.dashboard-page .dashboard-card .card-header{
  padding:.9rem 1rem;
  font-size:1.1rem;
  font-weight:700;
}

.dashboard-page .dashboard-card .card-body{
  padding:0;
}

.dashboard-page .dashboard-table{
  margin-bottom:0;
}

.dashboard-page .dashboard-table thead th{
  background:#f8fafc;
  font-size:.95rem;
  font-weight:700;
  border-bottom:1px solid var(--border);
  padding:.85rem .75rem;
}

.dashboard-page .dashboard-table tbody td{
  padding:.9rem .75rem;
  vertical-align:middle;
  border-color:var(--gray-100);
}

.dashboard-page .event-title{
  font-weight:700;
  font-size:1rem;
  color:#111827;
}

.dashboard-page .event-meta{
  font-size:.92rem;
  color:var(--gray-600);
  margin-top:.2rem;
}

.dashboard-page .progress-thin{
  width:100%;
  height:10px;
  border-radius:999px;
  background:#e5e7eb;
  overflow:hidden;
}

.dashboard-page .progress-thin .bar{
  height:100%;
  border-radius:999px;
  background:var(--senac-blue);
}

.dashboard-page .checkin-list{
  padding:.35rem 0;
  max-height:550px;
  overflow:auto;
}

.dashboard-page .checkin-item{
  display:grid;
  grid-template-columns:1fr auto;
  gap:.75rem;
  padding:1rem;
  border-bottom:1px solid var(--gray-100);
}

.dashboard-page .checkin-item:last-child{
  border-bottom:0;
}

.dashboard-page .checkin-name{
  font-weight:700;
  font-size:1rem;
  color:#111827;
  margin-bottom:.15rem;
}

.dashboard-page .checkin-desc{
  font-size:.93rem;
  color:#4b5563;
  line-height:1.45;
}

.dashboard-page .checkin-side{
  text-align:right;
  min-width:68px;
}

.dashboard-page .checkin-date{
  font-size:.92rem;
  color:#4b5563;
  line-height:1.35;
}

.dashboard-page .checkin-badge{
  display:inline-block;
  margin-top:.35rem;
  padding:.18rem .5rem;
  border-radius:999px;
  font-size:.72rem;
  font-weight:700;
  background:#f3f4f6;
  color:#111827;
}

.dashboard-page .icon-btn-group{
  display:flex;
  gap:.4rem;
  justify-content:flex-end;
}

.dashboard-page .icon-btn{
  width:36px;
  height:36px;
  border-radius:10px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  border:1px solid var(--border);
  background:#fff;
}

.dashboard-page .icon-btn.yellow{
  background:#facc15;
  border-color:#facc15;
  color:#111827;
}

.dashboard-page .icon-btn.blue{
  color:#2563eb;
  border-color:#93c5fd;
  background:#eff6ff;
}

.dashboard-page .icon-btn.green{
  color:#15803d;
  border-color:#86efac;
  background:#f0fdf4;
}

.dashboard-page .dashboard-card-empty{
  padding:2rem 1rem;
  text-align:center;
  color:var(--gray-600);
}

@media (max-width: 991.98px){
  .dashboard-page .kpi-grid{
    grid-template-columns:1fr;
  }

  .dashboard-page .dashboard-grid{
    grid-template-columns:1fr;
  }
}

/* =========================
   CHECK-IN SCANNER
========================= */

.scanner-wrap {
    max-width: 1180px;
    margin: 0 auto;
}

.sticky-tools {
    margin-bottom: 14px;
}

#reader {
    width: 100%;
    max-width: 390px;
    height: 260px;
    margin: 8px auto 0;
    border-radius: 12px;
    background: #f8f9fb;
    border: 1px dashed #d7dde5;
    position: relative;
    overflow: hidden;
    box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.03);
}

.scan-overlay {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    pointer-events: none;
}

.scan-frame {
    width: 76%;
    height: 76%;
    border: 2px solid rgba(0, 74, 141, 0.75);
    border-radius: 12px;
    position: relative;
}

.scan-corner {
    width: 20px;
    height: 20px;
    border: 3px solid #004a8d;
    position: absolute;
}

.scan-corner.tl {
    top: -3px;
    left: -3px;
    border-right: none;
    border-bottom: none;
}

.scan-corner.tr {
    top: -3px;
    right: -3px;
    border-left: none;
    border-bottom: none;
}

.scan-corner.bl {
    bottom: -3px;
    left: -3px;
    border-right: none;
    border-top: none;
}

.scan-corner.br {
    bottom: -3px;
    right: -3px;
    border-left: none;
    border-top: none;
}

.scan-line {
    position: absolute;
    left: 8%;
    right: 8%;
    height: 2px;
    background: linear-gradient(90deg, transparent, #00a3e0, transparent);
    animation: scanMove 2.2s linear infinite;
    border-radius: 2px;
}

@keyframes scanMove {
    0% { top: 8%; }
    50% { top: 92%; }
    100% { top: 8%; }
}

.touch-btn {
    min-height: 40px;
    font-weight: 600;
    border-radius: 10px;
}

.tool-btn {
    width: 38px;
    height: 38px;
    padding: 0;
    border-radius: 10px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.btn-senac-blue {
    background: #004a8d;
    color: #fff;
    border: 1px solid #004a8d;
}

.btn-senac-blue:hover,
.btn-senac-blue:focus {
    background: #003b70;
    color: #fff;
    border-color: #003b70;
}

#result {
    min-height: 48px;
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    font-weight: 600;
    border-radius: 10px;
    margin-bottom: 0;
}

.badge {
    border-radius: 999px;
    font-size: 0.8rem;
    padding: 7px 12px;
    font-weight: 600;
}

.form-hint {
    font-size: 0.78rem;
    color: #6c757d;
    margin-top: 6px;
}

.scanner-wrap .card {
    border-radius: 14px;
    box-shadow: 0 2px 8px rgba(15, 23, 42, 0.05);
}

.scanner-wrap .card-body {
    padding: 1rem;
}

@media (max-width: 991.98px) {
    #reader {
        max-width: 100%;
        height: 280px;
    }
}

@media (max-width: 575.98px) {
    #reader {
        height: 240px;
    }

    .tool-btn {
        width: 36px;
        height: 36px;
    }

    .touch-btn {
        min-height: 38px;
        font-size: 0.92rem;
    }
}