/* Ajustes de la portada institucional: escritorio, tablet y móvil. */
:root {
  --brand-image: url("../images/insignia-cppp-rc.webp");
}

.site-header__inner {
  gap: clamp(12px, 2vw, 24px);
}

.brand {
  min-width: 0;
  flex: 0 1 330px;
  gap: 13px;
}

.brand-mark-img {
  width: 56px;
  height: 68px;
  flex-basis: 56px;
}

.brand__text {
  min-width: 0;
  max-width: 270px;
}

.brand__text strong {
  color: var(--wine-900);
  font-size: clamp(.78rem, 1.15vw, 1rem);
  line-height: 1.16;
}

.brand__text small {
  margin-top: 5px;
  color: var(--wine-700);
  font-size: clamp(.67rem, .9vw, .78rem);
  letter-spacing: .13em;
}

.brand-mark-img {
  filter: drop-shadow(0 5px 8px rgba(92, 13, 38, .16));
  transition: filter .25s ease;
}

.brand:hover .brand-mark-img,
.brand:focus-visible .brand-mark-img {
  filter: drop-shadow(0 8px 13px rgba(92, 13, 38, .25));
}

.site-header__actions {
  display: flex;
  align-items: center;
  gap: 9px;
  flex: 0 0 auto;
}

.site-header__intranet {
  display: inline-flex;
  width: 40px;
  height: 40px;
  align-items: center;
  justify-content: center;
  border: 1px solid #e2d7da;
  border-radius: 50%;
  color: var(--wine-800);
  background: #fff;
  text-decoration: none;
  transition: color .18s ease, background .18s ease, transform .18s ease;
}

.site-header__intranet:hover,
.site-header__intranet:focus-visible {
  color: #fff;
  background: var(--wine-800);
  transform: translateY(-1px);
}

.site-header__intranet .icon {
  width: 17px;
  height: 17px;
}

.site-header__intranet span {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
}

.site-loader {
  position: fixed;
  inset: 0;
  z-index: 3000;
  display: grid;
  place-content: center;
  gap: 18px;
  background: radial-gradient(circle at 50% 38%, rgba(183, 140, 47, .16), transparent 24%), linear-gradient(145deg, #3a091b, #74162f 62%, #4b0b22);
  color: #fff;
  text-align: center;
  pointer-events: none;
  animation: cppp-loader-fallback 2.2s ease forwards;
}

.site-loader__mark {
  position: relative;
  display: grid;
  width: 96px;
  height: 96px;
  margin: 0 auto;
  place-items: center;
  border: 1px solid rgba(239, 213, 143, .54);
  border-radius: 50%;
  background: var(--brand-image) center / 63% auto no-repeat, rgba(255,255,255,.08);
  box-shadow: 0 0 0 10px rgba(239, 213, 143, .07), 0 18px 45px rgba(0,0,0,.24);
  animation: cppp-loader-mark 1.4s ease-in-out infinite;
}

.site-loader__mark::after {
  position: absolute;
  inset: -10px;
  border: 1px solid rgba(239, 213, 143, .42);
  border-top-color: transparent;
  border-radius: 50%;
  content: "";
  animation: cppp-loader-ring 1.2s linear infinite;
}

.site-loader__mark span {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
}

.site-loader p {
  margin: 0;
  color: #f8ebd2;
  font-size: .76rem;
  font-weight: 800;
  letter-spacing: .14em;
  text-transform: uppercase;
}

@keyframes cppp-loader-mark {
  0%, 100% { transform: translateY(0) scale(1); }
  50% { transform: translateY(-5px) scale(1.035); }
}

@keyframes cppp-loader-ring {
  to { transform: rotate(360deg); }
}

@keyframes cppp-loader-fallback {
  0%, 70% { opacity: 1; visibility: visible; }
  100% { opacity: 0; visibility: hidden; }
}

body.is-ready .site-loader {
  opacity: 0;
  visibility: hidden;
  transition: opacity .45s ease, visibility .45s ease;
}

.cppp-reveal {
  opacity: 0;
  transform: translateY(22px);
  animation: none !important;
  transition: opacity .7s ease var(--reveal-delay, 0ms), transform .7s cubic-bezier(.2,.72,.2,1) var(--reveal-delay, 0ms);
}

.cppp-reveal.is-visible {
  opacity: 1;
  transform: translateY(0);
}

.hero {
  isolation: isolate;
}

.hero-mark {
  position: relative;
  isolation: isolate;
  overflow: visible;
  animation: cppp-rise-in .9s .12s cubic-bezier(.2,.72,.2,1) both, cppp-hero-mark-float 6s 1.1s ease-in-out infinite;
}

.hero-mark::before {
  position: absolute;
  inset: -18px;
  border: 1px solid rgba(239, 213, 143, .42);
  border-right-color: transparent;
  border-radius: 50%;
  box-shadow: 0 0 0 14px rgba(239, 213, 143, .04), 0 0 42px rgba(239, 213, 143, .16);
  content: "";
  pointer-events: none;
  animation: cppp-logo-orbit 12s linear infinite;
}

.hero-mark::after {
  position: absolute;
  top: 13%;
  right: 14%;
  width: 9px;
  height: 9px;
  border: 1px solid rgba(255, 247, 218, .8);
  border-radius: 50%;
  box-shadow: 0 0 0 7px rgba(239, 213, 143, .08), 0 0 25px rgba(239, 213, 143, .48);
  content: "";
  pointer-events: none;
  animation: cppp-hero-dot 3.8s ease-in-out infinite;
}

.hero-mark-img {
  position: relative;
  z-index: 1;
  filter: drop-shadow(0 16px 22px rgba(0,0,0,.22));
}

.hero-mark__badge {
  position: absolute;
  top: 12%;
  left: -13%;
  z-index: 3;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 11px 15px;
  border: 1px solid rgba(255,255,255,.2);
  border-radius: 999px;
  background: rgba(35, 5, 17, .56);
  box-shadow: 0 12px 28px rgba(0,0,0,.18);
  color: #fff7df;
  font-size: .72rem;
  font-weight: 800;
  letter-spacing: .07em;
  text-transform: uppercase;
  backdrop-filter: blur(8px);
  animation: cppp-badge-float 4.5s 1.5s ease-in-out infinite;
}

.hero-mark__badge .icon {
  width: 17px;
  height: 17px;
  color: var(--gold-300);
}

@keyframes cppp-badge-float {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-5px); }
}

