﻿/* Home — Digital System Assembly (Phase 2) */

.page-home {
  background: var(--color-navy-deep);
  color: var(--color-white);
}

.page-home .site-header-wrap {
  z-index: 100;
}

.page-home main {
  padding-top: 0;
}

.kicker {
  margin: 0 0 var(--space-4);
}

.home-hero .kicker {
  margin-bottom: 0.65rem;
}

/* In-scroll phase labels stay compact */
.assembly-phase .kicker,
.ecos-panel .kicker {
  font-size: clamp(0.6875rem, 0.95vw, 0.8125rem);
  letter-spacing: 0.16em;
  margin-bottom: 0.85rem;
  gap: 0.5rem;
}

.assembly-phase .kicker::before,
.ecos-panel .kicker::before {
  flex-basis: 1.75rem;
}

.section {
  padding: var(--space-section) var(--container-pad);
}

.section--paper {
  background: var(--color-paper);
  color: var(--color-ink);
}

.section--yellow {
  background: var(--color-yellow);
  color: var(--color-ink);
}

.section--dark {
  background: #0a1236;
  color: var(--color-white);
}

.section-head h2,
.home-hero h1,
.assembly-phase h2 {
  font-family: var(--font-display);
  font-weight: 800;
  letter-spacing: -0.06em;
  line-height: 0.9;
}

.section-head h2 span,
.assembly-phase h2 span {
  color: var(--color-blue);
}

.section--dark .section-head h2 span {
  color: var(--color-yellow);
}

/* Hero */
.home-hero {
  --home-hero-pad-top: calc(4.75rem + env(safe-area-inset-top, 0px));
  min-height: 100svh;
  max-height: 100svh;
  position: relative;
  overflow: hidden;
  display: grid;
  align-items: center;
  padding: var(--home-hero-pad-top) var(--container-pad) 1.5rem;
  background:
    radial-gradient(circle at 78% 32%, rgba(49, 112, 178, 0.32), transparent 27%),
    radial-gradient(circle at 16% 82%, rgba(245, 176, 6, 0.1), transparent 22%),
    linear-gradient(145deg, #08113a, var(--color-navy) 58%, var(--color-navy-deep));
}

.home-hero__grid-bg {
  position: absolute;
  inset: 0;
  background-image:
    linear-gradient(rgba(255, 255, 255, 0.034) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255, 255, 255, 0.034) 1px, transparent 1px);
  background-size: 70px 70px;
  mask-image: linear-gradient(to bottom, #000, transparent);
}

.home-hero__inner {
  position: relative;
  z-index: 2;
  display: grid;
  grid-template-columns: minmax(0, 1.05fr) minmax(0, 0.95fr);
  gap: clamp(1.25rem, 3vw, 2.5rem);
  align-items: center;
}

.home-hero h1 {
  margin: 0;
  font-size: clamp(3.15rem, min(10vw, 15vh), 7.5rem);
  line-height: 0.86;
}

.home-hero__title-line {
  display: block;
}

.home-hero__title-line + .home-hero__title-line {
  margin-top: 0.02em;
}

.home-hero__title-line--accent {
  letter-spacing: -0.075em;
}

.home-hero__hl {
  color: var(--color-yellow);
}

.home-hero__lead {
  max-width: 34rem;
  color: #bbc4df;
  line-height: 1.55;
  font-size: clamp(0.92rem, 1.05vw, 1.05rem);
  margin-top: clamp(0.75rem, 1.6vh, 1.1rem);
}

@media (min-width: 1001px) {
  .home-hero__lead {
    max-width: none;
    white-space: nowrap;
  }
}

.home-hero__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.65rem;
  margin-top: clamp(0.9rem, 1.8vh, 1.25rem);
}

/* Hero visual — focus path (not assembly nodes) */
.home-hero__visual {
  position: relative;
  width: min(100%, 30rem);
  min-height: min(48vh, 22rem);
  margin-inline: auto;
}

.hero-focus {
  display: grid;
  place-items: center;
  isolation: isolate;
}

.hero-focus__noise {
  position: absolute;
  inset: 0;
  pointer-events: none;
}

.hero-focus__noise-tag {
  position: absolute;
  z-index: 1;
  max-width: 11rem;
  padding: 0.45rem 0.75rem;
  border-radius: 999px;
  border: 1px solid rgba(255, 255, 255, 0.1);
  background: rgba(8, 15, 50, 0.55);
  color: rgba(255, 255, 255, 0.38);
  font: 700 0.62rem/1.15 var(--font-display);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  transform: rotate(calc(-8deg + var(--tag-i) * 5deg));
  box-shadow: 0 8px 20px rgba(0, 0, 0, 0.18);
}

.hero-focus__noise-tag:nth-child(1) { left: 2%; top: 6%; }
.hero-focus__noise-tag:nth-child(2) { right: 0; top: 12%; }
.hero-focus__noise-tag:nth-child(3) { left: 6%; bottom: 18%; }
.hero-focus__noise-tag:nth-child(4) { right: 4%; bottom: 28%; }
.hero-focus__noise-tag:nth-child(5) { left: 32%; top: 18%; }
.hero-focus__noise-tag:nth-child(6) { right: 18%; bottom: 8%; }

.hero-focus__caption {
  position: relative;
  z-index: 2;
  margin: 1.35rem 0 0;
  padding-inline: 0.5rem;
  text-align: center;
  color: #9fa9ca;
  font: 600 0.72rem/1.35 var(--font-display);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  white-space: normal;
  overflow: visible;
}

.hero-focus__path {
  position: absolute;
  inset: 8% 0 18%;
  width: 100%;
  height: auto;
  opacity: 0.95;
  filter: drop-shadow(0 0 24px rgba(245, 176, 6, 0.18));
}

.hero-focus__lane {
  position: relative;
  z-index: 2;
  display: flex;
  align-items: flex-end;
  justify-content: center;
  gap: 0.85rem;
  margin-top: 1.5rem;
  transform: translateX(8%);
}

.hero-focus__ghost-step {
  width: 3.25rem;
  height: 3.25rem;
  border-radius: 1rem;
  border: 1px dashed rgba(255, 255, 255, 0.12);
  display: grid;
  place-items: center;
  font: 800 0.95rem var(--font-display);
  color: rgba(255, 255, 255, 0.22);
  transform: translateY(0.35rem) scale(0.92);
}

.hero-focus__ghost-step:last-of-type {
  transform: translateY(0.15rem) scale(0.96);
}

.hero-focus__spot {
  position: relative;
  width: 11.5rem;
  padding: 1.15rem 1rem 1rem;
  border-radius: 1.35rem;
  background:
    linear-gradient(155deg, rgba(245, 176, 6, 0.98), rgba(245, 176, 6, 0.82));
  color: var(--color-navy);
  text-align: center;
  box-shadow:
    0 0 0 1px rgba(255, 255, 255, 0.12),
    0 22px 50px rgba(245, 176, 6, 0.28),
    0 0 80px rgba(245, 176, 6, 0.16);
  transform: translateY(-0.65rem) rotate(-2deg);
}

.hero-focus__spot-kicker {
  display: block;
  font: 800 0.55rem var(--font-display);
  letter-spacing: 0.18em;
}

.hero-focus__spot-num {
  display: block;
  margin-top: 0.15rem;
  font: 800 clamp(2.75rem, 6vw, 3.5rem)/0.9 var(--font-display);
  letter-spacing: -0.06em;
}

.hero-focus__spot-label {
  display: block;
  margin-top: 0.35rem;
  font: 700 0.72rem/1.25 var(--font-display);
  letter-spacing: 0.04em;
}

/* Assembly */
.assembly-shell {
  height: calc(var(--assembly-scroll-vh, 400) * 1vh);
  background: #080f32;
}

