/* VortexNeural — Landing SEO local compacta / Vortex Pulse */
.seo-local-page {
  --pulse-blue: #76A0F2;
  --pulse-blue-soft: rgba(118, 160, 242, .16);
  --pulse-green: #58C88E;
  --pulse-amber: #D8AA55;
  --pulse-line: rgba(201, 207, 218, .28);
  --pulse-glow: 0 0 18px rgba(118, 160, 242, .24);
  --pulse-duration: 8.6s;
  --pulse-delay: 160ms;
  overflow-x: clip;
}
.local-hero { position: relative; padding-block: var(--space-8) var(--space-9); overflow: hidden; }
.local-hero::before { content: ""; position: absolute; inset: 0; pointer-events: none; background: radial-gradient(circle at 78% 38%, rgba(71, 118, 208, .12), transparent 34%); }
.local-hero__grid { position: relative; display: grid; gap: var(--space-8); align-items: center; }
.local-hero h1 { max-width: 800px; margin-top: var(--space-4); font-size: var(--fs-display); }
.local-hero .lead { max-width: 680px; margin-top: var(--space-5); color: var(--text-secondary); font-size: var(--fs-body-lg); }
.local-hero__territory { margin-top: var(--space-4); color: var(--silver-300); font-family: var(--font-heading); font-size: clamp(1.05rem, 2vw, 1.3rem); }
.local-hero__actions { display: flex; flex-wrap: wrap; gap: var(--space-3); margin-top: var(--space-6); }