@keyframes cppp-hero-mark-float {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-7px); }
}

@keyframes cppp-logo-orbit {
  to { transform: rotate(360deg); }
}

@keyframes cppp-hero-dot {
  0%, 100% { opacity: .48; transform: scale(.78); }
  50% { opacity: 1; transform: scale(1.18); }
}

@keyframes cppp-hero-glow {
  0%, 100% { opacity: .18; transform: translate3d(0, 0, 0) scale(1); }
  50% { opacity: .34; transform: translate3d(-18px, 12px, 0) scale(1.08); }
}

.hero::after {
  position: absolute;
  top: 14%;
  right: 35%;
  width: 12px;
  height: 12px;
  border: 1px solid rgba(239, 213, 143, .7);
  border-radius: 50%;
  box-shadow: 0 0 0 9px rgba(239, 213, 143, .07), 0 0 28px rgba(239, 213, 143, .25);
  content: "";
  pointer-events: none;
  animation: cppp-hero-glow 5.5s ease-in-out infinite;
}

@keyframes cppp-rise-in {
  from { opacity: 0; transform: translateY(18px); }
  to { opacity: 1; transform: translateY(0); }
}

.hero-grid > :first-child {
  animation: cppp-rise-in .75s cubic-bezier(.2,.72,.2,1) both;
}

.hero-grid > :last-child {
  animation: cppp-rise-in .9s .12s cubic-bezier(.2,.72,.2,1) both;
}

.hero-grid > .hero-mark {
  animation: cppp-rise-in .9s .12s cubic-bezier(.2,.72,.2,1) both, cppp-hero-mark-float 6s 1.1s ease-in-out infinite;
}

