/* ============================================================
   Presupuestos SSII · Cruz Roja Madrid — estilos corporativos
   (Sistema de diseño CRE enero 2026)
   ============================================================ */
:root {
  --cr: #f5333f;   --cr-d: #c42832;  --cr-l: #FEF0F1;
  --navy: #011e41; --navy-m: #012a55;
  --gris: #58595B; --gris-l: #9CA3AF;
  --fondo: #F0F2F5; --borde: #DDE1E9;
  --verde: #1A7A42; --verde-l: #E6F4ED;
  --amber: #C47A00; --amber-l: #FEF5E0;
  --azul: #1A5FA8;  --azul-l: #E8F0FA;
  --rojo-l: #FDECEA;
  --shadow: 0 1px 3px rgba(0,0,0,.07), 0 3px 10px rgba(0,0,0,.05);
  --r: 9px; --font: 'Montserrat', sans-serif;
}
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
body { font-family: var(--font); background: var(--fondo); color: #1C1C1E;
       font-size: 13px; line-height: 1.5; min-height: 100vh; display: flex; flex-direction: column; }
a { color: var(--azul); text-decoration: none; }

/* ===== Header ===== */
.hdr { background: var(--navy); border-bottom: 3px solid var(--cr);
       position: sticky; top: 0; z-index: 200; box-shadow: 0 2px 10px rgba(0,0,30,.22); }