.operation-map {
  position: relative;
  min-height: 540px;
  overflow: hidden;
  isolation: isolate;
  border: 1px solid var(--border-strong);
  border-radius: var(--radius-lg);
  background:
    radial-gradient(circle at 52% 48%, rgba(71, 118, 208, .15), transparent 32%),
    linear-gradient(145deg, rgba(29, 35, 48, .98), rgba(10, 13, 20, .98) 70%);
  box-shadow: inset 0 1px 0 rgba(245, 246, 248, .09), 0 28px 80px rgba(0, 0, 0, .24);
}
.operation-map::before,
.operation-map::after {
  content: "";
  position: absolute;
  pointer-events: none;
}
.operation-map::before {
  inset: 16px;
  border: 1px solid rgba(201, 207, 218, .08);
  border-radius: calc(var(--radius-lg) - 8px);
}
.operation-map::after {
  inset: 0;
  background:
    linear-gradient(90deg, transparent 49.8%, rgba(118, 160, 242, .07) 50%, transparent 50.2%),
    linear-gradient(transparent 49.8%, rgba(118, 160, 242, .06) 50%, transparent 50.2%);
  mask-image: radial-gradient(circle at center, #000 0 20%, transparent 72%);
}
.operation-map__grid {
  position: absolute;
  inset: 0;
  opacity: .3;
  background-image:
    linear-gradient(rgba(201, 207, 218, .08) 1px, transparent 1px),
    linear-gradient(90deg, rgba(201, 207, 218, .08) 1px, transparent 1px);
  background-size: 36px 36px;
  mask-image: radial-gradient(ellipse at 52% 48%, #000, transparent 78%);
}
.operation-map__coordinate {
  position: absolute;
  z-index: 2;
  color: var(--text-muted);
  font-size: .6rem;
  font-weight: 600;
  letter-spacing: .14em;
  text-transform: uppercase;
}
.operation-map__coordinate--top { top: 28px; left: 30px; }
.operation-map__coordinate--bottom { right: 30px; bottom: 24px; }
.operation-map__flow {
  position: absolute;
  z-index: 1;
  inset: 58px 28px 72px;
  display: grid;
  grid-template-columns: 68px minmax(12px, 1fr) minmax(150px, 200px) minmax(12px, 1fr) 118px;
  align-items: center;
}
.operation-origin,
.operation-result {
  position: relative;
  z-index: 3;
  display: grid;
  place-items: center;
  text-align: center;
  background: rgba(10, 13, 20, .9);
  backdrop-filter: blur(6px);
}
.operation-origin {
  width: 68px;
  aspect-ratio: 1;
  border: 1px solid var(--silver-500);
  border-radius: 50%;
  box-shadow: inset 0 0 0 7px rgba(201, 207, 218, .025);
}
.operation-origin::before,
.operation-origin::after {
  content: "";
  position: absolute;
  border-radius: 50%;
}
.operation-origin::before { inset: -7px; border: 1px dashed rgba(201, 207, 218, .2); }
.operation-origin::after { inset: 8px; border: 1px solid rgba(201, 207, 218, .12); }
.operation-origin strong,
.operation-origin small { position: relative; z-index: 2; }
.operation-origin strong { color: var(--silver-100); font-size: .75rem; }
.operation-origin small { max-width: 56px; color: var(--text-muted); font-size: .5rem; line-height: 1.2; }
.operation-origin__signal {
  position: absolute;
  top: 7px;
  right: 9px;
  width: 5px;
  aspect-ratio: 1;
  border-radius: 50%;
  background: var(--silver-300);
  box-shadow: 0 0 9px rgba(201, 207, 218, .62);
}
.operation-route {
  position: relative;
  z-index: 1;
  height: 1px;
  overflow: visible;
  background: linear-gradient(90deg, var(--pulse-line), rgba(118, 160, 242, .48));
}
.operation-route--output { background: linear-gradient(90deg, rgba(118, 160, 242, .48), rgba(88, 200, 142, .52)); }
.operation-route::before,
.operation-route::after {
  content: "";
  position: absolute;
  top: -3px;
  width: 7px;
  aspect-ratio: 1;
  border: 1px solid var(--pulse-line);
  border-radius: 50%;
  background: var(--surface-1);
}
.operation-route::before { left: 0; }
.operation-route::after { right: 0; }
.operation-route i {
  position: absolute;
  top: -3px;
  left: 0;
  width: 100%;
  height: 7px;
  background: radial-gradient(circle, var(--pulse-blue) 0 3px, transparent 4px);
  background-repeat: no-repeat;
  background-position: -10px 50%;
  filter: drop-shadow(0 0 5px rgba(118, 160, 242, .82));
  opacity: 0;
}
.vortex-core {
  position: relative;
  z-index: 2;
  justify-self: center;
  width: min(100%, 200px);
  aspect-ratio: 1;
}
.vortex-core::before {
  content: "";
  position: absolute;
  inset: 22%;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(118, 160, 242, .2), rgba(71, 118, 208, .06) 44%, transparent 70%);
  filter: blur(8px);
  opacity: .74;
}
.vortex-core__geometry {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  overflow: visible;
}
.vortex-core__orbit,
.vortex-core__segments,
.vortex-core__reticle {
  fill: none;
  vector-effect: non-scaling-stroke;
}
.vortex-core__orbit { stroke: rgba(201, 207, 218, .26); stroke-width: 1; stroke-dasharray: 4 7; transform-box: fill-box; transform-origin: center; }
.vortex-core__orbit--middle { stroke: rgba(118, 160, 242, .36); stroke-dasharray: 22 5 3 5; }
.vortex-core__segments { stroke: rgba(201, 207, 218, .44); stroke-width: 1.2; }
.vortex-core__reticle { stroke: rgba(118, 160, 242, .12); stroke-width: 1; }
.vortex-core__ring {
  position: absolute;
  border-radius: 50%;
  transform-origin: center;
}
.vortex-core__ring--one {
  inset: 25%;
  border: 1px solid rgba(118, 160, 242, .6);
  box-shadow: inset 0 0 16px rgba(71, 118, 208, .13), 0 0 14px rgba(71, 118, 208, .1);
}
.vortex-core__ring--two {
  inset: 34%;
  border: 1px dashed rgba(201, 207, 218, .45);
}
.vortex-core__center {
  position: absolute;
  inset: 40%;
  display: grid;
  place-content: center;
  min-width: 42px;
  border: 1px solid rgba(118, 160, 242, .72);
  border-radius: 50%;
  background: radial-gradient(circle, rgba(118, 160, 242, .34), rgba(47, 82, 166, .16) 58%, rgba(10, 13, 20, .86));
  box-shadow: inset 0 0 12px rgba(118, 160, 242, .16), 0 0 18px rgba(71, 118, 208, .22);
  color: var(--silver-100);
  text-align: center;
}
.vortex-core__center i {
  position: absolute;
  inset: 5px;
  border: 1px solid rgba(118, 160, 242, .18);
  border-radius: inherit;
}
.vortex-core__center strong { font-size: .58rem; line-height: 1; }
.vortex-core__center small { color: var(--pulse-blue); font-size: .44rem; line-height: 1.2; }
.vortex-orbit-node {
  position: absolute;
  z-index: 3;
  display: grid;
  place-items: center;
  min-width: 60px;
  min-height: 24px;
  padding: 4px 7px;
  border: 1px solid rgba(201, 207, 218, .22);
  border-radius: 999px;
  background: rgba(10, 13, 20, .88);
  color: var(--text-secondary);
  font-size: .55rem;
  font-weight: 600;
  letter-spacing: .02em;
  box-shadow: 0 5px 12px rgba(0, 0, 0, .2);
}
.vortex-orbit-node::after {
  content: "";
  position: absolute;
  width: 3px;
  aspect-ratio: 1;
  border-radius: 50%;
  background: var(--pulse-blue);
  box-shadow: 0 0 7px rgba(118, 160, 242, .7);
}
.vortex-orbit-node--data { top: 5%; left: 50%; transform: translateX(-50%); }
.vortex-orbit-node--data::after { bottom: -12px; }
.vortex-orbit-node--systems { top: 50%; right: -2%; transform: translateY(-50%); }
.vortex-orbit-node--systems::after { bottom: 50%; left: -13px; }
.vortex-orbit-node--people { bottom: 5%; left: 50%; transform: translateX(-50%); }
.vortex-orbit-node--people::after { top: -12px; }
.vortex-orbit-node--ai { top: 50%; left: -3%; transform: translateY(-50%); border-color: rgba(216, 170, 85, .34); }
.vortex-orbit-node--ai::after { right: -13px; background: var(--pulse-amber); box-shadow: 0 0 7px rgba(216, 170, 85, .6); }
.operation-result {
  width: 100%;
  min-height: 108px;
  padding: 22px 10px 12px;
  border: 1px solid rgba(88, 200, 142, .36);
  border-radius: var(--radius-sm);
  box-shadow: inset 0 1px 0 rgba(245, 246, 248, .05);
}
.operation-result::before,
.operation-result::after {
  content: "";
  position: absolute;
  width: 14px;
  height: 14px;
  border-color: rgba(88, 200, 142, .46);
}
.operation-result::before { top: -1px; left: -1px; border-top: 1px solid; border-left: 1px solid; }
.operation-result::after { right: -1px; bottom: -1px; border-right: 1px solid; border-bottom: 1px solid; }
.operation-result strong { color: var(--silver-100); font-size: .72rem; line-height: 1.25; }
.operation-result small { margin-top: 6px; color: var(--pulse-green); font-size: .5rem; font-weight: 500; line-height: 1.3; }
.operation-result__state {
  position: absolute;
  top: 8px;
  color: var(--pulse-green);
  font-size: .46rem;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  opacity: .38;
}
.operation-status {
  position: absolute;
  z-index: 3;
  bottom: 22px;
  left: 28px;
  display: flex;
  align-items: center;
  gap: 8px;
  height: 20px;
  color: var(--text-muted);
  font-size: .55rem;
  letter-spacing: .08em;
  text-transform: uppercase;
}
.operation-status__beacon {
  width: 5px;
  aspect-ratio: 1;
  border-radius: 50%;
  background: var(--pulse-blue);
  box-shadow: 0 0 8px rgba(118, 160, 242, .74);
}
.operation-status__label { color: var(--silver-500); }
.operation-status__messages { position: relative; display: block; width: 112px; height: 1em; }
.operation-status__messages i {
  position: absolute;
  inset: 0 auto auto 0;
  color: var(--pulse-blue);
  font-style: normal;
  opacity: 0;
}
.operation-status__messages i:last-child { opacity: .42; }

.problem-grid { display: grid; gap: 1px; margin-top: var(--space-6); overflow: hidden; border: 1px solid var(--border); border-radius: var(--radius-md); background: var(--border); }
.problem-grid li { padding: var(--space-4); background: var(--surface-2); color: var(--text-secondary); }
.problem-grid li::before { content: "—"; margin-right: var(--space-2); color: var(--error); }

.capability-grid { display: grid; gap: var(--space-4); margin-top: var(--space-7); }
.vn-card { --spot-x: 50%; --spot-y: 50%; position: relative; overflow: hidden; }
.vn-card::after { content: ""; position: absolute; inset: 0; opacity: 0; pointer-events: none; background: radial-gradient(380px circle at var(--spot-x) var(--spot-y), rgba(118, 160, 242, .11), transparent 45%); transition: opacity 220ms ease; }
.vn-card:hover::after,
.vn-card:focus-visible::after { opacity: 1; }
.local-card {
  min-height: 280px;
  padding: var(--space-5);
  border: 1px solid var(--border-strong);
  border-radius: var(--radius-md);
  background:
    linear-gradient(145deg, rgba(255, 255, 255, .018), transparent 45%),
    var(--surface-2);
  box-shadow: inset 0 1px 0 rgba(245, 246, 248, .045);
  transition: transform 260ms var(--ease-out), border-color 260ms var(--ease-out), box-shadow 260ms var(--ease-out);
}
.local-card > * { position: relative; z-index: 1; }
.local-card::before {
  content: "";
  position: absolute;
  z-index: 0;
  inset: 0;
  pointer-events: none;
  opacity: .36;
  background:
    linear-gradient(rgba(201, 207, 218, .05) 1px, transparent 1px),
    linear-gradient(90deg, rgba(201, 207, 218, .05) 1px, transparent 1px);
  background-size: 28px 28px;
  mask-image: linear-gradient(to bottom, transparent, #000 35%, #000);
}
.local-card:hover {
  transform: translateY(-3px);
  border-color: rgba(118, 160, 242, .46);
  box-shadow: inset 0 1px 0 rgba(245, 246, 248, .07), 0 14px 34px rgba(0, 0, 0, .16);
}
.local-card__head { display: flex; gap: var(--space-3); align-items: flex-start; }
.local-card__head > span {
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  width: 34px;
  aspect-ratio: 1;
  border: 1px solid rgba(118, 160, 242, .34);
  border-radius: 50%;
  color: var(--pulse-blue);
  font-size: .64rem;
  font-weight: 800;
  box-shadow: inset 0 0 10px rgba(71, 118, 208, .08);
  transition: color 240ms ease, border-color 240ms ease, box-shadow 240ms ease;
}
.local-card h3 { padding-top: 4px; font-size: clamp(1.08rem, 1.7vw, 1.35rem); }
.local-card p { margin-top: var(--space-3); color: var(--text-secondary); }
.local-card:hover .local-card__head > span {
  border-color: var(--pulse-blue);
  color: var(--silver-100);
  box-shadow: var(--pulse-glow);
}
.local-card--automation { display: flex; flex-direction: column; }

.automation-flow {
  position: relative;
  display: flex;
  flex: 1;
  flex-direction: column;
  min-height: 360px;
  margin-top: var(--space-6);
  padding: 12px 0 8px;
}
.automation-flow__rail {
  position: absolute;
  top: 24px;
  bottom: 52px;
  left: 15px;
  width: 1px;
  background: var(--pulse-line);
}
.automation-flow__rail i {
  position: absolute;
  inset: 0;
  background: linear-gradient(to bottom, transparent, var(--pulse-blue), transparent);
  background-size: 100% 42%;
  background-repeat: no-repeat;
  opacity: .32;
}
.automation-flow ol {
  position: relative;
  display: grid;
  flex: 1;
  gap: 18px;
  align-content: space-around;
}
.automation-flow li {
  display: flex;
  gap: 14px;
  align-items: center;
  min-height: 42px;
  color: var(--text-tertiary);
}
.automation-flow li span {
  position: relative;
  z-index: 2;
  flex: 0 0 31px;
  width: 31px;
  aspect-ratio: 1;
  border: 1px solid var(--pulse-line);
  border-radius: 50%;
  background: var(--surface-2);
  box-shadow: inset 0 0 0 7px rgba(201, 207, 218, .02);
}
.automation-flow li span::after {
  content: "";
  position: absolute;
  inset: 10px;
  border-radius: 50%;
  background: var(--silver-500);
  opacity: .4;
}
.automation-flow li small { position: relative; font-size: .7rem; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; transition: color 280ms ease, text-shadow 280ms ease; }
.automation-flow li small::after {
  position: absolute;
  top: calc(100% + 3px);
  left: 0;
  color: var(--pulse-blue);
  content: "Activo";
  font-size: .48rem;
  font-weight: 800;
  letter-spacing: .08em;
  opacity: 0;
  text-transform: uppercase;
}
.automation-flow li:last-child span { border-color: rgba(88, 200, 142, .46); }
.automation-flow li:last-child span::after { background: var(--pulse-green); opacity: .75; }
.automation-flow__status {
  display: flex;
  justify-content: space-between;
  gap: var(--space-3);
  margin-top: 18px;
  padding-top: 14px;
  border-top: 1px solid rgba(201, 207, 218, .1);
  font-size: .62rem;
  letter-spacing: .04em;
}
.automation-flow__status span { color: var(--text-muted); text-transform: uppercase; }
.automation-flow__status strong { color: var(--pulse-green); }
.automation-flow__trace {
  margin-top: 8px;
  color: var(--text-muted);
  font-size: .52rem;
  font-style: normal;
  font-weight: 700;
  letter-spacing: .075em;
  opacity: .54;
  text-transform: uppercase;
}

.integration-flow {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1fr) 72px minmax(0, 1fr);
  gap: 14px;
  align-items: center;
  min-height: 112px;
  margin-top: var(--space-5);
}
.integration-flow__group { position: relative; z-index: 2; display: grid; gap: 5px; }
.integration-flow__group span {
  position: relative;
  padding: 4px 7px;
  border: 1px solid rgba(201, 207, 218, .14);
  border-radius: 3px;
  background: rgba(10, 13, 20, .76);
  color: var(--text-tertiary);
  font-size: .55rem;
  text-align: center;
  transition: border-color 360ms ease, color 360ms ease, box-shadow 360ms ease;
}
.integration-flow__group span::after {
  position: absolute;
  z-index: -1;
  top: 50%;
  width: 27px;
  height: 1px;
  background: rgba(118, 160, 242, .24);
  content: "";
  opacity: .82;
  transition: background 360ms ease, box-shadow 360ms ease;
}
.integration-flow__group--one span::after { left: 100%; }
.integration-flow__group--two span::after { right: 100%; }
.integration-flow__sync {
  position: relative;
  z-index: 3;
  display: grid;
  place-items: center;
  width: 68px;
  aspect-ratio: 1;
  border: 1px solid rgba(118, 160, 242, .55);
  border-radius: 50%;
  background: var(--surface-1);
  color: var(--pulse-blue);
  box-shadow: inset 0 0 12px rgba(71, 118, 208, .12), 0 0 0 7px rgba(71, 118, 208, .025);
}
.integration-flow__sync::before,
.integration-flow__sync i {
  content: "";
  position: absolute;
  border-radius: inherit;
}
.integration-flow__sync::before { inset: 8px; border: 1px solid rgba(118, 160, 242, .45); }
.integration-flow__sync i {
  inset: -7px;
  border: 1px dashed rgba(118, 160, 242, .38);
  background: radial-gradient(circle at 50% 0, var(--pulse-blue) 0 2px, transparent 2.5px), radial-gradient(circle at 100% 50%, var(--pulse-blue) 0 2px, transparent 2.5px), radial-gradient(circle at 50% 100%, var(--pulse-blue) 0 2px, transparent 2.5px), radial-gradient(circle at 0 50%, var(--pulse-blue) 0 2px, transparent 2.5px);
  opacity: .5;
}
.integration-flow__sync::after {
  position: absolute;
  inset: -16px;
  border: 1px solid rgba(118, 160, 242, .56);
  border-radius: 50%;
  content: "";
  opacity: 0;
}
.integration-flow__sync strong { position: relative; z-index: 2; font-size: .54rem; letter-spacing: .09em; transition: color 320ms ease, text-shadow 320ms ease; }
.integration-flow > small {
  position: absolute;
  right: 0;
  bottom: -3px;
  color: var(--pulse-green);
  font-size: .52rem;
  font-weight: 700;
  letter-spacing: .05em;
  text-transform: uppercase;
  opacity: .38;
  transition: color 320ms ease, opacity 320ms ease, text-shadow 320ms ease;
}

.ai-flow {
  display: grid;
  grid-template-columns: 74px minmax(0, 1fr);
  gap: 18px;
  align-items: center;
  margin-top: var(--space-5);
}
.ai-flow__document {
  position: relative;
  width: 70px;
  height: 92px;
  padding: 18px 12px 10px;
  border: 1px solid rgba(201, 207, 218, .28);
  border-radius: 4px;
  background: rgba(10, 13, 20, .72);
}
.ai-flow__document::before {
  content: "";
  position: absolute;
  top: -1px;
  right: -1px;
  width: 18px;
  height: 18px;
  border-bottom: 1px solid rgba(201, 207, 218, .28);
  border-left: 1px solid rgba(201, 207, 218, .28);
  background: var(--surface-2);
}
.ai-flow__document > i {
  display: block;
  height: 1px;
  margin-top: 10px;
  background: rgba(201, 207, 218, .22);
}
.ai-flow__document > i:nth-of-type(2) { width: 78%; }
.ai-flow__document > i:nth-of-type(3) { width: 58%; }
.ai-flow__document > b {
  position: absolute;
  z-index: 2;
  right: 0;
  left: 0;
  top: 12px;
  height: 1px;
  background: var(--pulse-blue);
  box-shadow: 0 0 8px rgba(118, 160, 242, .74);
  opacity: .46;
}
.ai-flow__analysis { display: grid; gap: 7px; }
.ai-flow__analysis span { display: flex; justify-content: space-between; gap: 7px; color: var(--text-muted); font-size: .52rem; }
.ai-flow__analysis strong { color: var(--text-secondary); font-size: .5rem; }
.ai-flow__analysis span:last-of-type strong { color: var(--pulse-amber); }
.ai-flow__confidence {
  position: relative;
  height: 3px;
  margin-top: 3px;
  overflow: hidden;
  border-radius: 999px;
  background: rgba(201, 207, 218, .1);
}
.ai-flow__confidence::after {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: inherit;
  background: linear-gradient(90deg, var(--pulse-blue), var(--pulse-green));
  transform: scaleX(.76);
  transform-origin: left;
}

.trace-flow { position: relative; margin-top: var(--space-5); padding-left: 8px; }
.trace-flow::before {
  content: "";
  position: absolute;
  top: 5px;
  bottom: 32px;
  left: 13px;
  width: 1px;
  background: var(--pulse-line);
}
.trace-flow::after {
  position: absolute;
  top: 5px;
  bottom: 32px;
  left: 13px;
  width: 1px;
  transform: scaleY(0);
  transform-origin: top;
  background: linear-gradient(to bottom, var(--pulse-blue) 0 55%, var(--pulse-amber) 72%, var(--pulse-green));
  box-shadow: 0 0 8px rgba(118, 160, 242, .38);
  content: "";
}
.trace-flow ol { display: grid; gap: 10px; }
.trace-flow li {
  position: relative;
  padding-left: 28px;
  color: var(--text-tertiary);
  font-size: .6rem;
  transition: color 260ms ease, text-shadow 260ms ease;
}
.trace-flow li::before {
  content: "";
  position: absolute;
  top: 4px;
  left: 1px;
  width: 9px;
  aspect-ratio: 1;
  border: 1px solid var(--pulse-line);
  border-radius: 50%;
  background: var(--surface-2);
  transition: border-color 260ms ease, box-shadow 260ms ease;
}
.trace-flow li::after {
  content: "";
  position: absolute;
  top: 7px;
  left: 4px;
  width: 3px;
  aspect-ratio: 1;
  border-radius: 50%;
  background: var(--pulse-blue);
  opacity: .38;
  transition: background 260ms ease, box-shadow 260ms ease, opacity 260ms ease;
}
.trace-flow > strong {
  display: block;
  margin-top: 13px;
  padding-top: 9px;
  border-top: 1px solid rgba(201, 207, 218, .1);
  color: var(--pulse-green);
  font-size: .54rem;
  letter-spacing: .05em;
  text-align: right;
  text-transform: uppercase;
  opacity: .38;
  transition: color 260ms ease, opacity 260ms ease, text-shadow 260ms ease;
}
.motion-replay { position: absolute; width: 1px; height: 1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); border: 0; white-space: nowrap; }
.motion-replay:focus-visible { position: static; width: auto; height: auto; margin-top: var(--space-3); padding: 6px 9px; clip: auto; clip-path: none; border: 1px solid var(--accent-blue-strong); border-radius: 3px; background: var(--surface-1); color: var(--silver-100); font: inherit; font-size: .62rem; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; outline: 2px solid var(--accent-blue-strong); outline-offset: 3px; }