.trust-strip {
  position: relative;
  overflow: hidden;
  background: linear-gradient(180deg, #fff 0%, #f7f0ed 100%);
}

.trust-strip::before {
  position: absolute;
  top: -110px;
  right: 7%;
  width: 310px;
  height: 210px;
  border-radius: 50%;
  background: rgba(183, 140, 47, .08);
  filter: blur(2px);
  content: "";
  pointer-events: none;
}

.trust-grid {
  position: relative;
  z-index: 1;
  gap: clamp(12px, 2.4vw, 22px);
  padding-block: clamp(18px, 2.4vw, 28px);
}

.trust-item {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  min-height: 112px;
  padding: 20px clamp(16px, 2.5vw, 28px);
  border: 1px solid rgba(105, 11, 38, .1);
  border-radius: 20px;
  background: linear-gradient(145deg, rgba(255,255,255,.98), rgba(250,246,243,.96));
  box-shadow: 0 14px 34px rgba(44, 18, 29, .08);
  transition: transform .25s ease, box-shadow .25s ease, border-color .25s ease;
  animation: cppp-rise-in .65s cubic-bezier(.2,.72,.2,1) both;
}

.trust-item + .trust-item {
  padding-left: clamp(16px, 2.5vw, 28px);
  border-left: 1px solid rgba(105, 11, 38, .1);
}

.trust-item:nth-child(2) { animation-delay: .08s; }
.trust-item:nth-child(3) { animation-delay: .16s; }

.trust-item:hover,
.trust-item:focus-within {
  border-color: rgba(183, 140, 47, .38);
  box-shadow: 0 18px 42px rgba(44, 18, 29, .13);
  transform: translateY(-3px);
}

@keyframes cppp-icon-breathe {
  0%, 100% { transform: translateY(0) scale(1); }
  50% { transform: translateY(-3px) scale(1.045); }
}

@keyframes cppp-trust-sheen {
  0%, 58% { transform: translateX(-115%); opacity: 0; }
  66% { opacity: .42; }
  82%, 100% { transform: translateX(115%); opacity: 0; }
}

.trust-item::before {
  position: absolute;
  top: 0;
  right: 0;
  bottom: auto;
  left: 0;
  width: auto;
  height: 4px;
  border-radius: 99px 99px 0 0;
  background: linear-gradient(90deg, #c19736, #f1d98e);
  content: "";
  opacity: .82;
}

.trust-item::after {
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  width: 34%;
  background: linear-gradient(105deg, transparent, rgba(255,255,255,.8), transparent);
  content: "";
  pointer-events: none;
  transform: translateX(-115%);
  animation: cppp-trust-sheen 8s 1.2s ease-in-out infinite;
}

.trust-item:nth-child(2)::before { background: linear-gradient(90deg, #00a86b, #75e2b7); }
.trust-item:nth-child(3)::before { background: linear-gradient(90deg, #5577a8, #a4c6f1); }

.trust-item:nth-child(1) { background: linear-gradient(145deg, #fffdf7, #fbf3df); }
.trust-item:nth-child(2) { background: linear-gradient(145deg, #fbfffd, #e9f8f1); }
.trust-item:nth-child(3) { background: linear-gradient(145deg, #fcfdff, #edf4fc); }

.trust-item__icon {
  position: relative;
  z-index: 1;
  width: 58px;
  height: 58px;
  border-radius: 17px;
  background: linear-gradient(145deg, #fff8df, #f8ecd0);
  box-shadow: inset 0 0 0 1px rgba(183, 140, 47, .08), 0 8px 18px rgba(183, 140, 47, .1);
  transition: background .25s ease, color .25s ease, transform .25s ease, box-shadow .25s ease;
}

.trust-item__icon::after {
  position: absolute;
  inset: -5px;
  border: 1px solid currentColor;
  border-radius: 22px;
  content: "";
  opacity: .16;
  animation: cppp-icon-ring 3.8s ease-in-out infinite;
}

@keyframes cppp-icon-ring {
  0%, 100% { opacity: .08; transform: scale(.96); }
  50% { opacity: .26; transform: scale(1.06); }
}

.trust-item:nth-child(2) .trust-item__icon {
  color: #087b50;
  background: linear-gradient(145deg, #e8fbf3, #d6f2e8);
}

.trust-item:nth-child(3) .trust-item__icon {
  color: #486b98;
  background: linear-gradient(145deg, #eef5ff, #dce9f8);
}

.trust-item strong,
.trust-item > div > span {
  position: relative;
  z-index: 1;
}

.trust-item > div {
  min-width: 0;
}

@keyframes cppp-count-pop {
  0% { opacity: .35; transform: translateY(4px) scale(.92); }
  65% { opacity: 1; transform: translateY(-2px) scale(1.035); }
  100% { opacity: 1; transform: translateY(0) scale(1); }
}

.trust-item strong.is-counting {
  animation: cppp-count-pop .65s cubic-bezier(.2,.72,.2,1) both;
}

.trust-item__icon .icon {
  animation: cppp-icon-breathe 3.8s ease-in-out infinite;
}

.trust-item:nth-child(2) .trust-item__icon .icon { animation-delay: .35s; }
.trust-item:nth-child(3) .trust-item__icon .icon { animation-delay: .7s; }

.trust-item:hover .trust-item__icon,
.trust-item:focus-within .trust-item__icon {
  background: var(--gold-500);
  color: var(--wine-950);
  transform: translateY(-3px);
  box-shadow: 0 10px 24px rgba(183, 140, 47, .24);
}

.home-carousel-section .section-heading,
.home-news-section .section-heading,
.home-carousel,
.home-news-card,
.card {
  animation: cppp-rise-in .7s cubic-bezier(.2,.72,.2,1) both;
}

.home-carousel { animation-delay: .08s; }
.home-news-card:nth-child(2) { animation-delay: .08s; }
.home-news-card:nth-child(3) { animation-delay: .16s; }
.card:nth-child(2) { animation-delay: .06s; }
.card:nth-child(3) { animation-delay: .12s; }
.card:nth-child(4) { animation-delay: .18s; }
.card:nth-child(5) { animation-delay: .24s; }
.card:nth-child(6) { animation-delay: .3s; }
.card:nth-child(7) { animation-delay: .36s; }

.home-carousel-section {
  position: relative;
  overflow: hidden;
  padding-top: clamp(34px, 5vw, 64px);
  background: linear-gradient(180deg, #fff 0%, #fdf9f6 100%);
}

.home-carousel-section::before {
  position: absolute;
  top: 0;
  right: 0;
  left: 0;
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(183, 140, 47, .5), transparent);
  content: "";
  pointer-events: none;
}

.home-carousel-section .eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 7px;
}

.home-carousel-section .eyebrow .icon {
  width: 15px;
  height: 15px;
}

.home-carousel {
  position: relative;
  overflow: hidden;
  min-height: 0;
  aspect-ratio: 16 / 7;
  border: 1px solid rgba(105, 11, 38, .13);
  border-radius: 20px;
  box-shadow: 0 24px 60px rgba(39, 15, 26, .15);
}

.home-carousel::before {
  position: absolute;
  top: 0;
  right: 0;
  left: 0;
  z-index: 4;
  height: 4px;
  background: linear-gradient(90deg, var(--gold-400), #fff1bd 32%, var(--wine-600) 68%, #d38aa0);
  content: "";
  pointer-events: none;
}

.home-carousel::after {
  position: absolute;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 4;
  height: 3px;
  background: linear-gradient(90deg, var(--gold-400), #fff2bb, var(--wine-500));
  content: "";
  transform: scaleX(0);
  transform-origin: left center;
  animation: cppp-carousel-progress 6.5s linear infinite;
  pointer-events: none;
}

.home-carousel:hover::after,
.home-carousel:focus-within::after {
  animation-play-state: paused;
}

@keyframes cppp-carousel-progress {
  to { transform: scaleX(1); }
}

.home-carousel__viewport {
  position: relative;
  height: 100%;
  min-height: 0;
  overflow: hidden;
}

.home-carousel__slide {
  position: absolute;
  inset: 0;
  min-height: 0;
  visibility: hidden;
  opacity: 0;
  transform: translateX(100%) scale(1.01);
  transition: opacity .62s ease, transform .72s cubic-bezier(.2,.72,.2,1), visibility .72s;
  will-change: opacity, transform;
}

.home-carousel__slide[hidden] {
  display: block;
}

.home-carousel__slide.is-before,
.home-carousel__slide.is-after {
  z-index: 1;
  visibility: visible;
  opacity: 1;
}

.home-carousel__slide.is-before {
  transform: translateX(-100%) scale(1.01);
}

.home-carousel__slide.is-after {
  transform: translateX(100%) scale(1.01);
}

.home-carousel__slide.is-active {
  z-index: 2;
  visibility: visible;
  opacity: 1;
  transform: translateX(0) scale(1);
}

.home-carousel__slide img {
  display: block;
  width: 100%;
  height: 100%;
  min-height: 0;
  object-fit: cover;
  object-position: center;
  image-rendering: auto;
}

@keyframes cppp-carousel-zoom {
  from { transform: scale(1.055); filter: saturate(.94) brightness(.94); }
  to { transform: scale(1); filter: saturate(1) brightness(1); }
}

.home-carousel__slide.is-active img {
  animation: cppp-carousel-zoom 6.5s cubic-bezier(.2,.72,.2,1) both;
}

.home-carousel__dot {
  transition: width .25s ease, background .25s ease, transform .25s ease, box-shadow .25s ease;
}

.home-carousel__dot.is-active {
  animation: cppp-dot-pulse 2s ease-in-out infinite;
}

@keyframes cppp-dot-pulse {
  0%, 100% { box-shadow: 0 0 0 0 rgba(239, 213, 143, 0); }
  50% { box-shadow: 0 0 0 5px rgba(239, 213, 143, .2); }
}

.home-updates-loading {
  gap: 14px;
  background: linear-gradient(135deg, rgba(56, 7, 25, .92), rgba(119, 23, 51, .92));
}

.home-updates-loading::before {
  width: 34px;
  height: 34px;
  border: 2px solid rgba(255,255,255,.28);
  border-top-color: var(--gold-300);
  border-radius: 50%;
  content: "";
  animation: cppp-logo-orbit .9s linear infinite;
}

.home-carousel__slide::after {
  inset: 38% 0 0;
  background: linear-gradient(transparent 0%, rgba(26, 5, 13, .9) 100%);
}

.home-carousel__caption {
  padding-right: clamp(22px, 6vw, 74px);
  padding-bottom: clamp(56px, 7vw, 78px);
  padding-left: clamp(22px, 6vw, 74px);
}

.home-carousel__caption h3 {
  text-wrap: balance;
}

.home-carousel__controls {
  right: clamp(16px, 3vw, 30px);
  bottom: clamp(14px, 2vw, 24px);
  left: clamp(16px, 3vw, 30px);
}

.home-carousel__arrow {
  width: 42px;
  height: 42px;
  border-color: rgba(255,255,255,.7);
  background: rgba(22, 5, 13, .58);
}

.home-carousel__dots {
  max-width: min(58%, 520px);
  overflow: hidden;
}

.home-news-card__image-button {
  display: block;
  width: 100%;
  padding: 0;
  overflow: hidden;
  border: 0;
  background: var(--wine-100);
  text-align: left;
}

.home-news-card__image-button:hover .home-news-card__image,
.home-news-card__image-button:focus-visible .home-news-card__image {
  transform: scale(1.035);
}

.home-news-card__image-button .home-news-card__image {
  transition: transform .35s ease;
}

.home-news-card__media-button {
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent;
  cursor: zoom-in;
}

.home-carousel__dot:focus-visible,
.home-carousel__arrow:focus-visible {
  outline: 3px solid #fff;
  outline-offset: 3px;
}

@media (max-width: 900px) {
  .trust-grid {
    gap: 12px;
    padding-block: 18px;
  }

  .trust-item + .trust-item {
    padding-left: clamp(16px, 3vw, 28px);
    border-top: 0;
    border-left: 1px solid rgba(105, 11, 38, .1);
  }
}

@media (max-width: 1180px) {
  .primary-nav > ul { gap: 0; }
  .primary-nav a, .nav-submenu-button { padding-inline: 7px; font-size: .8rem; }
  .site-header__cta { padding-inline: 13px; font-size: .78rem; }
}

@media (max-width: 1080px) {
  .brand__text { display: flex; }
  .primary-nav { display: none; }
  .menu-button { display: inline-flex; order: 3; }
  .site-header__actions { margin-left: auto; }
  .site-header__cta { display: inline-flex; }
}

@media (max-width: 640px) {
  .site-header__inner {
    min-height: 70px;
    gap: 8px;
  }

  .brand {
    flex: 1 1 auto;
    gap: 8px;
  }

  .brand-mark-img {
    width: 42px;
    height: 54px;
    flex-basis: 42px;
  }

  .brand__text {
    max-width: 205px;
  }

  .brand__text strong {
    font-size: .72rem;
    line-height: 1.12;
  }

  .brand__text small {
    margin-top: 3px;
    font-size: .62rem;
    letter-spacing: .08em;
  }

  .site-header__actions {
    gap: 5px;
  }

  .site-header__cta {
    display: inline-flex;
    width: 34px;
    height: 34px;
    align-items: center;
    justify-content: center;
    padding: 0;
    font-size: 0;
  }

  .site-header__cta .icon {
    width: 15px;
    height: 15px;
  }

  .site-header__intranet {
    width: 34px;
    height: 34px;
  }

  .menu-button {
    width: 38px;
    height: 38px;
  }

  .home-carousel {
    aspect-ratio: 4 / 5;
    border-radius: 15px;
  }

  .home-carousel__caption h3 {
    font-size: clamp(1.35rem, 7vw, 1.85rem);
  }

  .home-carousel__caption p {
    font-size: .86rem;
  }

  .home-carousel__arrow {
    width: 36px;
    height: 36px;
  }

  .home-carousel__dots {
    max-width: 50%;
  }
}

@media (prefers-reduced-motion: reduce) {
  .brand-mark-img,
  .hero-mark-img,
  .footer-mark-img {
    animation: none;
  }

  .hero-grid > :first-child,
  .hero-grid > :last-child,
  .hero-mark,
  .trust-item,
  .trust-item__icon .icon,
  .trust-item::after,
  .home-carousel-section .section-heading,
  .home-news-section .section-heading,
  .home-carousel,
  .home-news-card,
  .card,
  .hero-mark::before,
  .hero-mark::after,
  .home-carousel__slide.is-active img,
  .home-carousel__dot.is-active,
  .home-updates-loading::before {
    animation: none;
  }

  .home-carousel__slide {
    transition: none;
    transform: none;
  }

  .hero::after,
  .trust-item strong.is-counting,
  .hero-mark__badge,
  .trust-item__icon::after,
  .home-carousel::after {
    animation: none;
  }

  .site-loader,
  .site-loader__mark,
  .site-loader__mark::after,
  .cppp-reveal {
    animation: none;
    transition: none;
  }

  body.is-ready .site-loader,
  .cppp-reveal,
  .cppp-reveal.is-visible {
    opacity: 1;
    visibility: visible;
    transform: none;
  }

  .trust-item,
  .trust-item:hover,
  .trust-item:focus-within {
    transform: none;
    transition: none;
  }
}

/* Servicios destacados: iconos diferenciados y tarjetas animadas - v1.6 */
.card-grid .card {
  --card-accent: var(--wine-800);
  --card-soft: #fff7f9;
  --card-icon-bg: #f8e4eb;
  --card-icon-border: #e9b9c8;
  position: relative;
  isolation: isolate;
  overflow: hidden;
  border-top: 3px solid var(--card-accent);
  background: linear-gradient(145deg, #fff 0%, var(--card-soft) 180%);
  transition: transform .28s cubic-bezier(.2,.72,.2,1), box-shadow .28s ease, border-color .28s ease;
}

.card-grid .card::before {
  position: absolute;
  top: -75px;
  right: -50px;
  z-index: 0;
  width: 175px;
  height: 175px;
  border-radius: 50%;
  background: var(--card-soft);
  content: "";
  opacity: .9;
  transition: transform .35s ease, opacity .35s ease;
}

.card-grid .card::after {
  position: absolute;
  top: 0;
  bottom: 0;
  left: -55%;
  z-index: 0;
  width: 34%;
  background: linear-gradient(105deg, transparent, rgba(255,255,255,.72), transparent);
  content: "";
  pointer-events: none;
  transform: skewX(-16deg);
  transition: left .6s ease;
}

.card-grid .card > * {
  position: relative;
  z-index: 1;
}

.card-grid .card:nth-child(1) { --card-accent: #8b1e3f; --card-soft: #fff1f5; --card-icon-bg: #fde2eb; --card-icon-border: #e6a8bd; }
.card-grid .card:nth-child(2) { --card-accent: #286da2; --card-soft: #eff7ff; --card-icon-bg: #dceeff; --card-icon-border: #a9cdeb; }
.card-grid .card:nth-child(3) { --card-accent: #15805e; --card-soft: #effbf6; --card-icon-bg: #d9f5e9; --card-icon-border: #a7ddc7; }
.card-grid .card:nth-child(4) { --card-accent: #b47712; --card-soft: #fffaf0; --card-icon-bg: #fff0c9; --card-icon-border: #e9ca79; }
.card-grid .card:nth-child(5) { --card-accent: #7352a9; --card-soft: #f8f3ff; --card-icon-bg: #eee4ff; --card-icon-border: #cfb9f1; }
.card-grid .card:nth-child(6) { --card-accent: #187d8e; --card-soft: #effcfd; --card-icon-bg: #d8f3f5; --card-icon-border: #a8dfe4; }
.card-grid .card:nth-child(7) { --card-accent: #465a7b; --card-soft: #f1f5fb; --card-icon-bg: #e0e9f7; --card-icon-border: #b8c9e2; }

.card-grid .card__icon {
  position: relative;
  width: 60px;
  height: 60px;
  border: 1px solid var(--card-icon-border);
  background: linear-gradient(145deg, #fff, var(--card-icon-bg));
  color: var(--card-accent);
  box-shadow: 0 10px 22px rgba(46, 28, 35, .1);
  transition: transform .28s cubic-bezier(.2,.72,.2,1), color .28s ease, background .28s ease, box-shadow .28s ease;
}

.card-grid .card__icon::after {
  position: absolute;
  inset: -7px;
  border: 1px solid var(--card-accent);
  border-radius: 21px;
  content: "";
  opacity: .2;
  pointer-events: none;
  animation: cppp-service-ring 4.6s ease-in-out infinite;
}

.card-grid .card__icon .icon {
  animation: cppp-service-icon 4.6s ease-in-out infinite;
}

.card-grid .card:nth-child(2) .card__icon .icon { animation-delay: .25s; }
.card-grid .card:nth-child(3) .card__icon .icon { animation-delay: .5s; }
.card-grid .card:nth-child(4) .card__icon .icon { animation-delay: .75s; }
.card-grid .card:nth-child(5) .card__icon .icon { animation-delay: 1s; }
.card-grid .card:nth-child(6) .card__icon .icon { animation-delay: 1.25s; }
.card-grid .card:nth-child(7) .card__icon .icon { animation-delay: 1.5s; }

@keyframes cppp-service-icon {
  0%, 100% { transform: translateY(0) rotate(0deg); }
  50% { transform: translateY(-3px) rotate(-3deg); }
}

@keyframes cppp-service-ring {
  0%, 100% { opacity: .12; transform: scale(.96); }
  50% { opacity: .3; transform: scale(1.06); }
}

.card-grid .card h3 { color: #242832; transition: color .25s ease; }
.card-grid .card p { position: relative; z-index: 1; }
.card-grid .card__link { color: var(--card-accent); }
.card-grid .card__link .icon { transition: transform .25s ease; }

.card-grid a.card:hover,
.card-grid a.card:focus-visible {
  border-color: var(--card-accent);
  box-shadow: 0 20px 42px rgba(45, 23, 33, .14);
  transform: translateY(-7px);
}

.card-grid a.card:hover::before,
.card-grid a.card:focus-visible::before {
  opacity: 1;
  transform: scale(1.22);
}

.card-grid a.card:hover::after,
.card-grid a.card:focus-visible::after {
  left: 120%;
}

.card-grid a.card:hover .card__icon,
.card-grid a.card:focus-visible .card__icon {
  background: var(--card-accent);
  color: #fff;
  box-shadow: 0 13px 26px color-mix(in srgb, var(--card-accent) 28%, transparent);
  transform: translateY(-3px) rotate(-3deg);
}

.card-grid a.card:hover .card__link .icon,
.card-grid a.card:focus-visible .card__link .icon {
  transform: translateX(4px);
}

.trust-item:nth-child(1) { --trust-accent: #b78c2f; --trust-icon-bg: #fff1c9; --trust-icon-color: #956d12; }
.trust-item:nth-child(2) { --trust-accent: #0d9465; --trust-icon-bg: #d9f5e9; --trust-icon-color: #087b50; }
.trust-item:nth-child(3) { --trust-accent: #4f77ad; --trust-icon-bg: #e0ebfb; --trust-icon-color: #426893; }
.trust-item__icon {
  border: 1px solid color-mix(in srgb, var(--trust-accent) 24%, white);
  background: linear-gradient(145deg, #fff, var(--trust-icon-bg));
  color: var(--trust-icon-color);
}
.trust-item:hover .trust-item__icon,
.trust-item:focus-within .trust-item__icon {
  background: var(--trust-accent);
  color: #fff;
  box-shadow: 0 12px 26px color-mix(in srgb, var(--trust-accent) 26%, transparent);
}

@media (prefers-reduced-motion: reduce) {
  .card-grid .card__icon::after,
  .card-grid .card__icon .icon { animation: none; }
  .card-grid a.card:hover,
  .card-grid a.card:focus-visible,
  .card-grid a.card:hover .card__icon,
  .card-grid a.card:focus-visible .card__icon { transform: none; }
}

/* Tarjetas institucionales con identidad visual propia - v1.7 */
.trust-item {
  --trust-accent: #b78c2f;
  --trust-soft: #fff8df;
  --trust-icon-color: #8e6815;
  --trust-shadow: rgba(183, 140, 47, .22);
  border-left: 4px solid var(--trust-accent);
  background:
    radial-gradient(circle at 100% 0, var(--trust-soft) 0, transparent 43%),
    linear-gradient(145deg, #fff 0%, #fbf7f3 100%);
  box-shadow: 0 14px 34px rgba(44, 18, 29, .08), inset 0 1px 0 rgba(255,255,255,.9);
}

.trust-grid .trust-item,
.trust-grid .trust-item + .trust-item {
  border-left: 4px solid var(--trust-accent);
}

.trust-item:nth-child(1) {
  --trust-accent: #c39a32;
  --trust-soft: #fff0bd;
  --trust-icon-color: #916c18;
  --trust-shadow: rgba(195, 154, 50, .26);
}

.trust-item:nth-child(2) {
  --trust-accent: #18a874;
  --trust-soft: #d6f5e7;
  --trust-icon-color: #087b50;
  --trust-shadow: rgba(24, 168, 116, .23);
}

.trust-item:nth-child(3) {
  --trust-accent: #5e82b9;
  --trust-soft: #dceaff;
  --trust-icon-color: #3e6196;
  --trust-shadow: rgba(94, 130, 185, .23);
}

.trust-item::before {
  height: 5px;
  background: linear-gradient(90deg, var(--trust-accent), var(--trust-soft));
}

.trust-item:nth-child(1),
.trust-item:nth-child(2),
.trust-item:nth-child(3) {
  background:
    radial-gradient(circle at 100% 0, var(--trust-soft) 0, transparent 44%),
    linear-gradient(145deg, #fff 0%, #fbf8f5 100%);
}

.trust-item__icon {
  width: 68px;
  height: 68px;
  flex-basis: 68px;
  border: 1px solid color-mix(in srgb, var(--trust-accent) 27%, white);
  border-radius: 21px;
  color: var(--trust-icon-color);
  background: linear-gradient(145deg, #fff, var(--trust-soft));
  box-shadow: 0 11px 24px var(--trust-shadow), inset 0 0 0 5px rgba(255,255,255,.5);
}

.trust-item__icon::before {
  position: absolute;
  inset: 8px;
  border: 1px solid currentColor;
  border-radius: 16px;
  content: "";
  opacity: .13;
  pointer-events: none;
}

.trust-item__icon .icon {
  position: relative;
  z-index: 1;
  width: 31px;
  height: 31px;
  color: currentColor;
}

.trust-item strong {
  color: #242832;
  font-size: clamp(1.05rem, 1.65vw, 1.25rem);
  letter-spacing: -.015em;
}

.trust-item > div > span {
  margin-top: 5px;
  font-size: .94rem;
}

.trust-item:hover,
.trust-item:focus-within {
  border-color: var(--trust-accent);
  box-shadow: 0 21px 45px var(--trust-shadow), inset 0 1px 0 rgba(255,255,255,.95);
}

.trust-item:hover .trust-item__icon,
.trust-item:focus-within .trust-item__icon {
  color: #fff;
  background: linear-gradient(145deg, var(--trust-accent), color-mix(in srgb, var(--trust-accent) 70%, #182336));
  box-shadow: 0 15px 28px var(--trust-shadow), inset 0 0 0 5px rgba(255,255,255,.16);
  transform: translateY(-4px) rotate(-3deg);
}

/* Las tarjetas de servicios se leen como accesos de un portal ejecutivo. */
.card-grid {
  gap: clamp(17px, 2.2vw, 25px);
}

.card-grid .card {
  min-height: 246px;
  padding: clamp(23px, 2.5vw, 31px);
  border-right-color: color-mix(in srgb, var(--card-accent) 18%, white);
  border-bottom: 1px solid color-mix(in srgb, var(--card-accent) 18%, white);
  box-shadow: 0 13px 28px rgba(46, 28, 35, .07), inset 0 1px 0 rgba(255,255,255,.9);
}

.card-grid .card__icon {
  width: 70px;
  height: 70px;
  border-radius: 22px;
  box-shadow: 0 14px 27px color-mix(in srgb, var(--card-accent) 22%, transparent), inset 0 0 0 5px rgba(255,255,255,.48);
}

.card-grid .card__icon .icon {
  width: 32px;
  height: 32px;
}

.card-grid .card h3 {
  margin-top: 21px;
  font-size: clamp(1.05rem, 1.8vw, 1.25rem);
  letter-spacing: -.012em;
}

.card-grid .card p {
  max-width: 31ch;
  line-height: 1.58;
}

.card-grid .card__link {
  position: relative;
  padding-bottom: 3px;
}

.card-grid .card__link::after {
  position: absolute;
  right: 0;
  bottom: 0;
  left: 0;
  height: 2px;
  border-radius: 99px;
  background: currentColor;
  content: "";
  opacity: .2;
  transform: scaleX(.18);
  transform-origin: left center;
  transition: transform .25s ease, opacity .25s ease;
}

.card-grid a.card:hover .card__link::after,
.card-grid a.card:focus-visible .card__link::after {
  opacity: .7;
  transform: scaleX(1);
}

@media (max-width: 900px) {
  .trust-item {
    min-height: 124px;
  }
}

@media (max-width: 640px) {
  .trust-grid .trust-item,
  .trust-grid .trust-item + .trust-item {
    min-height: 96px;
    padding: 16px 14px;
    border-left-width: 3px;
  }

  .trust-item__icon {
    width: 56px;
    height: 56px;
    flex-basis: 56px;
    border-radius: 17px;
  }

  .trust-item__icon .icon {
    width: 26px;
    height: 26px;
  }

  .trust-item strong {
    font-size: .95rem;
  }

  .trust-item > div > span {
    font-size: .78rem;
  }
}

@media (prefers-reduced-motion: reduce) {
  .trust-item:hover .trust-item__icon,
  .trust-item:focus-within .trust-item__icon { transform: none; }
}

/* Accesos destacados inspirados en un portal institucional - v1.8 */
.portal-access-section {
  position: relative;
  overflow: hidden;
  padding-top: clamp(32px, 4.8vw, 58px);
  padding-bottom: clamp(36px, 5vw, 66px);
  background: linear-gradient(180deg, #fff 0%, #fcfaf8 100%);
}

.portal-access-section::before {
  position: absolute;
  top: 0;
  left: 50%;
  width: min(880px, 75vw);
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(183, 140, 47, .5), transparent);
  content: "";
  transform: translateX(-50%);
}

.portal-access__heading {
  margin-bottom: clamp(22px, 3vw, 30px);
}

.portal-access__heading .eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 7px;
}

.portal-access__heading .eyebrow .icon {
  width: 15px;
  height: 15px;
}

.portal-access__heading > p {
  max-width: 390px;
  margin-bottom: 0;
  color: var(--muted);
  line-height: 1.55;
}

.portal-access-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: clamp(14px, 1.8vw, 21px);
}

.portal-access-card {
  --access-accent: var(--wine-800);
  --access-soft: #fff4f7;
  --access-border: #efd4dc;
  position: relative;
  isolation: isolate;
  display: flex;
  min-height: 247px;
  flex-direction: column;
  overflow: hidden;
  padding: 23px 21px 20px;
  border: 1px solid var(--access-border);
  border-top: 4px solid var(--access-accent);
  border-radius: 18px;
  color: var(--ink);
  background: radial-gradient(circle at 100% 0, var(--access-soft), transparent 57%), #fff;
  box-shadow: 0 12px 27px rgba(46, 28, 35, .065), inset 0 1px 0 rgba(255,255,255,.92);
  text-decoration: none;
  transform: translateY(12px);
  opacity: 0;
  animation: cppp-access-in .7s cubic-bezier(.2,.72,.2,1) forwards;
  transition: transform .28s cubic-bezier(.2,.72,.2,1), border-color .28s ease, box-shadow .28s ease, background .28s ease;
}

.portal-access-card:nth-child(2) { animation-delay: .08s; }
.portal-access-card:nth-child(3) { animation-delay: .16s; }
.portal-access-card:nth-child(4) { animation-delay: .24s; }

.portal-access-card--wine { --access-accent: #8b1e3f; --access-soft: #fde8ef; --access-border: #edc5d2; }
.portal-access-card--gold { --access-accent: #b27d15; --access-soft: #fff0c4; --access-border: #ead393; }
.portal-access-card--green { --access-accent: #13825d; --access-soft: #dff6ea; --access-border: #b9e3cf; }
.portal-access-card--blue { --access-accent: #3d669d; --access-soft: #e2edfc; --access-border: #c3d5ee; }

@keyframes cppp-access-in {
  to { opacity: 1; transform: translateY(0); }
}

.portal-access-card::before {
  position: absolute;
  top: -67px;
  right: -48px;
  z-index: -1;
  width: 148px;
  height: 148px;
  border-radius: 50%;
  background: var(--access-soft);
  content: "";
  opacity: .86;
  transition: transform .35s ease, opacity .35s ease;
}

.portal-access-card::after {
  position: absolute;
  top: 0;
  bottom: 0;
  left: -65%;
  z-index: 2;
  width: 42%;
  background: linear-gradient(105deg, transparent, rgba(255,255,255,.72), transparent);
  content: "";
  pointer-events: none;
  transform: skewX(-16deg);
  transition: left .6s ease;
}

.portal-access-card:hover,
.portal-access-card:focus-visible {
  border-color: var(--access-accent);
  box-shadow: 0 20px 39px color-mix(in srgb, var(--access-accent) 17%, transparent), inset 0 1px 0 rgba(255,255,255,.95);
  transform: translateY(-7px);
}

.portal-access-card:hover::before,
.portal-access-card:focus-visible::before {
  opacity: 1;
  transform: scale(1.18);
}

.portal-access-card:hover::after,
.portal-access-card:focus-visible::after {
  left: 125%;
}

.portal-access-card__icon {
  position: relative;
  display: grid;
  width: 57px;
  height: 57px;
  place-items: center;
  border: 1px solid color-mix(in srgb, var(--access-accent) 26%, white);
  border-radius: 17px;
  color: var(--access-accent);
  background: linear-gradient(145deg, #fff, var(--access-soft));
  box-shadow: 0 10px 20px color-mix(in srgb, var(--access-accent) 18%, transparent), inset 0 0 0 4px rgba(255,255,255,.5);
  transition: color .25s ease, background .25s ease, transform .25s ease, box-shadow .25s ease;
}

.portal-access-card__icon::after {
  position: absolute;
  inset: -6px;
  border: 1px solid var(--access-accent);
  border-radius: 22px;
  content: "";
  opacity: .18;
  animation: cppp-access-ring 4.4s ease-in-out infinite;
}

.portal-access-card__icon .icon {
  position: relative;
  z-index: 1;
  width: 28px;
  height: 28px;
  animation: cppp-access-icon 4.4s ease-in-out infinite;
}

.portal-access-card:nth-child(2) .portal-access-card__icon .icon { animation-delay: .25s; }
.portal-access-card:nth-child(3) .portal-access-card__icon .icon { animation-delay: .5s; }
.portal-access-card:nth-child(4) .portal-access-card__icon .icon { animation-delay: .75s; }

@keyframes cppp-access-ring {
  0%, 100% { opacity: .09; transform: scale(.96); }
  50% { opacity: .3; transform: scale(1.07); }
}

@keyframes cppp-access-icon {
  0%, 100% { transform: translateY(0) rotate(0); }
  50% { transform: translateY(-2px) rotate(-3deg); }
}

.portal-access-card:hover .portal-access-card__icon,
.portal-access-card:focus-visible .portal-access-card__icon {
  color: #fff;
  background: var(--access-accent);
  box-shadow: 0 13px 25px color-mix(in srgb, var(--access-accent) 28%, transparent), inset 0 0 0 4px rgba(255,255,255,.15);
  transform: translateY(-3px) rotate(-3deg);
}

.portal-access-card__kicker {
  display: block;
  margin-top: 19px;
  color: var(--access-accent);
  font-size: .68rem;
  font-weight: 850;
  letter-spacing: .12em;
  text-transform: uppercase;
}

.portal-access-card > strong {
  display: block;
  margin-top: 7px;
  color: #242832;
  font-family: Georgia, 'Times New Roman', serif;
  font-size: clamp(1.08rem, 1.55vw, 1.28rem);
  line-height: 1.16;
}

.portal-access-card__description {
  display: block;
  margin-top: 9px;
  color: var(--muted);
  font-size: .88rem;
  line-height: 1.5;
}

.portal-access-card__link {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin-top: auto;
  padding-top: 17px;
  color: var(--access-accent);
  font-size: .77rem;
  font-weight: 850;
  letter-spacing: .04em;
  text-transform: uppercase;
}

.portal-access-card__link .icon {
  width: 16px;
  height: 16px;
  transition: transform .24s ease;
}

.portal-access-card:hover .portal-access-card__link .icon,
.portal-access-card:focus-visible .portal-access-card__link .icon {
  transform: translateX(4px);
}

@media (max-width: 1050px) {
  .portal-access-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 640px) {
  .portal-access__heading {
    align-items: flex-start;
    flex-direction: column;
    gap: 10px;
  }

  .portal-access-grid {
    grid-template-columns: 1fr;
  }

  .portal-access-card {
    min-height: 204px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .portal-access-card,
  .portal-access-card__icon::after,
  .portal-access-card__icon .icon { animation: none; }

  .portal-access-card { opacity: 1; transform: none; }

  .portal-access-card:hover,
  .portal-access-card:focus-visible,
  .portal-access-card:hover .portal-access-card__icon,
  .portal-access-card:focus-visible .portal-access-card__icon { transform: none; }
}
