/* app/assets/css/app.css */

/* =========================
   Variables / Theme
========================= */
:root{
  --bg: #f6f8fb;
  --panel: #ffffff;
  --text: #0f172a;
  --muted: rgba(15, 23, 42, .62);
  --border: rgba(15, 23, 42, .08);

  --shadow: 0 .6rem 1.4rem rgba(15, 23, 42, .06);
  --shadow-sm: 0 .35rem 1.1rem rgba(15, 23, 42, .05);

  --radius-lg: 16px;
  --radius-md: 12px;
  --radius-sm: 10px;

  /* Colores corporativos RK */
  --primary: #3DAA53;
  --primary-hover: #339245;
  --primary-soft: rgba(61,170,83,.15);

  --accent: #FE7C02;
  --accent-hover: #e66f00;

  --danger: #dc3545;
  --danger-hover: #bb2d3b;

  --blue: #2563EB;
  --blue-hover: #1d4ed8;

  --blue-light: #60A5FA;
  --blue-light-hover: #3B82F6;

  /* Sidebar corporativo azul */
  --sidebar-bg-top: #0f2d52;
  --sidebar-bg-bottom: #0c2442;
  --sidebar-text: rgba(255,255,255,.88);
  --sidebar-muted: rgba(255,255,255,.50);
  --sidebar-hover: rgba(255,255,255,.08);
  --sidebar-active: rgba(255,255,255,.14);
  --sidebar-accent: #4da3ff;
}

/* =========================
   Base / Tipografía
========================= */
body{
  font-family: 'Inter', system-ui, -apple-system, sans-serif;
  font-size: 14px;
  line-height: 1.45;
  background: var(--bg);
  color: var(--text);
}

h1{
  font-size: 24px;
  font-weight: 800;
}

h2{
  font-size: 20px;
  font-weight: 700;
}

h3{
  font-size: 18px;
  font-weight: 700;
}

h4{
  font-size: 16px;
  font-weight: 700;
}

.text-muted{
  font-size: 13px;
  color: var(--muted) !important;
}

/* =========================
   Elementos globales UI
========================= */
.btn{
  font-size: 14px;
  font-weight: 600;
  padding: .42rem .85rem;
}

.badge{
  font-weight: 700;
  border-radius: 999px;
  padding: .46em .72em;
}

.card{
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-sm);
  background: var(--panel);
}

.card.shadow-sm{
  border: 0;
}

/* =========================
   Layout base
========================= */
.layout{
  display: flex;
  min-height: 100vh;
}

.main-content{
  flex: 1;
  min-width: 0;
  padding: 18px;
  background: var(--bg);
}

/* =========================
   Sidebar
========================= */
.sidebar{
  width: 260px;
  min-height: 100vh;
  background: linear-gradient(180deg, var(--sidebar-bg-top) 0%, var(--sidebar-bg-bottom) 100%);
  padding: 14px;
  color: var(--sidebar-text);
}

.brand{
  padding: 10px 8px 16px 8px;
  border-bottom: 1px solid rgba(255,255,255,.10);
  margin-bottom: 12px;
}

.brand-link{
  display: flex;
  align-items: center;
  gap: 10px;
  text-decoration: none;
  color: #fff;
}

.brand-logo{
  height: 32px;
}

.brand-name{
  font-weight: 900;
  font-size: 1rem;
  color: #fff;
}

/* Links sidebar */
.sidebar .list-group-item{
  border: none;
  border-radius: 12px;
  padding: .72rem .85rem;
  margin-bottom: 6px;
  color: var(--sidebar-text);
  background: transparent;
  display: flex;
  align-items: center;
  gap: .6rem;
  transition: .15s;
}

.sidebar .list-group-item:hover{
  background: var(--sidebar-hover);
  color: #fff;
  transform: translateX(4px);
}

.sidebar .list-group-item.active{
  background: var(--sidebar-active);
  color: #fff;
  font-weight: 900;
  position: relative;
}