.assembly-sticky {
  position: sticky;
  top: 0;
  height: 100vh;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

.assembly-bar,
.assembly-foot {
  flex: 0 0 3.625rem;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 var(--container-pad);
  border-bottom: 1px solid rgba(255, 255, 255, 0.12);
  background: rgba(7, 13, 42, 0.8);
  backdrop-filter: blur(12px);
  font: 800 0.5rem var(--font-display);
  letter-spacing: 0.14em;
}

.assembly-foot {
  border-top: 1px solid rgba(255, 255, 255, 0.12);
  border-bottom: 0;
  color: #747fa4;
  justify-content: flex-start;
  /* Right side free for floating PARLIAMONE (raised) */
  padding-right: max(var(--container-pad), 12rem);
}

.assembly-foot__start {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 0.75rem 1.35rem;
  min-width: 0;
}

.assembly-foot a {
  color: var(--color-yellow);
  white-space: nowrap;
}

.assembly-progress {
  display: flex;
  align-items: center;
  gap: 0.625rem;
}

.assembly-progress i {
  display: block;
  width: min(24vw, 17.5rem);
  height: 2px;
  background: #283359;
  overflow: hidden;
}

.assembly-progress i span {
  display: block;
  width: 0;
  height: 100%;
  background: var(--color-yellow);
}

.assembly-progress b {
  color: var(--color-yellow);
}

.assembly-body {
  flex: 1;
  min-height: 0;
  display: grid;
  grid-template-columns: 0.78fr 1.22fr;
  gap: 5vw;
  align-items: center;
  padding: 1rem var(--container-pad) 1.5rem;
}

.assembly-copy {
  position: relative;
  height: 100%;
  min-height: 0;
  max-height: 100%;
  overflow: hidden;
}

.assembly-phase {
  position: absolute;
  inset: 0;
  opacity: 0;
  visibility: hidden;
  transform: translateY(12px);
  transition: opacity var(--motion-base), transform var(--motion-base), visibility var(--motion-base);
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 0;
  overflow: hidden;
}

.assembly-phase.is-active {
  opacity: 1;
  visibility: visible;
  transform: none;
}

.assembly-phase h2 {
  margin: 0 0 0.75rem;
  font-size: clamp(2.35rem, 5.2vw, 5.25rem);
  flex-shrink: 0;
}

.assembly-phase p {
  max-width: 35rem;
  color: #aeb7d2;
  line-height: 1.6;
  margin: 0;
  flex-shrink: 1;
  min-height: 0;
}

.assembly-bullets {
  margin: 0.75rem 0 0;
  padding: 0;
  list-style: none;
  display: grid;
  gap: 0.4rem;
  flex-shrink: 0;
}

.assembly-bullets li::before {
  content: "→ ";
  color: var(--color-yellow);
}

.assembly-phase__cta {
  margin-top: 1rem;
  margin-bottom: 0.15rem;
  flex-shrink: 0;
  align-self: flex-start;
}

/* PARLIAMONE raised so it never sits on the assembly foot */
.page-home .cta-persistent {
  bottom: 5.5rem;
  right: clamp(1rem, 3vw, 2rem);
}

.assembly-stage {
  height: min(72vh, 690px);
  position: relative;
  display: grid;
  place-items: center;
  perspective: 1100px;
  transform-style: preserve-3d;
  --orbit-spin: 0deg;
  --assembly-progress: 0;
}

.assembly-stage__glow {
  position: absolute;
  left: 50%;
  top: 50%;
  width: min(78%, 28rem);
  aspect-ratio: 1;
  transform: translate(-50%, -50%);
  border-radius: 50%;
  background:
    radial-gradient(circle, rgba(245, 176, 6, 0.22) 0%, rgba(49, 112, 178, 0.12) 38%, transparent 68%);
  filter: blur(2px);
  pointer-events: none;
  z-index: 0;
  animation: assembly-glow-breathe 5.5s ease-in-out infinite;
}

.assembly-orbit {
  position: absolute;
  left: 50%;
  top: 50%;
  border-radius: 50%;
  border: 1px solid rgba(255, 255, 255, 0.06);
  transform: translate(-50%, -50%) rotate(var(--orbit-spin));
  pointer-events: none;
  z-index: 1;
}

.assembly-orbit--outer {
  width: min(92%, 570px);
  height: min(92%, 570px);
  border-style: dashed;
  border-color: rgba(245, 176, 6, 0.22);
  box-shadow: inset 0 0 40px rgba(245, 176, 6, 0.04);
}

.assembly-orbit--mid {
  width: min(68%, 420px);
  height: min(68%, 420px);
  border-color: rgba(255, 255, 255, 0.08);
}

.assembly-orbit--inner {
  width: min(42%, 260px);
  height: min(42%, 260px);
  border-color: rgba(49, 112, 178, 0.28);
}

.assembly-rays {
  position: absolute;
  left: 50%;
  top: 50%;
  width: min(92%, 570px);
  height: min(92%, 570px);
  transform: translate(-50%, -50%) rotate(var(--orbit-spin));
  pointer-events: none;
  z-index: 2;
  overflow: visible;
}

.assembly-ray {
  stroke: rgba(255, 255, 255, 0.05);
  stroke-width: 1.2;
  stroke-dasharray: 4 8;
  transition: stroke 0.35s ease, stroke-opacity 0.35s ease;
}

.assembly-ray.is-on {
  stroke: rgba(245, 176, 6, 0.28);
}

.assembly-ray.is-focus {
  stroke: rgba(245, 176, 6, 0.72);
  stroke-width: 1.6;
  stroke-dasharray: none;
  filter: drop-shadow(0 0 6px rgba(245, 176, 6, 0.45));
}

.assembly-core {
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  width: 11rem;
  height: 11rem;
  border-radius: 2.7rem;
  background:
    linear-gradient(155deg, #ffd24a 0%, var(--color-yellow) 48%, #e0a000 100%);
  color: var(--color-navy);
  z-index: 7;
  display: grid;
  place-items: center;
  text-align: center;
  font: 800 1.15rem/1.05 var(--font-display);
  box-shadow:
    0 0 0 1px rgba(255, 255, 255, 0.18),
    0 0 0 12px rgba(245, 176, 6, 0.08),
    0 18px 50px rgba(245, 176, 6, 0.28),
    0 0 90px rgba(245, 176, 6, 0.22);
  will-change: transform;
}

.a-piece {
  --piece-accent: var(--color-yellow);
  position: absolute;
  left: 50%;
  top: 50%;
  width: 10.8rem;
  padding: 0.95rem 1rem 1rem;
  border-radius: 1.15rem;
  border: 1px solid rgba(255, 255, 255, 0.14);
  background:
    linear-gradient(165deg, rgba(255, 255, 255, 0.12) 0%, rgba(8, 14, 40, 0.72) 42%, rgba(8, 14, 40, 0.88) 100%);
  backdrop-filter: blur(16px) saturate(1.15);
  box-shadow:
    0 14px 34px rgba(0, 0, 0, 0.28),
    inset 0 1px 0 rgba(255, 255, 255, 0.08);
  opacity: 0;
  z-index: 5;
  will-change: transform, opacity, filter;
  transform-style: preserve-3d;
}

.a-piece::before {
  content: "";
  position: absolute;
  left: 0.85rem;
  right: 0.85rem;
  top: 0;
  height: 2px;
  border-radius: 999px;
  background: linear-gradient(90deg, transparent, var(--piece-accent), transparent);
  opacity: 0.55;
}

.a-piece--1 { --piece-accent: #5aa7ff; }
.a-piece--2 { --piece-accent: #7dd3fc; }
.a-piece--3 { --piece-accent: #f5b006; }
.a-piece--4 { --piece-accent: #fb7185; }
.a-piece--5 { --piece-accent: #a78bfa; }
.a-piece--6 { --piece-accent: #34d399; }

.a-piece__index {
  display: block;
  margin-bottom: 0.45rem;
  font: 800 0.55rem/1 var(--font-display);
  letter-spacing: 0.16em;
  color: var(--piece-accent);
}

.a-piece b {
  display: block;
  font: 800 0.78rem var(--font-display);
  letter-spacing: 0.12em;
}

.a-piece small {
  display: block;
  color: #9ca7c7;
  margin-top: 0.3rem;
  font-size: 0.72rem;
  line-height: 1.35;
}

.a-piece.is-lit {
  border-color: color-mix(in srgb, var(--piece-accent) 35%, rgba(255, 255, 255, 0.12));
  box-shadow:
    0 16px 38px rgba(0, 0, 0, 0.32),
    0 0 24px color-mix(in srgb, var(--piece-accent) 22%, transparent),
    inset 0 1px 0 rgba(255, 255, 255, 0.1);
}

.a-piece.is-focus {
  z-index: 8;
  border-color: color-mix(in srgb, var(--piece-accent) 55%, rgba(255, 255, 255, 0.2));
  box-shadow:
    0 20px 48px rgba(0, 0, 0, 0.36),
    0 0 0 1px color-mix(in srgb, var(--piece-accent) 40%, transparent),
    0 0 42px color-mix(in srgb, var(--piece-accent) 35%, transparent),
    inset 0 1px 0 rgba(255, 255, 255, 0.14);
}

.a-piece.is-focus::before {
  opacity: 1;
  height: 3px;
}

@keyframes assembly-glow-breathe {
  0%, 100% { opacity: 0.75; transform: translate(-50%, -50%) scale(1); }
  50% { opacity: 1; transform: translate(-50%, -50%) scale(1.06); }
}

@media (prefers-reduced-motion: reduce) {
  .assembly-stage__glow {
    animation: none;
  }
}

/* Path cards */
.path-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 0.75rem;
}

.path-card {
  min-height: 24rem;
  padding: 1.5rem;
  border: 1px solid var(--color-line);
  background: #fff;
  display: flex;
  flex-direction: column;
  transition: transform var(--motion-base), box-shadow var(--motion-base);
}

.path-card:hover {
  transform: translateY(-7px);
  box-shadow: 0 22px 55px rgba(20, 38, 105, 0.09);
}

.path-card > span {
  font: 800 0.5625rem var(--font-display);
  color: #9297a4;
}

.path-card h3 {
  margin: auto 0 1rem;
  font: 800 clamp(1.75rem, 3vw, 2.85rem)/0.94 var(--font-display);
}

.path-card p {
  color: var(--color-muted);
  line-height: 1.65;
}

.path-card .btn {
  margin-top: 1rem;
  align-self: flex-start;
}

/* Rental teaser */
.rental-teaser__inner {
  display: grid;
  grid-template-columns: 1.2fr 0.8fr;
  gap: 2rem;
  align-items: center;
}

.rental-teaser h2 {
  font: 800 clamp(2.5rem, 5vw, 4.5rem)/0.92 var(--font-display);
  margin: 0 0 1rem;
}

.rental-teaser__price {
  text-align: center;
  padding: 2rem 1.75rem;
  border: none;
  border-radius: var(--radius-lg);
  background: var(--color-navy);
  color: #fff;
  box-shadow: 0 18px 44px rgba(11, 22, 69, 0.22);
}

.rental-teaser__price small {
  display: block;
  font: 800 0.55rem var(--font-display);
  letter-spacing: 0.16em;
  color: rgba(255, 255, 255, 0.72);
}

.rental-teaser__price strong {
  display: block;
  font: 800 2.5rem var(--font-display);
  margin: 0.35rem 0;
  color: var(--color-yellow);
  letter-spacing: -0.03em;
}

.rental-teaser__price span {
  display: block;
  font-size: 0.85rem;
  color: rgba(255, 255, 255, 0.82);
}

/* Ecosystem horizontal scroll */
.ecos-shell {
  height: 420vh;
}

.ecos-sticky {
  position: sticky;
  top: 0;
  height: 100vh;
  overflow: hidden;
  display: flex;
  flex-direction: column;
}

.ecos-head h2 {
  margin: 0.5rem 0 0;
  font: 800 clamp(2rem, 4vw, 3.5rem)/0.95 var(--font-display);
}

.ecos-track {
  display: flex;
  flex: 1;
  align-items: stretch;
  will-change: transform;
}

.ecos-panel {
  flex: 0 0 100vw;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 2rem;
  padding: 2rem var(--container-pad) 3rem;
  align-items: center;
}

.ecos-panel h3 {
  font: 800 clamp(2rem, 4vw, 3.5rem)/0.92 var(--font-display);
  margin: 0 0 1rem;
}

.ecos-visual__window {
  min-height: 16rem;
  border-radius: var(--radius-lg);
  border: 1px solid rgba(255, 255, 255, 0.12);
  background: rgba(255, 255, 255, 0.04);
  padding: 1.5rem;
  display: grid;
  grid-template-columns: 1fr minmax(9rem, 42%);
  gap: 1.25rem;
  align-items: stretch;
}

.ecos-visual__copy {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  min-width: 0;
}

.ecos-visual__copy span {
  font: 700 0.72rem var(--font-display);
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.72);
}

.ecos-visual__copy strong {
  font: 800 clamp(2rem, 5vw, 3rem) var(--font-display);
  color: var(--color-yellow);
  line-height: 0.95;
}

.ecos-visual__mock {
  position: relative;
  min-height: 10.5rem;
  border-radius: calc(var(--radius-lg) - 4px);
  border: 1px solid rgba(255, 255, 255, 0.1);
  background:
    radial-gradient(circle at 80% 18%, rgba(245, 176, 6, 0.12), transparent 52%),
    rgba(255, 255, 255, 0.03);
  overflow: hidden;
}

/* BUILD — mini sito */
.ecos-mock--site {
  display: flex;
  flex-direction: column;
  gap: 0.55rem;
  height: 100%;
  padding: 0.75rem;
}

.ecos-mock__chrome {
  display: flex;
  gap: 0.28rem;
}

.ecos-mock__chrome span {
  width: 0.42rem;
  height: 0.42rem;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.22);
}

.ecos-mock__hero {
  height: 2.1rem;
  border-radius: 0.45rem;
  background: linear-gradient(135deg, rgba(245, 176, 6, 0.35), rgba(255, 255, 255, 0.08));
}

.ecos-mock__lines {
  display: grid;
  gap: 0.35rem;
}

.ecos-mock__lines i {
  display: block;
  height: 0.32rem;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.14);
}

.ecos-mock__lines i.ecos-mock__lines--short {
  width: 68%;
}

.ecos-mock__cta {
  display: block;
  width: 58%;
  height: 0.75rem;
  margin-top: auto;
  border-radius: 999px;
  background: rgba(245, 176, 6, 0.72);
}

/* GROW — griglia contenuti */
.ecos-mock--content {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.45rem;
  height: 100%;
  padding: 0.65rem;
}

.ecos-mock__tile {
  display: flex;
  flex-direction: column;
  gap: 0.28rem;
  padding: 0.4rem;
  border-radius: 0.45rem;
  border: 1px solid rgba(255, 255, 255, 0.1);
  background: rgba(255, 255, 255, 0.04);
}

.ecos-mock__tile span {
  width: 55%;
  height: 0.32rem;
  border-radius: 999px;
  background: rgba(245, 176, 6, 0.55);
}

.ecos-mock__tile i {
  display: block;
  height: 0.24rem;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.12);
}

.ecos-mock__tile--accent {
  border-color: rgba(245, 176, 6, 0.28);
  background: rgba(245, 176, 6, 0.08);
}

/* CONVERT — funnel */
.ecos-mock--funnel {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.35rem;
  height: 100%;
  padding: 0.75rem 0.55rem;
}

.ecos-mock__step {
  width: 58%;
  padding: 0.45rem 0;
  border-radius: 0.4rem;
  border: 1px solid rgba(255, 255, 255, 0.14);
  background: rgba(255, 255, 255, 0.05);
  text-align: center;
}

.ecos-mock__step--wide { width: 78%; }
.ecos-mock__step--cta {
  width: 46%;
  border-color: rgba(245, 176, 6, 0.45);
  background: rgba(245, 176, 6, 0.14);
}

.ecos-mock__step small {
  font: 700 0.58rem var(--font-display);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.78);
}

.ecos-mock__arrow {
  width: 1px;
  height: 0.55rem;
  background: rgba(255, 255, 255, 0.22);
}

/* TRUST — recensioni */
.ecos-mock--trust {
  display: flex;
  flex-direction: column;
  gap: 0.55rem;
  height: 100%;
  padding: 0.75rem;
}

.ecos-mock__stars {
  display: flex;
  gap: 0.18rem;
}

.ecos-mock__stars span {
  width: 0.72rem;
  height: 0.72rem;
  clip-path: polygon(50% 0%, 61% 35%, 98% 35%, 68% 57%, 79% 91%, 50% 70%, 21% 91%, 32% 57%, 2% 35%, 39% 35%);
  background: var(--color-yellow);
}

.ecos-mock__review {
  display: grid;
  gap: 0.28rem;
  padding: 0.45rem;
  border-radius: 0.45rem;
  border: 1px solid rgba(255, 255, 255, 0.1);
  background: rgba(255, 255, 255, 0.04);
}

.ecos-mock__review i {
  display: block;
  height: 0.26rem;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.14);
}

.ecos-mock__review--soft i {
  width: 72%;
}

.ecos-mock__badge {
  align-self: flex-end;
  margin-top: auto;
  padding: 0.28rem 0.45rem;
  border-radius: 0.35rem;
  border: 1px dashed rgba(245, 176, 6, 0.45);
  font: 800 0.62rem var(--font-display);
  letter-spacing: 0.1em;
  color: var(--color-yellow);
}

/* AUTOMATE — nodi sistema */
.ecos-mock--system {
  position: relative;
  height: 100%;
  min-height: 10.5rem;
}

.ecos-mock__rings {
  position: absolute;
  inset: 8% 6%;
  width: auto;
  height: auto;
}

.ecos-mock__ring-wrap {
  transform-box: fill-box;
  transform-origin: center;
}

.ecos-mock__ring-wrap--outer {
  animation: ecosAutoSpin 9s linear infinite;
}

.ecos-mock__ring-wrap--inner {
  animation: ecosAutoSpin 6s linear infinite reverse;
}

.ecos-mock__ring {
  fill: none;
  vector-effect: non-scaling-stroke;
}

.ecos-mock__ring--outer {
  stroke: rgba(245, 176, 6, 0.62);
  stroke-width: 1.15;
  stroke-dasharray: 4 2.5;
  animation: ecosAutoDash 1.4s linear infinite;
}

.ecos-mock__ring--inner {
  stroke: rgba(255, 255, 255, 0.28);
  stroke-width: 0.85;
  stroke-dasharray: 2 2;
}

.ecos-mock__spoke {
  stroke: rgba(245, 176, 6, 0.45);
  stroke-width: 0.75;
  stroke-dasharray: 1.2 1.4;
  animation: ecosAutoSpoke 1.1s linear infinite;
}

.ecos-mock__streams {
  position: absolute;
  inset: 0;
  pointer-events: none;
}

.ecos-mock__stream {
  position: absolute;
  left: 50%;
  top: 50%;
  width: 0.42rem;
  height: 0.42rem;
  margin: -0.21rem 0 0 -0.21rem;
  border-radius: 50%;
  background: var(--color-yellow);
  box-shadow: 0 0 12px rgba(245, 176, 6, 0.9);
  opacity: 0;
  animation: ecosAutoStream 1.65s ease-in-out infinite;
}

.ecos-mock__stream--1 { --ecos-angle: -90deg; --ecos-travel: 3.6rem; animation-delay: 0s; }
.ecos-mock__stream--2 { --ecos-angle: 54deg; --ecos-travel: 3.6rem; animation-delay: 0.45s; }
.ecos-mock__stream--3 { --ecos-angle: 198deg; --ecos-travel: 3.6rem; animation-delay: 0.9s; }

.ecos-mock__core {
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  width: 2rem;
  height: 2rem;
  border-radius: 50%;
  display: grid;
  place-items: center;
  background: var(--color-yellow);
  color: var(--color-navy-deep);
  font: 800 0.58rem var(--font-display);
  z-index: 2;
  animation: ecosAutoCore 2s ease-in-out infinite;
}

.ecos-mock__node {
  position: absolute;
  padding: 0.18rem 0.32rem;
  border-radius: 999px;
  border: 1px solid rgba(255, 255, 255, 0.14);
  background: rgba(7, 13, 43, 0.82);
  font: 700 0.52rem var(--font-display);
  letter-spacing: 0.08em;
  color: rgba(255, 255, 255, 0.82);
  z-index: 3;
}

.ecos-mock__node--1 { left: 50%; top: 8%; transform: translateX(-50%); }
.ecos-mock__node--2 { right: 8%; bottom: 22%; }
.ecos-mock__node--3 { left: 8%; bottom: 22%; }

/* Contact */
.contact-section__grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--space-7);
  align-items: start;
}

.contact-form {
  display: grid;
  gap: var(--space-4);
  padding: var(--space-6) var(--space-5);
  border: 1px solid var(--color-line);
  border-radius: var(--radius-lg);
  background: #fff;
}

.contact-form label span {
  display: block;
  font-size: 0.8125rem;
  font-weight: 600;
  margin-bottom: 0.35rem;
}

.contact-form input,
.contact-form textarea {
  width: 100%;
  border: 1px solid var(--color-line);
  border-radius: var(--radius-sm);
  padding: 0.85rem 0.95rem;
}

.hp-field {
  position: absolute;
  left: -9999px;
  opacity: 0;
}

.contact-form__note {
  color: var(--color-muted-strong);
  margin: 0;
}