.hdr-in { display: flex; align-items: center; height: 60px; padding: 0 28px; max-width: 1600px; margin: 0 auto; gap: 16px; }
.logo-box { background: #fff; border-radius: 6px; padding: 4px 10px; display: flex; align-items: center; flex-shrink: 0; }
.logo-box img { height: 32px; display: block; }
.hdiv { width: 1px; height: 32px; background: rgba(255,255,255,.18); flex-shrink: 0; }
.hdr-title { font-size: 13px; font-weight: 700; color: rgba(255,255,255,.92); letter-spacing: .3px; text-transform: uppercase; }
.hdr-sub { font-size: 10px; font-weight: 500; color: rgba(255,255,255,.42); letter-spacing: .5px; margin-top: 1px; }
.hdr-right { margin-left: auto; display: flex; align-items: center; gap: 12px; }
.hdr-pill { background: var(--cr); color: #fff; font-size: 10px; font-weight: 700; padding: 3px 10px; border-radius: 20px; text-transform: uppercase; letter-spacing: .5px; }
.hdr-user { text-align: right; line-height: 1.25; }
.hdr-user-n { font-size: 11px; font-weight: 700; color: #fff; }
.hdr-user-r { font-size: 9px; font-weight: 600; color: rgba(255,255,255,.5); text-transform: uppercase; letter-spacing: .5px; }
.period-sel { background: rgba(255,255,255,.1); border: 1px solid rgba(255,255,255,.2); color: #fff;
              padding: 6px 28px 6px 10px; border-radius: 7px; font-family: var(--font); font-size: 12px;
              font-weight: 600; cursor: pointer; outline: none; -webkit-appearance: none; appearance: none; }
.period-sel option { color: var(--navy); }

/* ===== Tabs ===== */
.tabs-wrap { background: var(--navy); border-bottom: 1px solid rgba(255,255,255,.08);
             position: sticky; top: 60px; z-index: 190; box-shadow: 0 2px 6px rgba(0,0,30,.12); }
.tabs { display: flex; gap: 2px; padding: 0 28px; max-width: 1600px; margin: 0 auto; overflow-x: auto; }
.tab { padding: 10px 18px; color: rgba(255,255,255,.38); font-size: 11px; font-weight: 700;
       border-bottom: 2px solid transparent; transition: all .15s; letter-spacing: .5px; text-transform: uppercase; white-space: nowrap; }
.tab:hover { color: rgba(255,255,255,.72); }
.tab.on { color: #fff; border-bottom-color: var(--cr); }

.main { flex: 1; }
.panel { max-width: 1600px; margin: 0 auto; padding: 20px 28px 48px; animation: fadeUp .18s ease; }
@keyframes fadeUp { from { opacity:0; transform:translateY(5px); } to { opacity:1; transform:translateY(0); } }
.page-title { font-size: 19px; font-weight: 800; color: var(--navy); margin-bottom: 2px; }
.page-sub { font-size: 11px; color: var(--gris-l); font-weight: 500; margin-bottom: 16px; }

/* ===== KPI / Cards / Tablas ===== */
.kpi-strip { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px,1fr)); gap: 10px; margin-bottom: 16px; }
.kpi-card { background: #fff; border: 1px solid var(--borde); border-radius: var(--r); padding: 14px 16px; box-shadow: var(--shadow); }
.kpi-lbl { font-size: 9px; font-weight: 700; text-transform: uppercase; letter-spacing: .8px; color: var(--gris); margin-bottom: 5px; }
.kpi-val { font-size: 22px; font-weight: 800; color: var(--navy); line-height: 1; }
.kpi-sub { font-size: 10px; color: var(--gris-l); margin-top: 4px; font-weight: 500; }
.kpi-card.verde .kpi-val { color: var(--verde); }
.kpi-card.amber .kpi-val { color: var(--amber); }
.kpi-card.rojo  .kpi-val { color: var(--cr); }

.card { background: #fff; border: 1px solid var(--borde); border-radius: var(--r); box-shadow: var(--shadow); overflow: hidden; margin-bottom: 16px; }
.card-head { padding: 11px 16px; border-bottom: 1px solid var(--borde); display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; }
.card-head-title { font-size: 12px; font-weight: 700; color: var(--navy); }
.card-head-sub { font-size: 10px; color: var(--gris-l); }
.card-body { padding: 16px; }
.card-body.nopad { padding: 0; }
.sec-hd { padding: 11px 15px; display: flex; align-items: center; justify-content: space-between;
          background: linear-gradient(135deg, #011e41, #012a55); }
.sec-name { font-size: 14px; font-weight: 800; color: #fff; }
.sec-sub  { font-size: 9px; font-weight: 500; color: rgba(255,255,255,.62); text-transform: uppercase; letter-spacing: .3px; }
.sec-pill { background: rgba(255,255,255,.2); color: #fff; font-size: 11px; font-weight: 700; padding: 3px 10px; border-radius: 20px; }

.scroll-x { overflow: auto; }
.scroll-x.tbl-fija { max-height: 66vh; }

.data-table { width: 100%; border-collapse: separate; border-spacing: 0; }
.data-table th { background: var(--navy); color: #fff; font-size: 9px; font-weight: 700; text-transform: uppercase;
                 letter-spacing: .4px; padding: 9px 12px; text-align: left; position: sticky; top: 0; z-index: 30; box-shadow: 0 1px 0 rgba(255,255,255,.08); }
.data-table th.num, .data-table td.num { text-align: right; font-variant-numeric: tabular-nums; }
.data-table td { padding: 8px 12px; border-bottom: 1px solid #F0F2F5; font-size: 11px; }
.data-table tr:nth-child(even) td { background: #FAFBFD; }
.data-table tbody tr:hover td { background: #EEF2FF; }
.data-table td.strong { font-weight: 700; color: var(--navy); }
.data-table tr.total-row td { background: var(--navy) !important; color: #fff; font-weight: 800; }

.badge { display: inline-block; font-size: 10px; font-weight: 700; padding: 3px 9px; border-radius: 5px; white-space: nowrap; }
.badge-verde { background: var(--verde-l); color: var(--verde); }
.badge-amber { background: var(--amber-l); color: var(--amber); }
.badge-azul  { background: var(--azul-l);  color: var(--azul);  }
.badge-rojo  { background: var(--rojo-l);  color: var(--cr);    }
.badge-gris  { background: #EEF0F4; color: var(--gris); }
.tag-cuenta { display:inline-block; font-size:9px; font-weight:800; background:#EEF2FF; color:var(--azul);
              border-radius:4px; padding:2px 6px; font-variant-numeric: tabular-nums; }

/* ===== Controles ===== */
.btn { font-family: var(--font); font-size: 11px; font-weight: 700; padding: 7px 14px; border-radius: 7px;
       border: 1px solid var(--borde); background: #fff; color: var(--navy); cursor: pointer; transition: all .13s;
       display: inline-block; letter-spacing: .2px; }
.btn:hover { border-color: var(--navy); }
.btn-primary { background: var(--cr); border-color: var(--cr); color: #fff; }
.btn-primary:hover { background: var(--cr-d); border-color: var(--cr-d); }
.btn-navy { background: var(--navy); border-color: var(--navy); color: #fff; }
.btn-navy:hover { background: var(--navy-m); }
.btn-sm { font-size: 10px; padding: 4px 9px; }
.btn-ghost { background: transparent; border-color: transparent; color: var(--gris); }
.btn-ghost:hover { color: var(--cr); }
.btn-outline-light { background: transparent; border: 1px solid rgba(255,255,255,.35); color: #fff; }
.btn-outline-light:hover { border-color: #fff; }
.btn[disabled] { opacity: .45; cursor: not-allowed; }

.sel, .inp { font-family: var(--font); font-size: 12px; font-weight: 600; color: var(--navy);
      padding: 7px 10px; border: 1px solid var(--borde); border-radius: 7px; background: #fff; outline: none; }
.sel:focus, .inp:focus { border-color: var(--azul); }
.inp-cell { width: 92px; text-align: right; font-family: var(--font); font-size: 11px; font-weight: 600;
            padding: 4px 6px; border: 1px solid var(--borde); border-radius: 5px; color: var(--navy);
            outline: none; font-variant-numeric: tabular-nums; }
.inp-cell:focus { border-color: var(--azul); background: var(--azul-l); }
.inp-cell.manual { border-color: #E8CFA0; background: #FFFBF2; }
.inp-cell.mini { width: 64px; }
.inp-cell.wide { width: 100%; text-align: left; }
.auto-val { display: inline-block; min-width: 92px; text-align: right; font-variant-numeric: tabular-nums;
            font-size: 11px; font-weight: 600; color: var(--gris); padding: 4px 6px; background: #F2F6FB;
            border: 1px dashed #C9D6E8; border-radius: 5px; cursor: pointer; }
.auto-val:hover { border-color: var(--azul); color: var(--azul); }

.toolbar { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; margin-bottom: 14px; }
.toolbar .spacer { flex: 1; }
.hint { font-size: 10px; color: var(--gris-l); font-weight: 500; }
.grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
@media (max-width: 1000px) { .grid-2 { grid-template-columns: 1fr; } }
.chart-box { position: relative; height: 320px; }
.chart-box.tall { height: 560px; }

.alert-box { border-radius: var(--r); padding: 10px 14px; font-size: 11px; font-weight: 600; margin-bottom: 12px; }
.alert-warn { background: var(--amber-l); color: var(--amber); border: 1px solid #F0DCAE; }
.alert-ok { background: var(--verde-l); color: var(--verde); border: 1px solid #BFE3CD; }
.alert-err { background: var(--rojo-l); color: var(--cr-d); border: 1px solid #F5C6C6; }

/* Formularios en tarjeta */
.form-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px,1fr)); gap: 12px; }
.form-field label { display: block; font-size: 9px; font-weight: 700; text-transform: uppercase;
                    letter-spacing: .6px; color: var(--gris); margin-bottom: 4px; }
.form-field .inp, .form-field .sel { width: 100%; }
.chkline { display: flex; align-items: center; gap: 7px; font-size: 11px; font-weight: 600; color: var(--navy); }

/* ===== Login ===== */
.login-wrap { min-height: 100vh; display: flex; align-items: center; justify-content: center;
              background: linear-gradient(135deg, #011e41 0%, #012a55 60%, #0a3a6e 100%); padding: 20px; }
.login-card { background: #fff; border-radius: 14px; box-shadow: 0 20px 60px rgba(0,0,20,.35);
              width: 100%; max-width: 400px; overflow: hidden; }
.login-top { background: var(--navy); padding: 26px 30px; border-bottom: 3px solid var(--cr);
             display: flex; align-items: center; gap: 14px; }
.login-body { padding: 28px 30px 32px; }
.login-title { font-size: 15px; font-weight: 800; color: #fff; line-height: 1.3; }
.login-sub { font-size: 10px; color: rgba(255,255,255,.5); text-transform: uppercase; letter-spacing: .5px; }
.login-body .form-field { margin-bottom: 14px; }
.saving-dot { font-size: 10px; font-weight: 700; color: var(--verde); }

/* Autosave feedback */
.flash { position: fixed; bottom: 18px; right: 18px; background: var(--navy); color: #fff;
         font-size: 11px; font-weight: 700; padding: 9px 16px; border-radius: 8px; box-shadow: var(--shadow);
         opacity: 0; transform: translateY(8px); transition: all .25s; z-index: 500; }
.flash.on { opacity: 1; transform: translateY(0); }
.flash.err { background: var(--cr-d); }

/* ---------- selector de EC ERP en cascada ---------- */
.ec-pick-btn { display:inline-flex; align-items:center; gap:6px; max-width:100%; text-align:left;
  padding:6px 10px; font-size:11px; border-radius:6px; border:1px solid var(--borde); background:#fff; cursor:pointer; }
.ec-pick-btn:hover { border-color: var(--navy); }
.ec-pick-btn .ec-pick-cod { font-weight:700; color:var(--navy); white-space:nowrap; }
.ec-pick-btn .ec-pick-desc { color:var(--gris-l); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.ec-modal-back { display:none; position:fixed; inset:0; background:rgba(1,20,40,.55); z-index:900;
  align-items:flex-start; justify-content:center; padding:5vh 16px; }
.ec-modal-back.on { display:flex; }
.ec-modal { background:#fff; border-radius:10px; width:100%; max-width:720px; max-height:88vh;
  display:flex; flex-direction:column; box-shadow:0 20px 60px rgba(0,0,0,.35); overflow:hidden; }
.ec-modal-hd { display:flex; align-items:center; justify-content:space-between; padding:14px 16px;
  border-bottom:1px solid var(--borde); font-weight:700; color:var(--navy); font-size:13px; }
.ec-modal-filtros { display:grid; grid-template-columns:1fr 1fr 1fr 1fr; gap:8px; padding:14px 16px 0; }
.ec-modal-filtros select { font-size:11px; }
.ec-modal-back .inp { margin:10px 16px 0; width:calc(100% - 32px); }
.ec-modal-lista { overflow-y:auto; padding:10px 16px 16px; flex:1; }
.ec-modal-item { padding:9px 10px; border-radius:6px; cursor:pointer; font-size:11px; line-height:1.5; }
.ec-modal-item:hover { background:#f1f4f8; }
.ec-modal-item strong { color:var(--navy); font-size:12px; }

/* ---------- nota de métrica (equipos/detalle) ---------- */
.nota-btn { padding:2px 5px; font-size:11px; opacity:.35; }
.nota-btn.nota-on { opacity:1; background:#FFF6E0; border-color:#E8CFA0; }
.nota-icon-reparto { cursor:help; opacity:.8; margin-left:4px; }

/* ---------- indicador conectado/desconectado ---------- */
.dot { display:inline-block; width:9px; height:9px; border-radius:50%; }
.dot-on { background:#2e9e5b; box-shadow:0 0 0 3px rgba(46,158,91,.18); }
.dot-off { background:#c8442f; opacity:.55; }

/* ---------- columnas congeladas (primera(s) columna(s) fijas al desplazar en horizontal) ---------- */
.col-fija-1 { position: sticky; left: 0; z-index: 20; width: 100px; min-width: 100px; max-width: 100px; }
.col-fija-2 { position: sticky; left: 100px; z-index: 20; width: 230px; min-width: 230px; max-width: 230px; }
.col-fija-solo { position: sticky; left: 0; z-index: 20; width: 220px; min-width: 220px; max-width: 220px; }
th.col-fija-1, th.col-fija-2, th.col-fija-solo { z-index: 40; } /* cabecera + columna congelada: por encima de ambas */
td.col-fija-1, td.col-fija-2, td.col-fija-solo { background: #fff; box-shadow: 1px 0 0 #F0F2F5; }
.data-table tr:nth-child(even) td.col-fija-1, .data-table tr:nth-child(even) td.col-fija-2, .data-table tr:nth-child(even) td.col-fija-solo { background: #FAFBFD; }
.data-table tbody tr:hover td.col-fija-1, .data-table tbody tr:hover td.col-fija-2, .data-table tbody tr:hover td.col-fija-solo { background: #EEF2FF; }
.data-table tr.total-row td.col-fija-1, .data-table tr.total-row td.col-fija-2, .data-table tr.total-row td.col-fija-solo { background: var(--navy) !important; }
