/* Blue Light Energy – Proyectos solares | v1.1.0 */
[data-ble-projects], [data-ble-projects] * { box-sizing: border-box; }
[data-ble-projects] {
  --ble-primary:#2D89C9;
  --ble-primary-dark:#17659A;
  --ble-primary-deep:#0B456B;
  --ble-sky:#EAF5FC;
  --ble-white:#fff;
  --ble-ink:#17384C;
  --ble-muted:#6A8292;
  --ble-border:#D8E7F0;
  --ble-shadow:0 18px 52px rgba(13,68,103,.18);
  width:100%; max-width:1480px; margin-inline:auto; color:var(--ble-white);
  font-family:inherit; line-height:1.45;
}
[data-ble-projects] button,[data-ble-projects] input,[data-ble-projects] select { font:inherit; }
[data-ble-projects] button { -webkit-tap-highlight-color:transparent; }
[data-ble-projects] .ble-shell { position:relative; overflow:hidden; padding:clamp(22px,3vw,44px); border-radius:28px; background:radial-gradient(circle at 8% 3%,rgba(255,255,255,.14),transparent 29%),radial-gradient(circle at 92% 28%,rgba(255,255,255,.09),transparent 27%),linear-gradient(145deg,var(--ble-primary),var(--ble-primary-deep) 90%); box-shadow:var(--ble-shadow); isolation:isolate; }
[data-ble-projects] .ble-shell::before { content:""; position:absolute; inset:0; z-index:-1; opacity:.18; background-image:linear-gradient(rgba(255,255,255,.08) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.08) 1px,transparent 1px); background-size:42px 42px; mask-image:linear-gradient(to bottom,black,transparent 82%); }
[data-ble-projects] .ble-header { display:grid; grid-template-columns:minmax(0,1.35fr) minmax(320px,.65fr); gap:26px; align-items:end; margin-bottom:clamp(22px,3vw,38px); }
[data-ble-projects] .ble-kicker { display:inline-flex; align-items:center; gap:10px; margin:0 0 8px; font-size:.76rem; font-weight:700; letter-spacing:.15em; text-transform:uppercase; color:#E4F5FF; }
[data-ble-projects] .ble-kicker::before { content:""; width:30px; height:2px; border-radius:2px; background:#fff; }
[data-ble-projects] .ble-title { margin:0; max-width:850px; font-size:clamp(2rem,4.5vw,4.6rem); line-height:.98; letter-spacing:-.045em; font-weight:700; color:#fff; }
[data-ble-projects] .ble-intro { margin:16px 0 0; max-width:760px; color:#E3F2FA; font-size:clamp(.94rem,1.35vw,1.08rem); }
[data-ble-projects] .ble-stats { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
[data-ble-projects] .ble-stat { min-height:94px; padding:15px 16px; border:1px solid rgba(255,255,255,.18); border-radius:16px; background:rgba(255,255,255,.10); backdrop-filter:blur(10px); }
[data-ble-projects] .ble-stat strong { display:block; font-size:clamp(1.25rem,2vw,1.8rem); line-height:1.05; color:#fff; }
[data-ble-projects] .ble-stat span { display:block; margin-top:6px; font-size:.72rem; line-height:1.25; color:#D9EDF8; text-transform:uppercase; letter-spacing:.08em; }
[data-ble-projects] .ble-layout { display:grid; grid-template-columns:minmax(300px,.78fr) minmax(0,1.62fr); gap:clamp(18px,2.5vw,32px); align-items:start; }

/* Sector de mapa solicitado con fondo blanco */
[data-ble-projects] .ble-map-panel { position:sticky; top:24px; min-width:0; overflow:hidden; padding:20px; border:1px solid #C9E0EE; border-radius:20px; background:#fff; color:var(--ble-ink); box-shadow:0 12px 35px rgba(8,63,96,.15); }
[data-ble-projects] .ble-map-heading { position:relative; z-index:3; display:flex; align-items:flex-start; justify-content:space-between; gap:14px; margin-bottom:14px; }
[data-ble-projects] .ble-map-heading h3 { margin:0; color:var(--ble-ink); font-size:1rem; }
[data-ble-projects] .ble-map-heading p { margin:4px 0 0; max-width:270px; color:var(--ble-muted); font-size:.78rem; }
[data-ble-projects] .ble-clear-region { display:none; align-items:center; justify-content:center; min-height:34px; padding:6px 10px; border:1px solid var(--ble-border); border-radius:999px; background:#F7FBFE; color:var(--ble-primary-deep); cursor:pointer; font-size:.72rem; }
[data-ble-projects] .ble-clear-region.is-visible { display:inline-flex; }
[data-ble-projects] .ble-map-wrap { position:relative; isolation:isolate; display:grid; place-items:center; min-height:650px; overflow:hidden; padding:18px 10px; border:1px solid #BFDDEC; border-radius:16px; background:radial-gradient(circle at 50% 18%,rgba(255,255,255,.96),rgba(255,255,255,.28) 28%,transparent 48%),linear-gradient(180deg,#EAF6FD 0%,#D8EDF9 48%,#C9E5F5 100%); box-shadow:inset 0 0 0 1px rgba(255,255,255,.64),inset 0 -30px 60px rgba(45,137,201,.08); }
[data-ble-projects] .ble-map-wrap::before { content:""; position:absolute; z-index:-1; top:3%; bottom:3%; left:50%; width:48%; transform:translateX(-50%); border-radius:50%; background:radial-gradient(ellipse at center,rgba(255,255,255,.76),rgba(255,255,255,0) 68%); pointer-events:none; }
[data-ble-projects] .ble-map-bg-label { position:absolute; z-index:0; left:13px; color:#35779D; font-size:.62rem; font-weight:800; letter-spacing:.14em; text-transform:uppercase; opacity:.62; pointer-events:none; }
[data-ble-projects] .ble-map-bg-label::after { content:""; display:inline-block; width:22px; height:1px; margin-left:7px; vertical-align:middle; background:currentColor; opacity:.55; }
[data-ble-projects] .ble-map-bg-label--north { top:11%; }
[data-ble-projects] .ble-map-bg-label--center { top:48%; }
[data-ble-projects] .ble-map-bg-label--south { top:82%; }
[data-ble-projects] .ble-map { position:relative; z-index:1; display:block; width:auto; height:610px; max-width:72%; overflow:visible; filter:drop-shadow(0 12px 18px rgba(18,83,121,.26)); }
[data-ble-projects] .ble-map .region { --region-fill:#CFE5F2; fill:var(--region-fill); stroke:#4F8DB1; stroke-width:1.05; stroke-linejoin:round; vector-effect:non-scaling-stroke; cursor:pointer; outline:none; transition:filter .18s ease,opacity .18s ease,stroke .18s ease,fill .25s ease; transform-box:fill-box; transform-origin:center; }
[data-ble-projects] .ble-map .region:not(.has-projects) { opacity:.96; fill:#D5E9F4; stroke:#79A9C4; }
[data-ble-projects] .ble-map .region.has-projects:hover,[data-ble-projects] .ble-map .region.has-projects:focus,[data-ble-projects] .ble-map .region.is-active { filter:brightness(1.03) saturate(1.12) drop-shadow(0 2px 2px rgba(11,69,107,.26)); stroke:#083E60; stroke-width:1.8; opacity:1; }
[data-ble-projects] .ble-map .region.is-dimmed { opacity:.34; }
[data-ble-projects] .ble-region-list { display:flex; gap:8px; overflow-x:auto; padding:10px 2px 2px; scrollbar-width:thin; }
[data-ble-projects] .ble-region-btn { flex:0 0 auto; display:inline-flex; align-items:center; gap:8px; min-height:36px; padding:7px 11px; border:1px solid var(--ble-border); border-radius:999px; background:#F7FBFE; color:var(--ble-ink); cursor:pointer; font-size:.75rem; transition:.18s ease; }
[data-ble-projects] .ble-region-btn:hover,[data-ble-projects] .ble-region-btn.is-active { border-color:var(--ble-primary); background:var(--ble-sky); color:var(--ble-primary-deep); }
[data-ble-projects] .ble-region-btn b { display:grid; place-items:center; min-width:20px; height:20px; padding:0 5px; border-radius:99px; background:var(--ble-primary); color:#fff; font-size:.67rem; }

[data-ble-projects] .ble-content { min-width:0; }
[data-ble-projects] .ble-controls { display:grid; grid-template-columns:minmax(0,1fr) minmax(180px,.34fr); gap:10px; margin-bottom:14px; }
[data-ble-projects] .ble-field { position:relative; }
[data-ble-projects] .ble-field svg { position:absolute; left:14px; top:50%; width:18px; height:18px; transform:translateY(-50%); color:#6E8792; pointer-events:none; }
[data-ble-projects] .ble-search,[data-ble-projects] .ble-select { width:100%; min-height:48px; border:1px solid transparent; border-radius:13px; outline:none; background:#fff; color:var(--ble-ink); }
[data-ble-projects] .ble-search { padding:0 14px 0 43px; }
[data-ble-projects] .ble-select { padding:0 38px 0 14px; cursor:pointer; }
[data-ble-projects] .ble-search:focus,[data-ble-projects] .ble-select:focus { border-color:var(--ble-primary); box-shadow:0 0 0 3px color-mix(in srgb,var(--ble-primary) 20%,transparent); }
[data-ble-projects] .ble-results-head { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:8px; margin:0 0 13px; color:#E2F2FA; font-size:.8rem; }
[data-ble-projects] .ble-active-filter { display:inline-flex; align-items:center; gap:7px; color:#fff; }
[data-ble-projects] .ble-active-filter i { width:8px; height:8px; border-radius:50%; background:#fff; box-shadow:0 0 0 4px rgba(255,255,255,.16); }
[data-ble-projects] .ble-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; }
[data-ble-projects] .ble-card { position:relative; overflow:hidden; display:flex; flex-direction:column; min-width:0; min-height:100%; border:1px solid var(--ble-border); border-radius:18px; background:#fff; color:var(--ble-ink); box-shadow:0 12px 28px rgba(2,20,31,.13); transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease; }
[data-ble-projects] .ble-card:hover { transform:translateY(-3px); border-color:#A8D4EF; box-shadow:0 18px 34px rgba(2,20,31,.20); }
[data-ble-projects] .ble-card-media { position:relative; aspect-ratio:16/9; overflow:hidden; background:#DFECF2; }
[data-ble-projects] .ble-card-media img { width:100%; height:100%; display:block; object-fit:cover; transition:transform .45s ease; }
[data-ble-projects] .ble-card:hover .ble-card-media img { transform:scale(1.035); }
[data-ble-projects] .ble-badge { position:absolute; top:12px; left:12px; display:inline-flex; align-items:center; gap:6px; min-height:28px; padding:5px 9px; border-radius:999px; color:#fff; font-size:.67rem; font-weight:700; letter-spacing:.04em; text-transform:uppercase; box-shadow:0 5px 15px rgba(0,0,0,.18); }
[data-ble-projects] .ble-badge::before { content:""; width:7px; height:7px; border-radius:50%; background:currentColor; box-shadow:0 0 0 3px rgba(255,255,255,.15); }
[data-ble-projects] .ble-badge.en-operacion { background:#168066; }
[data-ble-projects] .ble-badge.rtb { background:#A4771B; }
[data-ble-projects] .ble-badge.en-proceso { background:var(--ble-primary); }
[data-ble-projects] .ble-badge:not(.en-operacion):not(.rtb):not(.en-proceso) { background:#526A79; }
[data-ble-projects] .ble-card-body { display:flex; flex-direction:column; flex:1; padding:15px; }
[data-ble-projects] .ble-location { display:flex; align-items:center; gap:6px; margin:0 0 6px; color:#71858E; font-size:.72rem; }
[data-ble-projects] .ble-location svg { width:14px; height:14px; flex:0 0 auto; color:var(--ble-primary); }
[data-ble-projects] .ble-card h3 { margin:0; font-size:clamp(1rem,1.35vw,1.16rem); line-height:1.17; letter-spacing:-.02em; color:var(--ble-ink); }
[data-ble-projects] .ble-metrics { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:7px; margin:14px 0; }
[data-ble-projects] .ble-metric { min-width:0; padding:8px; border-radius:10px; background:#F1F7FB; }
[data-ble-projects] .ble-metric strong { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:var(--ble-primary-deep); font-size:.76rem; }
[data-ble-projects] .ble-metric span { display:block; margin-top:2px; color:#71858E; font-size:.59rem; line-height:1.2; text-transform:uppercase; letter-spacing:.045em; }
[data-ble-projects] .ble-open { display:flex; align-items:center; justify-content:space-between; gap:12px; width:100%; min-height:39px; margin-top:auto; padding:8px 12px; border:0; border-radius:10px; background:var(--ble-primary); color:#fff; cursor:pointer; font-weight:700; font-size:.72rem; transition:.18s ease; }
[data-ble-projects] .ble-open:hover { background:var(--ble-primary-deep); }
[data-ble-projects] .ble-open svg { width:17px; height:17px; }
[data-ble-projects] .ble-empty { display:none; place-items:center; min-height:280px; padding:30px; border:1px dashed rgba(255,255,255,.38); border-radius:18px; color:#fff; text-align:center; }
[data-ble-projects] .ble-empty.is-visible { display:grid; }
[data-ble-projects] .ble-empty strong,[data-ble-projects] .ble-empty span { display:block; }
[data-ble-projects] .ble-empty span { margin-top:6px; color:#D8ECF7; }
[data-ble-projects] .ble-tooltip { position:fixed; z-index:999999; display:none; min-width:185px; max-width:260px; padding:10px 12px; border:1px solid var(--ble-border); border-radius:12px; background:#fff; color:var(--ble-ink); box-shadow:0 12px 30px rgba(11,69,107,.24); pointer-events:none; }
[data-ble-projects] .ble-tooltip.is-visible { display:block; }
[data-ble-projects] .ble-tooltip strong,[data-ble-projects] .ble-tooltip span { display:block; }
[data-ble-projects] .ble-tooltip span { margin-top:3px; color:var(--ble-muted); font-size:.72rem; }
[data-ble-projects] .ble-modal { position:fixed; inset:0; z-index:2147483000; display:none; place-items:center; overflow:auto; padding:clamp(12px,2.4vw,28px); background:rgba(5,31,48,.78); backdrop-filter:blur(8px); }
[data-ble-projects] .ble-modal.is-open { display:grid; }
[data-ble-projects] .ble-dialog { position:relative; isolation:isolate; overflow:hidden; display:grid; grid-template-columns:minmax(0,1.06fr) minmax(360px,.94fr); width:min(1020px,calc(100vw - 32px)); max-height:min(720px,calc(100vh - 32px)); max-height:min(720px,calc(100dvh - 32px)); border:1px solid rgba(255,255,255,.75); border-radius:22px; background:#fff; color:var(--ble-ink); box-shadow:0 30px 90px rgba(0,0,0,.40); }
[data-ble-projects] .ble-dialog-media { min-width:0; min-height:460px; background:#DCEAF2; }
[data-ble-projects] .ble-dialog-media img { width:100%; height:100%; display:block; object-fit:cover; object-position:center; }
[data-ble-projects] .ble-dialog-content { min-width:0; overflow:auto; padding:clamp(30px,4vw,46px); padding-right:clamp(54px,5vw,70px); }
[data-ble-projects] .ble-dialog-content .ble-badge { position:static; width:max-content; max-width:100%; }
[data-ble-projects] .ble-dialog-content h2 { margin:18px 0 7px; color:var(--ble-ink); font-size:clamp(1.7rem,3.4vw,3rem); line-height:1; letter-spacing:-.04em; overflow-wrap:anywhere; }
[data-ble-projects] .ble-dialog-location { margin:0 0 22px; color:var(--ble-muted); }
[data-ble-projects] .ble-detail-list { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:9px; margin:0; }
[data-ble-projects] .ble-detail { min-width:0; padding:12px; border-radius:12px; background:#F1F7FB; }
[data-ble-projects] .ble-detail dt { color:var(--ble-muted); font-size:.69rem; text-transform:uppercase; letter-spacing:.05em; }
[data-ble-projects] .ble-detail dd { margin:5px 0 0; color:var(--ble-primary-deep); font-weight:700; overflow-wrap:anywhere; }
[data-ble-projects] .ble-modal-close { all:unset; box-sizing:border-box!important; position:absolute!important; z-index:5!important; top:16px!important; right:16px!important; display:grid!important; place-items:center!important; width:42px!important; height:42px!important; min-width:42px!important; min-height:42px!important; max-width:42px!important; max-height:42px!important; margin:0!important; padding:0!important; border:2px solid #fff!important; border-radius:50%!important; background:var(--ble-primary)!important; color:#fff!important; box-shadow:0 8px 22px rgba(6,52,79,.28)!important; cursor:pointer!important; appearance:none!important; -webkit-appearance:none!important; transition:transform .18s ease,background .18s ease!important; }
[data-ble-projects] .ble-modal-close:hover { background:var(--ble-primary-deep)!important; transform:scale(1.05); }
[data-ble-projects] .ble-modal-close:focus-visible { outline:3px solid rgba(255,255,255,.92)!important; outline-offset:3px!important; }
[data-ble-projects] .ble-modal-close span,[data-ble-projects] .ble-modal-close span::before { display:block; width:17px; height:2px; border-radius:3px; background:currentColor; }
[data-ble-projects] .ble-modal-close span { transform:rotate(45deg); }
[data-ble-projects] .ble-modal-close span::before { content:""; transform:rotate(90deg); }
body.ble-modal-lock { overflow:hidden; }

@media (max-width:1050px) {
  [data-ble-projects] .ble-header { grid-template-columns:1fr; }
  [data-ble-projects] .ble-stats { max-width:650px; }
  [data-ble-projects] .ble-layout { grid-template-columns:minmax(250px,.66fr) minmax(0,1.34fr); }
  [data-ble-projects] .ble-map-wrap { min-height:610px; }
  [data-ble-projects] .ble-map { height:570px; }
  [data-ble-projects] .ble-grid { grid-template-columns:1fr; }
}
@media (max-width:820px) {
  [data-ble-projects] .ble-shell { padding:20px; border-radius:22px; }
  [data-ble-projects] .ble-layout { grid-template-columns:1fr; }
  [data-ble-projects] .ble-map-panel { position:relative; top:auto; }
  [data-ble-projects] .ble-map-wrap { min-height:650px; }
  [data-ble-projects] .ble-map { width:auto; height:600px; max-width:72%; max-height:none; }
  [data-ble-projects] .ble-region-list { padding-bottom:4px; }
}
@media (max-width:640px) {
  [data-ble-projects] .ble-shell { padding:16px; border-radius:18px; }
  [data-ble-projects] .ble-title { font-size:clamp(2.15rem,12vw,3.25rem); }
  [data-ble-projects] .ble-stats { grid-template-columns:repeat(2,minmax(0,1fr)); }
  [data-ble-projects] .ble-stat { min-height:82px; padding:13px; }
  [data-ble-projects] .ble-controls { grid-template-columns:1fr; }
  [data-ble-projects] .ble-map-panel { padding:14px; }
  [data-ble-projects] .ble-map-wrap { min-height:620px; padding-inline:6px; }
  [data-ble-projects] .ble-map { height:570px; max-width:76%; }
  [data-ble-projects] .ble-map-bg-label { left:9px; font-size:.56rem; }
  [data-ble-projects] .ble-metrics { gap:5px; }
  [data-ble-projects] .ble-metric { padding:7px 6px; }
  [data-ble-projects] .ble-dialog { grid-template-columns:1fr; width:min(620px,calc(100vw - 20px)); overflow:auto; max-height:calc(100vh - 20px); max-height:calc(100dvh - 20px); border-radius:18px; }
  [data-ble-projects] .ble-dialog-media { min-height:0; height:auto; aspect-ratio:16/9; max-height:none; }
  [data-ble-projects] .ble-dialog-content { overflow:visible; padding:24px 20px 26px; }
  [data-ble-projects] .ble-dialog-content .ble-badge { margin-right:42px; }
  [data-ble-projects] .ble-modal-close { top:12px!important; right:12px!important; width:40px!important; height:40px!important; min-width:40px!important; min-height:40px!important; max-width:40px!important; max-height:40px!important; }
  [data-ble-projects] .ble-detail-list { grid-template-columns:1fr; }
}
@media (prefers-reduced-motion:reduce) {
  [data-ble-projects] *,[data-ble-projects] *::before,[data-ble-projects] *::after { scroll-behavior:auto!important; transition:none!important; animation:none!important; }
}
