/* ==========================================================================
   Operators & VAS Aggregators page (mobile-operators.html)
   Page-specific styles only. Use .ops-* class names; shared components
   live in css/style.css and must not be redefined here.
   ========================================================================== */

/* Contents
   01. Hero
   02. Icon badge
   03. Audience switch
   04. Two ways we work (#operators)
   05. Master aggregation pillars
   06. Services portfolio
   07. Success story panel
   08. For VAS aggregators (#vas-aggregators)
   09. Whitelabel split card
*/


/* ==========================================================================
   01. Hero
   ========================================================================== */

/* Long headline: keep "partner in digital" / "monetización digital" on one
   line instead of stranding "partner" (EN) or "digital" (ES). */
.ops-hero-title {
  font-size: clamp(40px, 5.6vw, 80px);
}

html[lang='es'] .ops-hero-title {
  font-size: clamp(36px, 4.3vw, 62px);
}

@media (max-width: 959px) {
  html[lang='es'] .ops-hero-title {
    font-size: clamp(34px, 5.6vw, 54px);
  }
}

.ops-hero-visual {
  background: var(--pink);
}

/* Photo (img/v2/hero-operators.jpg): the phone's top-left corner sits at
   ~45% across, too close for a top-left chip ("Reportes en tiempo real" needs
   up to 53%). Both chips stack in the clean bottom-left zone instead, which
   stays clear to ~62% across at every width. */
.ops-hero-visual .float-chip.ops-chip-report {
  bottom: calc(8% + 64px);
  left: 5%;
  animation-delay: -1.5s;
}

@media (max-width: 600px) {
  .ops-hero-visual .float-chip.ops-chip-report {
    bottom: calc(8% + 50px);
  }
}


/* ==========================================================================
   02. Icon badge (plum circle, lime glyph; lime variant for dark surfaces)
   ========================================================================== */

.ops-icon {
  display: grid;
  flex-shrink: 0;
  place-items: center;
  width: 56px;
  height: 56px;
  border-radius: 50%;
  background: var(--plum-900);
  color: var(--lime);
}

.ops-icon svg {
  width: 26px;
  height: 26px;
}

.ops-icon--lime {
  background: var(--lime);
  color: var(--plum-900);
}

@media (max-width: 640px) {
  .ops-icon {
    width: 48px;
    height: 48px;
  }

  .ops-icon svg {
    width: 22px;
    height: 22px;
  }
}


/* ==========================================================================
   03. Audience switch
   Sits close under the hero (half top padding), full gap below.
   ========================================================================== */

.ops-switch {
  padding-top: calc(var(--section-y) / 2);
}

.ops-switch-card {
  min-height: 320px;
}

.ops-switch-title {
  margin-top: auto;
  padding-top: 48px;
  font-size: var(--fs-h-sm);
  font-weight: 600;
  line-height: 1.1;
  letter-spacing: -0.015em;
}

.ops-switch-text {
  max-width: 44ch;
  margin-top: 12px;
  font-size: 17px;
}

.ops-switch-card .card-foot {
  margin-top: 0;
}

@media (max-width: 768px) {
  .ops-switch-card {
    min-height: 0;
  }

  .ops-switch-title {
    padding-top: 32px;
  }

  .ops-switch-card .card-foot {
    padding-top: 20px;
  }
}


/* ==========================================================================
   04. Two ways we work with operators
   ========================================================================== */

.ops-way-title {
  margin: 6px 0 16px;
}

/* Side by side, reserve two lines so both descriptions start level;
   a one-line title sits on the lower line, next to its text. */
@media (min-width: 769px) {
  .ops-way-title {
    display: flex;
    align-items: flex-end;
    min-height: 2.2em;
  }
}

.ops-way-text {
  max-width: 52ch;
  font-size: 17px;
}

.ops-way-foot {
  padding-top: 36px;
}

.ops-dizzb-link {
  align-self: flex-start;
  margin-top: 16px;
}


/* ==========================================================================
   05. Master aggregation pillars
   ========================================================================== */

.ops-pillar .ops-icon {
  margin-bottom: 32px;
}

.ops-pillar .card-title {
  margin-bottom: 0;
}

@media (min-width: 901px) {
  .ops-pillar .card-title {
    display: flex;
    align-items: flex-end;
    min-height: 2.5em;
  }
}

.ops-pillar .check-list {
  margin-top: 20px;
}