.form-alert {
  padding: 0.75rem 1rem;
  border-radius: var(--radius-sm);
  font-size: 0.875rem;
}
.form-alert--ok { background: rgba(20, 120, 60, 0.12); color: #0d5c2e; }
.form-alert--err { background: rgba(180, 40, 40, 0.12); color: #8a1f1f; }

/* Checkpoint — readable body type + display accents */
.checkpoint-section--wow {
  background:
    radial-gradient(circle at 12% 18%, rgba(245, 176, 6, 0.1), transparent 42%),
    radial-gradient(circle at 88% 82%, rgba(20, 38, 105, 0.07), transparent 40%),
    var(--color-paper, #f6f1e8);
}

.checkpoint-section__head {
  max-width: 44rem;
}

.checkpoint-section__head h2 {
  font: 800 clamp(1.85rem, 4vw, 2.75rem) / 1.08 var(--font-display);
  letter-spacing: -0.03em;
  color: var(--color-ink);
}

.checkpoint-section__head p {
  font-family: var(--font-body);
  font-size: 1.0625rem;
  line-height: 1.55;
  color: var(--color-muted-strong);
  max-width: 38rem;
}

.checkpoint {
  display: grid;
  grid-template-columns: minmax(0, 0.85fr) minmax(0, 1.15fr);
  gap: clamp(1.5rem, 4vw, 2.75rem);
  align-items: start;
}

.checkpoint__aside h3 {
  margin: 0;
  font: 800 clamp(1.85rem, 3.8vw, 3rem) / 1.04 var(--font-display);
  letter-spacing: -0.035em;
  color: var(--color-ink);
}

.checkpoint__note {
  margin-top: 1rem;
  font-family: var(--font-body);
  font-size: 1rem;
  line-height: 1.5;
  color: var(--color-muted-strong);
  max-width: 18rem;
}

.checkpoint-aside-score {
  margin-top: 1.35rem;
}

.checkpoint-ring {
  position: relative;
  width: min(100%, 9.5rem);
  aspect-ratio: 1;
  margin-bottom: 1.15rem;
}

.checkpoint-ring__svg {
  width: 100%;
  height: 100%;
  display: block;
}

.checkpoint-ring__track {
  stroke: rgba(20, 38, 105, 0.1);
}

.checkpoint-ring__value {
  stroke: url(#checkpointRingGrad);
  stroke: var(--color-yellow);
  transition: stroke-dashoffset 0.55s cubic-bezier(0.33, 1, 0.68, 1);
}

.checkpoint-ring__center {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.1rem;
}

.checkpoint-ring__center strong {
  font: 800 clamp(1.85rem, 4vw, 2.35rem) / 1 var(--font-display);
  color: var(--color-navy);
}

.checkpoint-ring__center span {
  font-family: var(--font-body);
  font-size: 0.875rem;
  color: var(--color-muted);
}

.checkpoint-quiz__body .quiz-step {
  border: 0;
  margin: 0;
  padding: 0;
  animation: checkpointStepIn 0.35s ease both;
}

.checkpoint-quiz__body .quiz-step[hidden] {
  display: none !important;
}

.checkpoint-quiz__body .quiz-step legend {
  font-family: var(--font-body);
  font-size: clamp(1.125rem, 2.5vw, 1.35rem);
  font-weight: 600;
  line-height: 1.4;
  color: var(--color-ink);
  margin-bottom: 1rem;
  padding: 0;
}

@keyframes checkpointStepIn {
  from { opacity: 0; transform: translateY(0.65rem); }
  to { opacity: 1; transform: translateY(0); }
}

.checkpoint-url,
.checkpoint-scan,
.checkpoint-result.is-reveal {
  animation: checkpointReveal 0.45s ease both;
}

@keyframes checkpointReveal {
  from { opacity: 0; transform: translateY(0.75rem); }
  to { opacity: 1; transform: translateY(0); }
}

.checkpoint-url__kicker {
  margin: 0 0 0.35rem;
  font-family: var(--font-body);
  font-size: 0.8125rem;
  font-weight: 700;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: var(--color-muted-strong);
}

.checkpoint-url__title {
  margin: 0 0 0.5rem;
  font: 800 clamp(1.25rem, 2.5vw, 1.5rem) / 1.15 var(--font-display);
  color: var(--color-navy);
}

.checkpoint-url__lead {
  margin: 0 0 1rem;
  font-family: var(--font-body);
  font-size: 1rem;
  line-height: 1.5;
  color: var(--color-muted-strong);
}

.checkpoint-url__field input {
  width: 100%;
  padding: 0.75rem 1rem;
  border: 1px solid rgba(20, 38, 105, 0.18);
  border-radius: var(--radius-md);
  font-family: var(--font-body);
  font-size: 1rem;
  color: var(--color-ink);
  background: #fff;
}

.checkpoint-url__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.65rem;
  margin-top: 1rem;
}

.checkpoint-url__hint {
  margin: 0.75rem 0 0;
  font-size: 0.875rem;
  color: #8a1f1f;
}

.checkpoint-scan {
  text-align: center;
  padding: 1.5rem 1rem;
}

.checkpoint-scan__pulse {
  width: 3rem;
  height: 3rem;
  margin: 0 auto 1rem;
  border-radius: 50%;
  border: 3px solid rgba(20, 38, 105, 0.12);
  border-top-color: var(--color-yellow);
  animation: checkpointSpin 0.85s linear infinite;
}

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

.checkpoint-scan__status {
  margin: 0 0 1rem;
  font-family: var(--font-body);
  font-weight: 600;
  color: var(--color-navy);
}

.checkpoint-scan__steps {
  list-style: none;
  margin: 0;
  padding: 0;
  text-align: left;
  max-width: 20rem;
  margin-inline: auto;
}

.checkpoint-scan__steps li {
  position: relative;
  padding: 0.4rem 0 0.4rem 1.5rem;
  font-family: var(--font-body);
  font-size: 0.875rem;
  color: var(--color-muted);
}

.checkpoint-scan__steps li::before {
  content: '';
  position: absolute;
  left: 0;
  top: 0.65rem;
  width: 0.55rem;
  height: 0.55rem;
  border-radius: 50%;
  background: rgba(20, 38, 105, 0.15);
}

.checkpoint-scan__steps li.is-active {
  color: var(--color-navy);
  font-weight: 600;
}

.checkpoint-scan__steps li.is-active::before {
  background: var(--color-yellow);
}

.checkpoint-scan__steps li.is-done {
  color: var(--color-muted-strong);
}

.checkpoint-scan__steps li.is-done::before {
  background: var(--color-navy);
}

.checkpoint-scan-summary {
  margin: 1rem 0;
  padding: 1rem 1.1rem;
  border-radius: var(--radius-md);
  border: 1px solid rgba(20, 38, 105, 0.12);
  background: rgba(255, 255, 255, 0.85);
}

.checkpoint-scan-summary__title {
  margin: 0 0 0.5rem;
  font-size: 0.8125rem;
  font-weight: 700;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: var(--color-muted-strong);
}

.checkpoint-scan-summary__list {
  margin: 0;
  padding-left: 1.1rem;
  font-size: 0.9375rem;
  line-height: 1.55;
}

.checkpoint-scan-summary__head {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.5rem 1rem;
  margin-bottom: 0.65rem;
}

.checkpoint-scan-summary__score {
  margin: 0;
  font-size: 0.9375rem;
  color: var(--color-navy);
}

.checkpoint-scan-summary__score strong {
  font-family: var(--font-display);
  font-size: 1.125rem;
}

.checkpoint-scan-summary__stack {
  margin: 0 0 0.75rem;
  font-size: 0.9375rem;
  line-height: 1.45;
  color: var(--color-ink);
}

.checkpoint-scan-checks {
  margin-top: 0.85rem;
  padding-top: 0.85rem;
  border-top: 1px solid rgba(20, 38, 105, 0.08);
}

.checkpoint-scan-checks__meta {
  margin: 0 0 0.5rem;
  font-size: 0.8125rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--color-muted-strong);
}

.checkpoint-scan-checks__list {
  margin: 0;
  padding: 0;
  list-style: none;
}

.checkpoint-scan-checks__item {
  font-size: 0.875rem;
  line-height: 1.45;
  margin-bottom: 0.35rem;
  color: var(--color-ink);
}

.checkpoint-scan-checks__item em {
  color: var(--color-muted-strong);
  font-style: normal;
  font-size: 0.8125rem;
}

.checkpoint-scan-checks__item--pass span { color: #0d5c2e; }
.checkpoint-scan-checks__item--warn span { color: #9a6700; }
.checkpoint-scan-checks__item--info span { color: var(--color-navy); }

.checkpoint-stack-insight {
  margin: 1rem 0;
  padding: 1.15rem 1.2rem;
  border-radius: var(--radius-md);
  border: 1px solid rgba(20, 38, 105, 0.14);
}

.checkpoint-stack-insight--custom {
  background: linear-gradient(180deg, rgba(20, 120, 60, 0.06), #fff);
  border-color: rgba(20, 120, 60, 0.22);
}

.checkpoint-stack-insight--cms {
  background: linear-gradient(180deg, rgba(245, 176, 6, 0.08), #fff);
}

.checkpoint-stack-insight__kicker {
  margin: 0 0 0.35rem;
  font-size: 0.8125rem;
  font-weight: 700;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: var(--color-muted-strong);
}

.checkpoint-stack-insight__title {
  margin: 0 0 0.5rem;
  font: 800 1.15rem / 1.2 var(--font-display);
  color: var(--color-navy);
}

.checkpoint-stack-insight__cols {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1rem;
  margin-top: 0.85rem;
  font-size: 0.875rem;
  line-height: 1.45;
}

.checkpoint-stack-insight ul {
  margin: 0.35rem 0 0;
  padding-left: 1.1rem;
}

.checkpoint-stack-insight__verdict {
  margin: 0.85rem 0 0;
  padding-top: 0.75rem;
  border-top: 1px solid rgba(20, 38, 105, 0.08);
  font-size: 0.9375rem;
  font-weight: 600;
  color: var(--color-navy);
}

.checkpoint-cms-insight {
  margin: 1rem 0;
  padding: 1.15rem 1.2rem;
  border-radius: var(--radius-md);
  border: 1px solid rgba(20, 38, 105, 0.14);
  background: linear-gradient(180deg, rgba(20, 38, 105, 0.04), #fff);
}

.checkpoint-cms-insight__kicker {
  margin: 0 0 0.35rem;
  font-size: 0.8125rem;
  font-weight: 700;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: var(--color-muted-strong);
}

.checkpoint-cms-insight__title {
  margin: 0 0 0.5rem;
  font: 800 1.15rem / 1.2 var(--font-display);
  color: var(--color-navy);
}

.checkpoint-cms-insight__cols {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1rem;
  margin-top: 0.85rem;
  font-size: 0.875rem;
  line-height: 1.45;
}

.checkpoint-cms-insight__cols ul {
  margin: 0.35rem 0 0;
  padding-left: 1.1rem;
}

.checkpoint-quiz {
  padding: clamp(1.25rem, 3vw, 1.75rem);
  border-radius: var(--radius-lg);
  border: 1px solid rgba(20, 38, 105, 0.12);
  border-left: 4px solid var(--color-yellow);
  background: #fff;
  box-shadow: 0 20px 50px rgba(20, 38, 105, 0.09);
}

.checkpoint-quiz__progress {
  height: 0.4rem;
  border-radius: 999px;
  background: rgba(20, 38, 105, 0.08);
  overflow: hidden;
  margin-bottom: 1rem;
}

.checkpoint-quiz__progress-bar {
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, var(--color-navy), var(--color-yellow));
  transition: width 0.35s ease;
}

.checkpoint-quiz__step {
  margin: 0 0 1.15rem;
  font-family: var(--font-body);
  font-size: 0.8125rem;
  font-weight: 700;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: var(--color-muted-strong);
}

.checkpoint-section .quiz-step:not(.is-active) {
  border-bottom: 0;
}

.checkpoint-section .quiz-options {
  display: flex;
  flex-wrap: wrap;
  gap: 0.55rem;
}

.checkpoint-section .quiz-option {
  min-height: 2.875rem;
  padding: 0.55rem 1.1rem;
  border: 1px solid rgba(20, 38, 105, 0.16);
  background: #fff;
  border-radius: var(--radius-pill);
  cursor: pointer;
  font-family: var(--font-body);
  font-size: 0.9375rem;
  font-weight: 600;
  line-height: 1.25;
  color: var(--color-ink);
  transition: border-color var(--motion-fast), background var(--motion-fast), box-shadow var(--motion-fast);
}

.checkpoint-section .quiz-option:hover {
  border-color: rgba(20, 38, 105, 0.35);
  background: rgba(20, 38, 105, 0.03);
}

.checkpoint-section .quiz-option.is-selected,
.checkpoint-section .quiz-option[aria-pressed="true"] {
  border-color: var(--color-navy);
  background: rgba(245, 176, 6, 0.12);
  box-shadow: 0 0 0 1px rgba(245, 176, 6, 0.35);
  color: var(--color-navy);
}

.checkpoint-live {
  margin-top: 1.35rem;
  padding: 1.1rem 1.15rem;
  border-radius: var(--radius-md);
  border: 1px solid rgba(20, 38, 105, 0.1);
  background: linear-gradient(180deg, rgba(20, 38, 105, 0.04), rgba(255, 255, 255, 0.9));
}

.checkpoint-live__label {
  margin: 0 0 0.5rem;
  font-family: var(--font-body);
  font-size: 0.8125rem;
  font-weight: 700;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: var(--color-muted-strong);
}

.checkpoint-live__score {
  display: flex;
  align-items: baseline;
  gap: 0.25rem;
  margin-bottom: 1rem;
}

.checkpoint-live__score strong {
  font: 800 clamp(2rem, 4vw, 2.35rem) / 1 var(--font-display);
  color: var(--color-navy);
}

.checkpoint-live__score span {
  font-family: var(--font-body);
  font-size: 1rem;
  font-weight: 500;
  color: var(--color-muted);
}

.checkpoint-bar {
  display: grid;
  grid-template-columns: 5.75rem 1fr;
  gap: 0.75rem;
  align-items: center;
  margin-bottom: 0.5rem;
}

.checkpoint-bar span {
  font-family: var(--font-display);
  font-size: 0.6875rem;
  font-weight: 800;
  letter-spacing: 0.05em;
  color: var(--color-navy);
}

.checkpoint-bar i {
  display: block;
  height: 0.5rem;
  border-radius: 999px;
  background: rgba(20, 38, 105, 0.1);
  overflow: hidden;
}

.checkpoint-bar i b {
  display: block;
  height: 100%;
  width: var(--pct, 0%);
  max-width: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, var(--color-navy), var(--color-yellow));
}

.checkpoint-result {
  margin-top: 1.35rem;
  padding: 1.35rem 1.4rem;
  border: 1px solid rgba(245, 176, 6, 0.4);
  border-radius: var(--radius-md);
  background: linear-gradient(180deg, rgba(245, 176, 6, 0.1), #fff 48%);
}

.checkpoint-result__kicker {
  margin: 0 0 0.4rem;
  font-family: var(--font-body);
  font-size: 0.8125rem;
  font-weight: 700;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: var(--color-muted-strong);
}

.checkpoint-result__score {
  margin: 0 0 0.65rem;
  font-family: var(--font-body);
  font-size: 1.0625rem;
  line-height: 1.45;
  color: var(--color-ink);
}

.checkpoint-result__score strong {
  font-family: var(--font-display);
  font-weight: 800;
  color: var(--color-navy);
}

.checkpoint-result p {
  font-family: var(--font-body);
  font-size: 1rem;
  line-height: 1.5;
  color: var(--color-ink);
}

.checkpoint-result p strong {
  font-weight: 700;
  color: var(--color-navy);
}

.checkpoint-result__gap {
  margin: 0.35rem 0 0.85rem;
  font-family: var(--font-body);
  font-size: 0.9375rem;
  line-height: 1.45;
  color: var(--color-muted-strong);
}

.checkpoint-result__gap em {
  font-style: normal;
  font-weight: 700;
  color: var(--color-navy);
}

.checkpoint-result small {
  font-size: 0.875rem;
  line-height: 1.45;
  color: var(--color-muted);
}

.checkpoint-result-cta {
  margin-top: 1.35rem;
  padding-top: 1.25rem;
  border-top: 1px solid rgba(20, 38, 105, 0.1);
}

.checkpoint-result-cta__title {
  margin: 0 0 1rem;
  font-family: var(--font-display);
  font-size: 1.05rem;
  font-weight: 800;
  color: var(--color-navy);
}

.checkpoint-result-cta__grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1rem;
  align-items: stretch;
}

.checkpoint-result-cta__option {
  display: flex;
  flex-direction: column;
  min-height: 100%;
  padding: 1.1rem 1.15rem;
  border-radius: var(--radius-md);
  border: 1px solid rgba(20, 38, 105, 0.12);
  background: rgba(255, 255, 255, 0.9);
}

.checkpoint-result-cta__option--chat {
  border-color: rgba(245, 176, 6, 0.35);
  background: linear-gradient(180deg, rgba(245, 176, 6, 0.08), #fff);
}

.checkpoint-result-cta__option--report {
  padding: 0;
  background: linear-gradient(180deg, rgba(20, 38, 105, 0.04), #fff);
}

.checkpoint-report-form {
  display: flex;
  flex-direction: column;
  flex: 1 1 auto;
  min-height: 100%;
  height: 100%;
  padding: 1.1rem 1.15rem;
}

.checkpoint-result-cta__body {
  flex: 0 0 auto;
}

.checkpoint-result-cta__label {
  margin: 0 0 0.4rem;
  font-size: 0.8125rem;
  font-weight: 700;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: var(--color-muted-strong);
}

.checkpoint-result-cta__desc {
  margin: 0;
  min-height: 4.65rem;
  font-size: 0.9375rem;
  line-height: 1.5;
  color: var(--color-ink);
}

.checkpoint-result-cta__actions {
  display: flex;
  flex-direction: column;
  gap: 0.55rem;
  margin-top: auto;
  padding-top: 1rem;
  min-height: 11.25rem;
  justify-content: flex-end;
}

.checkpoint-result-cta__btn {
  width: 100%;
  min-height: 2.875rem;
  margin-top: auto;
  justify-content: center;
  text-align: center;
}

.checkpoint-report-form__field {
  margin: 0;
}

.checkpoint-report-form__field input {
  width: 100%;
  padding: 0.65rem 0.85rem;
  border: 1px solid rgba(20, 38, 105, 0.18);
  border-radius: var(--radius-md);
  font-family: var(--font-body);
  font-size: 0.9375rem;
  color: var(--color-ink);
  background: #fff;
}

.checkpoint-report-form__hint {
  margin: 0;
  font-size: 0.8125rem;
  line-height: 1.4;
  color: var(--color-muted-strong);
}

.checkpoint-report-form__hint--ok {
  color: #0d5c2e;
}

.checkpoint-report-form__hint--err {
  color: #8a1f1f;
}

.quiz-result__alt {
  font-family: var(--font-body);
  font-size: 0.875rem;
  color: var(--color-muted-strong);
  text-decoration: underline;
  text-underline-offset: 0.15em;
}

.quiz-result__alt:hover {
  color: var(--color-navy);
}

@media (max-width: 900px) {
  .checkpoint {
    grid-template-columns: 1fr;
  }

  .checkpoint__aside h3 {
    font-size: clamp(1.65rem, 7vw, 2.35rem);
  }

  .checkpoint-bar {
    grid-template-columns: 4.75rem 1fr;
  }

  .checkpoint-cms-insight__cols {
    grid-template-columns: 1fr;
  }

  .checkpoint-stack-insight__cols {
    grid-template-columns: 1fr;
  }

  .checkpoint-result-cta__grid {
    grid-template-columns: 1fr;
  }

  .checkpoint-result-cta__desc {
    min-height: 0;
  }

  .checkpoint-result-cta__actions {
    min-height: 0;
    padding-top: 0.85rem;
  }
}

@media (prefers-reduced-motion: reduce) {
  .checkpoint-quiz__progress-bar {
    transition: none;
  }
}

/* Recard */
.section--black { background: #080b18; color: #fff; }
.recard-section__ecos-cta { margin-top: 1.25rem; }
.recard-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1rem;
}
.recard-product {
  padding: 1.35rem;
  border: 1px solid rgba(255,255,255,.12);
  border-radius: var(--radius-lg);
  background: rgba(255,255,255,.03);
  min-height: 28rem;
  display: flex;
  flex-direction: column;
}
.recard-product.review {
  background: var(--color-yellow);
  color: var(--color-ink);
}
.recard-product__inner {
  display: grid;
  grid-template-columns: minmax(0, 1.05fr) minmax(0, 0.95fr);
  gap: 1rem 1.15rem;
  height: 100%;
  min-height: 24rem;
  align-items: stretch;
}
.recard-product__copy {
  display: flex;
  flex-direction: column;
  min-height: 100%;
}
.recard-product h3 {
  margin: 0;
  font: 800 clamp(2rem, 4vw, 3.25rem)/0.9 var(--font-display);
}
.recard-product__body {
  margin: 0;
  font-size: 0.9375rem;
  line-height: 1.55;
  color: rgba(255, 255, 255, 0.82);
}
.recard-product.review .recard-product__body {
  color: var(--color-muted-strong);
}
.recard-product__features {
  list-style: none;
  margin: 0.85rem 0 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem;
}
.recard-product__features li {
  font-family: var(--font-body);
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  padding: 0.38rem 0.7rem;
  border-radius: var(--radius-pill);
  border: 1px solid rgba(255, 255, 255, 0.22);
  background: rgba(255, 255, 255, 0.06);
  color: rgba(255, 255, 255, 0.92);
}
.recard-product.review .recard-product__features li {
  border-color: rgba(20, 38, 105, 0.14);
  background: rgba(255, 255, 255, 0.52);
  color: var(--color-navy);
}
.recard-product__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.6rem;
  margin-top: auto;
  padding-top: 1.1rem;
}
.recard-product__btn-main {
  min-height: 2.875rem;
  padding-inline: 1.2rem;
  font-weight: 700;
  box-shadow: 0 10px 24px rgba(20, 38, 105, 0.12);
}
.recard-product__btn-main--bio {
  background: transparent;
  color: #fff;
  border: 2px solid rgba(255, 255, 255, 0.88);
  box-shadow: none;
}
.recard-product__btn-main--bio:hover {
  background: rgba(255, 255, 255, 0.1);
}
.recard-product.review .recard-product__btn-main {
  background: var(--color-navy);
  color: #fff;
  border-color: var(--color-navy);
}
.recard-product.review .recard-product__btn-alt {
  border: 1px solid rgba(20, 38, 105, 0.22);
  color: var(--color-navy);
  background: rgba(255, 255, 255, 0.35);
  min-height: 2.875rem;
}
.recard-product__visual {
  position: relative;
  min-height: 14rem;
  display: flex;
  align-items: flex-end;
  justify-content: center;
}
.recard-visual {
  position: relative;
  width: 100%;
  max-width: 15rem;
  min-height: 13.5rem;
  margin-inline: auto;
}
.recard-visual__device.phone-card,
.recard-visual__device.review-device {
  margin: 0 auto;
  width: min(100%, 9.5rem);
  aspect-ratio: 9/16;
  border-radius: 1.35rem;
  border: 1px solid rgba(255,255,255,.18);
  background: linear-gradient(160deg, #142669, #08113a);
  padding: 0.85rem;
  position: relative;
  z-index: 2;
}
.recard-visual__device.review-device {
  background: #10142a;
  color: #fff;
  display: grid;
  place-items: center;
  text-align: center;
}
.recard-visual--review .recard-visual__device.review-device {
  box-shadow: 0 18px 40px rgba(20, 38, 105, 0.22);
}
.phone-screen {
  height: 100%;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
}
.phone-screen span {
  font-size: 0.5625rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  opacity: 0.85;
}
.phone-screen strong {
  font: 800 1.25rem/1 var(--font-display);
}
.recard-visual__chip {
  position: absolute;
  z-index: 3;
  font-size: 0.625rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  padding: 0.35rem 0.55rem;
  border-radius: var(--radius-pill);
  background: rgba(245, 176, 6, 0.95);
  color: var(--color-navy);
  box-shadow: 0 8px 20px rgba(0, 0, 0, 0.18);
}
.recard-visual__chip--wa { top: 8%; right: 0; }
.recard-visual__chip--vcard { top: 38%; right: -4%; }
.recard-visual__chip--link { bottom: 18%; right: 2%; }
.recard-visual__orbit {
  position: absolute;
  inset: 10% 0 auto;
  width: 100%;
  height: 72%;
  border-radius: 1.25rem;
  border: 1px dashed rgba(255, 255, 255, 0.14);
  z-index: 1;
}
.recard-visual__float {
  position: absolute;
  z-index: 3;
  padding: 0.45rem 0.6rem;
  border-radius: var(--radius-md);
  background: #fff;
  color: var(--color-navy);
  box-shadow: 0 10px 24px rgba(20, 38, 105, 0.16);
  font-size: 0.6875rem;
  line-height: 1.2;
}
.recard-visual__float--review-a {
  top: 6%;
  right: -2%;
  width: 5.5rem;
}
.recard-visual__float--review-a .recard-visual__stars {
  display: block;
  color: var(--color-yellow);
  font-size: 0.625rem;
  letter-spacing: 0.05em;
  margin-bottom: 0.2rem;
}
.recard-visual__float--review-a i {
  display: block;
  height: 0.28rem;
  border-radius: 999px;
  background: rgba(20, 38, 105, 0.12);
  margin-top: 0.22rem;
}
.recard-visual__float--review-b {
  bottom: 22%;
  left: -2%;
  text-align: center;
}
.recard-visual__float--review-b strong {
  display: block;
  font: 800 1rem/1 var(--font-display);
}
.recard-visual__badge {
  position: absolute;
  z-index: 3;
  width: 2.35rem;
  height: 2.35rem;
  border-radius: 0.65rem;
  display: grid;
  place-items: center;
  font: 800 0.6875rem var(--font-display);
  background: var(--color-navy);
  color: #fff;
  box-shadow: 0 8px 18px rgba(20, 38, 105, 0.25);
}
.recard-visual__badge--qr {
  bottom: 8%;
  right: 8%;
}

/* legacy selectors kept for other pages */
.phone-card, .review-device {
  margin-top: auto;
  width: min(100%, 14rem);
  aspect-ratio: 9/16;
  border-radius: 1.5rem;
  border: 1px solid rgba(255,255,255,.18);
  background: linear-gradient(160deg, #142669, #08113a);
  padding: 1rem;
}
.review-device {
  background: #10142a;
  color: #fff;
  display: grid;
  place-items: center;
  text-align: center;
}

/* Digilab */
.digilab-stage {
  display: grid;
  grid-template-columns: minmax(0, 0.82fr) minmax(0, 1.18fr);
  gap: clamp(1.25rem, 3vw, 2.75rem);
  align-items: center;
}
.digilab-copy h2 {
  margin: 0 0 1rem;
  font: 800 clamp(2.2rem, 5vw, 4rem)/0.9 var(--font-display);
}
.digilab-copy .muted { color: #aeb7d0; }

.page-home .digilab-section .digilab-engine {
  position: relative;
  width: 100%;
  max-width: min(100%, 46rem);
  min-height: clamp(26rem, 48vw, 42rem);
  aspect-ratio: 1 / 1;
  margin-inline: auto;
  overflow: visible;
}

.digilab-engine__backdrop {
  position: absolute;
  inset: 2%;
  border-radius: 2rem;
  overflow: hidden;
  pointer-events: none;
}

.digilab-engine__grid {
  position: absolute;
  inset: 0;
  background-image:
    linear-gradient(rgba(255, 255, 255, 0.05) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255, 255, 255, 0.05) 1px, transparent 1px);
  background-size: 1.5rem 1.5rem;
  mask-image: radial-gradient(circle at center, #000 30%, transparent 80%);
}

.digilab-engine__halo {
  position: absolute;
  inset: 4%;
  border-radius: 50%;
  background:
    radial-gradient(circle at 50% 50%, rgba(245, 176, 6, 0.38), transparent 58%),
    radial-gradient(circle at 50% 50%, rgba(49, 112, 178, 0.28), transparent 72%);
  animation: digilabHaloPulse 2.8s ease-in-out infinite;
}

.digilab-engine__svg {
  position: absolute;
  inset: -4%;
  width: 108%;
  height: 108%;
  pointer-events: none;
  z-index: 1;
}

.digilab-engine__ring {
  fill: none;
  vector-effect: non-scaling-stroke;
}

.digilab-engine__ring-wrap {
  transform-box: fill-box;
  transform-origin: center;
}

.digilab-engine__ring-wrap--outer {
  animation: digilabSpin 7s linear infinite;
}

.digilab-engine__ring-wrap--dash {
  animation: digilabSpin 4.5s linear infinite reverse;
}

.digilab-engine__ring-wrap--inner {
  animation: digilabSpin 9s linear infinite;
}

.digilab-engine__ring--outer {
  stroke: url(#digilabOrbitGrad);
  stroke-width: 1.15;
  opacity: 0.95;
  filter: drop-shadow(0 0 8px rgba(245, 176, 6, 0.55));
}

.digilab-engine__ring--dash {
  stroke: rgba(245, 176, 6, 0.92);
  stroke-width: 1.25;
  stroke-dasharray: 5 3;
  animation: digilabRingDash 1.2s linear infinite;
}

.digilab-engine__ring--inner {
  stroke: rgba(255, 255, 255, 0.42);
  stroke-width: 0.95;
  stroke-dasharray: 2.5 2.5;
  animation: digilabRingDash 1.8s linear infinite reverse;
}

.digilab-engine__spoke {
  stroke: rgba(245, 176, 6, 0.62);
  stroke-width: 0.85;
  stroke-dasharray: 2 1.6;
  animation: digilabSpokeFlow 0.9s linear infinite;
}

.digilab-engine__streams {
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 2;
}

.digilab-engine__stream {
  position: absolute;
  left: 50%;
  top: 50%;
  width: 0.85rem;
  height: 0.85rem;
  margin: -0.425rem 0 0 -0.425rem;
  border-radius: 50%;
  background: var(--color-yellow);
  box-shadow:
    0 0 22px rgba(245, 176, 6, 1),
    0 0 44px rgba(245, 176, 6, 0.45);
  opacity: 0;
  animation: digilabStream 1.55s ease-in-out infinite;
}

.digilab-engine__stream--1 { animation-delay: 0s; --digilab-angle: -90deg; --digilab-travel: 14.5rem; }
.digilab-engine__stream--2 { animation-delay: 0.3s; --digilab-angle: -18deg; --digilab-travel: 14.5rem; }
.digilab-engine__stream--3 { animation-delay: 0.6s; --digilab-angle: 54deg; --digilab-travel: 14.5rem; }
.digilab-engine__stream--4 { animation-delay: 0.9s; --digilab-angle: 126deg; --digilab-travel: 14.5rem; }
.digilab-engine__stream--5 { animation-delay: 1.2s; --digilab-angle: 198deg; --digilab-travel: 14.5rem; }

.digilab-engine__core {
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  width: clamp(8.75rem, 24%, 10.5rem);
  height: clamp(8.75rem, 24%, 10.5rem);
  border-radius: 1.65rem;
  background: linear-gradient(145deg, #f5b006, #ffd56a);
  color: var(--color-navy);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.2rem;
  z-index: 4;
  box-shadow:
    0 0 0 1px rgba(255, 255, 255, 0.28),
    0 22px 48px rgba(245, 176, 6, 0.35),
    0 0 70px rgba(245, 176, 6, 0.22);
}

.digilab-engine__core strong {
  font: 800 clamp(1.35rem, 2.4vw, 1.75rem)/1 var(--font-display);
  letter-spacing: -0.02em;
}

.digilab-engine__core small {
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  opacity: 0.88;
}

.digilab-engine__core-orbit {
  position: absolute;
  inset: -0.95rem;
  border-radius: 2rem;
  border: 3px solid rgba(245, 176, 6, 0.72);
  animation: digilabCorePulse 1.6s ease-in-out infinite;
}

.digilab-engine__node {
  position: absolute;
  width: min(13.5rem, 40%);
  padding: 1.05rem 1.1rem 1.15rem;
  border-radius: var(--radius-md);
  border: 1px solid rgba(255, 255, 255, 0.2);
  background: rgba(8, 14, 40, 0.92);
  backdrop-filter: blur(12px);
  transform: translate(-50%, -50%);
  z-index: 3;
  box-shadow: 0 14px 32px rgba(0, 0, 0, 0.32);
}

.digilab-engine__node-dot {
  position: absolute;
  left: 50%;
  top: -0.45rem;
  width: 0.75rem;
  height: 0.75rem;
  margin-left: -0.375rem;
  border-radius: 50%;
  background: var(--color-yellow);
  box-shadow: 0 0 18px rgba(245, 176, 6, 1);
}

.digilab-engine__node-icon {
  display: block;
  width: 2.25rem;
  height: 2.25rem;
  margin-bottom: 0.65rem;
  border-radius: 0.5rem;
  border: 1px solid rgba(245, 176, 6, 0.45);
  background: rgba(245, 176, 6, 0.12);
  position: relative;
}

.digilab-engine__node-icon--crm::before,
.digilab-engine__node-icon--crm::after {
  content: '';
  position: absolute;
  left: 0.35rem;
  right: 0.35rem;
  height: 0.18rem;
  border-radius: 999px;
  background: rgba(245, 176, 6, 0.85);
}
.digilab-engine__node-icon--crm::before { top: 0.42rem; }
.digilab-engine__node-icon--crm::after { top: 0.78rem; width: 60%; }

.digilab-engine__node-icon--ai::before {
  content: 'AI';
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  font: 800 0.6875rem var(--font-display);
  color: var(--color-yellow);
}

.digilab-engine__node-icon--data {
  background:
    linear-gradient(rgba(245, 176, 6, 0.75), rgba(245, 176, 6, 0.75)) 0.35rem 0.45rem / 0.95rem 0.18rem no-repeat,
    linear-gradient(rgba(245, 176, 6, 0.55), rgba(245, 176, 6, 0.55)) 0.35rem 0.78rem / 0.95rem 0.18rem no-repeat,
    linear-gradient(rgba(245, 176, 6, 0.35), rgba(245, 176, 6, 0.35)) 0.35rem 1.1rem / 0.95rem 0.18rem no-repeat;
}

.digilab-engine__node-icon--saas::before {
  content: '';
  position: absolute;
  inset: 0.32rem;
  border-radius: 0.25rem;
  border: 1px solid rgba(245, 176, 6, 0.55);
}

.digilab-engine__node-icon--flow::before {
  content: '→';
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  font-size: 0.85rem;
  font-weight: 800;
  color: var(--color-yellow);
}

.digilab-engine__node b {
  display: block;
  font: 800 clamp(0.82rem, 1.2vw, 0.95rem) var(--font-display);
  letter-spacing: 0.08em;
  color: #fff;
}

.digilab-engine__node small {
  display: block;
  margin-top: 0.3rem;
  color: #b8c2de;
  font-size: clamp(0.76rem, 1.05vw, 0.875rem);
  line-height: 1.45;
}

.digilab-engine__chip {
  position: absolute;
  z-index: 3;
  padding: 0.45rem 0.75rem;
  border-radius: var(--radius-pill);
  font: 800 0.6875rem var(--font-display);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  border: 1px solid rgba(245, 176, 6, 0.45);
  background: rgba(8, 14, 40, 0.88);
  color: var(--color-yellow);
  box-shadow: 0 0 18px rgba(245, 176, 6, 0.15);
}

.digilab-engine__chip--sync { top: 12%; right: 6%; }
.digilab-engine__chip--api { bottom: 16%; left: 4%; }
.digilab-engine__chip--auto { top: 46%; right: 0; }

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

@keyframes digilabHaloPulse {
  0%, 100% { opacity: 0.85; transform: scale(1); }
  50% { opacity: 1; transform: scale(1.12); }
}

@keyframes digilabCorePulse {
  0%, 100% { opacity: 0.65; transform: scale(1); }
  50% { opacity: 1; transform: scale(1.12); }
}

@keyframes digilabRingDash {
  to { stroke-dashoffset: -16; }
}

@keyframes digilabSpokeFlow {
  to { stroke-dashoffset: -14; }
}

@keyframes digilabStream {
  0% { opacity: 0; transform: rotate(var(--digilab-angle, -90deg)) translateX(0); }
  10% { opacity: 1; }
  90% { opacity: 1; }
  100% { opacity: 0; transform: rotate(var(--digilab-angle, -90deg)) translateX(var(--digilab-travel, 14.5rem)); }
}

/* legacy aliases */
.page-home .digilab-section .digilab-board {
  max-width: min(100%, 46rem);
  min-height: clamp(26rem, 48vw, 42rem);
}
.digilab-core { z-index: 2; }
.digilab-node { transform: translate(-50%, -50%); }

/* —— Home visual motion (dedicated per mock) —— */

.home-hero__grid-bg {
  animation: heroGridDrift 24s linear infinite;
}

.hero-focus__noise-tag {
  animation: heroNoiseDrift 4.5s ease-in-out infinite;
  animation-delay: calc(var(--tag-i, 0) * 0.35s);
}

.hero-focus__path-line {
  animation: heroPathFlow 2.2s linear infinite;
}

.hero-focus__spot {
  animation: heroSpotPulse 2.6s ease-in-out infinite;
}

.hero-focus__ghost-step {
  animation: heroGhostBreathe 3s ease-in-out infinite;
}

.hero-focus__ghost-step:last-of-type {
  animation-delay: 0.45s;
}

/* Ecosystem BUILD — sito che si costruisce */
.ecos-mock--site .ecos-mock__hero {
  animation: ecosBuildHero 2.8s ease-in-out infinite;
}

.ecos-mock--site .ecos-mock__lines i:nth-child(1) { animation: ecosBuildLine 2.4s ease-in-out infinite 0.1s; }
.ecos-mock--site .ecos-mock__lines i:nth-child(2) { animation: ecosBuildLine 2.4s ease-in-out infinite 0.35s; }
.ecos-mock--site .ecos-mock__lines i:nth-child(3) { animation: ecosBuildLine 2.4s ease-in-out infinite 0.6s; }

.ecos-mock--site .ecos-mock__cta {
  animation: ecosBuildCta 2.2s ease-in-out infinite;
}

/* Ecosystem GROW — tile che pulsano */
.ecos-mock--content .ecos-mock__tile:nth-child(1) { animation: ecosGrowTile 3.2s ease-in-out infinite 0s; }
.ecos-mock--content .ecos-mock__tile:nth-child(2) { animation: ecosGrowTile 3.2s ease-in-out infinite 0.25s; }
.ecos-mock--content .ecos-mock__tile:nth-child(3) { animation: ecosGrowTile 3.2s ease-in-out infinite 0.5s; }
.ecos-mock--content .ecos-mock__tile:nth-child(4) { animation: ecosGrowTile 3.2s ease-in-out infinite 0.75s; }

/* Ecosystem CONVERT — funnel che scorre */
.ecos-mock--funnel .ecos-mock__step:nth-child(1) { animation: ecosFunnelStep 2.6s ease-in-out infinite 0s; }
.ecos-mock--funnel .ecos-mock__step:nth-child(3) { animation: ecosFunnelStep 2.6s ease-in-out infinite 0.55s; }
.ecos-mock--funnel .ecos-mock__step:nth-child(5) { animation: ecosFunnelStep 2.6s ease-in-out infinite 1.1s; }

.ecos-mock--funnel .ecos-mock__arrow {
  animation: ecosFunnelArrow 2.6s ease-in-out infinite;
}

/* Ecosystem TRUST — stelle e recensioni */
.ecos-mock--trust .ecos-mock__stars span:nth-child(1) { animation: ecosStarTwinkle 1.8s ease-in-out infinite 0s; }
.ecos-mock--trust .ecos-mock__stars span:nth-child(2) { animation: ecosStarTwinkle 1.8s ease-in-out infinite 0.15s; }
.ecos-mock--trust .ecos-mock__stars span:nth-child(3) { animation: ecosStarTwinkle 1.8s ease-in-out infinite 0.3s; }
.ecos-mock--trust .ecos-mock__stars span:nth-child(4) { animation: ecosStarTwinkle 1.8s ease-in-out infinite 0.45s; }
.ecos-mock--trust .ecos-mock__stars span:nth-child(5) { animation: ecosStarTwinkle 1.8s ease-in-out infinite 0.6s; }

.ecos-mock--trust .ecos-mock__review:nth-of-type(1) { animation: ecosTrustReview 3s ease-in-out infinite 0.2s; }
.ecos-mock--trust .ecos-mock__review:nth-of-type(2) { animation: ecosTrustReview 3s ease-in-out infinite 0.55s; }

.ecos-mock--trust .ecos-mock__badge {
  animation: ecosTrustBadge 2.4s ease-in-out infinite;
}

/* Recard Bio — orbita e chip flottanti */
.recard-visual--bio .recard-visual__orbit {
  animation: recardOrbitPulse 3s ease-in-out infinite;
}

.recard-visual--bio .recard-visual__device.phone-card {
  animation: recardPhoneGlow 2.8s ease-in-out infinite;
}

.recard-visual__chip--wa { animation: recardChipFloat 3.2s ease-in-out infinite 0s; }
.recard-visual__chip--vcard { animation: recardChipFloat 3.2s ease-in-out infinite 0.35s; }
.recard-visual__chip--link { animation: recardChipFloat 3.2s ease-in-out infinite 0.7s; }

.recard-visual__pulse {
  position: absolute;
  left: 50%;
  top: 50%;
  width: 0.55rem;
  height: 0.55rem;
  margin: -0.275rem 0 0 -0.275rem;
  border-radius: 50%;
  background: var(--color-yellow);
  box-shadow: 0 0 14px rgba(245, 176, 6, 0.95);
  z-index: 1;
  opacity: 0;
  animation: recardBioPulse 2.4s ease-in-out infinite;
}

.recard-visual__pulse--1 { --recard-pulse-angle: -35deg; --recard-pulse-r: 4.8rem; animation-delay: 0s; }
.recard-visual__pulse--2 { --recard-pulse-angle: 145deg; --recard-pulse-r: 4.8rem; animation-delay: 1.1s; }

/* Recard Review — card e rating */
.recard-visual--review .recard-visual__float--review-a {
  animation: recardReviewFloatA 3s ease-in-out infinite;
}

.recard-visual--review .recard-visual__float--review-b {
  animation: recardReviewFloatB 3.4s ease-in-out infinite 0.4s;
}

.recard-visual--review .recard-visual__device.review-device strong {
  animation: recardStarsGlow 2.2s ease-in-out infinite;
}

.recard-visual__badge--qr {
  animation: recardQrPulse 2.5s ease-in-out infinite;
}

.recard-visual__tap-ring {
  position: absolute;
  left: 50%;
  top: 50%;
  width: 5rem;
  height: 5rem;
  margin: -2.5rem 0 0 -2.5rem;
  border-radius: 50%;
  border: 2px solid rgba(245, 176, 6, 0.45);
  z-index: 1;
  pointer-events: none;
  animation: recardTapRing 2.8s ease-out infinite;
}

@keyframes heroGridDrift {
  to { background-position: 70px 70px; }
}

@keyframes heroNoiseDrift {
  0%, 100% { opacity: 0.55; transform: rotate(calc(-8deg + var(--tag-i) * 5deg)) translateY(0); }
  50% { opacity: 0.95; transform: rotate(calc(-8deg + var(--tag-i) * 5deg)) translateY(-0.35rem); }
}

@keyframes heroPathFlow {
  to { stroke-dashoffset: -36; }
}

@keyframes heroSpotPulse {
  0%, 100% { transform: translateY(-0.65rem) rotate(-2deg) scale(1); box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.12), 0 22px 50px rgba(245, 176, 6, 0.28), 0 0 80px rgba(245, 176, 6, 0.16); }
  50% { transform: translateY(-0.85rem) rotate(-1deg) scale(1.04); box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.18), 0 28px 58px rgba(245, 176, 6, 0.38), 0 0 100px rgba(245, 176, 6, 0.28); }
}

@keyframes heroGhostBreathe {
  0%, 100% { opacity: 0.55; transform: translateY(0.35rem) scale(0.92); }
  50% { opacity: 0.85; transform: translateY(0.25rem) scale(0.94); }
}

@keyframes ecosBuildHero {
  0%, 100% { opacity: 0.75; filter: brightness(0.95); }
  50% { opacity: 1; filter: brightness(1.15); }
}

@keyframes ecosBuildLine {
  0%, 100% { opacity: 0.35; transform: scaleX(0.72); transform-origin: left; }
  50% { opacity: 1; transform: scaleX(1); }
}

@keyframes ecosBuildCta {
  0%, 100% { opacity: 0.55; transform: scaleX(0.92); }
  50% { opacity: 1; transform: scaleX(1); box-shadow: 0 0 16px rgba(245, 176, 6, 0.45); }
}

@keyframes ecosGrowTile {
  0%, 100% { transform: scale(1); border-color: rgba(255, 255, 255, 0.1); }
  50% { transform: scale(1.04); border-color: rgba(245, 176, 6, 0.35); }
}

@keyframes ecosFunnelStep {
  0%, 100% { border-color: rgba(255, 255, 255, 0.14); background: rgba(255, 255, 255, 0.05); }
  35%, 55% { border-color: rgba(245, 176, 6, 0.55); background: rgba(245, 176, 6, 0.18); box-shadow: 0 0 18px rgba(245, 176, 6, 0.2); }
}

@keyframes ecosFunnelArrow {
  0%, 100% { opacity: 0.35; transform: scaleY(0.85); }
  50% { opacity: 1; transform: scaleY(1.15); }
}

@keyframes ecosStarTwinkle {
  0%, 100% { transform: scale(1); opacity: 0.75; }
  50% { transform: scale(1.18); opacity: 1; filter: drop-shadow(0 0 4px rgba(245, 176, 6, 0.8)); }
}

@keyframes ecosTrustReview {
  0%, 100% { opacity: 0.65; transform: translateX(0); }
  50% { opacity: 1; transform: translateX(0.2rem); }
}

@keyframes ecosTrustBadge {
  0%, 100% { transform: scale(1); box-shadow: none; }
  50% { transform: scale(1.08); box-shadow: 0 0 14px rgba(245, 176, 6, 0.35); }
}

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

@keyframes ecosAutoDash {
  to { stroke-dashoffset: -12; }
}

@keyframes ecosAutoSpoke {
  to { stroke-dashoffset: -10; }
}

@keyframes ecosAutoStream {
  0% { opacity: 0; transform: rotate(var(--ecos-angle, -90deg)) translateX(0); }
  12% { opacity: 1; }
  88% { opacity: 1; }
  100% { opacity: 0; transform: rotate(var(--ecos-angle, -90deg)) translateX(var(--ecos-travel, 3.6rem)); }
}

@keyframes ecosAutoCore {
  0%, 100% { transform: translate(-50%, -50%) scale(1); box-shadow: none; }
  50% { transform: translate(-50%, -50%) scale(1.1); box-shadow: 0 0 20px rgba(245, 176, 6, 0.55); }
}

@keyframes recardOrbitPulse {
  0%, 100% { opacity: 0.45; border-color: rgba(255, 255, 255, 0.14); transform: scale(1); }
  50% { opacity: 1; border-color: rgba(245, 176, 6, 0.42); transform: scale(1.04); box-shadow: 0 0 20px rgba(245, 176, 6, 0.12); }
}

@keyframes recardPhoneGlow {
  0%, 100% { box-shadow: 0 0 0 rgba(245, 176, 6, 0); }
  50% { box-shadow: 0 0 28px rgba(245, 176, 6, 0.22); }
}

@keyframes recardChipFloat {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-0.35rem); }
}

@keyframes recardBioPulse {
  0% { opacity: 0; transform: rotate(var(--recard-pulse-angle, 0deg)) translateX(0); }
  15% { opacity: 1; }
  85% { opacity: 0.9; }
  100% { opacity: 0; transform: rotate(var(--recard-pulse-angle, 0deg)) translateX(var(--recard-pulse-r, 4.8rem)); }
}

@keyframes recardReviewFloatA {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-0.4rem); }
}

@keyframes recardReviewFloatB {
  0%, 100% { transform: translateY(0) scale(1); }
  50% { transform: translateY(-0.3rem) scale(1.05); }
}

@keyframes recardStarsGlow {
  0%, 100% { text-shadow: none; opacity: 0.85; }
  50% { text-shadow: 0 0 12px rgba(245, 176, 6, 0.65); opacity: 1; }
}

@keyframes recardQrPulse {
  0%, 100% { transform: scale(1); box-shadow: 0 8px 18px rgba(20, 38, 105, 0.25); }
  50% { transform: scale(1.08); box-shadow: 0 0 22px rgba(245, 176, 6, 0.45); }
}

@keyframes recardTapRing {
  0% { opacity: 0.75; transform: scale(0.65); }
  100% { opacity: 0; transform: scale(1.35); }
}

/* Portfolio */
.portfolio-section {
  position: relative;
  overflow: hidden;
}

.portfolio-section__glow {
  position: absolute;
  inset: -20% auto auto -10%;
  width: min(42rem, 70vw);
  height: min(28rem, 50vw);
  background:
    radial-gradient(circle at 30% 40%, rgba(49, 112, 178, 0.14), transparent 60%),
    radial-gradient(circle at 80% 20%, rgba(255, 196, 0, 0.16), transparent 55%);
  pointer-events: none;
  filter: blur(8px);
  animation: portfolioGlowDrift 14s ease-in-out infinite alternate;
}

.portfolio-section__lead {
  max-width: 42rem;
  color: var(--color-muted);
  line-height: 1.65;
}

.portfolio-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1rem;
}

.project {
  --project-accent: var(--color-blue);
  position: relative;
  min-height: 18rem;
  padding: 1.35rem 1.35rem 1.25rem;
  border: 1px solid rgba(20, 38, 105, 0.08);
  border-radius: 1.1rem;
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.96), #fff 40%),
    #fff;
  display: flex;
  flex-direction: column;
  gap: 0.65rem;
  box-shadow: 0 10px 28px rgba(20, 38, 105, 0.04);
  overflow: hidden;
  transition:
    transform 0.45s cubic-bezier(0.22, 1, 0.36, 1),
    box-shadow 0.45s ease,
    border-color 0.35s ease;
}

.project:hover {
  transform: translateY(-8px);
  border-color: color-mix(in srgb, var(--project-accent) 35%, transparent);
  box-shadow: 0 22px 48px rgba(20, 38, 105, 0.1);
}

.project__accent {
  position: absolute;
  inset: 0 0 auto;
  height: 3px;
  background: linear-gradient(90deg, var(--project-accent), color-mix(in srgb, var(--project-accent) 30%, #fff));
}

.project--web { --project-accent: #3170b2; }
.project--social { --project-accent: #e8a006; }
.project--saas { --project-accent: #5b4fcf; }
.project--brand { --project-accent: #0b1645; }
.project--reputation { --project-accent: #2a9d6e; }
.project--automation { --project-accent: #d97706; }
.project--default { --project-accent: var(--color-blue); }

.project__top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem;
}

.project__cat {
  font: 800 0.5625rem var(--font-display);
  color: #7a8294;
  letter-spacing: 0.14em;
}

.project__badge {
  flex-shrink: 0;
  font: 700 0.5625rem/1 var(--font-display);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--color-navy);
  background: color-mix(in srgb, var(--project-accent) 22%, #fff);
  border: 1px solid color-mix(in srgb, var(--project-accent) 35%, transparent);
  border-radius: 999px;
  padding: 0.38rem 0.6rem;
  white-space: nowrap;
}

.project--web .project__badge { color: #1a4f7a; }
.project--social .project__badge { color: #8a5a00; background: rgba(255, 196, 0, 0.38); }
.project--saas .project__badge { color: #4338a8; }
.project--reputation .project__badge { color: #1f6b4a; }
.project--automation .project__badge { color: #9a4f00; }

.project h3 {
  margin: 0;
  font: 800 clamp(1.35rem, 2.2vw, 1.65rem) / 1.05 var(--font-display);
  letter-spacing: -0.03em;
  color: var(--color-navy);
}

.project__perception {
  margin: 0;
  color: var(--color-muted);
  font-size: 0.9375rem;
  line-height: 1.55;
}

.project__flow {
  display: grid;
  gap: 0.45rem;
  margin-top: 0.15rem;
}

.project__chip {
  border-radius: 0.75rem;
  padding: 0.7rem 0.8rem;
  background: rgba(20, 38, 105, 0.03);
  border: 1px solid rgba(20, 38, 105, 0.05);
}

.project__chip--solution {
  background: color-mix(in srgb, var(--project-accent) 8%, #fff);
  border-color: color-mix(in srgb, var(--project-accent) 18%, transparent);
}

.project__chip-label {
  display: block;
  font: 800 0.5625rem var(--font-display);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: #8a93a6;
  margin-bottom: 0.25rem;
}

.project__chip--solution .project__chip-label {
  color: var(--project-accent);
}

.project__chip p {
  margin: 0;
  font-size: 0.875rem;
  line-height: 1.45;
  color: var(--color-ink);
}

.project__arrow {
  display: none;
}

.project__metric {
  margin: 0;
  font: 800 0.95rem var(--font-display);
  color: var(--color-blue);
}

.project__link {
  margin-top: auto;
  font: 700 0.875rem var(--font-display);
  color: var(--color-navy);
  text-decoration: none;
}

.project__link:hover {
  color: var(--project-accent);
}

.project--incomplete {
  opacity: 1;
}

.project--incomplete::after {
  content: '';
  position: absolute;
  inset: auto 0 0;
  height: 40%;
  background: linear-gradient(180deg, transparent, rgba(250, 248, 242, 0.55));
  pointer-events: none;
}

.project__incomplete {
  margin: auto 0 0;
  color: var(--color-muted);
  font-size: 0.8125rem;
  line-height: 1.4;
  position: relative;
  z-index: 1;
}

.portfolio-section__cta {
  margin-top: 2rem;
}

@keyframes portfolioGlowDrift {
  from { transform: translate(0, 0) scale(1); opacity: 0.85; }
  to { transform: translate(8%, 6%) scale(1.08); opacity: 1; }
}

/* Method */
.section--paper2 { background: var(--color-paper-muted); color: var(--color-ink); }

.method-section {
  position: relative;
  overflow: hidden;
}

.method-section__glow {
  position: absolute;
  inset: auto -15% -25% auto;
  width: min(36rem, 65vw);
  height: min(24rem, 45vw);
  background:
    radial-gradient(circle at 40% 40%, rgba(255, 196, 0, 0.22), transparent 62%),
    radial-gradient(circle at 70% 70%, rgba(49, 112, 178, 0.12), transparent 58%);
  pointer-events: none;
  filter: blur(10px);
  animation: methodGlowPulse 10s ease-in-out infinite alternate;
}

.method-section__lead {
  max-width: 38rem;
  color: var(--color-muted);
  line-height: 1.65;
}

.method-track {
  list-style: none;
  margin: 2rem 0 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 0.85rem;
  position: relative;
}

.method-track__line {
  position: absolute;
  top: 1.35rem;
  left: 4%;
  right: 4%;
  height: 2px;
  background: linear-gradient(
    90deg,
    rgba(49, 112, 178, 0.15),
    rgba(255, 196, 0, 0.55),
    rgba(49, 112, 178, 0.2)
  );
  border-radius: 999px;
  overflow: hidden;
  pointer-events: none;
}

.method-track__line::after {
  content: '';
  position: absolute;
  inset: 0 auto 0 0;
  width: 28%;
  background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.85), transparent);
  animation: methodLineFlow 3.2s ease-in-out infinite;
}

.method-step {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.85rem;
  position: relative;
  z-index: 1;
}

.method-step__node {
  position: relative;
  width: 2.7rem;
  height: 2.7rem;
  border-radius: 999px;
  display: grid;
  place-items: center;
  background: #fff;
  border: 2px solid color-mix(in srgb, var(--color-blue) 45%, #fff);
  box-shadow: 0 8px 20px rgba(20, 38, 105, 0.08);
}

.method-step__pulse {
  position: absolute;
  inset: -6px;
  border-radius: inherit;
  border: 1px solid color-mix(in srgb, var(--color-yellow) 55%, transparent);
  animation: methodNodePulse 2.4s ease-out infinite;
  animation-delay: calc(var(--step-i, 0) * 0.35s);
  opacity: 0;
}

.method-step__num {
  font: 800 0.75rem var(--font-display);
  color: var(--color-navy);
  letter-spacing: 0.04em;
}

.method-step__card {
  width: 100%;
  padding: 1.15rem 1rem 1.2rem;
  border-radius: 1rem;
  background: rgba(255, 255, 255, 0.78);
  border: 1px solid rgba(20, 38, 105, 0.07);
  box-shadow: 0 12px 28px rgba(20, 38, 105, 0.04);
  transition: transform 0.4s ease, box-shadow 0.4s ease;
  min-height: 10.5rem;
}

.method-step:hover .method-step__card {
  transform: translateY(-6px);
  box-shadow: 0 18px 40px rgba(20, 38, 105, 0.09);
}

.method-step__card h3 {
  margin: 0 0 0.45rem;
  font: 800 1.05rem / 1.15 var(--font-display);
  letter-spacing: -0.02em;
  color: var(--color-navy);
}

.method-step__card > p {
  margin: 0;
  color: var(--color-muted);
  font-size: 0.875rem;
  line-height: 1.55;
}

.method-step__feel {
  margin-top: 0.65rem !important;
  font: 700 0.75rem / 1.35 var(--font-display);
  color: var(--color-blue);
  letter-spacing: 0.01em;
}

.method-closing {
  margin-top: 2.75rem;
  display: flex;
  justify-content: center;
}

.method-closing__text {
  margin: 0;
  max-width: 18ch;
  text-align: center;
  font: 800 clamp(1.55rem, 3.4vw, 2.45rem) / 1.08 var(--font-display);
  letter-spacing: -0.04em;
  color: var(--color-navy);
  position: relative;
}

.method-closing__text::before,
.method-closing__text::after {
  content: '';
  position: absolute;
  top: 50%;
  width: clamp(1.5rem, 4vw, 3rem);
  height: 2px;
  background: linear-gradient(90deg, transparent, var(--color-yellow));
}

.method-closing__text::before {
  right: calc(100% + 0.85rem);
  transform: scaleX(-1);
}

.method-closing__text::after {
  left: calc(100% + 0.85rem);
}

@keyframes methodGlowPulse {
  from { opacity: 0.7; transform: scale(1); }
  to { opacity: 1; transform: scale(1.08); }
}

@keyframes methodLineFlow {
  0% { transform: translateX(-40%); }
  100% { transform: translateX(320%); }
}

@keyframes methodNodePulse {
  0% { opacity: 0.55; transform: scale(0.85); }
  100% { opacity: 0; transform: scale(1.35); }
}

/* Shared scroll reveal (portfolio + method) */
.portfolio-section [data-reveal],
.method-section [data-reveal] {
  opacity: 0;
  transform: translateY(1.25rem);
  transition:
    opacity 0.7s cubic-bezier(0.22, 1, 0.36, 1),
    transform 0.7s cubic-bezier(0.22, 1, 0.36, 1);
  transition-delay: var(--reveal-delay, 0ms);
}

.portfolio-section [data-reveal].is-in,
.method-section [data-reveal].is-in {
  opacity: 1;
  transform: none;
}

@media (prefers-reduced-motion: reduce) {
  .portfolio-section__glow,
  .method-section__glow,
  .method-track__line::after,
  .method-step__pulse {
    animation: none;
  }

  .portfolio-section [data-reveal],
  .method-section [data-reveal] {
    opacity: 1;
    transform: none;
    transition: none;
  }

  .project:hover,
  .method-step:hover .method-step__card {
    transform: none;
  }
}

@media (max-width: 1100px) and (min-width: 1001px) {
  .portfolio-grid {
    grid-template-columns: repeat(2, 1fr);
  }

  .method-track {
    grid-template-columns: repeat(3, 1fr);
  }

  .method-track__line {
    display: none;
  }
}

/* Quote / Final CTA */
.quote-section {
  position: relative;
  overflow: hidden;
  min-height: min(92vh, 54rem);
  display: flex;
  align-items: center;
  padding-block: clamp(4.5rem, 11vh, 7.5rem);
}

.quote-section__ambient {
  position: absolute;
  inset: 0;
  pointer-events: none;
  background:
    radial-gradient(circle at 18% 42%, rgba(245, 176, 6, 0.12), transparent 38%),
    radial-gradient(circle at 82% 58%, rgba(49, 112, 178, 0.14), transparent 42%),
    linear-gradient(rgba(255, 255, 255, 0.025) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255, 255, 255, 0.025) 1px, transparent 1px);
  background-size: auto, auto, 4rem 4rem, 4rem 4rem;
  animation: quoteGridDrift 32s linear infinite;
  mask-image: linear-gradient(to bottom, #000 70%, transparent);
}

.quote-stage {
  position: relative;
  z-index: 1;
  display: grid;
  grid-template-columns: minmax(0, 1.08fr) minmax(0, 0.92fr);
  gap: clamp(2rem, 5vw, 4.5rem);
  align-items: center;
  width: 100%;
}

.quote-manifesto {
  position: relative;
  max-width: none;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: none;
  box-shadow: none;
  isolation: isolate;
}

.quote-manifesto__head {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.75rem 1rem;
  margin-bottom: clamp(1.25rem, 2.5vw, 2rem);
}

.quote-manifesto__kicker {
  margin: 0;
}

.quote-manifesto__badge {
  display: inline-flex;
  align-items: center;
  padding: 0.4rem 0.8rem;
  border-radius: var(--radius-pill);
  border: 1px solid rgba(245, 176, 6, 0.42);
  background: rgba(245, 176, 6, 0.1);
  color: var(--color-yellow);
  font: 800 0.6875rem var(--font-display);
  letter-spacing: 0.14em;
  text-transform: uppercase;
  animation: quoteBadgeGlow 3s ease-in-out infinite;
}

.quote-manifesto__text {
  margin: 0;
  padding-left: 0.15rem;
  max-width: 18ch;
  font: 800 clamp(2rem, 4.8vw, 3.85rem)/1.06 var(--font-display);
  letter-spacing: -0.045em;
  color: #fff;
}

.quote-manifesto__mark {
  color: rgba(245, 176, 6, 0.55);
  font-size: 1.12em;
  line-height: 0;
  vertical-align: -0.08em;
}

.quote-manifesto__mark--open {
  margin-right: 0.12em;
}

.quote-manifesto__mark--close {
  margin-left: 0.08em;
  color: var(--color-yellow);
}

.quote-manifesto__highlight {
  color: var(--color-yellow);
  animation: quoteHighlightPulse 2.8s ease-in-out infinite;
}

.quote-manifesto__sign {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.85rem;
  margin-top: clamp(2rem, 4vw, 3rem);
  padding-top: 1.35rem;
  border-top: 1px solid rgba(255, 255, 255, 0.12);
}

.quote-manifesto__brand {
  font: 800 0.875rem var(--font-display);
  letter-spacing: 0.2em;
  color: var(--color-yellow);
  animation: quoteSignBrand 3.2s ease-in-out infinite;
}

.quote-manifesto__sep {
  width: 2.75rem;
  height: 1px;
  background: linear-gradient(90deg, rgba(245, 176, 6, 0.65), rgba(255, 255, 255, 0.22));
}

.quote-manifesto__person {
  font: 700 0.875rem var(--font-display);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: #c5cce4;
}

/* Manifesto visual — convergenza orizzontale (non orbitale) */
.quote-converge {
  position: relative;
  width: 100%;
  max-width: min(100%, 40rem);
  min-height: clamp(18rem, 32vw, 28rem);
  margin-inline: auto;
}

.quote-converge__frame {
  position: relative;
  height: 100%;
  min-height: clamp(18rem, 32vw, 28rem);
  padding: clamp(1rem, 2.5vw, 1.5rem);
  border-radius: 1.5rem;
  border: 1px solid rgba(255, 255, 255, 0.12);
  background:
    linear-gradient(160deg, rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0.015)),
    rgba(8, 14, 40, 0.72);
  box-shadow:
    inset 0 0 0 1px rgba(245, 176, 6, 0.08),
    0 24px 50px rgba(0, 0, 0, 0.28);
  overflow: hidden;
}

.quote-converge__scan {
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg, transparent, rgba(245, 176, 6, 0.08), transparent);
  width: 35%;
  transform: translateX(-120%);
  animation: quoteConvergeScan 4.5s ease-in-out infinite;
  pointer-events: none;
  z-index: 1;
}

.quote-converge__lanes {
  position: absolute;
  left: clamp(0.75rem, 2vw, 1.25rem);
  top: 50%;
  transform: translateY(-50%);
  display: grid;
  gap: 0.65rem;
  width: min(38%, 11rem);
  z-index: 3;
}

.quote-converge__lane {
  position: relative;
  display: grid;
  grid-template-columns: 2rem 1fr;
  gap: 0.55rem;
  align-items: center;
  padding: 0.65rem 0.7rem;
  border-radius: 0.75rem;
  border: 1px solid rgba(255, 255, 255, 0.12);
  background: rgba(255, 255, 255, 0.04);
  animation: quoteConvergeLane 3s ease-in-out infinite;
}

.quote-converge__lane--1 { animation-delay: 0s; }
.quote-converge__lane--2 { animation-delay: 0.35s; }
.quote-converge__lane--3 { animation-delay: 0.7s; }

.quote-converge__lane-icon {
  width: 2rem;
  height: 2rem;
  border-radius: 0.55rem;
  border: 1px solid rgba(245, 176, 6, 0.35);
  background: rgba(245, 176, 6, 0.1);
  position: relative;
}

.quote-converge__lane-icon--people::before,
.quote-converge__lane-icon--people::after {
  content: '';
  position: absolute;
  border-radius: 50%;
  background: rgba(245, 176, 6, 0.85);
}

.quote-converge__lane-icon--people::before {
  width: 0.45rem;
  height: 0.45rem;
  left: 0.42rem;
  top: 0.38rem;
}

.quote-converge__lane-icon--people::after {
  width: 0.75rem;
  height: 0.75rem;
  left: 0.78rem;
  top: 0.72rem;
  opacity: 0.65;
}

.quote-converge__lane-icon--process::before {
  content: '';
  position: absolute;
  inset: 0.45rem 0.35rem;
  border-radius: 0.2rem;
  border: 1px solid rgba(245, 176, 6, 0.7);
  border-left-width: 0.18rem;
}

.quote-converge__lane-icon--vision::before {
  content: '◎';
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  font-size: 0.85rem;
  color: var(--color-yellow);
}

.quote-converge__lane-copy b {
  display: block;
  font: 800 0.75rem var(--font-display);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: #fff;
}

.quote-converge__lane-copy small {
  display: block;
  margin-top: 0.12rem;
  font-size: 0.625rem;
  color: #b3bdd8;
  line-height: 1.3;
}

.quote-converge__lane-signal {
  position: absolute;
  right: -0.2rem;
  top: 50%;
  width: 0.45rem;
  height: 0.45rem;
  margin-top: -0.225rem;
  border-radius: 50%;
  background: var(--color-yellow);
  box-shadow: 0 0 12px rgba(245, 176, 6, 0.9);
  animation: quoteConvergeSignal 2.4s ease-in-out infinite;
}

.quote-converge__lane--1 .quote-converge__lane-signal { animation-delay: 0s; }
.quote-converge__lane--2 .quote-converge__lane-signal { animation-delay: 0.4s; }
.quote-converge__lane--3 .quote-converge__lane-signal { animation-delay: 0.8s; }

.quote-converge__svg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
  z-index: 2;
}

.quote-converge__path {
  fill: none;
  stroke: url(#quoteConvergeGrad);
  stroke-width: 1.1;
  stroke-linecap: round;
  vector-effect: non-scaling-stroke;
  stroke-dasharray: 120;
  stroke-dashoffset: 120;
  animation: quoteConvergeDraw 2.8s ease-in-out infinite;
}

.quote-converge__path--1 { animation-delay: 0s; }
.quote-converge__path--2 { animation-delay: 0.25s; }
.quote-converge__path--3 { animation-delay: 0.5s; }

.quote-converge__pulses {
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 2;
}

.quote-converge__pulse {
  position: absolute;
  width: 0.5rem;
  height: 0.5rem;
  border-radius: 50%;
  background: var(--color-yellow);
  box-shadow: 0 0 14px rgba(245, 176, 6, 0.95);
  opacity: 0;
}

.quote-converge__pulse--1 {
  left: 28%;
  top: 22%;
  animation: quoteConvergePulse1 2.6s ease-in-out infinite;
}

.quote-converge__pulse--2 {
  left: 28%;
  top: 50%;
  animation: quoteConvergePulse2 2.2s ease-in-out infinite 0.35s;
}

.quote-converge__pulse--3 {
  left: 28%;
  top: 78%;
  animation: quoteConvergePulse3 2.6s ease-in-out infinite 0.7s;
}

.quote-converge__merge {
  position: absolute;
  left: 58%;
  top: 50%;
  transform: translate(-50%, -50%);
  display: grid;
  gap: 0.28rem;
  z-index: 2;
}

.quote-converge__merge span {
  display: block;
  width: 1.75rem;
  height: 0.18rem;
  border-radius: 999px;
  background: rgba(245, 176, 6, 0.35);
  animation: quoteConvergeMerge 2.4s ease-in-out infinite;
}

.quote-converge__merge span:nth-child(1) { animation-delay: 0s; }
.quote-converge__merge span:nth-child(2) { animation-delay: 0.2s; }
.quote-converge__merge span:nth-child(3) { animation-delay: 0.4s; }

.quote-converge__output {
  position: absolute;
  right: clamp(0.75rem, 2vw, 1.25rem);
  top: 50%;
  transform: translateY(-50%);
  width: min(34%, 9.5rem);
  min-height: 9.5rem;
  padding: 1rem 0.85rem 0.9rem;
  border-radius: 1.15rem;
  border: 1px solid rgba(245, 176, 6, 0.35);
  background: linear-gradient(160deg, rgba(245, 176, 6, 0.95), rgba(255, 213, 106, 0.92));
  color: var(--color-navy);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.15rem;
  text-align: center;
  z-index: 3;
  box-shadow:
    0 0 0 1px rgba(255, 255, 255, 0.2),
    0 18px 40px rgba(245, 176, 6, 0.28);
  animation: quoteConvergeOutput 3s ease-in-out infinite;
}

.quote-converge__stack {
  position: relative;
  width: 2.5rem;
  height: 1.35rem;
  margin-bottom: 0.35rem;
}

.quote-converge__layer {
  position: absolute;
  left: 0;
  right: 0;
  height: 0.42rem;
  border-radius: 0.25rem;
  border: 1px solid rgba(20, 38, 105, 0.18);
  background: rgba(255, 255, 255, 0.35);
  animation: quoteConvergeStack 3s ease-in-out infinite;
}

.quote-converge__layer--1 { top: 0; animation-delay: 0s; }
.quote-converge__layer--2 { top: 0.42rem; animation-delay: 0.15s; }
.quote-converge__layer--3 { top: 0.84rem; animation-delay: 0.3s; }

.quote-converge__output strong {
  font: 800 clamp(1rem, 1.8vw, 1.25rem)/1 var(--font-display);
  letter-spacing: -0.02em;
}

.quote-converge__output small {
  font-size: 0.5625rem;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  opacity: 0.88;
}

.quote-converge__output-tag {
  position: absolute;
  top: 0.55rem;
  right: 0.55rem;
  font: 800 0.5rem var(--font-display);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: rgba(20, 38, 105, 0.55);
  font-style: normal;
}

@keyframes quoteConvergeScan {
  0%, 100% { transform: translateX(-120%); opacity: 0; }
  15% { opacity: 1; }
  55% { transform: translateX(220%); opacity: 1; }
  70%, 100% { opacity: 0; }
}

@keyframes quoteConvergeLane {
  0%, 100% { border-color: rgba(255, 255, 255, 0.12); transform: translateX(0); }
  50% { border-color: rgba(245, 176, 6, 0.38); transform: translateX(0.15rem); }
}

@keyframes quoteConvergeSignal {
  0%, 100% { opacity: 0.45; transform: scale(1); }
  50% { opacity: 1; transform: scale(1.25); }
}

@keyframes quoteConvergeDraw {
  0% { stroke-dashoffset: 120; opacity: 0.35; }
  45%, 70% { stroke-dashoffset: 0; opacity: 1; }
  100% { stroke-dashoffset: -40; opacity: 0.35; }
}

@keyframes quoteConvergePulse1 {
  0% { opacity: 0; left: 28%; top: 22%; }
  20% { opacity: 1; }
  100% { opacity: 0; left: 58%; top: 50%; }
}

@keyframes quoteConvergePulse2 {
  0% { opacity: 0; left: 28%; top: 50%; }
  20% { opacity: 1; }
  100% { opacity: 0; left: 58%; top: 50%; }
}

@keyframes quoteConvergePulse3 {
  0% { opacity: 0; left: 28%; top: 78%; }
  20% { opacity: 1; }
  100% { opacity: 0; left: 58%; top: 50%; }
}

@keyframes quoteConvergeMerge {
  0%, 100% { opacity: 0.35; transform: scaleX(0.75); }
  50% { opacity: 1; transform: scaleX(1); background: rgba(245, 176, 6, 0.85); }
}

@keyframes quoteConvergeStack {
  0%, 100% { transform: translateX(0); opacity: 0.65; }
  50% { transform: translateX(0.35rem); opacity: 1; }
}

@keyframes quoteConvergeOutput {
  0%, 100% { transform: translateY(-50%) scale(1); }
  50% { transform: translateY(-50%) scale(1.04); box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.2), 0 18px 40px rgba(245, 176, 6, 0.28), 0 0 36px rgba(245, 176, 6, 0.22); }
}

@keyframes quoteGridDrift {
  to { background-position: 0 0, 0 0, 4rem 4rem, 4rem 4rem; }
}

@keyframes quoteBadgeGlow {
  0%, 100% { box-shadow: none; border-color: rgba(245, 176, 6, 0.42); }
  50% { box-shadow: 0 0 20px rgba(245, 176, 6, 0.22); border-color: rgba(245, 176, 6, 0.72); }
}

@keyframes quoteHighlightPulse {
  0%, 100% { text-shadow: none; }
  50% { text-shadow: 0 0 28px rgba(245, 176, 6, 0.45); }
}

@keyframes quoteSignBrand {
  0%, 100% { opacity: 0.88; }
  50% { opacity: 1; }
}

/* legacy aliases */
.quote-section blockquote {
  margin: 1rem 0;
  font: 800 clamp(1.75rem, 4.5vw, 3.5rem)/1.05 var(--font-display);
  letter-spacing: -0.04em;
}
.quote-section blockquote span { color: var(--color-yellow); }
.quote-author {
  font: 800 0.75rem var(--font-display);
  letter-spacing: 0.16em;
  color: #8b94b3;
}
.final-cta {
  position: relative;
  overflow: hidden;
  padding-block: clamp(4.5rem, 10vh, 7rem);
}

.final-cta__stage {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 0.92fr);
  gap: clamp(2rem, 5vw, 4rem);
  align-items: center;
}

.final-cta__copy h2 {
  margin: 0;
  max-width: 11ch;
  font: 800 clamp(2.5rem, 7vw, 5.5rem)/0.88 var(--font-display);
}

.final-cta__copy h2 span { color: var(--color-yellow); }

.final-cta__panel {
  width: 100%;
  max-width: 28rem;
  margin-inline: auto;
}

.final-cta-tab {
  position: relative;
  padding: 1.15rem 1.15rem 1.25rem;
  border-radius: 1.5rem;
  border: 1px solid rgba(245, 176, 6, 0.35);
  background:
    linear-gradient(165deg, rgba(255, 255, 255, 0.07), rgba(255, 255, 255, 0.02)),
    rgba(8, 14, 40, 0.88);
  box-shadow:
    0 28px 60px rgba(0, 0, 0, 0.35),
    inset 0 0 0 1px rgba(255, 255, 255, 0.06);
  animation: finalTabFloat 4.5s ease-in-out infinite;
  overflow: hidden;
}

.final-cta-tab__glow {
  position: absolute;
  inset: -40% -20%;
  background:
    radial-gradient(circle at 30% 20%, rgba(245, 176, 6, 0.22), transparent 55%),
    radial-gradient(circle at 80% 80%, rgba(49, 112, 178, 0.18), transparent 50%);
  pointer-events: none;
  animation: finalTabGlow 5s ease-in-out infinite;
}

.final-cta-tab__chrome {
  position: relative;
  z-index: 1;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
  margin-bottom: 1rem;
  padding-bottom: 0.85rem;
  border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}

.final-cta-tab__chrome-label {
  font: 800 0.6875rem var(--font-display);
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.72);
}

.final-cta-tab__live {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  padding: 0.28rem 0.55rem;
  border-radius: var(--radius-pill);
  border: 1px solid rgba(245, 176, 6, 0.35);
  background: rgba(245, 176, 6, 0.08);
  font: 800 0.5625rem var(--font-display);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--color-yellow);
}

.final-cta-tab__live i {
  width: 0.45rem;
  height: 0.45rem;
  border-radius: 50%;
  background: var(--color-yellow);
  box-shadow: 0 0 10px rgba(245, 176, 6, 0.9);
  animation: finalTabLive 1.4s ease-in-out infinite;
}

.final-cta-tab__body {
  position: relative;
  z-index: 1;
}

.final-cta-tab__body strong {
  display: block;
  font: 800 clamp(1.35rem, 2.4vw, 1.75rem)/1.05 var(--font-display);
  letter-spacing: -0.02em;
  color: #fff;
}

.final-cta-tab__body p {
  margin: 0.55rem 0 1rem;
  color: #b5bfd9;
  font-size: 0.875rem;
  line-height: 1.55;
  max-width: 34ch;
}

.final-cta-tab__thread {
  display: grid;
  gap: 0.55rem;
  margin-bottom: 1.15rem;
}

.final-cta-tab__bubble {
  max-width: 92%;
  padding: 0.55rem 0.7rem;
  border-radius: 0.75rem;
  border: 1px solid rgba(255, 255, 255, 0.08);
  animation: finalTabBubble 4.2s ease-in-out infinite;
}

.final-cta-tab__bubble small {
  display: block;
  margin-bottom: 0.2rem;
  font: 800 0.5rem var(--font-display);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  opacity: 0.72;
}

.final-cta-tab__bubble span {
  display: block;
  font-size: 0.75rem;
  line-height: 1.4;
}

.final-cta-tab__bubble--you {
  justify-self: start;
  background: rgba(255, 255, 255, 0.05);
  color: #dce2f4;
  animation-delay: 0s;
}

.final-cta-tab__bubble--ai {
  justify-self: end;
  background: rgba(245, 176, 6, 0.12);
  border-color: rgba(245, 176, 6, 0.22);
  color: #fff;
  animation-delay: 0.45s;
}

.final-cta-tab__typing {
  display: flex;
  gap: 0.25rem;
  justify-self: end;
  width: fit-content;
  padding: 0.45rem 0.55rem;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.05);
  animation: finalTabBubble 4.2s ease-in-out infinite 0.9s;
}

.final-cta-tab__typing span {
  width: 0.35rem;
  height: 0.35rem;
  border-radius: 50%;
  background: rgba(245, 176, 6, 0.85);
  animation: finalTabTyping 1.1s ease-in-out infinite;
}

.final-cta-tab__typing span:nth-child(2) { animation-delay: 0.15s; }
.final-cta-tab__typing span:nth-child(3) { animation-delay: 0.3s; }

.final-cta-tab__actions {
  position: relative;
  z-index: 1;
  display: grid;
  gap: 0.75rem;
}

.final-cta-tab__cta {
  width: 100%;
  min-height: 3.25rem;
  font-size: 0.9375rem;
  animation: finalTabCtaPulse 2.8s ease-in-out infinite;
}

.final-cta-tab__alt {
  text-align: center;
  font: 700 0.75rem var(--font-display);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: #c5cce4;
  text-decoration: none;
  transition: color 0.2s ease;
}

.final-cta-tab__alt:hover {
  color: #fff;
}

@keyframes finalTabFloat {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-0.35rem); }
}

@keyframes finalTabGlow {
  0%, 100% { opacity: 0.75; transform: scale(1); }
  50% { opacity: 1; transform: scale(1.04); }
}

@keyframes finalTabLive {
  0%, 100% { opacity: 0.55; transform: scale(1); }
  50% { opacity: 1; transform: scale(1.2); }
}

@keyframes finalTabBubble {
  0%, 100% { opacity: 0.55; transform: translateY(0.15rem); }
  20%, 70% { opacity: 1; transform: translateY(0); }
}

@keyframes finalTabTyping {
  0%, 100% { opacity: 0.35; transform: translateY(0); }
  50% { opacity: 1; transform: translateY(-0.12rem); }
}

@keyframes finalTabCtaPulse {
  0%, 100% { box-shadow: 0 0 0 rgba(245, 176, 6, 0); }
  50% { box-shadow: 0 0 28px rgba(245, 176, 6, 0.35); }
}

.final-cta h2 {
  margin: 0 0 1.5rem;
  font: 800 clamp(2.5rem, 7vw, 5.5rem)/0.88 var(--font-display);
}
.final-cta h2 span { color: var(--color-yellow); }
.contact-row {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
}

.contextual-cta-band {
  padding: 3rem var(--container-pad);
  background: #0a1236;
  color: #fff;
  text-align: center;
}

@media (max-width: 1000px) {
  .home-hero__inner,
  .assembly-body,
  .path-grid,
  .rental-teaser__inner,
  .ecos-panel,
  .contact-section__grid,
  .checkpoint,
  .recard-grid,
  .recard-product__inner,
  .digilab-stage,
  .quote-stage,
  .final-cta__stage,
  .portfolio-grid {
    grid-template-columns: 1fr;
  }

  .method-track {
    grid-template-columns: 1fr;
    gap: 1.25rem;
  }

  .method-track__line {
    display: none;
  }

  .method-step {
    flex-direction: row;
    align-items: stretch;
    gap: 1rem;
  }

  .method-step__node {
    flex-shrink: 0;
    margin-top: 0.35rem;
  }

  .method-step__card {
    min-height: 0;
  }

  .method-closing__text::before,
  .method-closing__text::after {
    display: none;
  }

  .home-hero {
    max-height: none;
    min-height: auto;
    padding-bottom: 2.5rem;
  }

  .home-hero__lead {
    white-space: normal;
  }

  .home-hero__visual {
    width: 100%;
    margin-top: 1.25rem;
    min-height: 18rem;
  }

  .hero-focus__noise-tag:nth-child(n + 5) {
    display: none;
  }

  .hero-focus__lane {
    transform: none;
  }

  .hero-focus__spot {
    transform: translateY(-0.35rem) rotate(-1deg);
  }

  .assembly-shell {
    height: auto;
  }

  .assembly-sticky {
    position: relative;
    height: auto;
  }

  .assembly-copy {
    min-height: 0;
    height: auto;
    max-height: none;
    overflow: visible;
  }

  .assembly-phase {
    position: relative;
    opacity: 1;
    visibility: visible;
    transform: none;
    margin-bottom: 2rem;
    display: block;
    overflow: visible;
  }

  .assembly-phase h2 {
    font-size: clamp(2.5rem, 9vw, 4rem);
  }

  .page-home .cta-persistent {
    bottom: max(4.5rem, env(safe-area-inset-bottom, 0px));
  }

  /* Assembly: lista verticale su mobile (niente orbita fuori schermo) */
  .assembly-stage {
    height: auto !important;
    min-height: 0;
    margin-top: 1rem;
    display: grid;
    gap: 0.55rem;
    overflow: visible;
    perspective: none;
    place-items: stretch;
    contain: none;
  }

  .assembly-stage__glow,
  .assembly-orbit,
  .assembly-rays {
    display: none !important;
  }

  .assembly-core {
    position: relative !important;
    left: auto !important;
    top: auto !important;
    transform: none !important;
    width: 100%;
    height: auto;
    min-height: 4.25rem;
    padding: 1rem 1.1rem;
    border-radius: 1.15rem;
    font-size: clamp(0.95rem, 4vw, 1.15rem);
    box-shadow:
      0 0 0 1px rgba(255, 255, 255, 0.18),
      0 12px 28px rgba(245, 176, 6, 0.22);
  }

  .a-piece {
    position: relative !important;
    left: auto !important;
    top: auto !important;
    width: 100% !important;
    max-width: 100%;
    padding: 0.75rem 0.9rem;
    opacity: 1 !important;
    filter: none !important;
    transform: none !important;
  }

  .a-piece.is-mobile-enter {
    opacity: 0 !important;
    transform: translateY(0.6rem) !important;
    transition: opacity 0.4s ease, transform 0.4s ease;
  }

  .a-piece.is-mobile-enter.is-mobile-in {
    opacity: 1 !important;
    transform: none !important;
  }

  .a-piece__index {
    margin-bottom: 0.25rem;
    font-size: 0.55rem;
  }

  .a-piece b {
    font-size: 0.78rem;
    letter-spacing: 0.08em;
  }

  .a-piece small {
    font-size: 0.72rem;
    line-height: 1.35;
    display: block;
    -webkit-line-clamp: unset;
    overflow: visible;
  }

  .ecos-shell {
    height: auto;
  }

  .ecos-sticky {
    position: relative;
    height: auto;
  }

  .ecos-track {
    flex-direction: column;
    transform: none !important;
  }

  .ecos-panel {
    flex: none;
    width: 100%;
  }

  .ecos-visual__window {
    grid-template-columns: 1fr;
  }

  .ecos-visual__mock {
    min-height: 8.5rem;
  }

  /* Digilab: stack nodes (orbit clips on phones) */
  .page-home .digilab-section .digilab-engine,
  .page-home .digilab-section .digilab-board,
  .page-home .digilab-section .digilab-engine.digilab-board,
  .digilab-engine.digilab-board {
    display: grid !important;
    gap: 0.65rem;
    position: relative !important;
    width: 100% !important;
    max-width: 100% !important;
    min-height: 0 !important;
    height: auto !important;
    aspect-ratio: auto !important;
    place-items: stretch;
    overflow: visible !important;
  }

  .page-home .digilab-section .digilab-engine .digilab-board__rings,
  .page-home .digilab-section .digilab-engine .digilab-engine__svg,
  .page-home .digilab-section .digilab-engine .digilab-engine__streams,
  .page-home .digilab-section .digilab-engine .digilab-engine__chip,
  .page-home .digilab-section .digilab-engine .digilab-engine__backdrop,
  .digilab-engine .digilab-board__rings,
  .digilab-engine .digilab-engine__svg,
  .digilab-engine .digilab-engine__streams,
  .digilab-engine .digilab-engine__chip,
  .digilab-engine .digilab-engine__backdrop {
    display: none !important;
  }

  .page-home .digilab-section .digilab-engine .digilab-core,
  .page-home .digilab-section .digilab-engine .digilab-engine__core,
  .digilab-engine .digilab-core,
  .digilab-engine .digilab-engine__core {
    position: relative !important;
    left: auto !important;
    top: auto !important;
    transform: none !important;
    width: 100% !important;
    height: auto !important;
    min-height: 4.25rem;
    padding: 1rem;
    border-radius: var(--radius-md);
    margin: 0;
  }

  .page-home .digilab-section .digilab-engine .digilab-engine__core-orbit,
  .digilab-engine .digilab-engine__core-orbit {
    display: none !important;
  }

  .page-home .digilab-section .digilab-engine .digilab-node,
  .page-home .digilab-section .digilab-engine .digilab-engine__node,
  .digilab-engine .digilab-node,
  .digilab-engine .digilab-engine__node {
    position: relative !important;
    left: auto !important;
    top: auto !important;
    width: 100% !important;
    max-width: 100% !important;
    transform: none !important;
    margin: 0;
  }

  .page-home .digilab-section .digilab-engine .digilab-engine__node-dot,
  .digilab-engine .digilab-engine__node-dot {
    display: none !important;
  }

  /* Hero focus visual — più compatto */
  .home-hero__visual {
    min-height: 14rem;
    max-height: 18rem;
    overflow: hidden;
  }

  .hero-focus__spot {
    max-width: min(11rem, 58%);
    padding: 0.75rem 0.85rem;
  }

  .hero-focus__noise-tag {
    font-size: 0.55rem;
    max-width: 7.5rem;
  }

  .recard-product {
    min-height: 0;
    overflow: hidden;
  }

  .recard-product__inner {
    min-height: 0;
  }

  .recard-product h3 {
    font-size: clamp(1.7rem, 8vw, 2.45rem);
  }

  .recard-product__features {
    justify-content: flex-start;
  }

  .recard-product__visual {
    max-width: 100%;
    overflow: hidden;
  }

  .recard-product__visual img,
  .recard-product__visual svg {
    max-width: 100%;
    height: auto;
  }

  .quote-manifesto {
    padding: 0;
  }

  .quote-manifesto__text {
    max-width: none;
  }

  .quote-converge {
    min-height: 16rem;
  }

  .quote-converge__frame {
    min-height: 16rem;
  }

  .quote-converge__lanes {
    width: 42%;
  }

  .quote-converge__output {
    width: 38%;
    min-height: 8rem;
    padding: 0.85rem 0.65rem;
  }

  .final-cta__panel {
    max-width: none;
  }

}

@media (max-width: 900px) {
  /* legacy digilab absolute rules removed — stacked layout above covers ≤1000px */
}

/* Ecosystems: ensure panels fully readable and CTA contrast */
.ecos-copy .btn {
  margin-top: 1rem;
}

.page-home .mobile-nav {
  background: #09133b;
  border-bottom-color: rgba(255, 255, 255, 0.08);
}

.page-home .mobile-nav a,
.page-home .mobile-nav__trigger {
  color: #e8edf8;
  border-bottom-color: rgba(255, 255, 255, 0.08);
}

/* Reduce PARLIAMONE overlap on narrow screens */
@media (max-width: 480px) {
  .cta-persistent {
    right: 0.75rem;
    bottom: 0.75rem;
    font-size: 0.75rem;
    min-height: 42px;
    padding: 0 0.9rem;
  }

  .recard-product__features {
    justify-content: center;
  }

  .recard-product__actions {
    justify-content: center;
  }
}

@media (prefers-reduced-motion: reduce) {
  .assembly-phase,
  .path-card,
  .a-piece,
  .recard-product,
  .digilab-engine__ring-wrap,
  .digilab-engine__ring--dash,
  .digilab-engine__ring--inner,
  .digilab-engine__spoke,
  .digilab-engine__stream,
  .digilab-engine__halo,
  .digilab-engine__core-orbit,
  .home-hero__grid-bg,
  .hero-focus__noise-tag,
  .hero-focus__path-line,
  .hero-focus__spot,
  .hero-focus__ghost-step,
  .ecos-mock--site .ecos-mock__hero,
  .ecos-mock--site .ecos-mock__lines i,
  .ecos-mock--site .ecos-mock__cta,
  .ecos-mock--content .ecos-mock__tile,
  .ecos-mock--funnel .ecos-mock__step,
  .ecos-mock--funnel .ecos-mock__arrow,
  .ecos-mock--trust .ecos-mock__stars span,
  .ecos-mock--trust .ecos-mock__review,
  .ecos-mock--trust .ecos-mock__badge,
  .ecos-mock__ring-wrap,
  .ecos-mock__ring--outer,
  .ecos-mock__spoke,
  .ecos-mock__stream,
  .ecos-mock__core,
  .recard-visual--bio .recard-visual__orbit,
  .recard-visual--bio .recard-visual__device.phone-card,
  .recard-visual__chip,
  .recard-visual__pulse,
  .recard-visual--review .recard-visual__float,
  .recard-visual--review .recard-visual__device.review-device strong,
  .recard-visual__badge--qr,
  .recard-visual__tap-ring {
    animation: none !important;
  }
  .quote-section__ambient,
  .quote-manifesto__badge,
  .quote-manifesto__highlight,
  .quote-manifesto__brand,
  .quote-converge__scan,
  .quote-converge__lane,
  .quote-converge__lane-signal,
  .quote-converge__path,
  .quote-converge__pulse,
  .quote-converge__merge span,
  .quote-converge__layer,
  .quote-converge__output {
    animation: none !important;
  }
  .final-cta-tab,
  .final-cta-tab__glow,
  .final-cta-tab__live i,
  .final-cta-tab__bubble,
  .final-cta-tab__typing,
  .final-cta-tab__typing span,
  .final-cta-tab__cta {
    animation: none !important;
  }
  .ecos-track {
    transform: none !important;
  }
}