.local-principle { border-block: 1px solid var(--border-strong); background: radial-gradient(circle at 30% 50%, rgba(71, 118, 208, .1), transparent 38%), var(--surface-1); }
.local-principle__grid { display: grid; gap: var(--space-6); align-items: center; }
.local-principle h2 { margin-top: var(--space-3); font-size: clamp(2rem, 4.6vw, 4.4rem); line-height: 1.04; }
.local-principle__copy { display: grid; gap: var(--space-4); color: var(--text-secondary); }

.local-context { display: grid; gap: var(--space-6); align-items: start; }
.local-context__copy { position: relative; padding-left: clamp(18px, 2vw, 30px); }
.local-context__copy::before {
  position: absolute;
  top: 2px;
  bottom: 3px;
  left: 0;
  width: 1px;
  background: linear-gradient(to bottom, var(--accent-blue-strong), rgba(201, 207, 218, .16) 76%, transparent);
  content: "";
}
.local-context__copy::after { position: absolute; top: 0; left: -2px; width: 5px; height: 5px; border-radius: 50%; background: var(--pulse-blue); box-shadow: 0 0 11px rgba(118, 160, 242, .65); content: ""; }
.local-context__copy > p + p { margin-top: var(--space-3); }
.operating-band {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 0;
  margin-top: var(--space-5) !important;
  color: var(--silver-300);
  font-size: .64rem;
  font-weight: 700;
  letter-spacing: .07em;
  text-transform: uppercase;
}
.operating-band span { display: inline-flex; align-items: center; white-space: nowrap; }
.operating-band span:not(:last-child)::after { width: 3px; height: 3px; margin: 0 10px; border-radius: 50%; background: var(--pulse-blue); box-shadow: 0 0 8px rgba(118, 160, 242, .5); content: ""; }
.coverage-panel { position: relative; padding: var(--space-6); overflow: hidden; border: 1px solid var(--border-strong); border-top: 2px solid var(--accent-blue-strong); border-radius: var(--radius-lg); background: radial-gradient(circle at 80% 75%, rgba(71, 118, 208, .11), transparent 44%), var(--surface-2); }
.coverage-panel p { margin-top: var(--space-3); color: var(--text-secondary); }
.coverage-panel__closing { color: var(--silver-300) !important; font-weight: 600; }
.coverage-visual { position: relative; min-height: 258px; margin-top: var(--space-5); overflow: hidden; border-top: 1px solid rgba(201, 207, 218, .12); border-bottom: 1px solid rgba(201, 207, 218, .12); }
.coverage-visual__grid { position: absolute; inset: 0; background-image: linear-gradient(rgba(118, 160, 242, .065) 1px, transparent 1px), linear-gradient(90deg, rgba(118, 160, 242, .065) 1px, transparent 1px); background-size: 20px 20px; mask-image: linear-gradient(to bottom, transparent, #000 12%, #000 88%, transparent); }
.coverage-visual__axis { position: absolute; z-index: 1; top: 32px; bottom: 54px; left: 50%; width: 1px; background: rgba(201, 207, 218, .22); }
.coverage-visual__axis i { position: absolute; inset: 0; display: block; transform: scaleY(0); transform-origin: top; background: linear-gradient(to bottom, var(--pulse-blue), var(--pulse-blue) 72%, var(--pulse-green)); box-shadow: 0 0 10px rgba(118, 160, 242, .42); }
.coverage-visual__node { position: absolute; z-index: 2; left: 50%; display: grid; gap: 2px; min-width: 106px; padding: 7px 10px; transform: translateX(-50%); border: 1px solid var(--pulse-line); border-radius: 4px; background: rgba(8, 14, 23, .88); text-align: center; transition: border-color 380ms ease, box-shadow 380ms ease, opacity 380ms ease; }
.coverage-visual__node small { color: var(--text-muted); font-size: .48rem; font-weight: 700; letter-spacing: .11em; text-transform: uppercase; }
.coverage-visual__node strong { color: var(--silver-300); font-size: .72rem; letter-spacing: .03em; transition: color 380ms ease; }
.coverage-visual__node::before { position: absolute; top: 50%; left: -5px; width: 8px; height: 8px; transform: translateY(-50%); border: 1px solid var(--pulse-line); border-radius: 50%; background: var(--surface-2); box-shadow: 0 0 0 4px rgba(9, 15, 24, .9); content: ""; }
.coverage-visual__node--origin { top: 17px; }
.coverage-visual__node--scale { top: 94px; }
.coverage-visual__node--reach { top: 171px; }
.coverage-visual__state { position: absolute; z-index: 2; right: 0; bottom: 9px; color: var(--pulse-green); font-size: .52rem; letter-spacing: .095em; opacity: 0; text-transform: uppercase; transition: opacity 340ms ease; }
.coverage-visual__message { margin-top: var(--space-4) !important; color: var(--silver-300) !important; font-weight: 600; }
.coverage-visual__replay { position: absolute; right: var(--space-4); bottom: var(--space-4); z-index: 3; width: 1px; height: 1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); border: 0; white-space: nowrap; }
.coverage-visual__replay:focus-visible { position: static; width: auto; height: auto; margin-top: var(--space-3); padding: 6px 9px; clip: auto; clip-path: none; border: 1px solid var(--accent-blue-strong); border-radius: 3px; background: var(--surface-1); color: var(--silver-100); font: inherit; font-size: .62rem; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; outline: 2px solid var(--accent-blue-strong); outline-offset: 3px; }

.evidence-links { display: grid; gap: var(--space-4); margin-top: var(--space-7); }
.evidence-link { display: grid; gap: var(--space-3); padding: var(--space-5); border: 1px solid var(--border-strong); border-radius: var(--radius-md); background: var(--surface-2); text-decoration: none; }
.evidence-link strong { color: var(--silver-100); }
.evidence-link span { color: var(--text-secondary); }
.evidence-link:hover { border-color: var(--accent-blue-strong); transform: translateY(-2px); }
.implementation-line {
  position: relative;
  margin-top: var(--space-7);
  padding: var(--space-4) 0;
}
.implementation-line__rail {
  position: absolute;
  z-index: 0;
  top: 43px;
  right: calc(16.667% - 1px);
  left: calc(16.667% - 1px);
  height: 1px;
  overflow: visible;
  background: var(--pulse-line);
}
.implementation-line__rail::before,
.implementation-line__rail::after {
  content: "";
  position: absolute;
  top: -2px;
  width: 5px;
  aspect-ratio: 1;
  border-radius: 50%;
  background: var(--silver-500);
}
.implementation-line__rail::before { left: 0; }
.implementation-line__rail::after { right: 0; }
.implementation-line__rail span {
  position: absolute;
  inset: -1px 0;
  background: linear-gradient(90deg, transparent 0 20%, var(--pulse-blue) 46%, transparent 72%);
  background-size: 240% 100%;
  background-position: 180% 0;
  opacity: 0;
  filter: drop-shadow(0 0 5px rgba(118, 160, 242, .58));
}
.seo-local-page .implementation-line .phase-list {
  position: relative;
  z-index: 1;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--space-5);
  margin: 0;
}
.seo-local-page .implementation-line .phase {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-4);
  align-content: start;
  padding: 0 var(--space-4);
  border: 0;
  background: transparent;
  text-align: center;
}
.phase__node {
  display: grid;
  place-items: center;
  justify-self: center;
  width: 56px;
  aspect-ratio: 1;
  border: 1px solid var(--pulse-line);
  border-radius: 50%;
  background: var(--surface-1);
  box-shadow: inset 0 0 0 8px rgba(201, 207, 218, .018), 0 0 0 5px rgba(201, 207, 218, .025);
  color: var(--silver-300);
  font-size: .72rem;
  font-weight: 800;
  transition: border-color 360ms ease, color 360ms ease, box-shadow 360ms ease;
}
.implementation-line .phase h3 {
  font-size: clamp(1rem, 2vw, 1.2rem);
  transition: color 360ms ease, text-shadow 360ms ease;
}
.implementation-line .phase p { font-size: .88rem; }
.phase__state {
  display: inline-flex;
  margin-top: var(--space-3);
  padding: 5px 9px;
  border: 1px solid rgba(88, 200, 142, .32);
  border-radius: 999px;
  color: var(--pulse-green);
  font-size: .55rem;
  font-weight: 700;
  letter-spacing: .06em;
  text-transform: uppercase;
  opacity: .28;
}
.method-links { margin-top: var(--space-5); color: var(--text-secondary); }
.method-links a { color: var(--accent-blue-strong); }