/* ==========================================================================
   06. Services portfolio
   Full-bleed media on top (desktop); compact media-object tiles below
   1024px so eight services don't turn into a 4000px scroll on phones.
   ========================================================================== */

.ops-svc {
  padding: 0;
  overflow: hidden;
}

.ops-svc .card-media {
  margin-bottom: 0;
  border-radius: 0;
}

.ops-svc-body {
  padding: 22px 24px 26px;
}

.ops-svc .card-title {
  margin-bottom: 6px;
  font-size: 20px;
}

.ops-svc .card-text {
  font-size: 15px;
  line-height: 1.5;
}

@media (max-width: 1024px) {
  .ops-svc {
    flex-direction: row;
    min-height: 132px;
  }

  .ops-svc .card-media {
    flex: none;
    width: 132px;
    aspect-ratio: auto;
  }

  .ops-svc-body {
    align-self: center;
    padding: 18px 20px;
  }

  .ops-svc .card-title {
    font-size: 19px;
  }
}

@media (max-width: 480px) {
  .ops-svc {
    min-height: 112px;
  }

  .ops-svc .card-media {
    width: 112px;
  }

  .ops-svc-body {
    padding: 16px 18px;
  }

  .ops-svc .card-title {
    margin-bottom: 4px;
    font-size: 18px;
  }
}


/* ==========================================================================
   07. Success story (lavender statement panel)
   ========================================================================== */

.ops-case {
  padding: clamp(32px, 5vw, 64px);
}

.ops-case-head {
  display: grid;
  grid-template-columns: minmax(0, 7fr) minmax(0, 5fr);
  align-items: end;
  gap: 24px 64px;
}

.ops-case-title {
  max-width: 16ch;
  margin-top: 6px;
  font-size: var(--fs-h-lg);
  line-height: 1.05;
}

.ops-case-intro {
  color: var(--fg-muted);
  font-size: var(--fs-lead);
  line-height: 1.5;
}

.ops-case-stats {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 32px 24px;
  margin-top: 64px;
}

.ops-case-quote {
  max-width: 880px;
  margin-top: 64px;
  padding-top: 32px;
  border-top: 1px solid var(--hairline);
  color: var(--fg);
  font-family: var(--font-display);
  font-size: var(--fs-h-sm);
  font-weight: 600;
  line-height: 1.15;
  letter-spacing: -0.015em;
  text-wrap: balance;
}

@media (max-width: 900px) {
  .ops-case-head {
    grid-template-columns: minmax(0, 1fr);
  }

  .ops-case-stats {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    margin-top: 48px;
  }

  .ops-case-quote {
    margin-top: 48px;
  }
}

@media (max-width: 480px) {
  .ops-case-stats {
    gap: 28px 16px;
  }

}


/* ==========================================================================
   08. For VAS aggregators (dark band)
   One lime statement card + three outlined value rows, then the steps.
   ========================================================================== */

.ops-vas-title > span {
  display: block;
}

.ops-vas-grid {
  display: grid;
  grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
  gap: var(--grid-gap);
}

.ops-vas-stat {
  margin: 28px 0 auto;
  padding-bottom: 40px;
}

.ops-vas-num {
  color: var(--fg);
  font-family: var(--font-display);
  font-size: clamp(88px, 10vw, 140px);
  font-weight: 700;
  line-height: 0.88;
  letter-spacing: -0.045em;
  font-variant-numeric: tabular-nums;
}

.ops-vas-num-label {
  max-width: 22ch;
  margin-top: 14px;
  color: var(--fg);
  font-size: 17px;
  font-weight: 600;
  line-height: 1.35;
}

.ops-vas-reach .card-title {
  max-width: 22ch;
}

.ops-vas-list {
  display: grid;
  gap: var(--grid-gap);
}

.ops-vas-item {
  display: flex;
  align-items: flex-start;
  gap: 24px;
  padding: var(--card-pad);
  border-radius: var(--r-card);
  box-shadow: inset 0 0 0 1px var(--hairline);
}

.ops-vas-item .card-title {
  margin-bottom: 6px;
}

.ops-vas-item .card-text {
  max-width: 54ch;
}

.ops-steps {
  margin-top: 96px;
}

.ops-steps-title {
  margin-bottom: 32px;
}

@media (max-width: 900px) {
  .ops-vas-grid {
    grid-template-columns: minmax(0, 1fr);
  }

  .ops-vas-stat {
    padding-bottom: 32px;
  }

  .ops-steps {
    margin-top: 72px;
  }
}

