:root{
  /* Sidebar azul profesional (oscuro) */
  --sidebar-bg:#0f1729;
  --sidebar-border:#1c2740;
  --sidebar-text:#e8edf5;
  --sidebar-text-dim:#8290ab;
  --sidebar-active-from:#2f6fed;
  --sidebar-active-to:#1c4fbf;

  /* Fondo de página celeste medio oscuro; paneles/tarjetas beige */
  --bg:#1c6b96;
  --panel:rgba(243,241,236,.96);
  --panel-2:rgba(234,230,220,.9);
  --border:#e4e0d6;
  --border-strong:#c7c0af;
  --text:#20283a;
  --text-dim:#707b8c;

  /* Acentos */
  --accent:#2f6fed;
  --accent-2:#17c3b2;
  --danger:#e5484d;
  --warning:#c98a10;
  --success:#1a9d6c;
  --radius:10px;
}

*{box-sizing:border-box;}
html,body{margin:0;padding:0;}
body{
  font-family:'Segoe UI', Roboto, Arial, sans-serif;
  background:var(--bg);
  color:var(--text);
  min-height:100vh;
}
a{color:inherit;text-decoration:none;}

/* ---------- LOGIN ---------- */
.login-wrap{
  min-height:100vh;
  display:flex;
  align-items:center;
  justify-content:center;
  position:relative;
  background-size:cover;
  background-position:center;
  background-attachment:fixed;
  overflow:hidden;
  /* la imagen de fondo (con cache-busting) se define inline en login.php */
}
.login-wrap::before{
  content:'';
  position:absolute; inset:0;
  background:radial-gradient(circle at 50% 30%, rgba(47,111,237,.10) 0%, rgba(8,14,26,0) 55%);
  pointer-events:none;
}
.login-split{
  position:relative;
  display:flex;
  width:100%;
  max-width:760px;
  border-radius:18px;
  overflow:hidden;
  box-shadow:0 25px 70px rgba(0,0,0,.55);
}
@media (max-width:720px){
  .login-split{ flex-direction:column; max-width:420px; }
}

/* Panel izquierdo: claro, con el logo */
.login-left{
  flex:1;
  min-width:0;
  background:rgba(255,255,255,.92);
  backdrop-filter:blur(14px) saturate(140%);
  -webkit-backdrop-filter:blur(14px) saturate(140%);
  display:flex;
  align-items:center;
  justify-content:center;
  padding:50px 30px;
  border-right:1px solid rgba(255,255,255,.3);
}
@media (max-width:720px){
  .login-left{ border-right:none; border-bottom:1px solid rgba(255,255,255,.15); padding:34px 30px; }
}

/* Panel derecho: oscuro, con el formulario */
.login-right{
  flex:1.15;
  min-width:0;
  background:rgba(10,16,28,.55);
  backdrop-filter:blur(14px) saturate(140%);
  -webkit-backdrop-filter:blur(14px) saturate(140%);
  padding:46px 42px;
  text-align:center;
  color:#e8edf5;
}

.login-avatar{
  width:64px;height:64px;border-radius:50%;
  background:linear-gradient(135deg,var(--accent),var(--accent-2));
  display:flex;align-items:center;justify-content:center;
  margin:0 auto 16px;font-size:28px;
  box-shadow:0 8px 24px rgba(59,130,246,.45);
}