.faq-layout { display: grid; gap: var(--space-6); align-items: start; }
.faq-list { display: grid; gap: var(--space-3); }
.faq-list details { border: 1px solid var(--border-strong); border-radius: var(--radius-sm); background: var(--surface-2); }
.faq-list summary { padding: var(--space-4); color: var(--silver-100); font-weight: 600; cursor: pointer; }
.faq-list summary:focus-visible { outline: 2px solid var(--accent-blue-strong); outline-offset: 3px; }
.faq-list details p { padding: 0 var(--space-4) var(--space-4); color: var(--text-secondary); }
.local-closing { padding-top: var(--space-6); }

/* Vortex Pulse: movimiento coordinado por visibilidad */
.operation-map.is-pulse-active .vortex-core__orbit--outer { animation: vortex-spin 24s linear infinite; }
.operation-map.is-pulse-active .vortex-core__orbit--middle { animation: vortex-spin-reverse 30s linear infinite; }
.operation-map.is-pulse-active .vortex-core__ring--two { animation: vortex-spin 21s linear infinite; }
.operation-map.is-pulse-active .vortex-core__center { animation: core-breathe 5.2s ease-in-out infinite; }
.operation-map.is-pulse-active .operation-origin__signal { animation: origin-signal 4.8s ease-in-out infinite; }
.operation-map.is-pulse-active .operation-route--input i { animation: route-travel var(--pulse-duration) ease-in-out infinite; }
.operation-map.is-pulse-active .operation-route--output i { animation: route-travel var(--pulse-duration) ease-in-out 3.6s infinite; }
.operation-map.is-pulse-active .operation-result { animation: result-arrival var(--pulse-duration) ease-in-out 3.6s infinite; }
.operation-map.is-pulse-active .operation-result__state { animation: result-state var(--pulse-duration) ease-in-out 3.6s infinite; }
.operation-map.is-pulse-active .operation-status__messages i { animation: status-cycle 16s ease-in-out infinite; }
.operation-map.is-pulse-active .operation-status__messages i:nth-child(2) { animation-delay: 4s; }
.operation-map.is-pulse-active .operation-status__messages i:nth-child(3) { animation-delay: 8s; }
.operation-map.is-pulse-active .operation-status__messages i:nth-child(4) { animation-delay: 12s; }

