/* NostxlgIA — Inicio. Composición e interacción específicas de la portada. */
.home-page{
  --home-surface:linear-gradient(145deg,rgba(18,30,45,.96),rgba(12,21,33,.96));
  --home-surface-soft:linear-gradient(180deg,rgba(20,32,47,.76),rgba(13,22,34,.76));
}

/* HERO: una sola caja; cada escena utiliza el espacio interior de forma distinta. */
.home-page .data-territory-visual .visual-top{height:500px}
.home-page .data-territory-visual .territory-scene{inset:58px 14px 12px}
.home-page .data-territory-visual .data-workbench{grid-template-columns:minmax(0,.92fr) minmax(260px,1.08fr);gap:16px;padding:8px}
.home-page .data-territory-visual .data-registers,
.home-page .data-territory-visual .data-matrix-panel{padding:16px 16px 14px;background:rgba(8,15,24,.68);border:1px solid rgba(148,163,184,.14)}
.home-page .data-territory-visual .data-phase-kicker,
.home-page .data-territory-visual .data-matrix-heading span{font-size:11px}
.home-page .data-territory-visual .data-phase-heading strong{font-size:24px}
.home-page .data-territory-visual .data-matrix-heading strong{font-size:12.5px}
.home-page .data-territory-visual .data-record{min-height:40px;grid-template-columns:76px minmax(0,1fr) auto;gap:10px;padding:7px 10px}
.home-page .data-territory-visual .data-record span{font-size:10.5px}
.home-page .data-territory-visual .data-record strong{font-size:12.5px}
.home-page .data-territory-visual .data-record em{font-size:10.5px}
.home-page .data-territory-visual .data-record.is-active,
.home-page .data-territory-visual .data-record.is-auto-active{background:rgba(67,199,218,.09);border-color:rgba(67,199,218,.36);box-shadow:inset 2px 0 0 rgba(67,199,218,.72)}
.home-page .data-territory-visual .matrix-cell{min-height:39px;transition:filter .22s ease,transform .22s ease,box-shadow .22s ease,border-color .22s ease}
.home-page .data-territory-visual .matrix-cell.is-active-cell,
.home-page .data-territory-visual .matrix-cell.is-auto-active-cell{filter:brightness(1.5);transform:scale(1.035);border-color:rgba(255,255,255,.22);box-shadow:0 0 18px rgba(67,199,218,.13)}

