/* ============================================================
   GesConsorcio — style.css  (multi-consorcio)
   ============================================================ */

@import url('https://fonts.googleapis.com/css2?family=DM+Sans:opsz,wght@9..40,300;9..40,400;9..40,500;9..40,600;9..40,700&family=DM+Mono:wght@400;500&display=swap');

/* ── Tema oscuro (default) ───────────────────────────────── */
:root {
  --bg:           #0f1117;
  --bg2:          #161a24;
  --bg3:          #1e2333;
  --border:       #252b3b;
  --border2:      #313852;
  --accent:       #3b7dff;
  --accent2:      #2563eb;
  --accent-glow:  rgba(59,125,255,.14);
  --green:        #22c55e;
  --red:          #ef4444;
  --yellow:       #f59e0b;
  --purple:       #a855f7;
  --cyan:         #06b6d4;
  --text:         #e8eaf0;
  --text2:        #8b92a8;
  --text3:        #50596e;
  --sidebar-w:    244px;
  --radius:       10px;
  --shadow:       0 4px 28px rgba(0,0,0,.45);
  --font:         'DM Sans', sans-serif;
  --mono:         'DM Mono', monospace;
  --tr:           .16s ease;
}

/* ── Tema claro ──────────────────────────────────────────── */
[data-theme="light"] {
  --bg:           #f0f2f8;
  --bg2:          #ffffff;
  --bg3:          #f5f7fc;
  --border:       #e2e6f0;
  --border2:      #c8cedf;
  --accent:       #2563eb;
  --accent2:      #1d4ed8;
  --accent-glow:  rgba(37,99,235,.10);
  --green:        #16a34a;
  --red:          #dc2626;
  --yellow:       #d97706;
  --purple:       #7c3aed;
  --cyan:         #0891b2;
  --text:         #111827;
  --text2:        #4b5563;
  --text3:        #9ca3af;
  --shadow:       0 4px 20px rgba(0,0,0,.08);
}

/* ── Toggle button ───────────────────────────────────────── */
.theme-toggle {
  width: 36px; height: 36px;
  border-radius: 8px;
  background: var(--bg3);
  border: 1px solid var(--border2);
  color: var(--text2);
  display: flex; align-items: center; justify-content: center;
  cursor: pointer; font-size: 16px;
  transition: var(--tr);
  flex-shrink: 0;
}
.theme-toggle:hover {
  background: var(--border2);
  color: var(--text);
}

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{font-size:15px;scroll-behavior:smooth}
body{font-family:var(--font);background:var(--bg);color:var(--text);
     min-height:100vh;-webkit-font-smoothing:antialiased;line-height:1.6}
a{color:var(--accent);text-decoration:none}
a:hover{color:#6fa3ff}
button,input,select,textarea{font-family:var(--font)}

/* ── Layout ─────────────────────────────────────────────────*/
.app-layout{display:flex;min-height:100vh}

/* ── Sidebar ────────────────────────────────────────────────*/
.sidebar{
  width:var(--sidebar-w);background:var(--bg2);
  border-right:1px solid var(--border);
  display:flex;flex-direction:column;
  position:fixed;top:0;left:0;bottom:0;z-index:100;overflow-y:auto
}
.sidebar-logo{
  padding:20px 18px 16px;border-bottom:1px solid var(--border)
}
.logo-icon{
  width:36px;height:36px;background:var(--accent);border-radius:9px;
  display:flex;align-items:center;justify-content:center;
  font-size:17px;margin-bottom:10px;
  box-shadow:0 0 20px var(--accent-glow)
}
.logo-title{font-size:13px;font-weight:700;color:var(--text);letter-spacing:.02em;line-height:1.3}
.logo-sub{font-size:10.5px;color:var(--text3);margin-top:2px}

.sidebar-nav{flex:1;padding:12px 8px}
.nav-section-title{
  font-size:9.5px;text-transform:uppercase;letter-spacing:.12em;
  color:var(--text3);padding:12px 10px 5px;font-weight:700
}
.nav-item{
  display:flex;align-items:center;gap:9px;
  padding:8px 11px;border-radius:7px;
  color:var(--text2);font-size:13px;font-weight:450;
  transition:var(--tr);margin-bottom:2px;cursor:pointer
}
.nav-item:hover{background:var(--bg3);color:var(--text)}
.nav-item.active{
  background:var(--accent-glow);color:var(--accent);font-weight:600;
  border:1px solid rgba(59,125,255,.22)
}
.nav-icon{font-size:15px;width:19px;text-align:center;flex-shrink:0}

.sidebar-footer{
  padding:12px 10px;border-top:1px solid var(--border);font-size:12px
}
.user-name{font-weight:700;color:var(--text2);font-size:12.5px}
.user-role{font-size:10.5px;color:var(--text3);text-transform:capitalize}

/* ── Main ───────────────────────────────────────────────────*/
.main-content{margin-left:var(--sidebar-w);flex:1;display:flex;flex-direction:column;min-height:100vh}

.topbar{
  height:58px;background:var(--bg2);border-bottom:1px solid var(--border);
  display:flex;align-items:center;padding:0 26px;gap:14px;
  position:sticky;top:0;z-index:50
}
.topbar-title{font-size:15px;font-weight:700;color:var(--text);flex:1}

.topbar-consorcio{
  display:flex;align-items:center;gap:7px;
  font-size:12px;font-weight:600;color:var(--text2);
  background:var(--bg3);border:1px solid var(--border2);
  border-radius:20px;padding:4px 13px
}
.topbar-dot{
  width:7px;height:7px;border-radius:50%;background:var(--green);
  box-shadow:0 0 6px var(--green);flex-shrink:0
}
.topbar-period{
  font-size:11.5px;background:var(--bg3);border:1px solid var(--border2);
  border-radius:20px;padding:4px 13px;color:var(--text2);font-weight:500;white-space:nowrap
}
.topbar-period strong{color:var(--accent)}

.page-body{padding:26px;flex:1}

/* ── Cards ──────────────────────────────────────────────────*/
.card{
  background:var(--bg2);border:1px solid var(--border);
  border-radius:var(--radius);padding:20px;margin-bottom:18px
}
.card-title{
  font-size:13.5px;font-weight:700;color:var(--text);
  margin-bottom:16px;display:flex;align-items:center;gap:8px
}

/* ── Stats ──────────────────────────────────────────────────*/
.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:14px;margin-bottom:20px}
.stat-card{
  background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius);
  padding:17px 18px;position:relative;overflow:hidden;transition:border-color var(--tr)
}
.stat-card:hover{border-color:var(--border2)}
.stat-card::before{
  content:'';position:absolute;top:0;left:0;right:0;height:2px;border-radius:var(--radius) var(--radius) 0 0
}
.stat-card.blue::before  {background:var(--accent)}
.stat-card.green::before {background:var(--green)}
.stat-card.red::before   {background:var(--red)}
.stat-card.yellow::before{background:var(--yellow)}
.stat-card.purple::before{background:var(--purple)}
.stat-card.cyan::before  {background:var(--cyan)}

