:root{
  --azul:#0d47a1;
  --azul-700:#0b3c8c;
  --azul-300:#5b8def;
  --cielo:#e8f0fe;
  --tinta:#0f172a;
  --gris:#64748b;
  --linea:#e2e8f0;
  --ok:#15803d;
  --warn:#b45309;
  --bad:#b91c1c;
  --radius:14px;
  --sombra:0 10px 30px -12px rgba(13,71,161,.35);
  font-family:'Segoe UI',system-ui,-apple-system,Roboto,Helvetica,Arial,sans-serif;
}

body{ background:#f1f5f9; color:var(--tinta); }

/* ---------- LOGIN ---------- */
.auth-wrap{
  min-height:100vh; display:flex; align-items:center; justify-content:center;
  background:
    radial-gradient(1200px 500px at 110% -10%, rgba(91,141,239,.25), transparent),
    radial-gradient(900px 600px at -10% 110%, rgba(13,71,161,.18), transparent),
    #f1f5f9;
  padding:24px;
}
.auth-card{
  width:100%; max-width:430px; background:#fff; border:1px solid var(--linea);
  border-radius:20px; box-shadow:var(--sombra); overflow:hidden;
}
.auth-head{
  background:linear-gradient(135deg,var(--azul),var(--azul-300));
  color:#fff; padding:32px 32px 26px; text-align:center;
}
.auth-head .logo-badge{
  width:62px;height:62px;border-radius:16px;background:rgba(255,255,255,.16);
  display:flex;align-items:center;justify-content:center;margin:0 auto 14px;
  font-size:28px;backdrop-filter:blur(4px);
}
.auth-body{ padding:30px 32px 34px; }
.form-floating>label{ color:var(--gris); }
.btn-azul{
  background:var(--azul); border-color:var(--azul); color:#fff; font-weight:600;
  padding:.7rem; border-radius:12px;
}
.btn-azul:hover{ background:var(--azul-700); border-color:var(--azul-700); color:#fff; }
.link-muted{ color:var(--gris); text-decoration:none; font-size:.92rem; }
.link-muted:hover{ color:var(--azul); }

/* ---------- DASHBOARD ---------- */
.navbar-portal{ background:var(--azul); box-shadow:0 2px 10px rgba(2,8,23,.12); }
.navbar-portal .navbar-brand,.navbar-portal .nav-link,.navbar-portal .dropdown-toggle{ color:#fff!important; }
.avatar-circle{
  width:38px;height:38px;border-radius:50%;background:var(--cielo);color:var(--azul);
  display:flex;align-items:center;justify-content:center;font-weight:700;
}
.tile{
  border:1px solid var(--linea); border-radius:var(--radius); background:#fff;
  padding:26px; text-align:center; transition:.18s; cursor:pointer; height:100%;
  text-decoration:none; color:var(--tinta); display:block;
}
.tile:hover{ transform:translateY(-4px); box-shadow:var(--sombra); border-color:var(--azul-300); color:var(--azul); }
.tile .tile-ico{
  width:64px;height:64px;border-radius:18px;background:var(--cielo);color:var(--azul);
  display:flex;align-items:center;justify-content:center;font-size:30px;margin:0 auto 14px;
}
.tile h5{ margin:0; font-weight:700; }
.tile p{ margin:.35rem 0 0; color:var(--gris); font-size:.88rem; }

.page-head{ border-left:5px solid var(--azul); padding-left:14px; margin:6px 0 22px; }
.page-head h3{ margin:0; font-weight:700; }
.page-head small{ color:var(--gris); }

.table thead th{ background:var(--azul); color:#fff; border:0; font-weight:600; }
.table tbody tr:hover{ background:var(--cielo); }

.badge-firmar{ background:#fff7ed; color:var(--warn); border:1px solid #fed7aa; }
.badge-firmado{ background:#ecfdf5; color:var(--ok); border:1px solid #bbf7d0; }
.badge-pendiente{ background:#fefce8; color:#854d0e; border:1px solid #fde68a; }
.badge-autorizado{ background:#ecfdf5; color:var(--ok); border:1px solid #bbf7d0; }
.badge-denegado{ background:#fef2f2; color:var(--bad); border:1px solid #fecaca; }
.badge.estado{ padding:.45em .8em; border-radius:8px; font-weight:600; }

.otp-input{ letter-spacing:10px; text-align:center; font-size:1.6rem; font-weight:700; }

.alert-soft-ok{ background:#ecfdf5;color:#065f46;border:1px solid #bbf7d0; }
.alert-soft-bad{ background:#fef2f2;color:#991b1b;border:1px solid #fecaca; }
.bg-app{ min-height:100vh; background:#f1f5f9; }
.footer-mini{ color:var(--gris); font-size:.82rem; padding:18px 0; text-align:center; }
