/* ═══════════════════════════════════════════════════
   OVE — Estilos globales v2
   Mejoras visuales globales + límite artículos
   ═══════════════════════════════════════════════════ */
@import url('https://fonts.googleapis.com/css2?family=Playfair+Display:wght@500;700&family=IBM+Plex+Sans:wght@300;400;500&family=IBM+Plex+Mono:wght@400;500&display=swap');
@import 'themes/ote.css';

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; }
body {
  font-family: var(--font-body);
  background: var(--c-bg);
  color: var(--c-text);
  font-size: 15px;
  line-height: 1.65;
}
.sr-only { position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0); }
.hidden { display: none !important; }
.text-mono { font-family: var(--font-mono); }
.text-display { font-family: var(--font-display); }

/* ── OTE bar ── */
.ote-bar { height:var(--ote-bar-h);background:var(--c-text);position:sticky;top:0;z-index:200; }
.ote-bar-inner { max-width:1400px;margin:0 auto;padding:0 24px;height:100%;display:flex;align-items:center; }
.ote-bar-left { display:flex;align-items:center;gap:14px;flex:1; }
.ote-bar-inner .ote-bar-left { flex:1; }
.ote-logo { font-family:var(--font-mono);font-size:11px;font-weight:500;color:#fff;letter-spacing:.12em;display:flex;align-items:center;gap:7px;cursor:pointer;text-decoration:none;opacity:.9;transition:opacity .15s; }
.ote-logo:hover { opacity:1; }
.ote-pulse { width:7px;height:7px;border-radius:50%;background:#2ECC80;animation:pulse 2.5s ease-in-out infinite; }
@keyframes pulse { 0%,100%{opacity:1;transform:scale(1)} 50%{opacity:.5;transform:scale(.8)} }
.ote-sep { width:1px;height:18px;background:rgba(255,255,255,.15); }
.ote-breadcrumb { font-family:var(--font-mono);font-size:10px;color:rgba(255,255,255,.45);letter-spacing:.06em; }
.ote-breadcrumb span { color:rgba(255,255,255,.75); }
.ote-bar-right { font-family:var(--font-mono);font-size:10px;color:rgba(255,255,255,.4); }
.ote-bar-right strong { color:rgba(255,255,255,.75);font-weight:500; }

/* ── Navbar ── */
.navbar {
  background: var(--c-surface);
  border-bottom: 1.5px solid var(--c-border);
  position: sticky;
  top: var(--ote-bar-h);
  z-index: 100;
}
.navbar-inner {
  max-width: 1400px;
  margin: 0 auto;
  display: flex;
  align-items: stretch;
  flex-wrap: nowrap;
  overflow: hidden;
  width: 100%;
}
.nav-brand { display:flex;align-items:center;padding:0 20px;border-right:1px solid var(--c-border-lt);gap:10px;flex-shrink:0; }
.nav-brand-mark { width:30px;height:30px;border-radius:var(--radius-sm);background:var(--c-accent);display:flex;align-items:center;justify-content:center; }
.nav-brand-name { font-family:var(--font-display);font-size:15px;font-weight:700;color:var(--c-text);letter-spacing:-.01em;line-height:1.1; }
.nav-brand-sub { font-family:var(--font-mono);font-size:9px;color:var(--c-text-3);letter-spacing:.08em;text-transform:uppercase; }
.nav-tabs { display:flex;flex-direction:column;flex:1;overflow:hidden; }
.nav-row { display:flex;align-items:stretch;border-bottom:1px solid var(--c-border-lt); }
.nav-row:last-child { border-bottom:none; }
.nav-tab {
  display: flex;
  align-items: center;
  gap: 5px;
  padding: 0 14px;
  font-family: var(--font-body);
  font-size: 12px;
  font-weight: 400;
  color: var(--c-text-2);
  cursor: pointer;
  border-bottom: 2.5px solid transparent;
  white-space: nowrap;
  transition: color .15s, border-color .15s;
  user-select: none;
  flex-shrink: 0;
  height: 36px;
  margin-bottom: -1.5px;
}
.nav-row-top .nav-tab { height: 38px; font-size: 12.5px; }
.nav-row-bot .nav-tab { height: 32px; font-size: 11.5px; color: var(--c-text); }
.nav-tab:hover { color: var(--c-text); }
.nav-tab.active {
  color: var(--c-accent);
  border-bottom-color: var(--c-accent);
  font-weight: 500;
  background: var(--c-accent-lt);
  border-radius: var(--radius-sm) var(--radius-sm) 0 0;
  border-top: 1.5px solid var(--c-accent);
  border-left: 1px solid var(--c-border-lt);
  border-right: 1px solid var(--c-border-lt);
  margin-top: 3px;
}
.nav-tab-num { display: none; }
.tab-badge { font-family:var(--font-mono);font-size:9px;padding:1px 5px;border-radius:3px;font-weight:500;line-height:1.4; }
.tb-green { background:var(--c-accent-lt);color:var(--c-accent); }
.tb-blue  { background:var(--c-blue-lt);color:var(--c-blue); }
.nav-actions { display:none; }

.nav-btn { height:28px;padding:0 14px;border-radius:var(--radius-sm);border:1px solid var(--c-border);background:var(--c-surface);font-family:var(--font-mono);font-size:10px;font-weight:500;color:var(--c-text);cursor:pointer;display:flex;align-items:center;gap:5px;white-space:nowrap;transition:background .12s,border-color .12s,color .12s; }
.nav-btn:hover { background:var(--c-accent-lt);border-color:var(--c-accent);color:var(--c-accent); }

/* ── Layout ── */
.portal-layout {
  display: grid;
  grid-template-columns: 1fr;
  gap: 0;
  max-width: 1400px;
  margin: 0 auto;
  width: 100%;
}
.main-area { border-right:1px solid var(--c-border); }
.aside-area { background:var(--c-surface);transition:none; }

/* ── Views ── */
.view { display:none; }
.view.active { display:block; }
#view-blog.active { display:block;grid-column:1/-1; }
.portal-layout:has(#view-blog.active) { grid-template-columns:1fr; }

/* ── Placeholders ── */
.view-placeholder { padding:56px 32px;display:flex;flex-direction:column;align-items:flex-start;gap:14px; }
.ph-num { font-family:var(--font-mono);font-size:11px;color:var(--c-text-3);letter-spacing:.06em; }
.ph-title { font-family:var(--font-display);font-size:32px;font-weight:700;color:var(--c-text);letter-spacing:-.02em;line-height:1.1; }
.ph-desc { font-size:15px;color:var(--c-text-2);max-width:520px;line-height:1.65; }
.ph-sub-tabs { display:flex;flex-wrap:wrap;gap:6px;margin-top:8px; }
.ph-sub { font-family:var(--font-mono);font-size:11px;padding:4px 10px;border:1px solid var(--c-border);border-radius:3px;color:var(--c-text-2);background:var(--c-surface); }
.ph-sub.main { background:var(--c-accent);border-color:var(--c-accent);color:#fff; }
.ph-sources { margin-top:12px;display:flex;flex-wrap:wrap;gap:6px; }
.ph-src { font-family:var(--font-mono);font-size:10px;padding:3px 8px;background:var(--c-bg);border:1px solid var(--c-border);border-radius:3px;color:var(--c-text-3); }
.ph-block { display:inline-flex;align-items:center;gap:6px;padding:9px 16px;border:1px dashed var(--c-border);border-radius:var(--radius-md);font-size:13px;color:var(--c-text-3);margin-top:4px; }

/* ── Status bar ── */
.status-bar { border-top:1px solid var(--c-border-lt);padding:0 28px;height:32px;display:flex;align-items:center;gap:20px;background:var(--c-surface);font-family:var(--font-mono);font-size:10px;color:var(--c-text-3); }
.sb-item { display:flex;align-items:center;gap:5px; }
.sb-dot { width:6px;height:6px;border-radius:50%; }

/* ── Animaciones ── */
@keyframes fadeUp { from{opacity:0;transform:translateY(6px)} to{opacity:1;transform:translateY(0)} }
.view.active .inicio-layout   { animation:fadeUp .2s ease both; }
.view.active .view-placeholder { animation:fadeUp .2s ease both; }

/* ════════════════════════════════════════════════════
   Pantalla Inicio — 3 columnas
   ════════════════════════════════════════════════════ */
.inicio-layout {
  display: grid;
  grid-template-columns: 20% 1fr 20%;
  min-height: calc(100vh - var(--ote-bar-h) - var(--nav-h));
}
.inicio-col-left {
  border-right: 1px solid var(--c-border-lt);
  padding: 24px 18px;
  background: var(--c-surface);
  overflow-y: auto;
}
.inicio-col-center {
  padding: 36px 36px;
  background: var(--c-bg);
  overflow-y: auto;
}
.inicio-col-right {
  border-left: 1px solid var(--c-border-lt);
  padding: 24px 18px;
  background: var(--c-surface);
  overflow-y: auto;
}
.inicio-section-label {
  font-family: var(--font-mono);
  font-size: 9.5px;
  font-weight: 500;
  color: var(--c-text-3);
  letter-spacing: .1em;
  text-transform: uppercase;
  margin-bottom: 14px;
  padding-bottom: 8px;
  border-bottom: 1px solid var(--c-border-lt);
}

/* KPIs lateral */
.inicio-kpi {
  padding: 12px 0 12px 10px;
  border-bottom: 1px solid var(--c-border-lt);
  position: relative;
}
.inicio-kpi:last-child { border-bottom: none; }
.inicio-kpi::before {
  content: '';
  position: absolute;
  left: 0; top: 12px; bottom: 12px;
  width: 2px; border-radius: 1px;
}
.inicio-kpi--red::before    { background: var(--c-red); }
.inicio-kpi--amber::before  { background: var(--c-amber); }
.inicio-kpi--blue::before   { background: var(--c-blue); }
.inicio-kpi--green::before  { background: var(--c-accent); }

/* KPIs barra compacta horizontal — encima del artículo central */
.inicio-kpis-bar {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 20px;
  padding-bottom: 16px;
  border-bottom: 1px solid var(--c-border-lt);
}
.inicio-kpis-bar .inicio-kpi {
  flex: 1;
  min-width: 110px;
  padding: 8px 12px 8px 14px;
}
.inicio-kpis-bar .inicio-kpi-val  { font-size: 16px; }
.inicio-kpis-bar .inicio-kpi-name { font-size: 9px; letter-spacing: .04em; }
.inicio-kpis-bar .inicio-kpi-sub  { display: none; }
.inicio-kpi-name { font-family:var(--font-mono);font-size:10px;color:var(--c-text-3);margin-bottom:4px; }
.inicio-kpi-val { font-family:var(--font-display);font-size:22px;font-weight:700;color:var(--c-text);line-height:1;letter-spacing:-.02em; }
.inicio-kpi-sub { font-size:11px;color:var(--c-text-3);margin-top:3px; }

/* Portales lateral */
.inicio-portal {
  display: block;
  padding: 9px 0;
  border-bottom: 1px solid var(--c-border-lt);
  text-decoration: none;
  transition: padding-left .12s;
}
.inicio-portal:last-child { border-bottom: none; }
.inicio-portal:hover { padding-left: 5px; }
.inicio-portal-name { font-size:12.5px;font-weight:500;color:var(--c-accent);margin-bottom:2px; }
.inicio-portal-desc { font-size:11px;color:var(--c-text-3);line-height:1.4; }

/* Artículo central */
.inicio-art-titulo {
  font-family: var(--font-display);
  font-size: 26px;
  font-weight: 700;
  color: var(--c-text);
  letter-spacing: -.02em;
  line-height: 1.2;
  margin-bottom: 16px;
  margin-top: 10px;
}
.inicio-art-dropcap {
  float: left;
  font-family: var(--font-display);
  font-size: 72px;
  font-weight: 700;
  line-height: 0.72;
  color: var(--c-accent);
  margin-right: 5px;
  margin-top: 8px;
}
.inicio-art-body p { margin-bottom: 1em; }
.inicio-art-body {
  font-family: var(--font-body);
  font-size: 15px;
  color: var(--c-text-2);
  line-height: 1.8;
  margin-bottom: 20px;
}
.inicio-art-empty { font-family:var(--font-mono);font-size:12px;color:var(--c-text-3);padding:48px 0;text-align:center; }

/* Recursos lateral */
.inicio-recurso {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 11px 0;
  border-bottom: 1px solid var(--c-border-lt);
  text-decoration: none;
  cursor: pointer;
}
.inicio-recurso:last-child { border-bottom: none; }
.inicio-recurso:hover .inicio-recurso-title { color: var(--c-accent); }
.inicio-recurso-icon { flex-shrink: 0; margin-top: 2px; }
.inicio-recurso-info { flex: 1; min-width: 0; }
.inicio-recurso-title { font-size:12px;font-weight:500;color:var(--c-text);margin-bottom:3px;line-height:1.3;transition:color .12s; }
.inicio-recurso-desc { font-size:10.5px;color:var(--c-text-3);line-height:1.4; }
.inicio-recurso-dl { flex-shrink:0;color:var(--c-text-3);margin-top:3px;transition:color .12s; }
.inicio-recurso:hover .inicio-recurso-dl { color:var(--c-accent); }

/* ════════════════════════════════════════════════════
   Pestaña Déficit
   ════════════════════════════════════════════════════ */
.d-subnav { display:flex;align-items:center;border-bottom:1.5px solid var(--c-border);background:var(--c-surface);padding:0 28px;overflow-x:auto;scrollbar-width:none;max-width:100%; }
.d-subnav::-webkit-scrollbar { display:none; }
.d-sub-tab { padding:13px 16px;font-family:var(--font-body);font-size:13px;color:var(--c-text-2);background:none;border:none;border-bottom:2.5px solid transparent;cursor:pointer;white-space:nowrap;transition:color .15s,border-color .15s;margin-bottom:-1.5px;flex:0 0 auto; }
.d-sub-tab:hover { color:var(--c-text); }
.d-sub-tab.active { color:var(--c-accent);border-bottom-color:var(--c-accent);font-weight:500; }
.d-subnav-src { margin-left:auto;font-family:var(--font-mono);font-size:9.5px;color:var(--c-text-3);white-space:nowrap;flex-shrink:0; }
.d-sub-view { padding:24px 32px 32px; }
.d-section-hdr { margin-bottom:18px; }
.d-section-title { font-family:var(--font-display);font-size:22px;font-weight:700;color:var(--c-text);letter-spacing:-.01em;margin-bottom:4px; }
.d-section-sub { font-family:var(--font-mono);font-size:11px;color:var(--c-text-3); }
.d-link { color:var(--c-accent);text-decoration:none;font-family:var(--font-mono);font-size:10px; }
.d-link:hover { text-decoration:underline; }
.d-kpi-row { display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:22px; }
.d-kpi { background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius-md);padding:16px 18px;position:relative;overflow:hidden; }
.d-kpi-bar { position:absolute;top:0;left:0;width:100%;height:2px; }
.d-kpi-bar--red   { background:var(--c-red); }
.d-kpi-bar--amber { background:var(--c-amber); }
.d-kpi-bar--green { background:var(--c-accent); }
.d-kpi-bar--blue  { background:var(--c-blue); }
.d-kpi-name { font-family:var(--font-mono);font-size:10.5px;color:var(--c-text-3);margin-bottom:7px;margin-top:4px; }
.d-kpi-val { font-family:var(--font-display);font-size:26px;font-weight:700;color:var(--c-text);letter-spacing:-.02em;line-height:1;margin-bottom:5px; }
.d-kpi-sub { font-size:12px;color:var(--c-text-3); }
.d-charts-row { display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:22px; }
.d-chart-card { background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius-md);padding:18px; }
.d-chart-title { font-family:var(--font-mono);font-size:10.5px;color:var(--c-text-3);letter-spacing:.04em;text-transform:uppercase;margin-bottom:14px; }
.d-servicios { background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius-md);padding:18px;max-width:640px; }
.d-sb-row { display:grid;grid-template-columns:180px 1fr 56px;align-items:center;gap:14px;padding:8px 0;border-bottom:1px solid var(--c-border-lt); }
.d-sb-row:last-child { border-bottom:none; }
.d-sb-label { font-size:13px;color:var(--c-text-2); }
.d-sb-bar-wrap { height:6px;background:var(--c-border-lt);border-radius:3px;overflow:hidden; }
.d-sb-bar { height:100%;border-radius:3px;transition:width .5s ease; }
.d-sb-val { font-family:var(--font-mono);font-size:12px;font-weight:500;text-align:right; }
.d-table { width:100%;border-collapse:collapse;font-size:13px; }
.d-table th { font-family:var(--font-mono);font-size:10.5px;color:var(--c-text-3);text-align:left;padding:9px 14px;border-bottom:1.5px solid var(--c-border);letter-spacing:.04em;text-transform:uppercase; }
.d-table td { padding:9px 14px;border-bottom:1px solid var(--c-border-lt);color:var(--c-text-2); }
.d-table tr:hover td { background:var(--c-bg); }
.d-td-name { font-weight:500;color:var(--c-text) !important; }
.d-empty { text-align:center;padding:56px 32px;border:1px dashed var(--c-border);border-radius:var(--radius-lg);margin-top:14px; }
.d-empty-icon { font-size:36px;margin-bottom:14px; }
.d-empty-title { font-size:15px;font-weight:500;color:var(--c-text);margin-bottom:7px; }
.d-empty-sub { font-size:13px;color:var(--c-text-3);line-height:1.7; }
.d-empty-sub code { font-family:var(--font-mono);background:var(--c-border-lt);padding:1px 5px;border-radius:3px; }
.d-origen-grid { display:grid;grid-template-columns:1fr 1fr;gap:18px; }
.d-origen-col { background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius-md);overflow:hidden; }
.d-origen-hdr { padding:11px 18px;font-family:var(--font-mono);font-size:10.5px;font-weight:500;letter-spacing:.04em;text-transform:uppercase;display:flex;align-items:center;justify-content:space-between; }
.d-origen-hdr--red   { background:#FEF0EE;color:var(--c-red); }
.d-origen-hdr--amber { background:#FEF6E8;color:var(--c-amber); }
.d-origen-badge { font-size:9px;font-weight:400;letter-spacing:.02em;text-transform:none;opacity:.7; }
.d-causa-row { display:grid;grid-template-columns:1fr 90px 40px;align-items:center;gap:10px;padding:9px 18px;border-bottom:1px solid var(--c-border-lt); }
.d-causa-row:last-child { border-bottom:none; }
.d-causa-label { font-size:13px;color:var(--c-text-2); }
.d-causa-bar-wrap { height:6px;background:var(--c-border-lt);border-radius:3px;overflow:hidden; }
.d-causa-bar { height:100%;border-radius:3px;transition:width .5s ease; }
.d-causa-bar--red   { background:var(--c-red); }
.d-causa-bar--amber { background:var(--c-amber); }
.d-causa-pct { font-family:var(--font-mono);font-size:12px;font-weight:500;color:var(--c-text-2);text-align:right; }
.d-causa-note { padding:9px 18px;font-size:12px;color:var(--c-text-3);font-style:italic; }
.sim-layout { display:grid;grid-template-columns:1fr 1fr;gap:22px;align-items:start; }
.sim-inputs,.sim-results { background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius-lg);padding:22px; }
.sim-section-label { font-family:var(--font-mono);font-size:10.5px;color:var(--c-text-3);letter-spacing:.06em;text-transform:uppercase;margin-bottom:16px; }
.sim-ctrl { margin-bottom:18px; }
.sim-lbl { display:flex;align-items:center;justify-content:space-between;font-size:13px;color:var(--c-text);margin-bottom:7px;font-weight:500; }
.sim-src { font-family:var(--font-mono);font-size:9.5px;color:var(--c-accent);font-weight:400;background:var(--c-accent-lt);padding:1px 6px;border-radius:3px; }
.sim-slider-row { display:flex;align-items:center;gap:12px; }
.sim-slider-row input[type=range] { flex:1;accent-color:var(--c-accent); }
.sim-val { font-family:var(--font-mono);font-size:12px;font-weight:500;color:var(--c-accent);min-width:88px;text-align:right;flex-shrink:0; }
.sim-kpis { display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:18px; }
.sim-kpi { background:var(--c-bg);border-radius:var(--radius-sm);padding:12px 14px; }
.sim-kpi-label { font-family:var(--font-mono);font-size:10px;color:var(--c-text-3);margin-bottom:5px; }
.sim-kpi-val { font-family:var(--font-display);font-size:20px;font-weight:700;color:var(--c-text);line-height:1;margin-bottom:4px; }
.sim-kpi-sub { font-size:11px;color:var(--c-text-3); }
.sim-note { font-size:11px;color:var(--c-text-3);font-style:italic;margin-bottom:14px;line-height:1.5;padding:9px;background:var(--c-border-lt);border-radius:var(--radius-sm); }

/* ════════════════════════════════════════════════════
   Blog + Modal + Opinión
   ════════════════════════════════════════════════════ */
.op-blog-link { display:flex;align-items:center;justify-content:space-between;padding:10px 0 0;border-top:1px solid var(--c-border-lt);margin-top:16px;cursor:pointer; }
.op-blog-count { font-family:var(--font-mono);font-size:11px;color:var(--c-text-3); }
.op-blog-arrow { font-family:var(--font-mono);font-size:11px;color:var(--c-accent);transition:opacity .12s; }
.op-blog-link:hover .op-blog-arrow { opacity:.7; }

/* Artículo opinión */
.op-article { overflow: hidden; }
.op-cat { font-family:var(--font-mono);font-size:9px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;padding:2px 7px;border-radius:3px;display:inline-block;margin-bottom:10px; }
.cat-analisis { background:var(--c-blue-lt);color:var(--c-blue); }
.cat-opinion  { background:#F0EEF8;color:var(--c-purple); }
.cat-dato     { background:var(--c-accent-lt);color:var(--c-accent); }
.cat-debate   { background:#FEF6E8;color:var(--c-amber); }
.op-dropcap { float:left;font-family:var(--font-display);font-size:52px;font-weight:700;line-height:0.72;color:var(--c-accent);margin-right:3px;margin-top:6px; }
.op-body { font-family:var(--font-body);font-size:13px;color:var(--c-text-2);line-height:1.7; }
.op-body p { margin-bottom: 1em; }
.op-quote { border-left:3px solid var(--c-accent);padding:8px 14px;margin:14px 0;font-family:var(--font-display);font-size:15px;font-weight:700;font-style:italic;color:var(--c-text);background:var(--c-accent-lt);line-height:1.6; }
.op-author { display:flex;align-items:center;gap:9px;margin-top:12px; }
.op-avatar { width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-family:var(--font-mono);font-size:9px;font-weight:500;flex-shrink:0; }
.op-author-name { font-family:var(--font-body);font-size:12px;font-weight:500;color:var(--c-text);line-height:1.2; }
.op-author-role { font-family:var(--font-mono);font-size:10px;color:var(--c-text-3); }
.op-footer { display:flex;align-items:center;justify-content:space-between;margin-top:10px; }
.op-date { font-family:var(--font-mono);font-size:10px;color:var(--c-text-3); }

/* Blog lista — límite de texto */
.blog-header { padding:28px 32px 18px;border-bottom:1px solid var(--c-border-lt);background:var(--c-surface);min-width:0; }
.blog-eyebrow { font-family:var(--font-mono);font-size:10.5px;color:var(--c-accent);letter-spacing:.1em;text-transform:uppercase;margin-bottom:5px;display:flex;align-items:center;gap:8px; }
.blog-eyebrow::before { content:'';display:inline-block;width:20px;height:2px;background:var(--c-accent); }
.blog-title { font-family:var(--font-display);font-size:24px;font-weight:700;color:var(--c-text);letter-spacing:-.02em; }
.blog-sub { font-size:13px;color:var(--c-text-3);margin-top:5px;line-height:1.45; }
.blog-list { padding:24px 32px;display:grid;grid-template-columns:1fr 1fr;gap:18px; }
.blog-article { background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius-lg);padding:20px;position:relative;transition:border-color .15s; }
.blog-article:hover { border-color:var(--c-accent); }
.blog-article--destacado { border-color:var(--c-accent);border-width:1.5px; }
.blog-article .op-body {
  font-size: 13px;
  line-height: 1.7;
  overflow: hidden;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 8;
}
.blog-article .op-body.expanded {
  display: block;
  -webkit-line-clamp: unset;
}
.blog-leer-mas {
  margin-top: 10px;
  font-family: var(--font-mono);
  font-size: 10.5px;
  color: var(--c-accent);
  background: none;
  border: none;
  cursor: pointer;
  padding: 0;
  letter-spacing: .04em;
}
.blog-leer-mas:hover { text-decoration: underline; }
.blog-badge-dest { font-family:var(--font-mono);font-size:8.5px;font-weight:500;padding:2px 6px;background:var(--c-accent-lt);color:var(--c-accent);border-radius:3px;display:inline-block;margin-bottom:8px;letter-spacing:.06em;text-transform:uppercase; }
.blog-empty { grid-column:1/-1;padding:48px;text-align:center;font-size:14px;color:var(--c-text-3);font-family:var(--font-mono); }
.blog-txt-loader { display:none !important; }
.blog-txt-label { font-family:var(--font-mono);font-size:11px;color:var(--c-text-3);flex-shrink:0; }
.blog-txt-result { font-family:var(--font-mono);font-size:11px;color:var(--c-accent);display:none; }
/* Toolbar de portada — solo visible en admin, oculto en portal público */
.blog-article-toolbar { display:none !important; }
.blog-btn-portada { display:none !important; }
.blog-save-reminder { display:none !important; }

/* Modal */
.ove-modal-overlay { position:fixed;inset:0;background:rgba(26,25,22,.65);z-index:1000;display:flex;align-items:center;justify-content:center;padding:28px;backdrop-filter:blur(3px); }
.ove-modal-box { background:var(--c-surface);border-radius:var(--radius-lg);border:1px solid var(--c-border);max-width:640px;width:100%;max-height:82vh;overflow-y:auto;padding:32px;position:relative; }
.ove-modal-close { position:absolute;top:16px;right:16px;background:var(--c-bg);border:1px solid var(--c-border);border-radius:var(--radius-sm);width:30px;height:30px;cursor:pointer;font-size:13px;color:var(--c-text-2);display:flex;align-items:center;justify-content:center;transition:background .12s; }
.ove-modal-close:hover { background:var(--c-border-lt); }
.ove-modal-body { font-size:15px;line-height:1.78;color:var(--c-text-2);margin-top:10px; }

/* Responsive */
@media (max-width: 960px) {
  .inicio-layout { grid-template-columns: 1fr; }
  .inicio-col-left, .inicio-col-right { border:none;border-bottom:1px solid var(--c-border-lt); }
  .blog-list { grid-template-columns: 1fr; }
  .d-kpi-row { grid-template-columns: repeat(2,1fr); }
  .d-charts-row { grid-template-columns: 1fr; }
  .sim-layout { grid-template-columns: 1fr; }
}

/* ═══════════════════════════════════════════════════════════
   EVENTOS DEL SECTOR — carrusel columna derecha inicio
   ═══════════════════════════════════════════════════════════ */
.inicio-eventos-header {
  font-family: var(--font-mono);
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: .08em;
  color: var(--c-text-3);
  padding: 0 0 8px;
  border-bottom: 1px solid var(--c-border-lt);
  margin-bottom: 10px;
}
#inicio-eventos-carrusel {
  margin-bottom: 20px;
}
.eve-wrap {
  position: relative;
  overflow: hidden;
  border-radius: 10px;
  border: 1px solid var(--c-border-lt);
  background: var(--c-surface);
}
.eve-track {
  display: flex;
  transition: transform .35s ease;
  will-change: transform;
}
.eve-slide {
  min-width: 100%;
  flex-shrink: 0;
}
.eve-img {
  width: 100%;
  height: 140px;
  object-fit: cover;
  display: block;
  border-radius: 10px 10px 0 0;
}
.eve-img-wrap {
  width: 100%;
  height: 195px;
  overflow: hidden;
  border-radius: 10px 10px 0 0;
  background: var(--c-border-lt, #E2E4EA);
  display: flex;
  align-items: center;
  justify-content: center;
}
.eve-img-wrap img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  display: block;
}
.eve-img-placeholder {
  width: 100%;
  height: 195px;
  background: linear-gradient(135deg, var(--c-accent-lt, #E0F2F1), #F0FDFA);
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 10px 10px 0 0;
}
.eve-body {
  padding: 12px 14px 14px;
}
.eve-fecha {
  font-family: var(--font-mono);
  font-size: 9px;
  color: var(--c-accent);
  text-transform: uppercase;
  letter-spacing: .06em;
  margin-bottom: 4px;
}
.eve-titulo {
  font-size: 13px;
  font-weight: 700;
  color: var(--c-text);
  line-height: 1.35;
  margin-bottom: 5px;
}
.eve-desc {
  font-size: 11px;
  color: var(--c-text-2);
  line-height: 1.55;
  margin-bottom: 6px;
  white-space: pre-line; /* preserva saltos de linea del textarea */
}
.eve-lugar {
  font-family: var(--font-mono);
  font-size: 10px;
  color: var(--c-text-3);
  margin-bottom: 8px;
}
.eve-link {
  font-family: var(--font-mono);
  font-size: 10px;
  color: var(--c-accent);
  text-decoration: none;
  font-weight: 600;
}
.eve-link:hover { text-decoration: underline; }
.eve-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 8px;
}
.eve-action,
.eve-empty-link {
  font-family: var(--font-mono);
  font-size: 10px;
  color: var(--c-accent);
  text-decoration: none;
  border: 1px solid var(--c-border-lt);
  border-radius: 4px;
  padding: 4px 7px;
  background: var(--c-accent-lt);
}
.eve-action:hover,
.eve-empty-link:hover {
  border-color: var(--c-accent);
}
.eve-empty {
  border: 1px dashed var(--c-border);
  border-radius: 10px;
  background: var(--c-surface);
  padding: 22px 16px;
  min-height: 230px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 10px;
}
.eve-empty-kicker {
  font-family: var(--font-mono);
  font-size: 9px;
  color: var(--c-accent);
  text-transform: uppercase;
}
.eve-empty-title {
  font-size: 20px;
  line-height: 1.1;
  font-weight: 800;
  color: var(--c-text);
}
.eve-empty-text {
  font-size: 12px;
  line-height: 1.55;
  color: var(--c-text-2);
}
.eve-empty-link {
  align-self: flex-start;
}
.eve-btn {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  background: rgba(0,0,0,.4);
  color: #fff;
  border: none;
  cursor: pointer;
  border-radius: 50%;
  width: 26px;
  height: 26px;
  font-size: 14px;
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 3;
  opacity: 0;
  transition: opacity .15s;
}
.eve-wrap:hover .eve-btn { opacity: 1; }
.eve-btn:hover { background: rgba(0,0,0,.65); }
.eve-prev { left: 6px; }
.eve-next { right: 6px; }
.eve-dots {
  position: absolute;
  bottom: 6px;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  gap: 5px;
  z-index: 3;
}
.eve-dot {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: rgba(255,255,255,.45);
  border: none;
  cursor: pointer;
  padding: 0;
  transition: background .15s;
}
.eve-dot.a { background: var(--c-accent); }

/* PDFs columna derecha — versión compacta */
.inicio-recurso--sm {
  padding: 6px 10px;
  min-height: unset;
}
.inicio-recurso-title--sm {
  font-size: 11px;
  line-height: 1.3;
}
.inicio-recursos-header {
  font-family: var(--font-mono);
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: .08em;
  color: var(--c-text-3);
  padding: 0 0 6px;
  border-bottom: 1px solid var(--c-border-lt);
  margin-bottom: 8px;
  margin-top: 4px;
}
/* ── Imagen noticias manuales — fit sin recorte ── */
.noticia-manual-img-wrap {
  width: 100%;
  aspect-ratio: 16 / 9;
  max-height: 260px;
  overflow: hidden;
  background: var(--c-border-lt, #E2E4EA);
  display: flex;
  align-items: center;
  justify-content: center;
}
.noticia-manual-img-wrap img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  display: block;
}
.actualidad-manual-card {
  background: var(--c-surface);
  border: 1px solid var(--c-border);
  border-radius: var(--radius-md);
  overflow: hidden;
  transition: box-shadow .15s;
}
.actualidad-manual-card--flujo {
  border-left: 3px solid var(--c-accent);
}
.actualidad-manual-body {
  padding: 14px 16px;
}
.actualidad-meta-row {
  display: flex;
  gap: 6px;
  align-items: center;
  margin-bottom: 7px;
  flex-wrap: wrap;
}
.actualidad-chip {
  font-family: var(--font-mono);
  font-size: 9px;
  padding: 1px 7px;
  border-radius: 3px;
  background: var(--c-accent-lt);
  color: var(--c-accent);
}
.actualidad-chip--destacado {
  background: #FF6B2C;
  color: #fff;
}
.actualidad-chip--evento {
  background: #0D9488;
  color: #fff;
}
.actualidad-fecha,
.actualidad-lugar {
  font-family: var(--font-mono);
  font-size: 9px;
  color: var(--c-text-3);
}
.actualidad-lugar {
  margin-top: 8px;
  font-size: 10px;
}
.actualidad-manual-title {
  font-size: 14px;
  font-weight: 600;
  color: var(--c-text);
  line-height: 1.4;
  margin-bottom: 7px;
}
.actualidad-manual-desc {
  font-size: 12px;
  color: var(--c-text-2);
  line-height: 1.6;
  white-space: pre-line; /* preserva saltos de linea del textarea */
}
.actualidad-grid {
  display: grid;
  grid-template-columns: minmax(220px, 1fr) minmax(0, 2fr);
  gap: 16px;
  align-items: start;
}
.actualidad-manuales-col {
  display: flex;
  flex-direction: column;
  gap: 16px;
  min-width: 0;
}
.actualidad-rss-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
  align-content: start;
  min-width: 0;
}
.actualidad-manual-empty {
  background: var(--c-surface);
  border: 1px dashed var(--c-border);
  border-radius: var(--radius-md);
  padding: 18px 16px;
  min-height: 120px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 8px;
}
.actualidad-manual-empty span {
  align-self: flex-start;
  font-family: var(--font-mono);
  font-size: 9px;
  padding: 1px 7px;
  border-radius: 3px;
  background: var(--c-accent-lt);
  color: var(--c-accent);
}
.actualidad-manual-empty strong {
  font-size: 13px;
  line-height: 1.35;
  color: var(--c-text-2);
  font-weight: 600;
}
.actualidad-contactos {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 10px;
}
.actualidad-contactos a {
  font-family: var(--font-mono);
  font-size: 10px;
  color: var(--c-accent);
  text-decoration: none;
  border: 1px solid var(--c-border-lt);
  border-radius: 4px;
  padding: 4px 7px;
  background: var(--c-accent-lt);
}
.actualidad-contactos a:hover {
  border-color: var(--c-accent);
}

/* Final layout fixes */
.nav-active-label,
.nav-hamburger,
.nav-mobile-menu { display: none; }

.main-area {
  min-width: 0;
}

.view {
  width: 100%;
}

.nav-lock {
  overflow: hidden;
}

@media (max-width: 768px) {
  .navbar-inner {
    flex-direction: row;
    align-items: center;
    min-height: 54px;
    overflow: visible;
  }

  .nav-brand {
    height: 54px;
    padding: 0 12px;
  }

  .nav-tabs {
    display: none;
  }

  .nav-active-label {
    display: flex;
    flex: 1;
    min-width: 0;
    flex-direction: column;
    justify-content: center;
    padding: 0 12px;
    font-size: 13px;
    font-weight: 500;
    color: var(--c-text);
    line-height: 1.2;
  }

  .nav-active-label-accent {
    display: block;
    font-family: var(--font-mono);
    font-size: 9px;
    color: var(--c-accent);
    letter-spacing: .08em;
    text-transform: uppercase;
  }

  .nav-hamburger {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 42px;
    height: 42px;
    margin-right: 8px;
    border: 1px solid var(--c-border);
    border-radius: var(--radius-sm);
    background: var(--c-surface);
    color: var(--c-text);
    cursor: pointer;
    flex-shrink: 0;
  }

  .nav-mobile-menu.open {
    display: block;
  }

  .nav-mobile-menu {
    position: fixed;
    inset: 0;
    z-index: 300;
  }

  .nav-mobile-overlay {
    position: absolute;
    inset: 0;
    background: rgba(26,25,22,.55);
  }

  .nav-mobile-drawer {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    max-height: 90vh;
    overflow-y: auto;
    background: var(--c-surface);
    border-bottom: 1px solid var(--c-border);
    border-radius: 0 0 14px 14px;
    box-shadow: 0 18px 44px rgba(0,0,0,.18);
  }

  .nav-mobile-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 14px 16px;
    border-bottom: 1px solid var(--c-border-lt);
  }

  .nav-mobile-title,
  .nav-mobile-group-label {
    font-family: var(--font-mono);
    font-size: 10px;
    color: var(--c-text-3);
    letter-spacing: .08em;
    text-transform: uppercase;
  }

  .nav-mobile-close {
    width: 30px;
    height: 30px;
    border: 1px solid var(--c-border);
    border-radius: var(--radius-sm);
    background: var(--c-bg);
    color: var(--c-text-2);
    cursor: pointer;
  }

  .nav-mobile-group {
    padding: 8px 0;
    border-bottom: 1px solid var(--c-border-lt);
  }

  .nav-mobile-group-label {
    display: block;
    padding: 4px 16px 6px;
    font-size: 9px;
  }

  .nav-mobile-item {
    display: flex;
    width: 100%;
    align-items: center;
    justify-content: space-between;
    padding: 12px 16px;
    border: 0;
    background: transparent;
    color: var(--c-text-2);
    font: inherit;
    font-size: 14px;
    text-align: left;
    cursor: pointer;
  }

  .nav-mobile-item.active {
    background: var(--c-accent-lt);
    color: var(--c-accent);
    font-weight: 500;
  }

  .nav-mobile-publicar {
    display: flex;
    align-items: center;
    justify-content: center;
    margin: 12px 16px 16px;
    padding: 11px 14px;
    border-radius: 8px;
    background: #FF6B2C;
    color: #fff;
    font-size: 13px;
    font-weight: 700;
    text-decoration: none;
  }

  .portal-layout {
    max-width: none;
  }

  .main-area {
    border-right: 0;
  }

  .inicio-layout,
  .d-charts-row,
  .sim-layout,
  .d-origen-grid {
    grid-template-columns: 1fr !important;
  }

  .inicio-col-left,
  .inicio-col-center,
  .inicio-col-right,
  .d-sub-view {
    padding: 16px;
  }

  .inicio-col-left,
  .inicio-col-right {
    border-left: 0;
    border-right: 0;
  }

  .d-subnav,
  .oferta-filtros {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    flex-wrap: nowrap;
    scrollbar-width: none;
  }

  .d-subnav::-webkit-scrollbar,
  .oferta-filtros::-webkit-scrollbar {
    display: none;
  }

  .d-subnav {
    padding: 0 14px;
    position: relative;
    gap: 6px;
    border-top: 1px solid var(--c-border-lt);
  }

  .d-sub-tab {
    padding: 10px 10px 9px;
    font-size: 12px;
  }

  .d-subnav-src {
    display: none;
  }

  .d-section-hdr {
    margin-bottom: 14px;
  }

  .d-section-title {
    font-size: 20px;
    line-height: 1.18;
  }

  .d-section-sub {
    line-height: 1.45;
  }

  .view-placeholder {
    padding: 34px 18px;
    gap: 12px;
  }

  .ph-title {
    font-size: 28px;
  }

  .ph-sub-tabs,
  .ph-sources {
    max-width: 100%;
  }

  .ph-sub,
  .ph-src {
    white-space: normal;
  }

  .d-kpi-row,
  .inicio-kpis-bar {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }

  .inicio-kpis-bar {
    display: grid;
  }

  .blog-list,
  .oferta-grid,
  #view-recursos > div {
    grid-template-columns: 1fr !important;
    padding: 16px !important;
  }

  .oferta-list,
  .servicios-list,
  .oferta-contenido,
  .servicios-contenido,
  #oferta-contenido,
  #servicios-contenido {
    width: 100%;
    min-width: 0;
  }

  .view [style*="grid-template-columns:1fr 1fr"],
  .view [style*="grid-template-columns: 1fr 1fr"],
  .view [style*="grid-template-columns:repeat(2"],
  .view [style*="grid-template-columns: repeat(2"],
  .view [style*="grid-template-columns:repeat(auto-fit"],
  .view [style*="grid-template-columns: repeat(auto-fit"],
  .view [style*="grid-template-columns:340px"],
  .view [style*="grid-template-columns: 340px"],
  .view [style*="grid-template-columns:1fr 340px"],
  .view [style*="grid-template-columns: 1fr 340px"],
  .view [style*="grid-template-columns:360px"],
  .view [style*="grid-template-columns: 360px"],
  .view [style*="grid-template-columns:1fr 360px"],
  .view [style*="grid-template-columns: 1fr 360px"] {
    grid-template-columns: 1fr !important;
  }

  .view [style*="display:grid"],
  .view [style*="display: grid"] {
    min-width: 0;
  }

  .view [style*="display:flex"],
  .view [style*="display: flex"] {
    min-width: 0;
  }

  #view-bim [style*="display:flex"],
  #view-oferta [style*="display:flex"],
  #view-servicios [style*="display:flex"],
  #view-territorio [style*="display:flex"],
  #view-politica [style*="display:flex"],
  #view-mercado [style*="display:flex"],
  #view-credito [style*="display:flex"] {
    flex-wrap: wrap !important;
  }

  .d-table,
  .d-chart-card canvas {
    max-width: 100%;
  }

  .d-table {
    display: block;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }

  .blog-header {
    padding: 20px 16px 14px;
  }

  .blog-title {
    font-size: 22px;
    line-height: 1.15;
  }

  .blog-sub {
    font-size: 12px;
  }

  #actualidad-list {
    padding: 0 16px 24px !important;
  }

  .actualidad-grid {
    grid-template-columns: 1fr;
  }

  .actualidad-rss-grid {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 520px) {
  .ote-logo {
    font-size: 9px;
    letter-spacing: .06em;
  }

  .nav-brand-name {
    font-size: 13px;
  }

  .nav-brand-sub {
    font-size: 8px;
  }

  .d-kpi-row,
  .inicio-kpis-bar {
    grid-template-columns: 1fr !important;
  }

  .blog-header,
  .d-sub-view,
  .inicio-col-left,
  .inicio-col-center,
  .inicio-col-right {
    padding: 14px;
  }

  .d-subnav {
    padding: 0 10px;
  }

  .d-sub-tab {
    padding: 9px 9px 8px;
    font-size: 11.5px;
  }

  .d-section-title,
  .blog-title {
    font-size: 20px;
  }

  .ph-title {
    font-size: 24px;
  }

  .d-table-wrap {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }

  .d-table {
    min-width: 480px;
  }

  .nav-mobile-drawer {
    max-height: 100dvh;
    border-radius: 0;
  }

  .nav-mobile-item {
    padding: 11px 14px;
  }

  .nav-mobile-publicar {
    margin: 10px 14px 14px;
  }
}