/* Barras: nombre y valor deben leerse sin depender del hover. */
.home-page .data-territory-visual .bars-chart{padding:32px 18px 58px 44px;gap:18px}
.home-page .data-territory-visual .bars-grid{inset:22px 18px 58px 44px;background-size:100% 25%}
.home-page .data-territory-visual .bars-axis-y{left:44px;top:22px;bottom:58px}
.home-page .data-territory-visual .bars-axis-x{left:44px;right:18px;bottom:58px}
.home-page .data-territory-visual .chart-bar{padding-bottom:39px;overflow:visible;isolation:isolate;cursor:pointer}
.home-page .data-territory-visual .chart-bar:hover,
.home-page .data-territory-visual .chart-bar:focus,
.home-page .data-territory-visual .chart-bar:focus-visible,
.home-page .data-territory-visual .chart-bar:active{z-index:20}
.home-page .data-territory-visual .chart-bar .bar-fill{max-width:78px;transition:height .85s cubic-bezier(.2,.76,.2,1),transform .6s ease,border-color .18s ease,filter .18s ease,box-shadow .18s ease}
.home-page .data-territory-visual .chart-bar .bar-cap{max-width:78px;bottom:calc((var(--value,50)*.88%) + 39px);background:rgba(255,255,255,.22);transition:background .18s ease,box-shadow .18s ease}
.home-page .data-territory-visual .chart-bar .bar-label{left:50%;bottom:2px;width:104px;margin-left:0;transform:translateX(-50%);font-size:11px;line-height:1.18;letter-spacing:.02em;text-transform:none;white-space:normal;text-align:center;color:#c8d3e1;transition:color .18s ease}
.home-page .data-territory-visual .chart-bar .bar-value{position:absolute;z-index:5;left:50%;bottom:calc((var(--value,50)*.88%) + 47px);transform:translateX(-50%);padding:3px 6px;border:1px solid rgba(148,163,184,.16);border-radius:999px;background:rgba(6,11,18,.82);box-shadow:0 5px 14px rgba(0,0,0,.16);font:800 11px/1 Inter,system-ui,sans-serif;color:#eef4fa;font-variant-numeric:tabular-nums;white-space:nowrap;transition:transform .18s ease,border-color .18s ease,background .18s ease}
.home-page .data-territory-visual .chart-bar .bar-tooltip{z-index:14;top:0;bottom:auto;min-width:138px;padding:10px 12px;border-color:rgba(104,190,207,.42);background:rgba(5,10,17,.98);box-shadow:0 18px 38px rgba(0,0,0,.38),0 0 0 1px rgba(255,255,255,.025);transform:translate(-50%,7px);transition:opacity .16s ease,transform .16s ease}
.home-page .data-territory-visual .bar-tooltip strong{font-size:10px;letter-spacing:.05em;color:#eef5fa}
.home-page .data-territory-visual .bar-tooltip em{margin-top:5px;font-size:18px;font-weight:800;color:#fff}
.home-page .data-territory-visual .bar-tooltip small{margin-top:3px;font-size:9.5px;color:#9fb1c5}
.home-page .data-territory-visual .chart-bar:hover .bar-tooltip,
.home-page .data-territory-visual .chart-bar:focus-visible .bar-tooltip{opacity:1;transform:translate(-50%,0)}
.home-page .data-territory-visual .chart-bar:hover .bar-fill,
.home-page .data-territory-visual .chart-bar:focus-visible .bar-fill{filter:brightness(1.24) saturate(1.12);border-color:rgba(216,180,102,.82);box-shadow:0 -8px 26px rgba(67,199,218,.18)}
.home-page .data-territory-visual .chart-bar:hover .bar-label,
.home-page .data-territory-visual .chart-bar:focus-visible .bar-label{color:#fff;font-weight:800}
.home-page .data-territory-visual .chart-bar:hover .bar-value,
.home-page .data-territory-visual .chart-bar:focus-visible .bar-value{border-color:rgba(216,180,102,.42);background:rgba(15,23,34,.96);color:#fff;transform:translateX(-50%) translateY(-1px)}
.home-page .data-territory-visual .chart-bar:hover .bar-cap,
.home-page .data-territory-visual .chart-bar:focus-visible .bar-cap{background:rgba(216,180,102,.82);box-shadow:0 0 12px rgba(216,180,102,.28)}

/* Tendencia: el estado base siempre es visible; la animación sólo mejora la entrada. */
.home-page .data-territory-visual .analysis-svg{padding:0;overflow:visible}
.home-page .data-territory-visual .analysis-trend{stroke-width:3.4;stroke-dasharray:none;stroke-dashoffset:0;filter:url(#trendGlow)}
.home-page .data-territory-visual .analysis-dot{opacity:1;transform:scale(1);stroke-width:2.4}
.home-page .data-territory-visual .analysis-metric{font-size:17px}
.home-page .data-territory-visual .trend-label{font-size:12px}
.home-page .data-territory-visual[data-phase="line"].is-phase-entering .analysis-trend{stroke-dasharray:1;stroke-dashoffset:1;animation:homeLineDraw 1.25s cubic-bezier(.2,.75,.2,1) forwards}
.home-page .data-territory-visual[data-phase="line"].is-phase-entering .analysis-dot{animation:homeDotIn .38s ease both}
@keyframes homeLineDraw{to{stroke-dashoffset:0}}
@keyframes homeDotIn{from{opacity:.15;transform:scale(.62)}to{opacity:1;transform:scale(1)}}

/* Territorio: el viewport SVG ocupa físicamente todo el stage y comparte el fondo del mapa. */
.home-page .data-territory-visual[data-phase="territory"] .territory-stage{background:#071019}
.home-page .data-territory-visual .city-scene{position:absolute;inset:0;width:100%;height:100%;overflow:hidden;padding:0;display:block;background:#071019}
.home-page .data-territory-visual .city-svg{position:absolute;inset:0;display:block;width:100%;height:100%;max-width:none;max-height:none;background:#071019;transform:none;transform-origin:50% 50%;filter:drop-shadow(0 22px 26px rgba(0,0,0,.30))}
.home-page .data-territory-visual[data-phase="territory"] .territory-stage::after{display:none}
.home-page .data-territory-visual .city-scene.has-focus .city-building:not(.is-hovered){opacity:.62!important;filter:saturate(.78) brightness(.88)}
.home-page .data-territory-visual .city-building.is-hovered{opacity:1!important;transform:translateY(-3px) scale(1.025);filter:brightness(1.18) saturate(1.14)}
.home-page .data-territory-visual .city-tooltip{z-index:22;border-color:rgba(148,163,184,.28);background:rgba(5,10,17,.98);box-shadow:0 14px 30px rgba(0,0,0,.34),0 0 0 1px rgba(255,255,255,.02)}

/* Tarjetas: recuperar profundidad, desplazamiento y reflejo ligados al cursor. */
.home-page .depth-card{--depth-rx:0deg;--depth-ry:0deg;--depth-tx:0px;--depth-ty:0px;--shine-x:50%;--shine-y:35%;position:relative;isolation:isolate;transform:perspective(900px) translate3d(var(--depth-tx),var(--depth-ty),0) rotateX(var(--depth-rx)) rotateY(var(--depth-ry));transform-style:preserve-3d;will-change:transform;transition:border-color .22s ease,background .22s ease,box-shadow .22s ease}
.home-page .depth-card::before{content:"";position:absolute;z-index:0;inset:-1px;pointer-events:none;border-radius:inherit;background:radial-gradient(circle at var(--shine-x) var(--shine-y),rgba(199,236,242,.17),rgba(109,75,209,.065) 25%,transparent 53%);opacity:.48;transition:opacity .22s ease}
.home-page .depth-card::after{content:"";position:absolute;z-index:0;left:-28%;top:-82%;width:54%;height:235%;pointer-events:none;background:linear-gradient(102deg,transparent 25%,rgba(255,255,255,.055) 47%,rgba(255,255,255,.11) 51%,rgba(255,255,255,.035) 56%,transparent 78%);transform:translateX(-5%) rotate(4deg);animation:homeCardSheen 10s ease-in-out infinite;animation-delay:var(--sheen-delay,0s);opacity:.58}
.home-page .depth-card>*{position:relative;z-index:1}
.home-page .depth-card:hover,.home-page .depth-card.is-depth-active{border-color:#3b506b;background:#122030;box-shadow:0 18px 42px rgba(0,0,0,.25)}
@keyframes homeCardSheen{0%,52%,100%{transform:translateX(-12%) rotate(4deg);opacity:.2}66%{transform:translateX(185%) rotate(4deg);opacity:.68}78%{transform:translateX(215%) rotate(4deg);opacity:.12}}

/* Superficies y tipografía de portada: evitar texto pequeño flotando sobre el fondo. */
.home-page .services-preview .service-mini{background:var(--home-surface-soft);min-height:205px}
.home-page .services-preview .service-mini h3{font-size:22px}
.home-page .services-preview .service-mini p{font-size:15px;line-height:1.62;color:#b8c4d3}
.home-page .services-preview .service-no{font-size:11.5px}
.home-page .home-project-grid .project-card{min-height:326px;background:var(--home-surface-soft)}
.home-page .home-project-grid .project-index{font-size:46px;color:#697a91}
.home-page .home-project-grid .project-card h3{font-size:22px;line-height:1.25}
.home-page .home-project-grid .project-card p{font-size:14.5px;line-height:1.66;color:#b8c4d3}
.home-page .home-project-grid .category,.home-page .home-project-grid .tag{font-size:10.5px}
.home-page .publication-card{background:var(--home-surface-soft)}
.home-page .publication-card .card-title{font-size:21px;line-height:1.3}
.home-page .publication-card .card-copy{font-size:14.5px;line-height:1.7;color:#b8c4d3}
.home-page .publication-card .category{font-size:10.5px}
.home-page .data-viz-principles{padding:10px 22px;border:1px solid var(--line);border-radius:14px;background:var(--home-surface-soft)}
.home-page .data-viz-principles .principle{grid-template-columns:44px 1fr;padding:20px 0}
.home-page .data-viz-principles .principle h3{font-size:17px}
.home-page .data-viz-principles .principle p{font-size:13.5px;line-height:1.64;color:#aebccc}
.home-page .meta-value{font-size:14px;line-height:1.55}
.home-page .section-head-copy p{font-size:15.5px;line-height:1.72;color:#aebccc}

/* Cierre de conversión: más contraste sin estética neón. */
.home-page .cta{position:relative;overflow:hidden;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:54px;padding:44px 48px 42px 52px;border-color:#3a4d66;background:radial-gradient(circle at 92% 20%,rgba(109,75,209,.20),transparent 27%),radial-gradient(circle at 8% 92%,rgba(67,199,218,.10),transparent 34%),linear-gradient(135deg,#111d2b 0%,#0d1723 58%,#11192a 100%);box-shadow:0 26px 70px rgba(0,0,0,.26),inset 0 1px 0 rgba(255,255,255,.025)}
.home-page .cta::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;pointer-events:none;background:linear-gradient(180deg,var(--cyan),var(--purple-2) 58%,var(--gold));opacity:.78;box-shadow:0 0 20px rgba(67,199,218,.14)}
.home-page .cta::after{content:"";position:absolute;right:-120px;top:-175px;width:300px;height:300px;border:1px solid rgba(138,111,234,.12);border-radius:50%;box-shadow:0 0 80px rgba(109,75,209,.08);pointer-events:none}
.home-page .cta>*{position:relative;z-index:1}
.home-page .cta .eyebrow{font-size:11.5px}
.home-page .cta h2{max-width:760px;font-size:clamp(40px,4.1vw,54px);line-height:1.02;margin:13px 0 13px}
.home-page .cta p{max-width:720px;font-size:15.5px;line-height:1.68;color:#bdc9d6}
.home-page .cta .btn-primary{min-width:190px;min-height:58px;padding-inline:28px;border-color:rgba(166,145,246,.58);background:linear-gradient(135deg,#7656d7,#6544c6);box-shadow:0 14px 34px rgba(81,53,171,.30),inset 0 1px 0 rgba(255,255,255,.10);font-size:14px}
.home-page .cta .btn-primary::after{content:"→";margin-left:10px;font-size:17px;transition:transform .18s ease}
.home-page .cta .btn-primary:hover{background:linear-gradient(135deg,#8061df,#6d4bd1);box-shadow:0 18px 40px rgba(81,53,171,.38);transform:translateY(-2px)}
.home-page .cta .btn-primary:hover::after{transform:translateX(3px)}

@media (max-width:860px){
  .home-page .data-territory-visual .visual-top{height:465px}
  .home-page .data-territory-visual .data-workbench{grid-template-columns:minmax(0,.92fr) minmax(220px,1.08fr);gap:10px}
  .home-page .data-territory-visual .chart-bar .bar-label{width:82px;font-size:10.5px}
  .home-page .services-preview{grid-template-columns:repeat(2,minmax(0,1fr))}
  .home-page .home-project-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .home-page .cta{gap:34px;padding:40px 36px 36px 40px}
}

@media (max-width:600px){
  .home-page .data-territory-visual .visual-top{height:430px}
  .home-page .data-territory-visual .territory-header{left:14px;right:14px;top:12px;flex-direction:row;align-items:center}
  .home-page .data-territory-visual .visual-kicker{font-size:10px}
  .home-page .data-territory-visual .territory-scene{inset:52px 4px 6px}
  .home-page .data-territory-visual .data-workbench{grid-template-columns:minmax(0,.94fr) minmax(142px,1.06fr);gap:6px;padding:5px}
  .home-page .data-territory-visual .data-registers,.home-page .data-territory-visual .data-matrix-panel{padding:9px 8px 8px}
  .home-page .data-territory-visual .data-phase-kicker,.home-page .data-territory-visual .data-matrix-heading span{font-size:9px}
  .home-page .data-territory-visual .data-phase-heading strong{font-size:17px}
  .home-page .data-territory-visual .data-matrix-heading strong{font-size:10px}
  .home-page .data-territory-visual .data-record-list{gap:4px;margin-top:8px}
  .home-page .data-territory-visual .data-record{min-height:30px;grid-template-columns:46px minmax(0,1fr);gap:5px;padding:4px 6px}
  .home-page .data-territory-visual .data-record span{font-size:8.5px}
  .home-page .data-territory-visual .data-record strong{font-size:10px}
  .home-page .data-territory-visual .data-record em{display:none}
  .home-page .data-territory-visual .data-matrix{gap:3px;margin-top:8px;padding:5px}
  .home-page .data-territory-visual .matrix-cell{min-height:25px}
  .home-page .data-territory-visual .bars-chart{padding:24px 7px 56px 25px;gap:7px}
  .home-page .data-territory-visual .bars-grid{inset:16px 7px 56px 25px}
  .home-page .data-territory-visual .bars-axis-y{left:25px;top:16px;bottom:56px}
  .home-page .data-territory-visual .bars-axis-x{left:25px;right:7px;bottom:56px}
  .home-page .data-territory-visual .chart-bar{padding-bottom:39px}
  .home-page .data-territory-visual .chart-bar .bar-fill,.home-page .data-territory-visual .chart-bar .bar-cap{max-width:44px}
  .home-page .data-territory-visual .chart-bar .bar-label{width:64px;font-size:9.5px;line-height:1.1}
  .home-page .data-territory-visual .chart-bar .bar-value{bottom:calc((var(--value,50)*.88%) + 46px);padding:2px 4px;font-size:10px}
  .home-page .data-territory-visual .chart-bar .bar-tooltip{display:none}
  .home-page .data-territory-visual .analysis-metric{font-size:15px}
  .home-page .data-territory-visual .trend-label{font-size:11px}
  .home-page .data-territory-visual .city-svg{transform:none}
  .home-page .services-preview,.home-page .home-project-grid{grid-template-columns:1fr}
  .home-page .services-preview .service-mini{min-height:0;padding:23px 22px}
  .home-page .home-project-grid .project-card{min-height:280px}
  .home-page .data-viz-principles{padding:7px 18px}
  .home-page .cta{grid-template-columns:1fr;gap:26px;padding:34px 26px 28px 30px;align-items:stretch}
  .home-page .cta h2{max-width:100%;font-size:38px}
  .home-page .cta p{font-size:15px}
  .home-page .cta .btn-primary{width:100%;min-height:56px}
}

@media (hover:none),(pointer:coarse){
  .home-page .data-territory-visual .chart-bar .bar-tooltip{display:none}
  .home-page .data-territory-visual .chart-bar:active .bar-fill,
  .home-page .data-territory-visual .chart-bar:focus .bar-fill{filter:brightness(1.24) saturate(1.12);border-color:rgba(216,180,102,.78);box-shadow:0 -8px 22px rgba(67,199,218,.16)}
  .home-page .data-territory-visual .chart-bar:active .bar-label,
  .home-page .data-territory-visual .chart-bar:focus .bar-label{color:#fff;font-weight:800}
  .home-page .data-territory-visual .chart-bar:active .bar-value,
  .home-page .data-territory-visual .chart-bar:focus .bar-value{border-color:rgba(216,180,102,.42);background:rgba(15,23,34,.96);color:#fff;transform:translateX(-50%) translateY(-1px)}
  .home-page .data-territory-visual .chart-bar:active .bar-cap,
  .home-page .data-territory-visual .chart-bar:focus .bar-cap{background:rgba(216,180,102,.82);box-shadow:0 0 12px rgba(216,180,102,.28)}
  .home-page .depth-card{transform:none!important;will-change:auto}
  .home-page .depth-card::after{animation:none;opacity:.18}
}
@media (prefers-reduced-motion:reduce){
  .home-page .depth-card,.home-page .depth-card::before,.home-page .depth-card::after{transition:none!important;animation:none!important;transform:none!important}
  .home-page .data-territory-visual .analysis-trend,.home-page .data-territory-visual .analysis-dot{animation:none!important;stroke-dashoffset:0!important;opacity:1!important;transform:none!important}
}
