/* AP Neural Web — Solutions / V6 — decision weave + central scroll-drawn AP */

.page-solutions {
    --solution-wine: #b5204a;
    --solution-line: rgba(151,154,162,.16);
    --solution-surface: rgba(16,17,20,.78);
    background: #08090b;
}

.solutions-main {
    position: relative;
    z-index: 2;
}

/* ================================================================
   DECISION WEAVE — persistent background / scroll driven
   Distinct from the Home map: this is a woven field that converges,
   opens and crosses as the visitor moves through Soluciones.
================================================================ */

.solutions-field {
    --field-grid-x: 0px;
    --field-grid-y: 0px;
    --field-grid-r: 0deg;
    --field-glow-x: 54%;
    --field-glow-y: 44%;
    --field-glow-scale: 1;
    --field-refraction-x: 0px;
    --field-refraction-r: 0deg;
    --field-weave-x: 0px;
    --field-weave-y: 0px;
    --field-weave-r: 0deg;
    --field-weave-scale: 1;
    --field-aperture-x: 0px;
    --field-aperture-y: 0px;
    --field-aperture-r: 0deg;
    --field-aperture-scale: 1;
    position: fixed;
    inset: 0;
    z-index: 0;
    overflow: hidden;
    pointer-events: none;
    opacity: .82;
    isolation: isolate;
}

.solutions-field::after {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 4;
    pointer-events: none;
    background:
        radial-gradient(circle at 50% 48%, transparent 0 34%, rgba(8,9,11,.12) 62%, rgba(8,9,11,.46) 100%),
        linear-gradient(180deg, rgba(8,9,11,.16), transparent 18% 82%, rgba(8,9,11,.34));
}