.sidebar .list-group-item.active::before{
  content: "";
  position: absolute;
  left: -6px;
  top: 10px;
  bottom: 10px;
  width: 4px;
  border-radius: 999px;
  background: var(--sidebar-accent);
}

/* Botón salir */
.sidebar .list-group-item.text-danger{
  color: var(--accent) !important;
  font-weight: 800;
}

.sidebar .list-group-item.text-danger:hover{
  background: var(--accent);
  color: #fff !important;
}

/* Títulos internos sidebar */
.sidebar .text-muted{
  color: rgba(255,255,255,.65) !important;
}

.sidebar .text-uppercase{
  font-size: .72rem;
  font-weight: 900;
  letter-spacing: .08em;
  color: #6DD177 !important;
}

/* =========================
   Topbar
========================= */
.topbar{
  background: var(--primary);
  border: none;
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-sm);
  padding: 12px 14px;
  margin-bottom: 14px;

  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;

  color: #fff;
}

.topbar-title{
  font-weight: 900;
  font-size: 1.05rem;
  color: #fff;
}

.topbar-sub{
  font-size: .9rem;
  color: rgba(255,255,255,.8);
}

.topbar .btn-topbar{
  background: transparent;
  border: 1px solid rgba(255,255,255,.35);
  color: #fff;
  font-weight: 600;
}

.topbar .btn-topbar:hover{
  background: var(--accent);
  border-color: var(--accent);
  color: #fff;
}

.topbar-user-name{
  display: inline-block;
  max-width: 160px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  vertical-align: bottom;
}

/* =========================
   Botones corporativos RK
========================= */
.btn-primary{
  background: var(--accent);
  border-color: var(--accent);
  color: #fff;
  font-weight: 500;
}

.btn-primary:hover{
  background: var(--accent-hover);
  border-color: var(--accent-hover);
  color: #fff;
}

.btn-secondary{
  background:#6c757d;
  border-color:#6c757d;
  color:#fff;
  font-weight:500;
}

.btn-secondary:hover{
  background:#5c636a;
  border-color:#5c636a;
  color:#fff;
}

.btn-success{
  background: var(--primary);
  border-color: var(--primary);
  color: #fff;
  font-weight: 500;
}

.btn-success:hover{
  background: var(--primary-hover);
  border-color: var(--primary-hover);
  color: #fff;
}

.btn-danger{
  background: var(--danger);
  border-color: var(--danger);
  color: #fff;
  font-weight: 500;
}

.btn-danger:hover{
  background: var(--danger-hover);
  border-color: var(--danger-hover);
  color: #fff;
}

.btn-blue{
  background: var(--blue);
  border-color: var(--blue);
  color: #fff;
  font-weight: 500;
}

.btn-blue:hover{
  background: var(--blue-hover);
  border-color: var(--blue-hover);
  color: #fff;
}

.btn-blue-light{
  background: var(--blue-light);
  border-color: var(--blue-light);
  color: #fff;
  font-weight: 500;
}

.btn-blue-light:hover{
  background: var(--blue-light-hover);
  border-color: var(--blue-light-hover);
  color: #fff;
}

/* =========================
   Outline botones
========================= */
.btn-outline-primary{
  border-color: var(--accent);
  color: var(--accent);
}

.btn-outline-primary:hover{
  background: var(--accent);
  border-color: var(--accent);
  color: #fff;
}

.btn-outline-secondary{
  color:#6c757d;
  border-color:#6c757d;
  background:transparent;
}

.btn-outline-secondary:hover{
  color:#fff;
  background:#6c757d;
  border-color:#6c757d;
}

.btn-outline-success{
  border-color: var(--primary);
  color: var(--primary);
}

.btn-outline-success:hover{
  background: var(--primary);
  border-color: var(--primary);
  color: #fff;
}

.btn-outline-danger{
  border-color: var(--danger);
  color: var(--danger);
  background: transparent;
}