.login-right h1{font-size:24px;margin:0 0 4px;color:#fff;letter-spacing:.01em;}
.login-right p.sub{color:#a9b4c7;margin:0 0 26px;font-size:13.5px;}

.login-logo{
  width:190px;
  height:auto;
  display:block;
  filter:drop-shadow(0 2px 6px rgba(20,30,50,.15));
}

.field-icon{ position:relative; }
.field-icon .field-ico{
  position:absolute;
  left:12px; top:50%; transform:translateY(-50%);
  font-size:15px;
  opacity:.8;
}
.field-icon input{ padding-left:38px !important; }

.login-right .field{margin-bottom:16px;text-align:left;}
.login-right .field input{
  width:100%;
  background:rgba(255,255,255,.08);
  border:1px solid rgba(255,255,255,.18);
  color:#fff;
  padding:11px 12px;border-radius:8px;font-size:14px;outline:none;
}
.login-right .field input::placeholder{ color:#8b96ad; }
.login-right .field input:focus{border-color:var(--accent-2);box-shadow:0 0 0 3px rgba(23,195,178,.2);}
.login-right .btn-primary{box-shadow:0 10px 24px rgba(23,195,178,.3); margin-top:6px;}
.login-right .version-tag{margin-top:22px;font-size:11px;color:rgba(169,180,199,.8);}


/* ---------- GENERALES ---------- */
input, select, textarea{
  width:100%;
  background:var(--panel-2);
  border:1px solid var(--border);
  color:var(--text);
  padding:10px 12px;
  border-radius:8px;
  font-size:14px;
  outline:none;
}
input:focus, select:focus, textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(47,111,237,.15);}
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  border:none;border-radius:8px;
  padding:10px 18px;
  font-size:14px;font-weight:600;
  cursor:pointer;
  transition:filter .15s ease, box-shadow .15s ease, transform .1s ease;
}
.btn:hover{filter:brightness(1.06);}
.btn:active{ transform:translateY(1px); }
.btn-block{width:100%;}
.btn-primary{background:linear-gradient(135deg,var(--accent-2),var(--accent));color:#fff;}
.btn-danger{background:#fdeceb;color:#c0392b;border:1px solid #f6c8c4;}
.btn-danger:hover{background:#fbdedb;}
.btn-warning{background:#fff2df;color:#9a6300;border:1px solid #ffe0ad;}
.btn-success{background:#e4f7ee;color:#137a4c;border:1px solid #bfeed7;}
.btn-ghost{background:var(--panel-2);border:1px solid var(--border);color:var(--text);}
.btn-ghost:hover{background:var(--border);}
.btn-sm{padding:6px 12px;font-size:12px;}
.alert{padding:10px 14px;border-radius:8px;margin-bottom:16px;font-size:13px;text-align:left;}
.alert-error{background:#fdeceb;color:#c0392b;border:1px solid #f6c8c4;}
.alert-success{background:#e4f7ee;color:#137a4c;border:1px solid #bfeed7;}

/* ---------- SHELL ---------- */
.app-shell{display:flex;min-height:100vh;}

.sidebar{
  width:250px;
  background:var(--sidebar-bg);
  border-right:1px solid var(--sidebar-border);
  padding:20px 14px;
  flex-shrink:0;
  color:var(--sidebar-text);
}
.sidebar .brand{
  padding:6px 10px 20px;
  border-bottom:1px solid var(--sidebar-border);
  margin-bottom:16px;
}
.sidebar .brand .name{color:#7fb2ff;font-weight:700;font-size:16px;line-height:1.3;}
.sidebar .brand .tagline{color:var(--sidebar-text-dim);font-size:11px;margin-top:4px;}
.nav-item{
  display:flex;align-items:center;gap:10px;
  padding:10px 12px;margin-bottom:4px;
  border-radius:8px;
  color:var(--sidebar-text-dim);
  font-size:13.5px;
  cursor:pointer;
}
.nav-item:hover{background:#182238;color:var(--sidebar-text);}
.nav-item.active{background:linear-gradient(135deg,var(--sidebar-active-from),var(--sidebar-active-to));color:#fff;}
.nav-item .ico{width:18px;text-align:center;}
.tag-soon{
  display:inline-flex;align-items:center;gap:6px;
  background:#182238;color:var(--sidebar-text-dim);
  padding:4px 10px;border-radius:20px;font-size:11px;margin-left:8px;
}
.nav-section-title{
  font-size:10.5px;
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:.08em;
  color:var(--sidebar-text-dim);
  opacity:.7;
  padding:14px 12px 6px;
}
.nav-section-title:first-of-type{ padding-top:4px; }

/* ---------- CONTENIDO (claro/gris azulado translúcido con fondo de marca detrás) ---------- */
.content{
  flex:1;padding:26px 32px;min-width:0;color:var(--text);
  position:relative;
  background:
    linear-gradient(160deg, rgba(28,107,150,.93) 0%, rgba(28,107,150,.88) 50%, rgba(28,107,150,.94) 100%),
    url('images/content-bg.jpg');
  background-size:cover;
  background-position:center;
  background-attachment:fixed;
}
.topbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px;}
.topbar h2{margin:0;font-size:20px;color:#eef1f5;}
.topbar .sub{color:#a9b4c8;font-size:13px;margin-top:2px;}
.user-chip{
  display:flex;align-items:center;gap:12px;
  background:var(--panel-2);
  border:1px solid var(--border);
  color:var(--text);
  padding:8px 14px;border-radius:30px;
  font-size:13px;
  box-shadow:0 1px 3px rgba(0,0,0,.2);
}
.user-chip .dot{width:8px;height:8px;border-radius:50%;background:var(--success);}
.user-chip .rol{color:var(--text-dim);font-size:11px;}

/* ---------- CARDS / GRID ---------- */
.grid-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:24px;}
@media (max-width:1100px){.grid-stats{grid-template-columns:repeat(2,1fr);}}
.stat-card{
  background:var(--panel);border:1.5px solid var(--border-strong);border-radius:var(--radius);
  padding:18px;
  box-shadow:0 4px 14px rgba(20,30,50,.1);
  backdrop-filter:blur(8px);
  -webkit-backdrop-filter:blur(8px);
  transition:transform .18s ease, box-shadow .18s ease;
  animation:fadeSlideIn .5s ease both;
}
.stat-card:hover{
  transform:translateY(-3px);
  box-shadow:0 12px 28px rgba(20,30,50,.16);
}
.stat-card .label{color:var(--text-dim);font-size:12px;margin-bottom:8px;}
.stat-card .value{font-size:26px;font-weight:700;color:#1b2534;}
.stat-card.accent-blue{border-left:3px solid #2f6fed;}
.stat-card.accent-green{border-left:3px solid #1a9d6c;}
.stat-card.accent-orange{border-left:3px solid #c98a10;}
.stat-card.accent-red{border-left:3px solid #e5484d;}

/* ---------- Hero de bienvenida (saludo + reloj en vivo) ---------- */
.hero-card{
  background:var(--panel);
  border:1.5px solid var(--border-strong);
  border-radius:var(--radius);
  padding:22px 26px;
  margin-bottom:22px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:20px;
  flex-wrap:wrap;
  backdrop-filter:blur(8px);
  -webkit-backdrop-filter:blur(8px);
  box-shadow:0 4px 14px rgba(20,30,50,.1);
  animation:fadeSlideIn .5s ease both;
}
.hero-greeting{ display:flex; align-items:center; gap:14px; }
.hero-emoji{ font-size:30px; }
.hero-title{ font-size:19px; font-weight:700; color:#1b2534; }
.hero-sub{ font-size:12.5px; color:var(--text-dim); margin-top:2px; }
.hero-clock{ text-align:right; }
.hero-clock-time{
  font-size:24px; font-weight:800; color:var(--accent);
  font-variant-numeric:tabular-nums; letter-spacing:.02em;
}
.hero-clock-date{ font-size:12px; color:var(--text-dim); margin-top:2px; text-transform:capitalize; }

@keyframes fadeSlideIn{
  from{ opacity:0; transform:translateY(8px); }
  to{ opacity:1; transform:translateY(0); }
}

.panel{
  background:var(--panel);border:1.5px solid var(--border-strong);border-radius:var(--radius);
  padding:22px;margin-bottom:22px;
  box-shadow:0 4px 14px rgba(20,30,50,.1);
  backdrop-filter:blur(8px);
  -webkit-backdrop-filter:blur(8px);
  transition:box-shadow .18s ease;
  animation:fadeSlideIn .5s ease both;
}
.panel:hover{ box-shadow:0 10px 24px rgba(20,30,50,.14); }
.panel h3{margin:0 0 16px;font-size:16px;color:#1b2534;}
.panel-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;flex-wrap:wrap;gap:10px;}

.toolbar{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:16px;}
.toolbar input, .toolbar select{width:auto;min-width:180px;}

table{width:100%;border-collapse:collapse;font-size:13px;}
thead th{
  text-align:left;color:var(--text-dim);font-weight:600;font-size:11px;
  text-transform:uppercase;letter-spacing:.03em;
  padding:10px 12px;border-bottom:1px solid var(--border);
  background:var(--panel-2);
}
tbody td{padding:10px 12px;border-bottom:1px solid var(--border);color:var(--text);}
tbody tr:hover{background:var(--panel-2);}

.badge{display:inline-block;padding:3px 10px;border-radius:20px;font-size:11px;font-weight:600;}
.badge-green{background:#e4f7ee;color:#137a4c;}
.badge-red{background:#fdeceb;color:#c0392b;}
.badge-orange{background:#fff2df;color:#9a6300;}
.badge-gray{background:#eef1f5;color:#5c6b80;}
.badge-blue{background:#e8f0ff;color:#1c4faa;}

.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;}
@media (max-width:800px){.form-grid{grid-template-columns:1fr;}}
.form-actions{display:flex;gap:10px;margin-top:18px;}
.empty-state{padding:40px;text-align:center;color:var(--text-dim);}
.helper{font-size:12px;color:var(--text-dim);margin-top:4px;}

.field{margin-bottom:16px;text-align:left;}
.field label{display:block;font-size:12px;color:var(--text-dim);margin-bottom:6px;font-weight:600;}

/* ---------- Pestañas de gráfica (Hoy / Semana / Mes) ---------- */
.chart-tabs{display:flex;gap:6px;}
.chart-tab{
  background:var(--panel-2);
  border:1px solid var(--border);
  color:var(--text-dim);
  padding:6px 16px;
  border-radius:20px;
  font-size:12.5px;
  font-weight:600;
  cursor:pointer;
  transition:all .15s ease;
}
.chart-tab:hover{background:var(--panel-2);color:var(--text);}
.chart-tab.active{
  background:linear-gradient(135deg,var(--accent-2),var(--accent));
  border-color:transparent;
  color:#fff;
}
.chart-total{
  font-size:14px;
  font-weight:700;
  color:var(--accent);
  margin-bottom:14px;
}

/* ══════════════════════════════════════════════════════════
   ✅ NUEVO: Responsive para tablet y celular
   Sidebar se vuelve un menu "hamburguesa" off-canvas, y las
   tablas anchas hacen scroll horizontal contenido dentro de
   su propia tarjeta en vez de desbordar toda la pagina.
   ══════════════════════════════════════════════════════════ */
.hamburger-btn{
  display:none;
  align-items:center;justify-content:center;
  width:40px;height:40px;
  background:var(--sidebar-bg);
  color:#fff;
  border:none;
  border-radius:8px;
  cursor:pointer;
  font-size:18px;
  flex-shrink:0;
  box-shadow:0 4px 12px rgba(0,0,0,.25);
}
.sidebar-overlay{
  display:none;
  position:fixed; inset:0;
  background:rgba(10,16,28,.55);
  z-index:999;
}
.sidebar-overlay.active{ display:block; }

@media (max-width:1024px){
  .hamburger-btn{ display:flex; position:fixed; top:14px; left:14px; z-index:1001; }

  .sidebar{
    position:fixed;
    top:0; left:-270px;
    height:100vh;
    z-index:1000;
    transition:left .25s ease;
    box-shadow:12px 0 30px rgba(0,0,0,.3);
    overflow-y:auto;
    -webkit-overflow-scrolling:touch;
  }
  .sidebar.open{ left:0; }

  .content{
    padding:64px 14px 20px;
    width:100%;
  }
  .topbar{ flex-wrap:wrap; gap:12px; }
  .topbar h2{ font-size:16.5px; }

  .grid-stats{ grid-template-columns:1fr !important; }
  .form-grid{ grid-template-columns:1fr !important; }

  /* Tablas: scroll horizontal contenido dentro de la tarjeta */
  .panel{ overflow-x:auto; padding:16px; }
  table{ min-width:640px; }
}