.capability-grid.has-pulsed .local-card__head > span { animation: capability-number 720ms var(--ease-out) both; }
.capability-grid.has-pulsed .local-card:nth-child(2) .local-card__head > span { animation-delay: 180ms; }
.capability-grid.has-pulsed .local-card:nth-child(3) .local-card__head > span { animation-delay: 360ms; }
.capability-grid.has-pulsed .local-card:nth-child(4) .local-card__head > span { animation-delay: 540ms; }
.capability-grid.has-pulsed .ai-flow__document > b { animation: document-scan 2.5s ease-in-out 720ms both; }
.capability-grid.has-pulsed .ai-flow__confidence::after { animation: confidence-in 1.2s var(--ease-out) 1.2s both; }
.capability-grid.is-flow-running .automation-flow__rail i { animation: vertical-scan 2.35s ease-in-out both; }
.capability-grid.is-flow-running .automation-flow li span { animation: flow-node-on 500ms var(--ease-out) both; }
.capability-grid.is-flow-running .automation-flow li small::after { animation: flow-node-label 500ms ease both; }
.capability-grid.is-flow-running .automation-flow li:nth-child(1) span, .capability-grid.is-flow-running .automation-flow li:nth-child(1) small::after { animation-delay: 280ms; }
.capability-grid.is-flow-running .automation-flow li:nth-child(2) span, .capability-grid.is-flow-running .automation-flow li:nth-child(2) small::after { animation-delay: 610ms; }
.capability-grid.is-flow-running .automation-flow li:nth-child(3) span, .capability-grid.is-flow-running .automation-flow li:nth-child(3) small::after { animation-delay: 940ms; }
.capability-grid.is-flow-running .automation-flow li:nth-child(4) span, .capability-grid.is-flow-running .automation-flow li:nth-child(4) small::after { animation-delay: 1270ms; }
.capability-grid.is-flow-running .automation-flow li:nth-child(5) span, .capability-grid.is-flow-running .automation-flow li:nth-child(5) small::after { animation-delay: 1600ms; }
.capability-grid.is-flow-running .automation-flow__status [data-flow-state] { color: var(--pulse-blue); animation: flow-state-breathe 1.2s ease-in-out infinite; }
.capability-grid.is-flow-complete .automation-flow__rail i { opacity: .58; background-position: 0 100%; }
.capability-grid.is-flow-complete .automation-flow li { color: var(--silver-300); }
.capability-grid.is-flow-complete .automation-flow li span { border-color: rgba(118, 160, 242, .46); box-shadow: 0 0 10px rgba(118, 160, 242, .11); }
.capability-grid.is-flow-complete .automation-flow li span::after { background: var(--pulse-blue); opacity: .82; }
.capability-grid.is-flow-complete .automation-flow li small { color: var(--silver-300); }
.capability-grid.is-flow-complete .automation-flow li:last-child { color: var(--pulse-green); }
.capability-grid.is-flow-complete .automation-flow li:last-child span { border-color: rgba(88, 200, 142, .82); box-shadow: 0 0 13px rgba(88, 200, 142, .2); }
.capability-grid.is-flow-complete .automation-flow li:last-child span::after { background: var(--pulse-green); opacity: 1; }
.capability-grid.is-flow-complete .automation-flow li:last-child small { color: var(--pulse-green); }
.capability-grid.is-flow-complete .automation-flow__status [data-flow-state],
.capability-grid.is-flow-complete .automation-flow__status [data-flow-result] { color: var(--pulse-green); }
.capability-grid.is-flow-complete .automation-flow__trace { color: var(--pulse-green); opacity: .75; }
.local-card--ai:hover .ai-flow__document > b { animation: document-scan 2.3s ease-in-out infinite; }

.local-card--integration.is-sync-running .integration-flow__sync i { animation: sync-orbit 1.8s linear 300ms both; }
.local-card--integration.is-sync-running .integration-flow__sync::after { animation: sync-core-pulse 740ms ease-out 980ms both; }
.local-card--integration.is-sync-running .integration-flow__sync strong { animation: sync-label 1s ease 900ms both; }
.local-card--integration.is-sync-running .integration-flow > small { animation: sync-status 600ms ease 1.8s both; }
.local-card--integration.is-sync-running .integration-flow__group span { animation: sync-module 540ms ease both; }
.local-card--integration.is-sync-running .integration-flow__group span::after { animation: sync-connector 700ms ease both; }
.local-card--integration.is-sync-running .integration-flow__group span:nth-child(1),
.local-card--integration.is-sync-running .integration-flow__group span:nth-child(1)::after { animation-delay: 150ms; }
.local-card--integration.is-sync-running .integration-flow__group span:nth-child(2),
.local-card--integration.is-sync-running .integration-flow__group span:nth-child(2)::after { animation-delay: 330ms; }
.local-card--integration.is-sync-running .integration-flow__group span:nth-child(3),
.local-card--integration.is-sync-running .integration-flow__group span:nth-child(3)::after { animation-delay: 510ms; }
.local-card--integration.is-sync-complete .integration-flow__sync { border-color: rgba(88, 200, 142, .64); box-shadow: inset 0 0 14px rgba(88, 200, 142, .12), 0 0 0 7px rgba(88, 200, 142, .025); }
.local-card--integration.is-sync-complete .integration-flow__sync i { opacity: .72; transform: rotate(360deg); }
.local-card--integration.is-sync-complete .integration-flow__sync strong { color: var(--pulse-blue); text-shadow: 0 0 9px rgba(118, 160, 242, .4); }
.local-card--integration.is-sync-complete .integration-flow > small { color: var(--pulse-green); opacity: 1; text-shadow: 0 0 9px rgba(88, 200, 142, .25); }
.local-card--integration.is-sync-complete .integration-flow__group span { border-color: rgba(118, 160, 242, .34); color: var(--silver-300); }
.local-card--integration.is-sync-complete .integration-flow__group span::after { background: rgba(118, 160, 242, .52); box-shadow: 0 0 6px rgba(118, 160, 242, .22); }

.local-card--trace.is-trace-running .trace-flow::after { animation: trace-progress 1.6s ease-in-out both; }
.local-card--trace.is-trace-running .trace-flow li:nth-child(1) { animation: trace-text-blue 420ms ease 0ms both; }
.local-card--trace.is-trace-running .trace-flow li:nth-child(1)::before,
.local-card--trace.is-trace-running .trace-flow li:nth-child(1)::after { animation: trace-node-blue 420ms ease 0ms both; }
.local-card--trace.is-trace-running .trace-flow li:nth-child(2) { animation: trace-text-blue 420ms ease 350ms both; }
.local-card--trace.is-trace-running .trace-flow li:nth-child(2)::before,
.local-card--trace.is-trace-running .trace-flow li:nth-child(2)::after { animation: trace-node-blue 420ms ease 350ms both; }
.local-card--trace.is-trace-running .trace-flow li:nth-child(3) { animation: trace-text-amber 420ms ease 750ms both; }
.local-card--trace.is-trace-running .trace-flow li:nth-child(3)::before,
.local-card--trace.is-trace-running .trace-flow li:nth-child(3)::after { animation: trace-node-amber 420ms ease 750ms both; }
.local-card--trace.is-trace-running .trace-flow li:nth-child(4) { animation: trace-text-green 450ms ease 1150ms both; }
.local-card--trace.is-trace-running .trace-flow li:nth-child(4)::before,
.local-card--trace.is-trace-running .trace-flow li:nth-child(4)::after { animation: trace-node-green 450ms ease 1150ms both; }
.local-card--trace.is-trace-running .trace-flow > strong { animation: trace-status 500ms ease 1600ms both; }
.local-card--trace.is-trace-complete .trace-flow::after { transform: scaleY(1); }
.local-card--trace.is-trace-complete .trace-flow li:nth-child(1),
.local-card--trace.is-trace-complete .trace-flow li:nth-child(2) { color: var(--pulse-blue); text-shadow: 0 0 7px rgba(118, 160, 242, .2); }
.local-card--trace.is-trace-complete .trace-flow li:nth-child(3) { color: var(--pulse-amber); text-shadow: 0 0 7px rgba(213, 162, 76, .18); }
.local-card--trace.is-trace-complete .trace-flow li:nth-child(4) { color: var(--pulse-green); text-shadow: 0 0 7px rgba(88, 200, 142, .18); }
.local-card--trace.is-trace-complete .trace-flow li:nth-child(1)::before,
.local-card--trace.is-trace-complete .trace-flow li:nth-child(2)::before { border-color: var(--pulse-blue); box-shadow: 0 0 9px rgba(118, 160, 242, .2); }
.local-card--trace.is-trace-complete .trace-flow li:nth-child(1)::after,
.local-card--trace.is-trace-complete .trace-flow li:nth-child(2)::after { background: var(--pulse-blue); opacity: 1; box-shadow: 0 0 7px rgba(118, 160, 242, .62); }
.local-card--trace.is-trace-complete .trace-flow li:nth-child(3)::before { border-color: var(--pulse-amber); box-shadow: 0 0 9px rgba(213, 162, 76, .18); }
.local-card--trace.is-trace-complete .trace-flow li:nth-child(3)::after { background: var(--pulse-amber); opacity: 1; box-shadow: 0 0 7px rgba(213, 162, 76, .58); }
.local-card--trace.is-trace-complete .trace-flow li:nth-child(4)::before { border-color: var(--pulse-green); box-shadow: 0 0 9px rgba(88, 200, 142, .18); }
.local-card--trace.is-trace-complete .trace-flow li:nth-child(4)::after { background: var(--pulse-green); opacity: 1; box-shadow: 0 0 7px rgba(88, 200, 142, .58); }
.local-card--trace.is-trace-complete .trace-flow > strong { color: var(--pulse-green); opacity: 1; text-shadow: 0 0 9px rgba(88, 200, 142, .25); }