/* Tablet: the full-width lime card splits figure | copy */
@media (min-width: 641px) and (max-width: 900px) {
  .ops-vas-reach {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1.25fr);
    align-items: end;
    column-gap: 40px;
  }

  .ops-vas-reach .card-tag {
    grid-column: 1 / -1;
    justify-self: start;
  }

  .ops-vas-stat {
    grid-row: 2 / span 2;
    margin: 24px 0 0;
    padding-bottom: 0;
  }

  .ops-vas-reach .card-title,
  .ops-vas-reach .card-text {
    grid-column: 2;
  }
}

@media (max-width: 480px) {
  .ops-vas-item {
    flex-direction: column;
    gap: 18px;
  }
}


/* ==========================================================================
   09. Whitelabel split card
   Copy left, pink panel with a "your brand" phone mockup right.
   ========================================================================== */

.ops-wl {
  display: grid;
  grid-template-columns: minmax(0, 1.12fr) minmax(0, 0.88fr);
  gap: 40px 64px;
  padding: clamp(28px, 4.4vw, 56px);
}

.ops-wl-copy {
  align-self: center;
}

.ops-wl-title {
  margin-top: 6px;
}

.ops-wl-desc {
  max-width: 52ch;
  margin-top: 20px;
  color: var(--fg-muted);
  font-size: var(--fs-lead);
  line-height: 1.5;
}

.ops-wl-label {
  margin-top: 32px;
  color: var(--fg);
  font-size: 14px;
  font-weight: 600;
}

.ops-wl-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 12px;
}

.ops-wl-tags li {
  padding: 8px 15px;
  border-radius: var(--r-pill);
  background: var(--bone);
  box-shadow: var(--ring);
  color: var(--fg);
  font-size: 14px;
  font-weight: 600;
  line-height: 1.3;
}

.ops-wl-proof {
  margin-top: 24px;
  color: var(--fg-muted);
  font-size: 15px;
}

.ops-wl-proof strong {
  margin-right: 4px;
}

.ops-wl-actions {
  margin-top: 32px;
}

/* --- Visual panel ------------------------------------------------------ */

.ops-wl-visual {
  position: relative;
  isolation: isolate;
  display: grid;
  place-items: center;
  min-height: 480px;
  overflow: hidden;
  border-radius: var(--r-media);
  background: var(--pink);
}

.ops-wl-visual::before,
.ops-wl-visual::after {
  content: '';
  position: absolute;
  z-index: -1;
  aspect-ratio: 1;
  border-radius: 50%;
}

.ops-wl-visual::before {
  bottom: -22%;
  left: -18%;
  width: 78%;
  background: rgba(255, 255, 255, 0.22);
}

.ops-wl-visual::after {
  top: 8%;
  right: -6%;
  width: 24%;
  background: var(--lavender);
}

.ops-wl-visual .phone {
  width: 50%;
}

/* --- Phone screen content --------------------------------------------- */

.ops-wl-app {
  display: flex;
  align-items: center;
  gap: 2.4cqi;
  margin-top: 1.5cqi;
  color: var(--plum-900);
  font-size: 6cqi;
  font-weight: 700;
  letter-spacing: -0.01em;
}

.ops-wl-logo {
  width: 7.6cqi;
  height: 7.6cqi;
  flex-shrink: 0;
  border: 0.7cqi dashed var(--violet);
  border-radius: 50%;
}

.ops-wl-mock-label {
  margin-top: 1cqi;
  color: var(--muted);
  font-size: 3.8cqi;
  font-weight: 600;
}

.ops-wl-tiles {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 3cqi;
}

.ops-wl-tiles img {
  width: 100%;
  aspect-ratio: 1;
  object-fit: cover;
  border-radius: 4.5cqi;
}

@media (max-width: 1024px) {
  .ops-wl {
    gap: 40px;
  }

  .ops-wl-visual .phone {
    width: 58%;
  }
}

/* Stack: copy first, then a shorter panel with the phone cropped at the
   bottom edge so the screen stays large enough to read as a product. */
@media (max-width: 900px) {
  .ops-wl {
    grid-template-columns: minmax(0, 1fr);
  }

  .ops-wl-visual {
    align-items: start;
    min-height: 0;
    aspect-ratio: 5 / 4;
    padding-top: 8%;
  }

  .ops-wl-visual .phone {
    width: 46%;
  }
}

@media (max-width: 480px) {
  .ops-wl-visual {
    aspect-ratio: 1;
  }

  .ops-wl-visual .phone {
    width: 60%;
  }
}