.stat-label{font-size:10.5px;color:var(--text3);text-transform:uppercase;letter-spacing:.07em;font-weight:700;margin-bottom:7px}
.stat-value{font-size:21px;font-weight:800;color:var(--text);line-height:1.1;font-variant-numeric:tabular-nums}
.stat-sub{font-size:11px;color:var(--text3);margin-top:4px}
.stat-icon{position:absolute;top:14px;right:16px;font-size:20px;opacity:.1}

/* ── Tables ─────────────────────────────────────────────────*/
.table-wrap{overflow-x:auto;border-radius:var(--radius);border:1px solid var(--border)}
table{width:100%;border-collapse:collapse;font-size:13px}
thead th{
  background:var(--bg3);color:var(--text3);font-size:10.5px;
  text-transform:uppercase;letter-spacing:.08em;font-weight:700;
  padding:10px 14px;text-align:left;border-bottom:1px solid var(--border);white-space:nowrap
}
tbody tr{border-bottom:1px solid var(--border);transition:background var(--tr)}
tbody tr:last-child{border-bottom:none}
tbody tr:hover{background:var(--bg3)}
tbody td{padding:10px 14px;color:var(--text);vertical-align:middle}
.tr{text-align:right} .tc{text-align:center}
.mono{font-family:var(--mono);font-size:12.5px}

/* ── Badges ─────────────────────────────────────────────────*/
.badge{display:inline-flex;align-items:center;padding:2px 9px;border-radius:20px;font-size:10.5px;font-weight:700;letter-spacing:.03em}
.badge-green  {background:rgba(34,197,94,.14); color:var(--green)}
.badge-red    {background:rgba(239,68,68,.14);  color:var(--red)}
.badge-yellow {background:rgba(245,158,11,.14); color:var(--yellow)}
.badge-blue   {background:var(--accent-glow);    color:var(--accent)}
.badge-gray   {background:rgba(139,146,168,.14);color:var(--text2)}
.badge-purple {background:rgba(168,85,247,.14); color:var(--purple)}

/* ── Buttons ────────────────────────────────────────────────*/
.btn{
  display:inline-flex;align-items:center;gap:6px;padding:8px 16px;
  border-radius:7px;font-size:13px;font-weight:500;border:none;
  transition:var(--tr);cursor:pointer;text-decoration:none;white-space:nowrap
}
.btn-primary{background:var(--accent);color:#fff;box-shadow:0 2px 10px rgba(59,125,255,.3)}
.btn-primary:hover{background:var(--accent2);color:#fff}
.btn-secondary{background:var(--bg3);color:var(--text2);border:1px solid var(--border2)}
.btn-secondary:hover{background:var(--border2);color:var(--text)}
.btn-danger{background:rgba(239,68,68,.1);color:var(--red);border:1px solid rgba(239,68,68,.25)}
.btn-danger:hover{background:rgba(239,68,68,.2)}
.btn-success{background:rgba(34,197,94,.1);color:var(--green);border:1px solid rgba(34,197,94,.25)}
.btn-success:hover{background:rgba(34,197,94,.2)}
.btn-sm{padding:5px 11px;font-size:11.5px}
.btn-xs{padding:3px 8px;font-size:11px}
.w-100{width:100%;justify-content:center}

/* ── Forms ──────────────────────────────────────────────────*/
.form-group{margin-bottom:16px}
.form-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px}
label{display:block;font-size:11px;font-weight:700;color:var(--text2);margin-bottom:5px;text-transform:uppercase;letter-spacing:.06em}
input[type=text],input[type=email],input[type=number],
input[type=date],input[type=password],select,textarea{
  width:100%;background:var(--bg3);border:1px solid var(--border2);
  border-radius:7px;color:var(--text);padding:8px 12px;font-size:13px;
  transition:border-color var(--tr);outline:none
}
input:focus,select:focus,textarea:focus{
  border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow)
}
select option{background:var(--bg2)}
.form-help{font-size:11px;color:var(--text3);margin-top:3px}