.coverage-panel.is-coverage-running .coverage-visual__axis i { animation: coverage-axis 2.25s ease-in-out both; }
.coverage-panel.is-coverage-running .coverage-visual__node--origin { animation: coverage-node-origin 680ms var(--ease-out) both; }
.coverage-panel.is-coverage-running .coverage-visual__node--scale { animation: coverage-node-scale 680ms var(--ease-out) 760ms both; }
.coverage-panel.is-coverage-running .coverage-visual__node--reach { animation: coverage-node-reach 680ms var(--ease-out) 1.52s both; }
.coverage-panel.is-coverage-running .coverage-visual__state { animation: coverage-state-in 520ms ease 2.75s both; }
.coverage-panel.is-coverage-running .coverage-visual__message { animation: coverage-message-in 520ms ease 3.08s both; }
.coverage-panel.is-coverage-complete .coverage-visual__axis i { transform: scaleY(1); }
.coverage-panel.is-coverage-complete .coverage-visual__node { border-color: rgba(118, 160, 242, .56); box-shadow: 0 0 12px rgba(118, 160, 242, .11); }
.coverage-panel.is-coverage-complete .coverage-visual__node strong { color: var(--silver-100); }
.coverage-panel.is-coverage-complete .coverage-visual__node--reach { border-color: rgba(88, 200, 142, .76); box-shadow: 0 0 14px rgba(88, 200, 142, .15); }
.coverage-panel.is-coverage-complete .coverage-visual__node--reach strong { color: var(--pulse-green); }
.coverage-panel.is-coverage-complete .coverage-visual__state { opacity: 1; }
.coverage-panel.is-coverage-complete .coverage-visual__message { color: var(--silver-100) !important; }

.implementation-line.is-pulse-active .implementation-line__rail span {
  opacity: 1;
  animation: method-track 8.8s ease-in-out infinite;
}
.implementation-line.is-pulse-active .phase__node { animation: phase-node-active 8.8s ease-in-out infinite; }
.implementation-line.is-pulse-active .phase h3 { animation: phase-title-active 8.8s ease-in-out infinite; }
.implementation-line.is-pulse-active .phase--implementation .phase__node,
.implementation-line.is-pulse-active .phase--implementation h3 { animation-delay: 2.7s; }
.implementation-line.is-pulse-active .phase--control .phase__node,
.implementation-line.is-pulse-active .phase--control h3 { animation-delay: 5.2s; }
.implementation-line.is-pulse-active .phase--control .phase__state { animation: control-state 8.8s ease-in-out 5.2s infinite; }

@keyframes vortex-spin { to { transform: rotate(360deg); } }
@keyframes vortex-spin-reverse { to { transform: rotate(-360deg); } }
@keyframes core-breathe {
  0%, 100% { transform: scale(1); filter: brightness(.92); }
  50% { transform: scale(1.045); filter: brightness(1.13); }
}
@keyframes origin-signal {
  0%, 100% { opacity: .45; transform: scale(.85); }
  45% { opacity: 1; transform: scale(1.35); }
}
@keyframes route-travel {
  0%, 8% { opacity: 0; background-position: -10px 50%; }
  14% { opacity: 1; }
  45% { opacity: 1; }
  52%, 100% { opacity: 0; background-position: calc(100% + 10px) 50%; }
}
@keyframes route-travel-vertical {
  0%, 8% { opacity: 0; background-position: 50% -10px; }
  14% { opacity: 1; }
  45% { opacity: 1; }
  52%, 100% { opacity: 0; background-position: 50% calc(100% + 10px); }
}
@keyframes result-arrival {
  0%, 43%, 74%, 100% { border-color: rgba(88, 200, 142, .36); box-shadow: inset 0 1px 0 rgba(245, 246, 248, .05); }
  52%, 64% { border-color: rgba(88, 200, 142, .88); box-shadow: inset 0 1px 0 rgba(245, 246, 248, .08), 0 0 18px rgba(88, 200, 142, .16); }
}
@keyframes result-state {
  0%, 42%, 76%, 100% { opacity: .3; }
  52%, 66% { opacity: 1; }
}
@keyframes status-cycle {
  0%, 4% { opacity: 0; transform: translateY(4px); }
  8%, 22% { opacity: 1; transform: translateY(0); }
  26%, 100% { opacity: 0; transform: translateY(-3px); }
}
@keyframes capability-number {
  from { border-color: rgba(118, 160, 242, .2); color: var(--text-muted); box-shadow: none; }
  60% { border-color: var(--pulse-blue); color: var(--silver-100); box-shadow: var(--pulse-glow); }
  to { border-color: rgba(118, 160, 242, .48); color: var(--pulse-blue); box-shadow: inset 0 0 10px rgba(71, 118, 208, .12); }
}
@keyframes vertical-scan {
  0% { opacity: 0; background-position: 0 -60%; }
  16%, 82% { opacity: .9; }
  100% { opacity: .34; background-position: 0 160%; }
}
@keyframes flow-node-on {
  from { border-color: var(--pulse-line); filter: brightness(.72); }
  58% { border-color: var(--pulse-blue); filter: brightness(1.35); box-shadow: 0 0 14px rgba(118, 160, 242, .2); }
  to { border-color: rgba(118, 160, 242, .42); filter: brightness(1); }
}
@keyframes flow-node-label {
  0%, 72% { opacity: 0; transform: translateY(-2px); }
  18%, 55% { opacity: 1; transform: translateY(0); }
  100% { opacity: 0; transform: translateY(1px); }
}
@keyframes flow-state-breathe {
  0%, 100% { text-shadow: none; }
  50% { text-shadow: 0 0 11px rgba(118, 160, 242, .5); }
}
@keyframes sync-module {
  0%, 100% { border-color: rgba(201, 207, 218, .14); color: var(--text-tertiary); box-shadow: none; }
  48% { border-color: rgba(118, 160, 242, .66); color: var(--silver-100); box-shadow: 0 0 9px rgba(118, 160, 242, .16); }
}
@keyframes sync-connector {
  0% { background: rgba(118, 160, 242, .24); box-shadow: none; }
  45% { background: var(--pulse-blue); box-shadow: 0 0 8px rgba(118, 160, 242, .68); }
  100% { background: rgba(118, 160, 242, .5); box-shadow: 0 0 5px rgba(118, 160, 242, .18); }
}
@keyframes sync-orbit {
  0% { opacity: .5; transform: rotate(0); }
  70% { opacity: 1; transform: rotate(330deg); }
  100% { opacity: .72; transform: rotate(360deg); }
}
@keyframes sync-core-pulse {
  0% { opacity: 0; transform: scale(.72); }
  38% { opacity: .82; }
  100% { opacity: 0; transform: scale(1.2); }
}
@keyframes sync-label {
  0% { color: var(--pulse-blue); text-shadow: none; }
  52% { color: var(--silver-100); text-shadow: 0 0 12px rgba(118, 160, 242, .62); }
  100% { color: var(--pulse-blue); text-shadow: 0 0 8px rgba(118, 160, 242, .38); }
}
@keyframes sync-status {
  from { color: var(--pulse-green); opacity: .38; transform: translateY(2px); }
  to { color: var(--pulse-green); opacity: 1; text-shadow: 0 0 9px rgba(88, 200, 142, .25); transform: translateY(0); }
}
@keyframes trace-progress { from { transform: scaleY(0); } to { transform: scaleY(1); } }
@keyframes trace-text-blue { from { color: var(--text-tertiary); text-shadow: none; } to { color: var(--pulse-blue); text-shadow: 0 0 7px rgba(118, 160, 242, .22); } }
@keyframes trace-text-amber { from { color: var(--text-tertiary); text-shadow: none; } to { color: var(--pulse-amber); text-shadow: 0 0 7px rgba(213, 162, 76, .18); } }
@keyframes trace-text-green { from { color: var(--text-tertiary); text-shadow: none; } to { color: var(--pulse-green); text-shadow: 0 0 7px rgba(88, 200, 142, .18); } }
@keyframes trace-node-blue { from { border-color: var(--pulse-line); background: var(--surface-2); opacity: .38; box-shadow: none; } to { border-color: var(--pulse-blue); background: var(--pulse-blue); opacity: 1; box-shadow: 0 0 9px rgba(118, 160, 242, .58); } }
@keyframes trace-node-amber { from { border-color: var(--pulse-line); background: var(--surface-2); opacity: .38; box-shadow: none; } to { border-color: var(--pulse-amber); background: var(--pulse-amber); opacity: 1; box-shadow: 0 0 9px rgba(213, 162, 76, .52); } }
@keyframes trace-node-green { from { border-color: var(--pulse-line); background: var(--surface-2); opacity: .38; box-shadow: none; } to { border-color: var(--pulse-green); background: var(--pulse-green); opacity: 1; box-shadow: 0 0 9px rgba(88, 200, 142, .52); } }
@keyframes trace-status { from { opacity: .38; text-shadow: none; } to { opacity: 1; text-shadow: 0 0 9px rgba(88, 200, 142, .25); } }
@keyframes coverage-axis {
  0% { transform: scaleY(0); }
  100% { transform: scaleY(1); }
}
@keyframes coverage-node-origin {
  0% { border-color: var(--pulse-line); box-shadow: none; }
  55% { border-color: var(--pulse-blue); box-shadow: 0 0 17px rgba(118, 160, 242, .28); }
  100% { border-color: rgba(118, 160, 242, .56); box-shadow: 0 0 12px rgba(118, 160, 242, .11); }
}
@keyframes coverage-node-scale {
  0% { border-color: var(--pulse-line); box-shadow: none; }
  55% { border-color: var(--pulse-blue); box-shadow: 0 0 17px rgba(118, 160, 242, .28); }
  100% { border-color: rgba(118, 160, 242, .56); box-shadow: 0 0 12px rgba(118, 160, 242, .11); }
}
@keyframes coverage-node-reach {
  0% { border-color: var(--pulse-line); box-shadow: none; }
  55% { border-color: var(--pulse-green); box-shadow: 0 0 18px rgba(88, 200, 142, .3); }
  100% { border-color: rgba(88, 200, 142, .76); box-shadow: 0 0 14px rgba(88, 200, 142, .15); }
}
@keyframes coverage-state-in { from { opacity: 0; transform: translateY(3px); } to { opacity: 1; transform: translateY(0); } }
@keyframes coverage-message-in { from { opacity: .52; } to { opacity: 1; } }
@keyframes document-scan {
  0% { opacity: 0; transform: translateY(0); }
  15%, 80% { opacity: .8; }
  100% { opacity: .35; transform: translateY(66px); }
}
@keyframes confidence-in {
  from { transform: scaleX(.12); }
  to { transform: scaleX(.76); }
}
@keyframes method-track {
  0%, 5% { background-position: 180% 0; opacity: 0; }
  12%, 76% { opacity: 1; }
  84%, 100% { background-position: -80% 0; opacity: 0; }
}
@keyframes method-track-vertical {
  0%, 5% { background-position: 0 180%; opacity: 0; }
  12%, 76% { opacity: 1; }
  84%, 100% { background-position: 0 -80%; opacity: 0; }
}
@keyframes phase-node-active {
  0%, 8%, 32%, 100% { border-color: var(--pulse-line); color: var(--silver-300); box-shadow: inset 0 0 0 8px rgba(201, 207, 218, .018), 0 0 0 5px rgba(201, 207, 218, .025); }
  13%, 25% { border-color: var(--pulse-blue); color: var(--silver-100); box-shadow: inset 0 0 12px rgba(71, 118, 208, .12), 0 0 18px rgba(118, 160, 242, .22); }
}
@keyframes phase-title-active {
  0%, 8%, 32%, 100% { color: var(--text-primary); text-shadow: none; }
  13%, 25% { color: var(--silver-100); text-shadow: 0 0 16px rgba(118, 160, 242, .26); }
}
@keyframes control-state {
  0%, 8%, 33%, 100% { opacity: .28; box-shadow: none; }
  13%, 27% { opacity: 1; box-shadow: 0 0 15px rgba(88, 200, 142, .12); }
}