.solutions-field__grid {
    position: absolute;
    inset: -12%;
    z-index: 0;
    background-image:
        linear-gradient(rgba(151,154,162,.032) 1px, transparent 1px),
        linear-gradient(90deg, rgba(151,154,162,.032) 1px, transparent 1px);
    background-size: 76px 76px;
    -webkit-mask-image: radial-gradient(ellipse at 56% 46%, #000 0 38%, transparent 82%);
    mask-image: radial-gradient(ellipse at 56% 46%, #000 0 38%, transparent 82%);
    transform:
        translate3d(var(--field-grid-x), var(--field-grid-y), 0)
        rotate(var(--field-grid-r));
    transform-origin: center;
    will-change: transform;
}

.solutions-field__glow {
    position: absolute;
    z-index: 1;
    left: var(--field-glow-x);
    top: var(--field-glow-y);
    width: min(68vw, 64rem);
    aspect-ratio: 1;
    border-radius: 50%;
    background:
        radial-gradient(circle at 50% 50%, rgba(181,32,74,.085), rgba(88,11,35,.035) 34%, transparent 68%);
    transform: translate(-50%, -50%) scale(var(--field-glow-scale));
    filter: blur(1px);
    will-change: left, top, transform;
}

.solutions-field__refraction {
    position: absolute;
    z-index: 2;
    left: 50%;
    top: -18%;
    width: 16rem;
    height: 136%;
    opacity: .22;
    background:
        linear-gradient(90deg,
            transparent 0 20%,
            rgba(243,243,241,.025) 30%,
            rgba(181,32,74,.07) 48%,
            rgba(243,243,241,.018) 61%,
            transparent 78% 100%);
    transform:
        translateX(calc(-50% + var(--field-refraction-x)))
        rotate(var(--field-refraction-r));
    filter: blur(7px);
    -webkit-mask-image: linear-gradient(180deg, transparent, #000 14% 86%, transparent);
    mask-image: linear-gradient(180deg, transparent, #000 14% 86%, transparent);
    will-change: transform;
}

.solutions-field__svg {
    position: absolute;
    inset: 0;
    z-index: 3;
    width: 100%;
    height: 100%;
    overflow: visible;
}

.solutions-field__weave {
    transform:
        translate(var(--field-weave-x), var(--field-weave-y))
        rotate(var(--field-weave-r))
        scale(var(--field-weave-scale));
    transform-box: fill-box;
    transform-origin: center;
    will-change: transform;
}

.solutions-field__thread {
    fill: none;
    stroke-linecap: round;
    stroke-linejoin: round;
    vector-effect: non-scaling-stroke;
    stroke-dasharray: 1;
    stroke-dashoffset: 1;
    opacity: .76;
}

.solutions-field__thread--a {
    stroke: url(#solution-field-wine);
    stroke-width: 1.25;
}

.solutions-field__thread--b {
    stroke: rgba(151,154,162,.18);
    stroke-width: .9;
}

.solutions-field__thread--c {
    stroke: url(#solution-field-white);
    stroke-width: .85;
}

.solutions-field__thread--d {
    stroke: rgba(181,32,74,.16);
    stroke-width: .8;
}

.solutions-field__aperture {
    fill: none;
    stroke: rgba(151,154,162,.10);
    stroke-width: .8;
    vector-effect: non-scaling-stroke;
    transform:
        translate(var(--field-aperture-x), var(--field-aperture-y))
        rotate(var(--field-aperture-r))
        scale(var(--field-aperture-scale));
    transform-box: fill-box;
    transform-origin: center;
    will-change: transform, opacity;
}

.solutions-field__aperture ellipse:nth-child(1) {
    stroke: rgba(181,32,74,.14);
    stroke-dasharray: 12 28;
}

.solutions-field__aperture ellipse:nth-child(2) {
    stroke: rgba(243,243,241,.065);
    stroke-dasharray: 4 19;
}

.solutions-field__aperture ellipse:nth-child(3) {
    stroke: rgba(181,32,74,.20);
    stroke-dasharray: 2 13;
}

.solutions-field__aperture path {
    stroke: rgba(243,243,241,.065);
    stroke-dasharray: 6 20;
}

.solutions-field__gates rect {
    fill: rgba(8,9,11,.10);
    stroke: rgba(151,154,162,.12);
    stroke-width: .8;
    vector-effect: non-scaling-stroke;
    transform-box: fill-box;
    transform-origin: center;
    opacity: 0;
    will-change: transform, opacity;
}

.solutions-field__gates rect:nth-child(2n) {
    stroke: rgba(181,32,74,.16);
}

.solutions-field__cuts path {
    fill: none;
    stroke: rgba(243,243,241,.08);
    stroke-width: .8;
    stroke-linecap: round;
    vector-effect: non-scaling-stroke;
    stroke-dasharray: 1;
    stroke-dashoffset: 1;
    opacity: .72;
}

/* ================================================================
   CENTRAL AP TRACE — fixed, subtle, scroll-synchronised
   Down: the uploaded AP geometry is progressively drawn.
   Up: drawing stays intact while the mark moves in shallow 3D.
================================================================ */

.solution-logo-field {
    --logo-field-opacity: .18;
    --logo-field-x: 0px;
    --logo-field-y: 0px;
    --logo-field-rx: 0deg;
    --logo-field-ry: 0deg;
    --logo-field-rz: 0deg;
    --logo-field-scale: 1;
    --logo-glint: 0;
    --logo-glint-shift: 0px;
    --logo-ghost: 0;
    --logo-handoff: 0;
    position: fixed;
    inset: 0;
    z-index: 1;
    display: grid;
    place-items: center;
    overflow: hidden;
    pointer-events: none;
    perspective: 1100px;
    perspective-origin: 50% 50%;
}

.solution-logo-field::before {
    content: "";
    position: absolute;
    left: 50%;
    top: 50%;
    width: min(46vw, 42rem);
    aspect-ratio: 1;
    border-radius: 50%;
    background:
        radial-gradient(circle, rgba(181,32,74,calc(.035 + var(--logo-handoff) * .075)), rgba(8,9,11,0) 68%);
    transform: translate(-50%, -50%);
    filter: blur(6px);
}

.solution-logo-field__scene {
    position: relative;
    width: min(38vw, 34rem);
    aspect-ratio: 610 / 725;
    opacity: var(--logo-field-opacity);
    transform:
        translate3d(var(--logo-field-x), var(--logo-field-y), 0)
        rotateX(var(--logo-field-rx))
        rotateY(var(--logo-field-ry))
        rotateZ(var(--logo-field-rz))
        scale(var(--logo-field-scale));
    transform-style: preserve-3d;
    transform-origin: center;
    will-change: transform, opacity;
}

.solution-logo-field__svg {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    overflow: visible;
    filter: drop-shadow(0 0 1.1rem rgba(88,11,35,.08));
}

.solution-logo-field__ghost {
    opacity: var(--logo-ghost);
    will-change: opacity;
}

.solution-logo-field__ghost-path {
    fill: rgba(243,243,241,.64);
    stroke: none;
}

.solution-logo-field__ghost-path--gray {
    fill: rgba(151,154,162,.52);
}

.solution-logo-field__ghost-path--wine {
    fill: rgba(181,32,74,.72);
}

.solution-logo-field__ghost-path--wordmark {
    fill: rgba(243,243,241,.72);
}

.solution-logo-field__path {
    fill: none;
    stroke-linecap: round;
    stroke-linejoin: round;
    stroke-dasharray: 1;
    stroke-dashoffset: 1;
    opacity: .9;
    will-change: stroke-dashoffset, opacity;
}

.solution-logo-field__path--soft {
    stroke: rgba(243,243,241,.60);
    stroke-width: 25;
}

.solution-logo-field__path--letter {
    stroke: rgba(243,243,241,.82);
    stroke-width: 23;
}

.solution-logo-field__path--wine {
    stroke: rgba(181,32,74,.88);
    stroke-width: 30;
    filter: drop-shadow(0 0 28px rgba(181,32,74,.22));
}

.solution-logo-field__path--gray {
    stroke: rgba(151,154,162,.66);
    stroke-width: 18;
}

.solution-logo-field__path--wordmark {
    stroke: rgba(243,243,241,.78);
    stroke-width: 11;
    fill: rgba(243,243,241,.82);
    fill-opacity: 0;
}

.solution-logo-field__path--wordmark.solution-logo-field__path--wine {
    stroke: rgba(181,32,74,.90);
    fill: rgba(181,32,74,.90);
    stroke-width: 13;
}

.solution-logo-field__glint {
    position: absolute;
    left: 50%;
    top: 50%;
    width: 6.4rem;
    height: 165%;
    opacity: var(--logo-glint);
    background: linear-gradient(90deg,
        transparent 0%,
        rgba(243,243,241,.025) 26%,
        rgba(243,243,241,.46) 49%,
        rgba(181,32,74,.18) 54%,
        transparent 76%);
    filter: blur(1.8px);
    mix-blend-mode: screen;
    transform:
        translate(calc(-50% + var(--logo-glint-shift)), -50%)
        rotate(19deg);
    -webkit-mask-image: linear-gradient(180deg, transparent, #000 18% 82%, transparent);
    mask-image: linear-gradient(180deg, transparent, #000 18% 82%, transparent);
    will-change: transform, opacity;
}

.solution-logo-field__glint--b {
    width: 2rem;
    height: 138%;
    opacity: var(--logo-glint);
    background: linear-gradient(90deg,
        transparent 0%,
        rgba(243,243,241,.012) 34%,
        rgba(181,32,74,.12) 50%,
        transparent 72%);
    transform:
        translate(calc(-50% - var(--logo-glint-shift)), -50%)
        rotate(-27deg);
}

/* ================================================================
   HERO
================================================================ */

.solutions-hero {
    min-height: 100vh;
    min-height: 100svh;
    display: flex;
    align-items: center;
    padding-top: clamp(7rem, 10vw, 9rem);
    overflow: hidden;
}

.solutions-hero__grid {
    display: grid;
    grid-template-columns: minmax(0, 1.02fr) minmax(26rem, .98fr);
    align-items: center;
    gap: clamp(3rem, 7vw, 8rem);
}

.solutions-hero__copy {
    position: relative;
    z-index: 3;
    max-width: 52rem;
}

.solutions-hero__title {
    max-width: 10.5ch;
    margin-bottom: 1.8rem;
    font-size: clamp(3.5rem, 6.8vw, 7rem);
    font-weight: 650;
    line-height: .9;
    letter-spacing: -.06em;
    text-transform: uppercase;
}

.solutions-hero__title span,
.solution-title span,
.solution-cta h2 span {
    color: var(--color-accent-hover);
}

.solutions-hero__lead,
.solution-lead {
    max-width: 41rem;
    font-size: clamp(1rem, .95rem + .28vw, 1.22rem);
    line-height: 1.7;
    color: var(--color-text-muted);
}

.solutions-hero__actions {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 1.2rem 1.6rem;
    margin-top: 2rem;
}

/* ================================================================
   ROUTER VISUAL
================================================================ */

.decision-router {
    position: relative;
    justify-self: end;
    width: min(100%, 36rem);
    aspect-ratio: 1;
    perspective: 1000px;
}

.decision-router::before,
.decision-router::after {
    content: "";
    position: absolute;
    border-radius: 50%;
    pointer-events: none;
}

.decision-router::before {
    inset: 13%;
    border: 1px dashed rgba(151,154,162,.14);
    border-top-color: rgba(181,32,74,.46);
    border-left-color: rgba(181,32,74,.08);
    box-shadow: inset 0 0 3rem rgba(139,21,56,.035);
    animation: solutionRouterSpinReverse 34s linear infinite;
}

.decision-router::after {
    inset: 29%;
    border: 1px dashed rgba(181,32,74,.22);
    border-right-color: rgba(243,243,241,.14);
    border-bottom-color: rgba(181,32,74,.48);
    animation: solutionRouterSpin 22s linear infinite;
}

.decision-router__input,
.decision-router__route {
    position: absolute;
    display: flex;
    flex-direction: column;
    gap: .18rem;
    font-family: var(--font-mono);
    text-transform: uppercase;
    transition:
        opacity 360ms var(--ease-ap),
        color 360ms var(--ease-ap),
        border-color 360ms var(--ease-ap),
        transform 520ms var(--ease-ap),
        background 360ms var(--ease-ap);
}

.decision-router__input span,
.decision-router__route span {
    font-size: .58rem;
    letter-spacing: .14em;
    color: rgba(151,154,162,.62);
}

.decision-router__input strong,
.decision-router__route strong {
    font-size: .68rem;
    letter-spacing: .09em;
}

.decision-router__input {
    left: 0;
    top: 47%;
    transform: translateY(-50%);
}

.decision-router__input::after {
    content: "";
    position: absolute;
    left: calc(100% + .8rem);
    top: 50%;
    width: 5.5rem;
    height: 1px;
    background: linear-gradient(90deg, var(--color-accent-hover), rgba(181,32,74,0));
}

.decision-router__core {
    position: absolute;
    left: 50%;
    top: 50%;
    display: grid;
    place-items: center;
    width: 6.4rem;
    aspect-ratio: 1;
    border: 1px solid rgba(181,32,74,.55);
    border-radius: 50%;
    transform: translate(-50%, -50%);
    box-shadow: 0 0 3rem rgba(139,21,56,.08);
}

.decision-router__core::before {
    content: "";
    position: absolute;
    inset: .85rem;
    border: 1px solid rgba(243,243,241,.10);
    border-radius: 50%;
}

.decision-router__core span {
    position: relative;
    z-index: 2;
    font-family: var(--font-display);
    font-weight: 700;
    font-size: 1.28rem;
    letter-spacing: -.06em;
}

.decision-router__core i {
    position: absolute;
    width: .48rem;
    aspect-ratio: 1;
    background: var(--color-accent-hover);
    border-radius: 50%;
    box-shadow: 0 0 1rem rgba(181,32,74,.6);
    animation: solutionCorePulse 2.8s ease-in-out infinite;
}

.decision-router__route {
    min-width: 8.6rem;
    padding: .65rem .72rem;
    color: rgba(195,197,202,.55);
    background: rgba(8,9,11,.42);
    border: 1px solid rgba(151,154,162,.12);
    border-radius: 7px;
}

.decision-router__route::before {
    content: "";
    position: absolute;
    right: 100%;
    top: 50%;
    width: var(--route-length, 5rem);
    height: 1px;
    background: linear-gradient(90deg, rgba(151,154,162,.04), rgba(151,154,162,.22));
    transform-origin: right;
}

.decision-router__route--web { right: 2%; top: 13%; --route-length: 6rem; }
.decision-router__route--system { right: -4%; top: 33%; --route-length: 7rem; }
.decision-router__route--automation { right: -4%; top: 53%; --route-length: 7rem; }
.decision-router__route--product { right: 2%; top: 73%; --route-length: 6rem; }
.decision-router__route--evolution { right: 30%; bottom: -2%; --route-length: 3rem; }

.page-solutions[data-solutions-mode="web"] [data-router-route="web"],
.page-solutions[data-solutions-mode="system"] [data-router-route="system"],
.page-solutions[data-solutions-mode="automation"] [data-router-route="automation"],
.page-solutions[data-solutions-mode="product"] [data-router-route="product"],
.page-solutions[data-solutions-mode="evolution"] [data-router-route="evolution"] {
    color: var(--color-text);
    background: rgba(139,21,56,.13);
    border-color: rgba(181,32,74,.66);
    transform: translateX(.35rem);
    box-shadow: 0 0 2rem rgba(139,21,56,.08);
}

.page-solutions[data-solutions-mode="web"] [data-router-route="web"]::before,
.page-solutions[data-solutions-mode="system"] [data-router-route="system"]::before,
.page-solutions[data-solutions-mode="automation"] [data-router-route="automation"]::before,
.page-solutions[data-solutions-mode="product"] [data-router-route="product"]::before,
.page-solutions[data-solutions-mode="evolution"] [data-router-route="evolution"]::before {
    background: linear-gradient(90deg, rgba(181,32,74,.10), var(--color-accent-hover));
    box-shadow: 0 0 .8rem rgba(181,32,74,.18);
}

/* ================================================================
   VISUAL ORBITS — optical / mechanical, no labels or particles
   The outer object responds to scroll; inner layers rotate slowly
   in opposite directions and create a subtle moiré interference.
================================================================ */

.solution-orbit {
    --orbit-scroll-x: 0px;
    --orbit-scroll-y: 0px;
    --orbit-scroll-rotate: 0deg;
    --orbit-scroll-scale: 1;
    --orbit-scroll-opacity: .34;
    position: absolute;
    z-index: 0;
    width: clamp(13rem, 22vw, 23rem);
    aspect-ratio: 1;
    border-radius: 50%;
    opacity: var(--orbit-scroll-opacity);
    pointer-events: none;
    isolation: isolate;
    transform:
        translate3d(var(--orbit-scroll-x), var(--orbit-scroll-y), 0)
        rotate(var(--orbit-scroll-rotate))
        scale(var(--orbit-scroll-scale));
    transform-origin: center;
    filter:
        drop-shadow(0 0 2.4rem rgba(139,21,56,.055))
        contrast(1.04);
    will-change: transform, opacity;
}

.solution-orbit::before,
.solution-orbit::after,
.solution-orbit > i,
.solution-orbit > i::before,
.solution-orbit > i::after {
    content: "";
    position: absolute;
    border-radius: 50%;
}

.solution-orbit::before {
    inset: 0;
    background: conic-gradient(
        from 22deg,
        rgba(181,32,74,.03) 0 8%,
        rgba(181,32,74,.62) 8% 11.5%,
        rgba(151,154,162,.07) 11.5% 33%,
        transparent 33% 53%,
        rgba(243,243,241,.10) 53% 55%,
        rgba(151,154,162,.05) 55% 78%,
        rgba(181,32,74,.36) 78% 82%,
        transparent 82% 100%
    );
    -webkit-mask: radial-gradient(circle, transparent 0 67%, #000 68% 69.2%, transparent 70.2%);
    mask: radial-gradient(circle, transparent 0 67%, #000 68% 69.2%, transparent 70.2%);
}

.solution-orbit::after {
    inset: 17%;
    background: conic-gradient(
        from 190deg,
        rgba(151,154,162,.04) 0 20%,
        rgba(181,32,74,.46) 20% 24%,
        transparent 24% 49%,
        rgba(243,243,241,.085) 49% 53%,
        rgba(151,154,162,.055) 53% 77%,
        rgba(181,32,74,.28) 77% 81%,
        transparent 81% 100%
    );
    -webkit-mask: radial-gradient(circle, transparent 0 63%, #000 64% 65.5%, transparent 66.5%);
    mask: radial-gradient(circle, transparent 0 63%, #000 64% 65.5%, transparent 66.5%);
}

.solution-orbit > i {
    inset: 35%;
    border: 1px dashed rgba(151,154,162,.13);
    border-top-color: rgba(181,32,74,.42);
    border-right-color: rgba(243,243,241,.06);
}

/* Optical interference: nearly invisible until the rings cross. */
.solution-orbit > i::before {
    inset: -220%;
    background: repeating-conic-gradient(
        from 0deg,
        rgba(181,32,74,.11) 0 .48deg,
        transparent .48deg 5.8deg,
        rgba(243,243,241,.035) 5.8deg 6.15deg,
        transparent 6.15deg 11.5deg
    );
    -webkit-mask: radial-gradient(circle, transparent 0 46%, #000 48% 50%, transparent 52% 100%);
    mask: radial-gradient(circle, transparent 0 46%, #000 48% 50%, transparent 52% 100%);
    opacity: .42;
    animation: solutionOrbitMoiré 17s linear infinite;
}

.solution-orbit > i::after {
    inset: -145%;
    background: repeating-radial-gradient(
        circle,
        transparent 0 9%,
        rgba(151,154,162,.045) 9.5% 10%,
        transparent 10.5% 20%,
        rgba(181,32,74,.055) 20.5% 21%,
        transparent 21.5% 31%
    );
    border: 1px solid rgba(243,243,241,.035);
    opacity: .55;
    animation: solutionOrbitLens 7.5s ease-in-out infinite alternate;
}

.solution-orbit--cw::before,
.solution-orbit--ccw::after {
    animation: solutionOrbitClockwise 34s linear infinite;
}

.solution-orbit--cw::after,
.solution-orbit--ccw::before {
    animation: solutionOrbitCounter 25s linear infinite;
}

.solution-orbit--cw > i {
    animation: solutionOrbitCounter 19s linear infinite;
}

.solution-orbit--ccw > i {
    animation: solutionOrbitClockwise 21s linear infinite;
}

.solution-orbit--signals {
    right: 4%;
    top: 12%;
    --orbit-scroll-opacity: .34;
}

.solution-orbit--response {
    left: -5%;
    bottom: 5%;
    width: clamp(15rem, 25vw, 27rem);
    --orbit-scroll-opacity: .27;
}

.solution-orbit--routes {
    right: 3%;
    top: 5%;
    width: clamp(12rem, 18vw, 20rem);
    --orbit-scroll-opacity: .30;
}

.solution-orbit--criteria {
    left: 3%;
    bottom: 7%;
    width: clamp(13rem, 20vw, 22rem);
    --orbit-scroll-opacity: .25;
}

.solution-orbit--result {
    right: 5%;
    bottom: 6%;
    width: clamp(14rem, 22vw, 24rem);
    --orbit-scroll-opacity: .28;
}

/* ================================================================
   SHARED SECTION TYPOGRAPHY
================================================================ */

.solution-section {
    position: relative;
    min-height: 86vh;
    display: flex;
    align-items: center;
}

.solution-section > .ap-container {
    position: relative;
    z-index: 2;
}

.solution-section::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: -1;
    pointer-events: none;
    background: linear-gradient(90deg, rgba(8,9,11,.82), rgba(8,9,11,.30) 54%, rgba(8,9,11,.11));
}

.solution-layout,
.criteria-grid,
.result-grid {
    width: 100%;
}

.solution-copy {
    max-width: 48rem;
}

.solution-copy--wide {
    max-width: 62rem;
}

.solution-title {
    max-width: 13ch;
    margin-bottom: 1.45rem;
    font-size: clamp(2.7rem, 5vw, 5.7rem);
    font-weight: 620;
    line-height: .94;
    letter-spacing: -.045em;
    text-transform: uppercase;
}

/* ================================================================
   SIGNAL SELECTOR
================================================================ */

.solution-signal-grid {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: .65rem;
    margin-top: clamp(2.5rem, 5vw, 4rem);
}

.solution-signal {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: .75rem;
    min-height: 15rem;
    padding: 1.15rem;
    text-align: left;
    color: var(--color-text);
    background: rgba(16,17,20,.72);
    border: 1px solid rgba(151,154,162,.15);
    border-radius: 9px;
    cursor: pointer;
    overflow: hidden;
    transition:
        transform 360ms var(--ease-ap),
        border-color 360ms var(--ease-ap),
        background 360ms var(--ease-ap),
        box-shadow 360ms var(--ease-ap);
}

.solution-signal::after {
    content: "";
    position: absolute;
    left: 0;
    bottom: 0;
    width: 100%;
    height: 2px;
    background: var(--color-accent-hover);
    transform: scaleX(0);
    transform-origin: left;
    transition: transform 480ms var(--ease-ap);
}

.solution-signal > span {
    font-family: var(--font-mono);
    font-size: .62rem;
    letter-spacing: .11em;
    color: var(--color-accent-hover);
}

.solution-signal strong {
    font-family: var(--font-display);
    font-size: clamp(1.08rem, 1rem + .25vw, 1.3rem);
    line-height: 1.12;
    font-weight: 560;
}

.solution-signal small {
    margin-top: auto;
    font-family: var(--font-mono);
    font-size: .58rem;
    line-height: 1.5;
    letter-spacing: .08em;
    color: rgba(151,154,162,.68);
    text-transform: uppercase;
}

.solution-signal:hover,
.solution-signal:focus-visible,
.solution-signal.is-active {
    --motion-hover-y: -.28rem;
    border-color: rgba(181,32,74,.52);
    background: rgba(24,17,20,.84);
    box-shadow: 0 1rem 3rem rgba(0,0,0,.18);
}

.solution-signal.is-active::after {
    transform: scaleX(1);
}

/* ================================================================
   RESPONSE ENGINE
================================================================ */

.solution-section--response {
    min-height: 100vh;
}

.response-stage {
    position: relative;
    padding: clamp(1.3rem, 3vw, 2.4rem);
    background:
        radial-gradient(circle at 84% 10%, rgba(139,21,56,.10), transparent 28%),
        rgba(12,13,16,.84);
    border: 1px solid rgba(151,154,162,.16);
    border-radius: 14px;
    box-shadow: 0 2rem 7rem rgba(0,0,0,.16);
}

.response-stage__meta {
    display: flex;
    justify-content: space-between;
    gap: 1rem;
    padding-bottom: 1rem;
    font-family: var(--font-mono);
    font-size: .62rem;
    letter-spacing: .12em;
    color: rgba(151,154,162,.65);
    text-transform: uppercase;
    border-bottom: 1px solid rgba(151,154,162,.12);
}

.response-stage__meta strong {
    color: var(--color-accent-hover);
    font-weight: 500;
}

.response-stage__body {
    display: grid;
    grid-template-columns: minmax(0, 1.2fr) minmax(0, .9fr) minmax(0, 1fr);
    gap: clamp(2rem, 5vw, 5rem);
    padding-block: clamp(3rem, 7vw, 6rem);
}

.response-stage__body > div {
    position: relative;
}

.response-stage__body > div + div::before {
    content: "";
    position: absolute;
    left: calc(clamp(2rem, 5vw, 5rem) / -2);
    top: 0;
    bottom: 0;
    width: 1px;
    background: rgba(151,154,162,.10);
}

.response-stage__body span {
    display: block;
    margin-bottom: .9rem;
    font-family: var(--font-mono);
    font-size: .62rem;
    letter-spacing: .11em;
    color: rgba(151,154,162,.65);
    text-transform: uppercase;
}

.response-stage__question h2 {
    margin: 0;
    max-width: 10ch;
    font-size: clamp(2.3rem, 4vw, 4.8rem);
    line-height: .94;
    letter-spacing: -.04em;
    text-transform: uppercase;
}

.response-stage__analysis p,
.response-stage__direction p {
    margin: 0;
    color: var(--color-text-muted);
}

.response-stage__direction strong {
    display: block;
    margin-bottom: .9rem;
    font-family: var(--font-display);
    font-size: clamp(1.5rem, 2.5vw, 2.6rem);
    color: var(--color-accent-hover);
}

.response-stage__rail {
    display: grid;
    grid-template-columns: auto 1fr auto 1fr auto;
    align-items: center;
    gap: .75rem;
}

.response-stage__rail span {
    width: .5rem;
    aspect-ratio: 1;
    background: var(--color-accent-hover);
    border-radius: 50%;
}

.response-stage__rail i {
    height: 1px;
    background: linear-gradient(90deg, var(--color-accent-hover), rgba(151,154,162,.18));
    transform: scaleX(var(--motion-progress, 1));
    transform-origin: left;
}

.response-stage__rail span {
    opacity: var(--motion-progress, 1);
    transform: scale(var(--motion-progress, 1));
}

/* ================================================================
   ROUTES
================================================================ */

.solution-routes {
    margin-top: 3rem;
    border-top: 1px solid rgba(151,154,162,.16);
}

.solution-route {
    position: relative;
    display: grid;
    grid-template-columns: 5rem minmax(0, 1fr) 3.5rem;
    align-items: center;
    gap: 1.5rem;
    min-height: 11rem;
    padding: 1.8rem 0;
    border-bottom: 1px solid rgba(151,154,162,.16);
    transition:
        background 320ms var(--ease-ap),
        padding-inline 420ms var(--ease-ap);
}

.solution-route:hover,
.solution-route:focus-within,
.solution-route.is-related {
    padding-inline: 1rem;
    background: linear-gradient(90deg, rgba(139,21,56,.08), transparent 72%);
}

.solution-route__index {
    font-family: var(--font-mono);
    font-size: .7rem;
    color: var(--color-accent-hover);
}

.solution-route__body {
    display: grid;
    grid-template-columns: minmax(15rem, .82fr) minmax(0, 1.18fr);
    grid-template-areas:
        "eyebrow eyebrow"
        "title copy";
    align-items: start;
    gap: .9rem clamp(1.5rem, 3vw, 4rem);
}

.solution-route__body > span {
    grid-area: eyebrow;
    max-width: 34rem;
    font-family: var(--font-mono);
    font-size: .62rem;
    line-height: 1.7;
    letter-spacing: .10em;
    color: rgba(151,154,162,.7);
    text-transform: uppercase;
}

.solution-route h3 {
    grid-area: title;
    max-width: 11ch;
    margin: 0;
    font-size: clamp(1.7rem, 2.6vw, 3rem);
    line-height: .98;
    font-weight: 560;
    text-transform: uppercase;
}

.solution-route p {
    grid-area: copy;
    max-width: 42rem;
    margin: 0;
    padding-top: .18rem;
    color: var(--color-text-muted);
    line-height: 1.72;
}

.solution-route__link {
    display: grid;
    place-items: center;
    width: 2.7rem;
    aspect-ratio: 1;
    justify-self: end;
    color: var(--color-accent-hover);
    border: 1px solid rgba(181,32,74,.38);
    border-radius: 50%;
    transform: rotate(var(--motion-arrow-rotate, 0deg));
    transition:
        background 320ms var(--ease-ap),
        color 320ms var(--ease-ap);
}

.solution-route__link:hover,
.solution-route__link:focus-visible {
    transform: rotate(45deg);
    color: #fff;
    background: var(--color-accent);
}

/* ================================================================
   CRITERIA
================================================================ */

.solution-section--criteria::before {
    background: linear-gradient(270deg, rgba(8,9,11,.84), rgba(8,9,11,.28) 60%, rgba(8,9,11,.10));
}

.criteria-grid {
    display: grid;
    grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr);
    gap: clamp(3rem, 8vw, 9rem);
}

.criteria-grid__intro {
    align-self: start;
    position: sticky;
    top: 8rem;
}

.criteria-list {
    border-top: 1px solid rgba(151,154,162,.16);
}

.criteria-list article {
    position: relative;
    padding: 2rem 0 2.2rem 3.5rem;
    border-bottom: 1px solid rgba(151,154,162,.16);
}

.criteria-list article > span {
    position: absolute;
    left: 0;
    top: 2.25rem;
    font-family: var(--font-mono);
    font-size: .62rem;
    color: var(--color-accent-hover);
}

.criteria-list h3 {
    margin-bottom: .8rem;
    font-size: clamp(1.45rem, 2.5vw, 2.5rem);
    font-weight: 560;
}

.criteria-list p {
    max-width: 42rem;
    margin: 0;
    color: var(--color-text-muted);
}

/* ================================================================
   BUILDABLE RAIL
================================================================ */

.buildable-rail {
    position: relative;
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 1rem;
    margin: 3.5rem 0 0;
    padding: 0;
    list-style: none;
}

.buildable-rail::before {
    content: "";
    position: absolute;
    left: 4%;
    right: 4%;
    top: 1.1rem;
    height: 1px;
    background: linear-gradient(90deg, var(--color-accent-hover), rgba(151,154,162,.20));
}

.buildable-rail li {
    position: relative;
    z-index: 2;
    padding-top: 3.5rem;
}

.buildable-rail li > span {
    position: absolute;
    top: .4rem;
    left: 0;
    display: grid;
    place-items: center;
    width: 1.45rem;
    aspect-ratio: 1;
    font-family: var(--font-mono);
    font-size: .52rem;
    background: #08090b;
    color: var(--color-accent-hover);
    border: 1px solid rgba(181,32,74,.55);
    border-radius: 50%;
}

.buildable-rail strong {
    display: block;
    margin-bottom: .55rem;
    font-family: var(--font-display);
    text-transform: uppercase;
}

.buildable-rail p {
    margin: 0;
    font-size: .92rem;
    color: var(--color-text-muted);
}

/* ================================================================
   RESULT
================================================================ */

.result-grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: clamp(3rem, 8vw, 9rem);
    align-items: center;
}

.result-statements {
    border-top: 1px solid rgba(151,154,162,.16);
}

.result-statements p {
    display: grid;
    grid-template-columns: 2rem minmax(0, 1fr);
    gap: 1.1rem;
    margin: 0;
    padding: 1.35rem 0;
    color: var(--color-text-soft);
    border-bottom: 1px solid rgba(151,154,162,.16);
}

.result-statements span {
    font-family: var(--font-mono);
    font-size: .58rem;
    color: var(--color-accent-hover);
}

/* ================================================================
   CTA
================================================================ */

.solution-section--cta {
    min-height: 88vh;
}

.solution-cta {
    position: relative;
    overflow: hidden;
    padding: clamp(2rem, 5vw, 4.2rem);
    background:
        radial-gradient(circle at 90% 15%, rgba(181,32,74,.12), transparent 28%),
        rgba(16,17,20,.82);
    border: 1px solid rgba(151,154,162,.16);
    border-radius: 14px;
}

.solution-cta::after {
    content: "";
    position: absolute;
    right: -7rem;
    bottom: -10rem;
    width: 25rem;
    aspect-ratio: 1;
    border: 1px solid rgba(181,32,74,.12);
    border-radius: 50%;
}

.solution-cta__code {
    display: block;
    margin-bottom: 1.3rem;
    font-family: var(--font-mono);
    font-size: .62rem;
    letter-spacing: .12em;
    color: var(--color-accent-hover);
}

.solution-cta h2 {
    position: relative;
    z-index: 2;
    max-width: 13ch;
    margin-bottom: 1.4rem;
    font-size: clamp(2.8rem, 5.5vw, 6rem);
    line-height: .93;
    letter-spacing: -.05em;
    text-transform: uppercase;
}

.solution-cta p {
    position: relative;
    z-index: 2;
    max-width: 42rem;
    color: var(--color-text-muted);
}

.solution-cta__actions {
    position: relative;
    z-index: 2;
    display: flex;
    flex-wrap: wrap;
    gap: .8rem;
    margin-top: 2rem;
}

/* ================================================================
   FOOTER — page-local until footer is promoted to shared component
================================================================ */

.solution-footer {
    position: relative;
    z-index: 3;
    padding: clamp(3rem, 6vw, 5.5rem) 0 1.5rem;
    background: #08090b;
    border-top: 1px solid rgba(52,54,61,.6);
}

.solution-footer .site-footer__grid {
    display: grid;
    grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr);
    gap: clamp(3rem, 8vw, 9rem);
}

.solution-footer .site-footer__brand {
    display: flex;
    align-items: flex-start;
    gap: 1rem;
}

.solution-footer .site-footer__brand > div {
    display: flex;
    flex-direction: column;
    gap: .35rem;
}

.solution-footer .site-footer__brand strong {
    font-family: var(--font-display);
    text-transform: uppercase;
    letter-spacing: .05em;
}

.solution-footer .site-footer__brand > div span {
    color: var(--color-text-muted);
    font-size: .82rem;
}

.solution-footer .site-footer__nav {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 2rem;
}

.solution-footer .site-footer__nav > div {
    display: flex;
    flex-direction: column;
    gap: .65rem;
}

.solution-footer .site-footer__nav strong {
    margin-bottom: .3rem;
    font-family: var(--font-mono);
    font-size: .64rem;
    letter-spacing: .12em;
    color: var(--color-accent-hover);
    text-transform: uppercase;
}

.solution-footer .site-footer__nav a {
    width: max-content;
    max-width: 100%;
    color: var(--color-text-muted);
    font-size: .88rem;
    transition: color var(--duration-fast) ease;
}

.solution-footer .site-footer__nav a:hover,
.solution-footer .site-footer__nav a:focus-visible {
    color: var(--color-text);
}

.solution-footer .site-footer__bottom {
    display: flex;
    justify-content: space-between;
    gap: 1rem;
    margin-top: 4rem;
    padding-top: 1.25rem;
    border-top: 1px solid rgba(52,54,61,.5);
    font-family: var(--font-mono);
    font-size: .62rem;
    letter-spacing: .08em;
    color: rgba(151,154,162,.58);
    text-transform: uppercase;
}

/* ================================================================
   SCROLL MOTION — position-driven / reversible "time rewind"
   Every family has its own physical language. JavaScript writes the
   variables from viewport position, so scrolling upward reverses them.
================================================================ */

.solution-signal,
.solution-route,
.criteria-list article,
.buildable-rail li,
.result-statements p,
.response-stage,
.solution-cta {
    --motion-x: 0px;
    --motion-y: 0px;
    --motion-hover-y: 0px;
    --motion-rx: 0deg;
    --motion-ry: 0deg;
    --motion-rz: 0deg;
    --motion-scale: 1;
    --motion-opacity: 1;
    --motion-blur: 0px;
    --motion-progress: 1;
    --motion-clip-left: 0%;
    --motion-clip-right: 0%;
    transform:
        perspective(1100px)
        translate3d(var(--motion-x), calc(var(--motion-y) + var(--motion-hover-y)), 0)
        rotateX(var(--motion-rx))
        rotateY(var(--motion-ry))
        rotateZ(var(--motion-rz))
        scale(var(--motion-scale));
    opacity: var(--motion-opacity);
    filter: blur(var(--motion-blur));
    clip-path: inset(0 var(--motion-clip-right) 0 var(--motion-clip-left));
    transform-style: preserve-3d;
    backface-visibility: hidden;
    will-change: transform, opacity, filter, clip-path;
}

/* 01 — Signals: fan / perspective cards */
.solution-signal::before {
    content: "";
    position: absolute;
    inset: 0 auto 0 0;
    z-index: 0;
    width: 1px;
    background: linear-gradient(180deg, transparent, rgba(181,32,74,.72), transparent);
    transform: scaleY(var(--motion-progress));
    transform-origin: center;
    opacity: .52;
    pointer-events: none;
}

.solution-signal > * {
    position: relative;
    z-index: 1;
}

/* 02 — Route rows: hinge open from their structural line */
.solution-route {
    transform-origin: 50% 0%;
}

.solution-route::before {
    content: "";
    position: absolute;
    left: 0;
    top: -1px;
    width: 100%;
    height: 1px;
    background: linear-gradient(90deg, rgba(181,32,74,.66), rgba(181,32,74,.08) 55%, transparent);
    transform: scaleX(var(--motion-progress));
    transform-origin: left;
    opacity: .7;
    pointer-events: none;
}

/* 03 — Criteria: sliced side entry */
.criteria-list article::before {
    content: "";
    position: absolute;
    top: 0;
    bottom: 0;
    width: 1px;
    right: 0;
    background: linear-gradient(180deg, transparent, rgba(181,32,74,.48), transparent);
    transform: scaleY(var(--motion-progress));
    transform-origin: top;
    pointer-events: none;
}

/* 04 — Build rail: nodes rise into a line that is itself time-driven */
.buildable-rail {
    --rail-progress: 1;
}

.buildable-rail::after {
    content: "";
    position: absolute;
    left: 4%;
    right: 4%;
    top: 1.1rem;
    height: 1px;
    background: linear-gradient(90deg, var(--color-accent-hover), rgba(181,32,74,.18));
    transform: scaleX(var(--rail-progress));
    transform-origin: left;
    box-shadow: 0 0 .8rem rgba(181,32,74,.08);
    pointer-events: none;
}

.buildable-rail li > span {
    transform: rotate(var(--motion-node-rotate, 0deg));
    transition: border-color 200ms ease, color 200ms ease;
}

/* 05 — Results: alternating shutter reveal */
.result-statements p {
    position: relative;
}

.result-statements p::before {
    content: "";
    position: absolute;
    left: 0;
    bottom: -1px;
    width: 100%;
    height: 1px;
    background: linear-gradient(90deg, rgba(181,32,74,.6), transparent 72%);
    transform: scaleX(var(--motion-progress));
    transform-origin: left;
    opacity: .5;
    pointer-events: none;
}

/* Major frames settle more gently than individual cards. */
.response-stage,
.solution-cta {
    transform-origin: 50% 12%;
}

/* ================================================================
   SOLUTIONS INTERACTIONS — hover / press without changing layout
================================================================ */

.page-solutions .ap-button,
.page-solutions .ap-text-link,
.page-solutions .solution-route__link {
    isolation: isolate;
}

.page-solutions .ap-button::before {
    content: "";
    position: absolute;
    inset: -35% auto -35% -32%;
    z-index: 1;
    width: 28%;
    background: linear-gradient(90deg, transparent, rgba(255,255,255,.22), transparent);
    transform: skewX(-19deg) translateX(-240%);
    opacity: 0;
    pointer-events: none;
}

@media (hover: hover) and (pointer: fine) {
    .page-solutions .ap-button:hover {
        box-shadow:
            0 .8rem 2.2rem rgba(0,0,0,.20),
            inset 0 0 0 1px rgba(243,243,241,.05);
        transform: translateY(-2px);
    }

    .page-solutions .ap-button:hover::before {
        opacity: 1;
        animation: solutionButtonSweep 650ms var(--ease-ap) both;
    }

    .page-solutions .ap-text-link:hover::after {
        transform: scaleX(.72) translateX(.45rem);
        transform-origin: right;
        filter: drop-shadow(0 0 .45rem rgba(181,32,74,.24));
    }

    .page-solutions .solution-route__link:hover {
        box-shadow: 0 0 1.25rem rgba(181,32,74,.18);
    }
}

.page-solutions .ap-button:active,
.page-solutions .ap-button.is-ap-pressing {
    transform: translateY(1px) scale(.972);
    box-shadow:
        inset 0 .25rem .8rem rgba(0,0,0,.20),
        0 0 0 1px rgba(181,32,74,.18);
}

.page-solutions .solution-signal:active,
.page-solutions .solution-signal.is-ap-pressing {
    --motion-hover-y: -.08rem;
    border-color: rgba(181,32,74,.74);
    box-shadow:
        inset 0 0 0 1px rgba(181,32,74,.16),
        0 .45rem 1.25rem rgba(0,0,0,.16);
}

.page-solutions .solution-route__link:active,
.page-solutions .solution-route__link.is-ap-pressing {
    transform: rotate(45deg) scale(.88);
    background: rgba(181,32,74,.22);
    box-shadow: inset 0 0 0 1px rgba(243,243,241,.07);
}

.page-solutions .ap-text-link:active,
.page-solutions .ap-text-link.is-ap-pressing {
    opacity: .72;
}

.page-solutions .solution-signal {
    transition:
        border-color 260ms var(--ease-ap),
        background 260ms var(--ease-ap),
        box-shadow 260ms var(--ease-ap);
}

/* ================================================================
   RESPONSIVE
================================================================ */

@media (max-width: 1099px) {
    .solutions-hero__grid {
        grid-template-columns: minmax(0, 1fr) minmax(20rem, .8fr);
        gap: 2rem;
    }

    .solutions-hero__title {
        font-size: clamp(3.4rem, 7vw, 5.8rem);
    }

    .solution-signal-grid {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }

    .solution-route__body {
        grid-template-columns: minmax(13rem, .9fr) minmax(0, 1.1fr);
        gap: .8rem 1.35rem;
    }
}

@media (max-width: 899px) {
    .solutions-hero {
        min-height: auto;
        padding-top: 8rem;
    }

    .solutions-hero__grid {
        grid-template-columns: 1fr;
    }

    .decision-router {
        justify-self: center;
        width: min(100%, 31rem);
        margin-top: 1rem;
    }

    .solution-section {
        min-height: auto;
    }

    .response-stage__body {
        grid-template-columns: 1fr;
        gap: 2rem;
    }

    .response-stage__body > div + div::before {
        display: none;
    }

    .response-stage__body > div + div {
        padding-top: 2rem;
        border-top: 1px solid rgba(151,154,162,.12);
    }

    .solution-route {
        grid-template-columns: 3rem minmax(0, 1fr) 3rem;
    }

    .solution-route__body {
        grid-template-columns: 1fr;
        grid-template-areas:
            "eyebrow"
            "title"
            "copy";
        gap: .65rem;
    }

    .criteria-grid,
    .result-grid {
        grid-template-columns: 1fr;
    }

    .criteria-grid__intro {
        position: static;
    }

    .buildable-rail {
        grid-template-columns: repeat(3, minmax(0, 1fr));
        gap: 2rem 1rem;
    }

    .buildable-rail::before,
    .buildable-rail::after {
        display: none;
    }
}

@media (max-width: 1099px) {
    .solution-logo-field__scene {
        width: min(47vw, 30rem);
    }
}

@media (max-width: 767px) {
    .solution-logo-field {
        --logo-field-opacity: .12;
        perspective: 850px;
    }

    .solution-logo-field::before {
        width: 86vw;
    }

    .solution-logo-field__scene {
        width: min(86vw, 27rem);
    }

    .solution-logo-field__path--soft { stroke-width: 22; }
    .solution-logo-field__path--letter { stroke-width: 21; }
    .solution-logo-field__path--wine { stroke-width: 27; }
    .solution-logo-field__path--gray { stroke-width: 16; }

    .solution-signal,
    .solution-route,
    .criteria-list article,
    .buildable-rail li,
    .result-statements p,
    .response-stage,
    .solution-cta {
        perspective: none;
    }


    .solution-orbit {
        width: 11rem;
        --orbit-scroll-opacity: .20;
        filter: drop-shadow(0 0 1.5rem rgba(139,21,56,.04));
    }

    .solution-orbit > i::before {
        opacity: .26;
    }

    .solution-orbit > i::after {
        opacity: .34;
    }

    .solution-orbit--signals { right: -4.5rem; top: 5%; }
    .solution-orbit--response { left: -5.5rem; bottom: 3%; width: 13rem; }
    .solution-orbit--routes { right: -4rem; top: 2%; }
    .solution-orbit--criteria { left: -5rem; bottom: 4%; }
    .solution-orbit--result { right: -4.5rem; bottom: 4%; }
    .solutions-field {
        opacity: .48;
    }

    .solutions-field__grid {
        background-size: 48px 48px;
        mask-image: radial-gradient(circle at 50% 48%, #000 0 22%, transparent 66%);
    }

    .solutions-field__glow {
        left: 50%;
        top: 48%;
        width: 42rem;
    }

    .solutions-hero {
        padding-top: 6.8rem;
        padding-bottom: 3.5rem;
    }

    .solutions-hero__title {
        max-width: 11ch;
        font-size: clamp(2.7rem, 12vw, 4.4rem);
        line-height: .92;
    }

    .solutions-hero__actions {
        align-items: flex-start;
        flex-direction: column;
        gap: 1rem;
    }

    .solutions-hero__actions .ap-button,
    .solution-cta__actions .ap-button {
        width: auto;
        min-height: 2.9rem;
        padding: .72rem .88rem;
        font-size: .7rem;
    }

    .decision-router {
        width: min(112%, 29rem);
        margin-left: -6%;
    }

    .decision-router__route {
        min-width: 7rem;
        padding: .5rem .58rem;
    }

    .decision-router__route strong {
        font-size: .57rem;
    }

    .decision-router__input {
        left: 6%;
    }

    .solution-title {
        font-size: clamp(2.3rem, 10vw, 3.9rem);
    }

    .solution-signal-grid {
        grid-template-columns: 1fr;
        gap: .6rem;
    }

    .solution-signal {
        min-height: 0;
        padding: .9rem 1rem;
        gap: .45rem;
    }

    .solution-signal strong {
        max-width: 30rem;
        font-size: 1.02rem;
    }

    .response-stage {
        padding: 1rem;
    }

    .response-stage__body {
        padding-block: 2rem;
    }

    .response-stage__question h2 {
        font-size: clamp(2rem, 9vw, 3.3rem);
    }

    .solution-route {
        grid-template-columns: 2.2rem minmax(0, 1fr) 2.6rem;
        gap: .75rem;
        min-height: 0;
        padding-block: 1.15rem;
    }

    .solution-route:hover,
    .solution-route:focus-within,
    .solution-route.is-related {
        padding-inline: .5rem;
    }

    .solution-route__link {
        width: 2.35rem;
    }

    .criteria-list article {
        padding-left: 2.7rem;
    }

    .buildable-rail {
        grid-template-columns: 1fr;
        gap: 0;
        margin-top: 2.5rem;
        border-top: 1px solid rgba(151,154,162,.16);
    }

    .buildable-rail::after {
        display: block;
        left: .72rem;
        right: auto;
        top: 0;
        bottom: 0;
        width: 1px;
        height: auto;
        transform: scaleY(var(--rail-progress));
        transform-origin: top;
        background: linear-gradient(180deg, var(--color-accent-hover), rgba(181,32,74,.12));
    }

    .buildable-rail li {
        padding: 1.2rem 0 1.2rem 2.8rem;
        border-bottom: 1px solid rgba(151,154,162,.16);
    }

    .buildable-rail li > span {
        top: 1.25rem;
    }

    .solution-cta {
        padding: 1.35rem;
    }

    .solution-cta h2 {
        font-size: clamp(2.4rem, 10vw, 4rem);
    }

    .solution-footer .site-footer__grid {
        grid-template-columns: 1fr;
        gap: 2.5rem;
    }

    .solution-footer .site-footer__nav {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 2rem 1.5rem;
    }

    .solution-footer .site-footer__bottom {
        flex-direction: column;
        margin-top: 2.5rem;
    }
}

@media (max-width: 479px) {
    .decision-router {
        width: 116%;
        margin-left: -8%;
        transform: scale(.94);
    }

    .decision-router__input strong {
        font-size: .58rem;
    }

    .decision-router__route--evolution {
        right: 27%;
        bottom: 0;
    }

    .response-stage__meta {
        flex-direction: column;
        gap: .35rem;
    }

    .solution-footer .site-footer__nav {
        grid-template-columns: 1fr 1fr;
    }
}

@media (max-width: 359px) {
    .solutions-hero__title {
        font-size: 2.45rem;
    }

    .decision-router {
        width: 124%;
        margin-left: -12%;
        transform: scale(.89);
    }

    .solution-route {
        grid-template-columns: 1.7rem minmax(0, 1fr) 2.3rem;
    }
}


/* Persistent weave responsive framing */
@media (max-width: 1099px) {
    .solutions-field { opacity: .72; }
    .solutions-field__grid { background-size: 64px 64px; }
    .solutions-field__glow { width: 60rem; }
}

@media (max-width: 767px) {
    .solutions-field { opacity: .58; }

    .solutions-field::after {
        background:
            radial-gradient(ellipse at 50% 48%, transparent 0 26%, rgba(8,9,11,.12) 58%, rgba(8,9,11,.50) 100%),
            linear-gradient(180deg, rgba(8,9,11,.20), transparent 15% 85%, rgba(8,9,11,.38));
    }

    .solutions-field__grid {
        inset: -18%;
        background-size: 52px 52px;
        -webkit-mask-image: radial-gradient(ellipse at 50% 48%, #000 0 26%, transparent 70%);
        mask-image: radial-gradient(ellipse at 50% 48%, #000 0 26%, transparent 70%);
    }

    .solutions-field__svg {
        width: 168%;
        left: -34%;
    }

    .solutions-field__glow {
        width: 46rem;
        opacity: .84;
    }

    .solutions-field__refraction {
        width: 9rem;
        opacity: .16;
    }

    .solutions-field__thread { opacity: .64; }
    .solutions-field__gates rect { stroke-width: .65; }
}

@media (max-width: 479px) {
    .solutions-field { opacity: .50; }
    .solutions-field__svg { width: 205%; left: -52%; }
    .solutions-field__grid { background-size: 44px 44px; }
    .solutions-field__refraction { opacity: .12; }
}

@media (max-width: 479px) {
    .solution-logo-field {
        --logo-field-opacity: .095;
    }

    .solution-logo-field__scene {
        width: min(92vw, 24rem);
    }
}

@media (prefers-reduced-motion: reduce) {
    .solution-logo-field__scene {
        transform: none !important;
    }

    .solution-logo-field__glint {
        display: none !important;
    }

    .solution-logo-field__path {
        stroke-dashoffset: 0 !important;
    }

    .page-solutions .ap-button::before { animation: none !important; opacity: 0 !important; }

    .solutions-field__arc,
    .decision-router::before,
    .decision-router::after,
    .decision-router__core i,
    .solution-orbit::before,
    .solution-orbit::after,
    .solution-orbit > i,
    .solution-orbit > i::before,
    .solution-orbit > i::after {
        animation: none !important;
    }

    .solution-orbit {
        transform: none !important;
    }

    .solution-signal,
    .solution-route,
    .criteria-list article,
    .buildable-rail li,
    .result-statements p,
    .response-stage,
    .solution-cta {
        transform: none !important;
        opacity: 1 !important;
        filter: none !important;
        clip-path: none !important;
    }

    .buildable-rail::after {
        transform: scaleX(1) !important;
    }
}

@keyframes solutionAmbientFlow {
    to { stroke-dashoffset: -180; }
}

@keyframes solutionRouterSpin {
    to { transform: rotate(360deg); }
}

@keyframes solutionCorePulse {
    0%, 100% { transform: scale(.7); opacity: .45; }
    50% { transform: scale(1.25); opacity: 1; }
}


@keyframes solutionRouterSpinReverse {
    to { transform: rotate(-360deg); }
}

@keyframes solutionOrbitClockwise {
    to { transform: rotate(360deg); }
}

@keyframes solutionOrbitCounter {
    to { transform: rotate(-360deg); }
}


@keyframes solutionOrbitMoiré {
    0% { transform: rotate(0deg) scale(.985); opacity: .28; }
    45% { opacity: .48; }
    50% { transform: rotate(180deg) scale(1.018); opacity: .56; }
    55% { opacity: .42; }
    100% { transform: rotate(360deg) scale(.985); opacity: .28; }
}

@keyframes solutionOrbitLens {
    0% { transform: scale(.94) rotate(-5deg); opacity: .22; filter: blur(.2px); }
    50% { opacity: .52; }
    100% { transform: scale(1.055) rotate(5deg); opacity: .34; filter: blur(.65px); }
}

@keyframes solutionButtonSweep {
    0% { transform: skewX(-19deg) translateX(-240%); }
    100% { transform: skewX(-19deg) translateX(680%); }
}

/* AP Neural Web — logo en núcleo de decision router */
.decision-router__core-logo {
    display: grid;
    place-items: center;

    width: 3.25rem;
    height: 3.25rem;
}

.decision-router__core-logo img {
    display: block;

    width: 100%;
    height: 100%;

    object-fit: contain;
}


/* AP NEW SOLUTIONS LOGO BACKGROUND START */

/*
 * AP Neural Web
 * Fondo de /soluciones con identidad actual.
 *
 * El logo funciona como una firma ambiental,
 * no como un elemento principal de contenido.
 */

.solution-logo-field {
    --logo-field-opacity: .105;

    position: fixed;
    inset: 0;

    z-index: 1;

    display: grid;
    place-items: center;

    overflow: hidden;

    pointer-events: none;
}


.solution-logo-field::before {
    content: "";

    position: absolute;

    left: 50%;
    top: 50%;

    width:
        min(
            52vw,
            44rem
        );

    aspect-ratio: 1;

    border-radius: 50%;

    background:
        radial-gradient(
            circle,
            rgba(181, 32, 74, .075) 0%,
            rgba(88, 11, 35, .04) 38%,
            rgba(8, 9, 11, 0) 72%
        );

    transform:
        translate(-50%, -50%);

    filter:
        blur(8px);
}


.solution-logo-field__scene {
    position: relative;

    display: grid;
    place-items: center;

    width:
        min(
            41vw,
            35rem
        );

    aspect-ratio: 1;

    opacity:
        var(
            --logo-field-opacity
        );

    transform:
        translate3d(
            0,
            0,
            0
        )
        scale(1);

    transform-origin:
        center;

    will-change:
        opacity;
}


.solution-logo-field__logo {
    position: relative;
    z-index: 2;

    display: block;

    width: 100%;
    height: 100%;

    object-fit: contain;

    opacity: .92;

    filter:
        saturate(.78)
        contrast(.96)
        drop-shadow(
            0 0 1.35rem
            rgba(181, 32, 74, .12)
        );

    user-select: none;
}


/*
 * Resplandor muy leve detrás del emblema.
 * Ayuda a que las partes negras del logo
 * no desaparezcan sobre el fondo oscuro.
 */

.solution-logo-field__glow {
    position: absolute;

    left: 50%;
    top: 50%;

    z-index: 1;

    width: 78%;
    aspect-ratio: 1;

    border-radius: 50%;

    background:
        radial-gradient(
            circle,
            rgba(243, 243, 241, .035),
            rgba(151, 154, 162, .018) 38%,
            transparent 70%
        );

    transform:
        translate(-50%, -50%);

    filter:
        blur(14px);
}


/* Tablet */

@media (max-width: 1099px) {

    .solution-logo-field {
        --logo-field-opacity: .085;
    }

    .solution-logo-field__scene {
        width:
            min(
                55vw,
                31rem
            );
    }

}


/* Móvil */

@media (max-width: 767px) {

    .solution-logo-field {
        --logo-field-opacity: .065;
    }


    .solution-logo-field::before {
        width: 92vw;
    }


    .solution-logo-field__scene {
        width:
            min(
                82vw,
                24rem
            );
    }


    .solution-logo-field__logo {
        filter:
            saturate(.70)
            contrast(.94)
            drop-shadow(
                0 0 .9rem
                rgba(181, 32, 74, .10)
            );
    }

}


/* Teléfonos pequeños */

@media (max-width: 479px) {

    .solution-logo-field {
        --logo-field-opacity: .055;
    }


    .solution-logo-field__scene {
        width: 88vw;
    }

}


/* Accesibilidad */

@media (prefers-reduced-motion: reduce) {

    .solution-logo-field__scene {
        transform: none !important;
    }

}

/* AP NEW SOLUTIONS LOGO BACKGROUND END */