/* ── Alerts ─────────────────────────────────────────────────*/
.alert{padding:11px 15px;border-radius:7px;font-size:13px;margin-bottom:14px;display:flex;align-items:center;gap:9px}
.alert-success{background:rgba(34,197,94,.1); border:1px solid rgba(34,197,94,.3); color:var(--green)}
.alert-error  {background:rgba(239,68,68,.1); border:1px solid rgba(239,68,68,.3); color:var(--red)}
.alert-info   {background:var(--accent-glow);  border:1px solid rgba(59,125,255,.3);color:var(--accent)}
.alert-warning{background:rgba(245,158,11,.1);border:1px solid rgba(245,158,11,.3);color:var(--yellow)}

/* ── Login ──────────────────────────────────────────────────*/
.login-page{
  min-height:100vh;display:flex;align-items:center;justify-content:center;
  background:var(--bg);
  background-image:
    radial-gradient(ellipse at 20% 50%,rgba(59,125,255,.07) 0%,transparent 50%),
    radial-gradient(ellipse at 80% 20%,rgba(168,85,247,.05) 0%,transparent 50%)
}
.login-box{
  width:370px;background:var(--bg2);border:1px solid var(--border);
  border-radius:14px;padding:34px 30px;box-shadow:var(--shadow)
}
.login-logo{text-align:center;margin-bottom:26px}
.login-logo .icon{
  width:50px;height:50px;background:var(--accent);border-radius:13px;
  display:flex;align-items:center;justify-content:center;
  font-size:23px;margin:0 auto 11px;box-shadow:0 0 28px var(--accent-glow)
}
.login-logo h1{font-size:17px;font-weight:800;color:var(--text)}
.login-logo p{font-size:12px;color:var(--text3);margin-top:3px}

/* ── Selector de consorcio ──────────────────────────────────*/
.consorcio-grid{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px;
  margin-top:20px
}
.consorcio-card{
  background:var(--bg2);border:1px solid var(--border);border-radius:12px;
  padding:22px;cursor:pointer;transition:all var(--tr);text-decoration:none;color:inherit;
  display:flex;flex-direction:column;gap:8px
}
.consorcio-card:hover{border-color:var(--accent);background:var(--bg3);transform:translateY(-2px);color:inherit}
.consorcio-card .cc-icon{
  width:42px;height:42px;background:var(--accent-glow);border:1px solid rgba(59,125,255,.3);
  border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:20px;margin-bottom:4px
}
.consorcio-card .cc-name{font-size:15px;font-weight:700;color:var(--text)}
.consorcio-card .cc-dir{font-size:12px;color:var(--text3)}
.consorcio-card .cc-meta{
  display:flex;gap:8px;margin-top:6px;flex-wrap:wrap
}
.consorcio-card .cc-chip{
  font-size:11px;background:var(--bg3);border:1px solid var(--border2);
  border-radius:20px;padding:2px 9px;color:var(--text2)
}

/* ── Misc ───────────────────────────────────────────────────*/
.divider{height:1px;background:var(--border);margin:18px 0}
.flex{display:flex} .flex-between{display:flex;justify-content:space-between;align-items:center}
.gap-8{gap:8px} .gap-12{gap:12px}
.mt-8{margin-top:8px} .mt-16{margin-top:16px} .mt-24{margin-top:24px}
.mb-16{margin-bottom:16px}
.text-muted{color:var(--text3)} .text-green{color:var(--green)}
.text-red{color:var(--red)} .text-yellow{color:var(--yellow)} .text-accent{color:var(--accent)}
.fw-600{font-weight:600} .fw-700{font-weight:700}
.fs-12{font-size:12px} .fs-13{font-size:13px}
.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

.search-bar{position:relative;margin-bottom:16px}
.search-bar input{padding-left:36px}
.search-icon{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--text3);font-size:13px;pointer-events:none}

/* Barra de progreso */
.progress-bar{background:var(--bg3);border-radius:4px;height:5px;overflow:hidden}
.progress-fill{height:100%;border-radius:4px;transition:width .6s ease}

@media(max-width:900px){
  .sidebar{transform:translateX(-100%)}
  .main-content{margin-left:0}
  .stats-grid{grid-template-columns:1fr 1fr}
}
@media(max-width:600px){
  .stats-grid{grid-template-columns:1fr}
  .page-body{padding:14px}
}