/* Experiencias: selector compacto y cuatro proyectos */
.project-selector { display: flex; flex-wrap: wrap; gap: var(--space-2); padding-bottom: var(--space-7); }
.project-selector a { padding: var(--space-2) var(--space-3); border: 1px solid var(--border-strong); border-radius: 999px; background: var(--surface-2); color: var(--text-secondary); font-size: var(--fs-caption); font-weight: 600; text-decoration: none; }
.project-selector a:hover,
.project-selector a:focus-visible { border-color: var(--accent-blue-strong); color: var(--silver-100); }
.project-stack { gap: var(--space-9); }
.project-case { scroll-margin-top: 96px; align-items: center; }
.project-case .experience-item__copy { min-width: 0; }
.project-case .experience-item__copy > h3 { font-size: var(--fs-h3); }
.status-badge--success { border-color: var(--success); color: var(--success); }
.status-badge--proposal { border-color: var(--accent-blue-strong); color: var(--accent-blue-strong); }
.project-facts { display: grid; gap: var(--space-3); margin-top: var(--space-5); }
.project-facts div { padding-left: var(--space-4); border-left: 2px solid var(--silver-500); }
.project-facts dt { color: var(--silver-100); font-size: var(--fs-caption); font-weight: 700; text-transform: uppercase; letter-spacing: .05em; }
.project-facts dd { margin-top: var(--space-1); color: var(--text-secondary); }
.project-case details { margin-top: var(--space-5); border: 1px solid var(--border); border-radius: var(--radius-sm); background: var(--surface-2); }
.project-case summary { padding: var(--space-3) var(--space-4); color: var(--silver-300); font-weight: 600; cursor: pointer; }
.project-case summary:focus-visible { outline: 2px solid var(--accent-blue-strong); outline-offset: 3px; }
.project-case details p { margin: 0; padding: 0 var(--space-4) var(--space-4); }
.project-rural-visual { min-height: 360px; }
.rural-route-svg { position: absolute; inset: 0; width: 100%; height: 100%; }
.rural-route-svg path { fill: none; stroke: var(--accent-blue); stroke-width: 2; vector-effect: non-scaling-stroke; }
.rural-route-svg circle { fill: var(--surface-2); stroke: var(--silver-300); stroke-width: 2; }
.project-next { display: grid; gap: var(--space-6); }
.project-next .editorial-panel a { color: var(--accent-blue-strong); }
.service-origin-panel { display: grid; gap: var(--space-6); align-items: center; padding: var(--space-6); border: 1px solid var(--border-strong); border-radius: var(--radius-lg); background: radial-gradient(circle at 86% 20%, rgba(71, 118, 208, .12), transparent 36%), var(--surface-2); }
.service-origin-panel h2 { margin-top: var(--space-3); }
.service-origin-panel p { max-width: 680px; margin-top: var(--space-3); color: var(--text-secondary); }
.service-origin-panel__links { display: flex; flex-wrap: wrap; gap: var(--space-4); align-items: center; }
.service-origin-panel__links > a:not(.btn) { color: var(--accent-blue-strong); font-size: var(--fs-caption); font-weight: 600; }