.btn-outline-danger:hover{
  background: var(--danger);
  border-color: var(--danger);
  color: #fff;
}

.btn-outline-blue{
  border-color: var(--blue);
  color: var(--blue);
}

.btn-outline-blue:hover{
  background: var(--blue);
  border-color: var(--blue);
  color: #fff;
}

.btn-outline-blue-light{
  border-color: var(--blue-light);
  color: var(--blue-light);
}

.btn-outline-blue-light:hover{
  background: var(--blue-light);
  border-color: var(--blue-light);
  color: #fff;
}

/* =========================
   Tablas
========================= */
.table{
  border-collapse: separate;
  border-spacing: 0;
  margin-bottom: 0;
}

.table thead th{
  background: #C7E8CE;
  color: rgba(15,23,42,.78);
  font-size: 12px;
  text-transform: uppercase;
  letter-spacing: .08em;
  font-weight: 900;
  padding: .85rem .9rem;
  border-bottom: 1px solid var(--border);
  vertical-align: middle;
  white-space: nowrap;
}

.table tbody td{
  font-size: 14px;
  padding: .78rem .9rem;
  border-top: 1px solid rgba(15,23,42,.06);
  vertical-align: middle;
}

.table-striped > tbody > tr:nth-of-type(odd) > *{
  background: rgba(15,23,42,.012);
}

.table-hover > tbody > tr:hover > *{
  background: rgba(37,99,235,.06);
}

.card .table thead th:first-child{
  border-top-left-radius: 12px;
}

.card .table thead th:last-child{
  border-top-right-radius: 12px;
}

.card .table-responsive thead th{
  position: sticky;
  top: 0;
  z-index: 2;
}

/* =========================
   Formularios
========================= */
.form-label{
  font-size: 13px;
  font-weight: 600;
  color: #667085;
  margin-bottom: 8px;
}

.form-control,
.form-select{
  font-size: 15px;
  font-weight: 400;
  color: #101828;
}

.form-control::placeholder{
  color: #98a2b3;
}

.form-control:focus,
.form-select:focus{
  border-color: rgba(61,170,83,.45);
  box-shadow: 0 0 0 .2rem rgba(61,170,83,.12);
}

/* =========================
   Pills informativas / estados
========================= */
.badge-pill-info{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:40px;
  padding:.34rem .62rem;
  border-radius:999px;
  font-size:12px;
  font-weight:800;
  line-height:1;
  letter-spacing:.01em;
  white-space:nowrap;
  border:1px solid transparent;
  box-shadow:inset 0 -1px 0 rgba(255,255,255,.18);
}

.badge-pill-info.sm{
  min-width:34px;
  padding:.28rem .55rem;
  font-size:11px;
}

.badge-pill-info.obligatorio-si{
  background:rgba(37,99,235,.12);
  color:#1d4ed8;
  border-color:rgba(37,99,235,.18);
}

.badge-pill-info.obligatorio-no{
  background:rgba(108,117,125,.14);
  color:#495057;
  border-color:rgba(108,117,125,.18);
}

.badge-pill-info.evidencia-si{
  background:rgba(6,182,212,.14);
  color:#0891b2;
  border-color:rgba(6,182,212,.18);
}

.badge-pill-info.evidencia-no{
  background:rgba(108,117,125,.14);
  color:#495057;
  border-color:rgba(108,117,125,.18);
}

.badge-pill-info.estado-activo{
  background:rgba(34,197,94,.14);
  color:#15803d;
  border-color:rgba(34,197,94,.18);
}

.badge-pill-info.estado-inactivo{
  background:rgba(108,117,125,.14);
  color:#495057;
  border-color:rgba(108,117,125,.18);
}

.node-meta{
  display:flex;
  flex-wrap:wrap;
  gap:6px;
  margin-top:4px;
}