@media (min-width: 640px) {
  .problem-grid,
  .evidence-links { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .capability-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .local-card { min-height: 350px; }
  .local-card--automation .automation-flow { min-height: 300px; }
}
@media (min-width: 900px) {
  .local-hero__grid { grid-template-columns: minmax(0, 1.08fr) minmax(420px, .92fr); }
  .local-principle__grid { grid-template-columns: minmax(0, 1.2fr) minmax(320px, .8fr); }
  .local-context { grid-template-columns: minmax(0, 1.15fr) minmax(320px, .85fr); }
  .faq-layout { grid-template-columns: minmax(280px, .72fr) minmax(0, 1.28fr); }
  .project-next { grid-template-columns: minmax(0, 1fr) minmax(360px, .72fr); align-items: stretch; }
  .service-origin-panel { grid-template-columns: minmax(0, 1fr) auto; }
}
@media (min-width: 960px) {
  .capability-grid {
    grid-template-columns: minmax(0, 1.16fr) minmax(320px, .84fr);
    grid-template-rows: repeat(3, minmax(210px, auto));
  }
  .local-card { min-height: 0; }
  .local-card--automation { grid-row: 1 / 4; padding: var(--space-6); }
  .local-card--integration { grid-column: 2; grid-row: 1; }
  .local-card--ai { grid-column: 2; grid-row: 2; }
  .local-card--trace { grid-column: 2; grid-row: 3; }
  .local-card--automation .automation-flow { min-height: 430px; margin-top: var(--space-7); }
  .local-card--automation .automation-flow ol { gap: 28px; }
}
@media (max-width: 639px) {
  .local-hero { padding-block: var(--space-7) var(--space-8); }
  .local-hero__actions .btn { width: 100%; }
  .operation-map { min-height: 610px; }
  .operation-map__coordinate--top { top: 24px; left: 24px; }
  .operation-map__coordinate--bottom { display: none; }
  .operation-map__flow {
    inset: 52px 24px 54px;
    grid-template-columns: 1fr;
    grid-template-rows: 68px 42px minmax(220px, 1fr) 42px 88px;
    justify-items: center;
  }
  .operation-origin { width: 68px; }
  .operation-route {
    width: 1px;
    height: 100%;
    background: linear-gradient(var(--pulse-line), rgba(118, 160, 242, .48));
  }
  .operation-route--output { background: linear-gradient(rgba(118, 160, 242, .48), rgba(88, 200, 142, .52)); }
  .operation-route::before,
  .operation-route::after { top: auto; left: -3px; }
  .operation-route::before { top: 0; }
  .operation-route::after { right: auto; bottom: 0; }
  .operation-route i {
    top: 0;
    left: -3px;
    width: 7px;
    height: 100%;
    background-position: 50% -10px;
  }
  .operation-map.is-pulse-active .operation-route i { animation-name: route-travel-vertical; }
  .vortex-core { width: min(100%, 230px); }
  .operation-result { width: min(100%, 196px); min-height: 82px; padding-top: 20px; }
  .operation-status { bottom: 17px; left: 24px; }
  .local-card { min-height: 0; }
  .automation-flow { min-height: 320px; }
  .implementation-line__rail {
    top: 44px;
    right: auto;
    bottom: 48px;
    left: 27px;
    width: 1px;
    height: auto;
  }
  .implementation-line__rail::before,
  .implementation-line__rail::after { top: auto; left: -2px; }
  .implementation-line__rail::before { top: 0; }
  .implementation-line__rail::after { right: auto; bottom: 0; }
  .implementation-line__rail span {
    inset: 0 -1px;
    background: linear-gradient(transparent 0 20%, var(--pulse-blue) 46%, transparent 72%);
    background-size: 100% 240%;
    background-position: 0 180%;
  }
  .implementation-line.is-pulse-active .implementation-line__rail span { animation-name: method-track-vertical; }
  .seo-local-page .implementation-line .phase-list { grid-template-columns: 1fr; gap: var(--space-6); }
  .seo-local-page .implementation-line .phase {
    grid-template-columns: 56px minmax(0, 1fr);
    gap: var(--space-4);
    min-height: 138px;
    padding: 0;
    text-align: left;
  }
  .phase__node { align-self: start; }
  .implementation-line .phase h3 { padding-top: 4px; }
  .phase__state { justify-content: center; }
  .project-selector { flex-wrap: nowrap; overflow-x: auto; padding-bottom: var(--space-5); scrollbar-width: thin; }
  .project-selector a { flex: 0 0 auto; }
  .project-case { scroll-margin-top: 76px; }
  .project-rural-visual { min-height: 440px; aspect-ratio: auto; }
  .rural-route-svg { display: none; }
}
@media (max-width: 359px) {
  .operation-map { min-height: 630px; }
  .operation-map__flow { inset-inline: 16px; }
  .operation-status { left: 18px; }
  .operation-status__label { display: none; }
  .ai-flow { grid-template-columns: 62px minmax(0, 1fr); gap: 12px; }
  .ai-flow__document { width: 60px; height: 84px; }
}
@media (prefers-reduced-motion: reduce) {
  .vn-card::after,
  .evidence-link,
  .local-card,
  .local-card__head > span,
  .phase__node,
  .implementation-line .phase h3 { transition: none !important; }
  .evidence-link:hover { transform: none; }
  .local-card:hover { transform: none; }
  .seo-local-page :is(
    .vortex-core__orbit,
    .vortex-core__ring,
    .vortex-core__center,
    .operation-origin__signal,
    .operation-route i,
    .operation-result,
    .operation-result__state,
    .operation-status__messages i,
    .local-card__head > span,
    .automation-flow__rail i,
    .automation-flow li span,
    .integration-flow__sync i,
    .integration-flow__sync::after,
    .integration-flow__group span,
    .integration-flow__group span::after,
    .integration-flow > small,
    .ai-flow__document > b,
    .ai-flow__confidence::after,
    .trace-flow li::after,
    .trace-flow::after,
    .trace-flow li,
    .trace-flow li::before,
    .trace-flow > strong,
    .implementation-line__rail span,
    .phase__node,
    .implementation-line .phase h3,
    .phase__state
  ) { animation: none !important; }
  .operation-route i { display: none; }
  .operation-result { border-color: rgba(88, 200, 142, .72); box-shadow: 0 0 14px rgba(88, 200, 142, .1); }
  .operation-result__state { opacity: 1; }
  .operation-status__messages i { display: none; opacity: 0; }
  .operation-status__messages i:last-child { display: block; opacity: 1; }
  .automation-flow__rail i { opacity: .5; background-position: 0 100%; }
  .integration-flow > small { opacity: .85; }
  .integration-flow__sync { border-color: rgba(88, 200, 142, .64); }
  .integration-flow__sync i { opacity: .72; transform: rotate(360deg); }
  .integration-flow__sync strong { color: var(--pulse-blue); text-shadow: 0 0 9px rgba(118, 160, 242, .4); }
  .integration-flow__group span { border-color: rgba(118, 160, 242, .34); color: var(--silver-300); }
  .integration-flow__group span::after { background: rgba(118, 160, 242, .52); box-shadow: 0 0 6px rgba(118, 160, 242, .22); }
  .trace-flow::after { transform: scaleY(1); }
  .trace-flow li:nth-child(1), .trace-flow li:nth-child(2) { color: var(--pulse-blue); }
  .trace-flow li:nth-child(3) { color: var(--pulse-amber); }
  .trace-flow li:nth-child(4) { color: var(--pulse-green); }
  .trace-flow li:nth-child(1)::before, .trace-flow li:nth-child(2)::before { border-color: var(--pulse-blue); }
  .trace-flow li:nth-child(1)::after, .trace-flow li:nth-child(2)::after { background: var(--pulse-blue); opacity: 1; }
  .trace-flow li:nth-child(3)::before { border-color: var(--pulse-amber); }
  .trace-flow li:nth-child(3)::after { background: var(--pulse-amber); opacity: 1; }
  .trace-flow li:nth-child(4)::before { border-color: var(--pulse-green); }
  .trace-flow li:nth-child(4)::after { background: var(--pulse-green); opacity: 1; }
  .trace-flow > strong { opacity: 1; }
  .ai-flow__document > b { opacity: .5; transform: translateY(50px); }
  .trace-flow li::after { opacity: .82; }
  .implementation-line__rail span {
    opacity: .48;
    background: linear-gradient(90deg, var(--pulse-blue), var(--pulse-green));
  }
  .phase__node { border-color: rgba(118, 160, 242, .52); }
  .phase--control .phase__node { border-color: rgba(88, 200, 142, .72); color: var(--pulse-green); }
  .phase__state { opacity: 1; }
}

/* Vista de QA local: replica el estado reduced-motion sin afectar producción. */
.seo-motion-reduced .seo-local-page :is(
  .vortex-core__orbit,
  .vortex-core__ring,
  .vortex-core__center,
  .operation-origin__signal,
  .operation-route i,
  .operation-result,
  .operation-result__state,
  .operation-status__messages i,
  .local-card__head > span,
  .automation-flow__rail i,
  .automation-flow li span,
  .integration-flow__sync i,
  .integration-flow__sync::after,
  .integration-flow__group span,
  .integration-flow__group span::after,
  .integration-flow > small,
  .ai-flow__document > b,
  .ai-flow__confidence::after,
  .trace-flow li::after,
  .trace-flow::after,
  .trace-flow li,
  .trace-flow li::before,
  .trace-flow > strong,
  .implementation-line__rail span,
  .phase__node,
  .implementation-line .phase h3,
  .phase__state
) { animation: none !important; }
.seo-motion-reduced .seo-local-page .operation-route i { display: none; }
.seo-motion-reduced .seo-local-page .operation-result { border-color: rgba(88, 200, 142, .72); box-shadow: 0 0 14px rgba(88, 200, 142, .1); }
.seo-motion-reduced .seo-local-page .operation-result__state { opacity: 1; }
.seo-motion-reduced .seo-local-page .operation-status__messages i { display: none; opacity: 0; }
.seo-motion-reduced .seo-local-page .operation-status__messages i:last-child { display: block; opacity: 1; }
.seo-motion-reduced .seo-local-page .automation-flow__rail i { opacity: .5; background-position: 0 100%; }
.seo-motion-reduced .seo-local-page .integration-flow > small { opacity: .85; }
.seo-motion-reduced .seo-local-page .integration-flow__sync { border-color: rgba(88, 200, 142, .64); }
.seo-motion-reduced .seo-local-page .integration-flow__sync i { opacity: .72; transform: rotate(360deg); }
.seo-motion-reduced .seo-local-page .integration-flow__sync strong { color: var(--pulse-blue); text-shadow: 0 0 9px rgba(118, 160, 242, .4); }
.seo-motion-reduced .seo-local-page .integration-flow__group span { border-color: rgba(118, 160, 242, .34); color: var(--silver-300); }
.seo-motion-reduced .seo-local-page .integration-flow__group span::after { background: rgba(118, 160, 242, .52); box-shadow: 0 0 6px rgba(118, 160, 242, .22); }
.seo-motion-reduced .seo-local-page .trace-flow::after { transform: scaleY(1); }
.seo-motion-reduced .seo-local-page .trace-flow li:nth-child(1), .seo-motion-reduced .seo-local-page .trace-flow li:nth-child(2) { color: var(--pulse-blue); }
.seo-motion-reduced .seo-local-page .trace-flow li:nth-child(3) { color: var(--pulse-amber); }
.seo-motion-reduced .seo-local-page .trace-flow li:nth-child(4) { color: var(--pulse-green); }
.seo-motion-reduced .seo-local-page .trace-flow li:nth-child(1)::before, .seo-motion-reduced .seo-local-page .trace-flow li:nth-child(2)::before { border-color: var(--pulse-blue); }
.seo-motion-reduced .seo-local-page .trace-flow li:nth-child(1)::after, .seo-motion-reduced .seo-local-page .trace-flow li:nth-child(2)::after { background: var(--pulse-blue); opacity: 1; }
.seo-motion-reduced .seo-local-page .trace-flow li:nth-child(3)::before { border-color: var(--pulse-amber); }
.seo-motion-reduced .seo-local-page .trace-flow li:nth-child(3)::after { background: var(--pulse-amber); opacity: 1; }
.seo-motion-reduced .seo-local-page .trace-flow li:nth-child(4)::before { border-color: var(--pulse-green); }
.seo-motion-reduced .seo-local-page .trace-flow li:nth-child(4)::after { background: var(--pulse-green); opacity: 1; }
.seo-motion-reduced .seo-local-page .trace-flow > strong { opacity: 1; }
.seo-motion-reduced .seo-local-page .ai-flow__document > b { opacity: .5; transform: translateY(50px); }
.seo-motion-reduced .seo-local-page .trace-flow li::after { opacity: .82; }
.seo-motion-reduced .seo-local-page .implementation-line__rail span {
  opacity: .48;
  background: linear-gradient(90deg, var(--pulse-blue), var(--pulse-green));
}
.seo-motion-reduced .seo-local-page .phase__node { border-color: rgba(118, 160, 242, .52); }
.seo-motion-reduced .seo-local-page .phase--control .phase__node { border-color: rgba(88, 200, 142, .72); color: var(--pulse-green); }
.seo-motion-reduced .seo-local-page .phase__state { opacity: 1; }