/* =========================
   Chips
========================= */
.chip{
  display: inline-flex;
  align-items: center;
  gap: .45rem;
  padding: .38rem .7rem;
  border-radius: 999px;
  background: var(--primary-soft);
  color: var(--primary);
  font-size: .85rem;
  font-weight: 800;
  border: 1px solid rgba(61,170,83,.25);
}

.chip .dot{
  width: .45rem;
  height: .45rem;
  border-radius: 50%;
  background: var(--primary);
}

/* =========================
   Login
========================= */
.login-bg{
  min-height: 100vh;
  background:
    radial-gradient(circle at 20% 20%, rgba(61,170,83,.25), transparent 40%),
    radial-gradient(circle at 80% 30%, rgba(61,170,83,.18), transparent 50%),
    linear-gradient(135deg, #0f2d52 0%, #0c2442 100%);
}

.login-card{
  border-radius: 18px;
  overflow: hidden;
  box-shadow: 0 .9rem 2.2rem rgba(15,23,42,.16);
  border: 1px solid rgba(15,23,42,.08);
}

.login-card .form-control::placeholder{
  color:#98a2b3;
}

.login-head{
  padding: 18px;
  background: rgba(255,255,255,.92);
}

.login-logo{
  height: 48px;
}

.btn-login{
  background: var(--primary);
  border-color: var(--primary);
  font-weight: 800;
  color:#fff;
}

.btn-login:hover,
.btn-login:focus,
.btn-login:active{
  background: var(--primary-hover);
  border-color: var(--primary-hover);
  color:#fff;
}

.input-icon{
  display:flex;
  align-items:center;
  gap:10px;
  border:1px solid #d0d5dd;
  border-radius:10px;
  padding:0 12px;
  background:#fff;
}

.input-icon i{
  font-size:16px;
  color:#667085;
  flex-shrink:0;
}

.input-icon .form-control{
  border:none;
  box-shadow:none;
  padding:12px 0;
  font-size:15px;
  background:transparent;
}

.input-icon .form-control:focus{
  box-shadow:none;
}

.input-icon:focus-within{
  border-color:rgba(61,170,83,.45);
  box-shadow:0 0 0 .2rem rgba(61,170,83,.12);
}

/* Fix autofill navegador */

input:-webkit-autofill,
input:-webkit-autofill:hover,
input:-webkit-autofill:focus,
input:-webkit-autofill:active{
  -webkit-box-shadow: 0 0 0 1000px #ffffff inset !important;
  box-shadow: 0 0 0 1000px #ffffff inset !important;
  -webkit-text-fill-color: #101828 !important;
  transition: background-color 9999s ease-in-out 0s;
}

/* =========================
   Responsive tablas RK
========================= */
.rk-nombre{
  font-weight: 600;
  margin-bottom: 4px;
}

.rk-tipo{
  font-size: 14px;
  margin-bottom: 6px;
  color: #6c757d;
}

.rk-actions{
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
}

/* =========================
   Responsive
========================= */
@media (max-width: 992px){
  .layout{
    flex-direction: column;
  }

  .sidebar{
    width: 100%;
    min-height: auto;
    border-bottom: 1px solid rgba(255,255,255,.10);
  }

  .main-content{
    padding: 14px;
  }
}

@media (max-width: 768px){
  .rk-hide-mobile{
    display: none !important;
  }

  .rk-row{
    border: 1px solid #e5e5e5;
    border-radius: 8px;
    margin-bottom: 10px;
    background: #fff;
  }

  .rk-row td{
    display: block;
    width: 100%;
    border: none;
    padding: 8px 10px;
  }

  .rk-row td:first-child{
    padding-top: 10px;
  }

  .rk-row td:last-child{
    padding-bottom: 10px;
  }

  .rk-actions{
    margin-top: 8px;
  }

  .rk-actions .btn{
    margin-bottom: 4px;
  }
}

@media (max-width: 576px){
  .topbar-user-name{
    max-width: 100px;
  }
}