/* habilita container queries en tu contenedor principal */
#presupuesto-row {
  container-type: inline-size;
  container-name: presupuesto;
}


/* === Contenedor de cada opción === */
.image-container {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;

  /* Tamaño adaptable */
  width: 100%;
  max-width: 200px;

  /* Para evitar que la imagen sobresalga al hacer zoom */
  overflow: hidden;

  /* Borde invisible por defecto para evitar movimiento al seleccionar */
  border: 4px solid transparent;
  border-radius: 8px;
  padding: 8px;

  margin-inline: 5px;

  transition: border 0.3s ease;
}


/* === Imagen interna === */
.image-container img {
  max-width: 100%;
  max-height: 150px;
  display: block;
  transform-origin: center center;
  transition: transform 0.3s ease;
}

/* Borde cuando está seleccionado, sin JS */
.image-container:has(input:checked) {
  border-color: #92b2a7;
}

/* Si quieres la animación al seleccionar */
.image-container:has(input:checked) .image-presupuesto {
  animation: zoomPop 800ms cubic-bezier(0.68,-0.55,0.27,1.55);
}

/* === Animación de zoom con rebote === */
.image-presupuesto.zoom-anim {
  animation: zoomPop 800ms cubic-bezier(0.68, -0.55, 0.27, 1.55);
}

/* Keyframes para la animación */
@keyframes zoomPop {
  0% {
    transform: scale(1);
  }

  40% {
    transform: scale(0.85);
  }

  80% {
    transform: scale(1.05);
  }

  100% {
    transform: scale(1);
  }
}

.image-container:hover {
  cursor: pointer;
  box-shadow: 0 0 10px rgba(104, 124, 254, 0.3);
}

@media (max-width: 576px) {
  .image-container {
    max-width: 100%;
  }
}

.gramaje-radio {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  min-width: 70px;
  /* Ancho mínimo */
  min-height: 70px;
  /* Alto mínimo */
  max-width: 70px;
  /* Ancho máximo */
  max-height: 70px;
  /* Alto máximo */
}

@keyframes fadeInUpBounce {
  0% {
    opacity: 0;
    transform: translateY(30px);
  }

  60% {
    opacity: 1;
    transform: translateY(-10px);
  }

  80% {
    transform: translateY(5px);
  }

  100% {
    transform: translateY(0);
  }
}

.animate-fadeInUpBounce {
  animation: fadeInUpBounce 0.6s ease-out both;
  animation-delay: 0.1s;
  will-change: transform;
}

.service-option {
  cursor: pointer;
  transition: all 0.3s ease-in-out;
  border: 1px solid #d0d7e5;
  border-radius: 0.5rem;
  background-color: #fff;
}

.service-option.checked {
  border-color: #4b7bec;
  background-color: #f0f5ff;
  box-shadow: 0 0 0 2px #4b7bec inset;
}

.service-option .price {
  font-weight: 600;
  font-size: 1rem;
  margin-top: 1rem;
}

.service-desc {
  min-height: 2.2rem;
  /* ajusta según el tamaño de fuente que uses */
  display: flex;
  align-items: center;
  justify-content: center;
}

.service-checkbox {
  display: none;
}

.btn-check-service+.btn {
  position: relative;
  /* <-- Esto es lo más importante */
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  white-space: normal;
  line-height: 1.2;
  min-height: 180px;
  padding: 1rem 0.75rem;
  border-radius: 0.5rem;
  color: #92b2a7;
  border: 1px solid #92b2a7;
  transition: all 0.3s ease-in-out;
}

/* ESTILO CUANDO ESTÁ MARCADO */
.btn-check-service:checked+.btn {
  background-color: #92b2a7;
  color: #ffffff !important;
  border-color: #92b2a7;
}

/* Forzamos el color blanco en los subelementos */
.btn-check-service:checked+.btn .service-title,
.btn-check-service:checked+.btn .service-desc,
.btn-check-service:checked+.btn .service-price {
  color: #ffffff !important;
}

/* Forzamos el color azul cuando no está marcado */
.btn-check-service+.btn .service-title,
.btn-check-service+.btn .service-desc,
.btn-check-service+.btn .service-price {
  color: #92b2a7;
}

/* ribbon-service */
.ribbon-service {
  position: absolute;
  top: -5px;
  right: -5px;
  overflow: hidden;
  width: 90px;
  height: 90px;
  z-index: 1;
}

.ribbon-service span {
  position: absolute;
  display: block;
  width: 120px;
  padding: 5px 0;
  background: #e5745b;
  color: white;
  font-size: 12px;
  text-align: center;
  font-weight: bold;
  transform: rotate(45deg);
  top: 20px;
  right: -30px;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2);
}


/* ===== Tiradas (pricing cards) ===== */
.tirada-card {
  --il-accent: #92b2a7;
  /* verde grisáceo */
  --radius: 18px;
  --sel-scale-y: 1.12;
  /* cuánto más alta la seleccionada (crece arriba y abajo) */

  /* círculo */
  --arc-w: 280px;
  --arc-h: 190px;
  --arc-y: -23px;
  /* tu valor */
  --arc-stop: 65%;

  border: 1px solid #e9ecef;
  border-radius: var(--radius);
  background-color: #fff;
  background-image: radial-gradient(var(--arc-w) var(--arc-h) at 50% var(--arc-y),
      rgba(146, 178, 167, .24) 0 var(--arc-stop),
      transparent calc(var(--arc-stop) + 1%));

  padding: 1.25rem 1.25rem 1rem;
  text-align: center;
  position: relative;
  height: 100%;
  box-shadow: 0 4px 14px rgba(146, 178, 167, .12);
  overflow: hidden;
  transform-origin: center center;
  will-change: transform;
  transition: transform .22s ease, box-shadow .22s ease, border-color .22s ease, background .22s ease;
  display: block;
  width: clamp(155px, 28vw, 250px); /* crece fluido pero nunca <155 ni >250 */
  min-width: 155px !important;
  max-width: 250px !important;
}

/* sin elevación al hover */
.tirada-card:hover {
  transform: none;
}

/* Tipografías */
.tirada-card .title {
  font-weight: 700;
  letter-spacing: .04em;
  font-size: .9rem;
  color: var(--il-accent);
  text-transform: uppercase;
}

.tirada-card .price-big {
  font-size: 1.15rem;
  font-weight: 800;
  line-height: 1.1;
  margin: .35rem 0 .15rem;
  color: var(--il-accent);
}

.tirada-card .price-total {
  font-size: 1.8rem;
  color: #92b2a7;
}

.tirada-card .per {
  font-size: .85rem;
  color: #7f8fa9;
}

.tirada-card .price-row {
  margin-top: .75rem;
}

.tirada-card .muted {
  color: #8e9bb3;
  font-size: .9rem;
}

/* Botón */
.tirada-card .btn-select-tirada {
  margin-top: 1rem;
  border-radius: 999px;
  padding: .6rem 1rem;
  font-weight: 600;
  border: 2px solid var(--il-accent);
  color: var(--il-accent);
  background: transparent;
  width: 100%;
  transition: background .2s ease, color .2s ease;
}

/* ===== Seleccionada ===== */
.tirada-card.selected {
  transform: scaleY(var(--sel-scale-y));
  z-index: 2;
  box-shadow: 0 18px 48px rgba(146, 178, 167, .32);
  border-color: var(--il-accent);

  /* círculo sólido */
  background-image: radial-gradient(var(--arc-w) var(--arc-h) at 50% var(--arc-y),
      #92b2a7 0 var(--arc-stop),
      transparent calc(var(--arc-stop) + 1%));
}

.tirada-card.selected:hover {
  transform: scaleY(var(--sel-scale-y));
}

.tirada-card.selected .btn-select-tirada {
  background: var(--il-accent);
  color: #fff;
}

/* texto en blanco dentro del círculo */
.tirada-card.selected .title,
.tirada-card.selected .price-big,
.tirada-card.selected .per {
  color: #fff;
}

/* Línea inferior integrada (solo en no seleccionadas) */
.tirada-card:not(.selected)::after {
  content: "";
  position: absolute;
  left: 1px;
  right: 1px;
  bottom: 1px;
  height: 8px;
  background: var(--il-accent);
  border-bottom-left-radius: calc(var(--radius) - 1px);
  border-bottom-right-radius: calc(var(--radius) - 1px);
  pointer-events: none;
}

.tirada-card.selected::after {
  content: none;
}

/* Oculta el radio */
.tirada-card input[type="radio"] {
  display: none;
}



.nav-link.active .bg-soft-primary {
  background-color: #ffffff33 !important;
  /* #4c5c63 al 20% */
}

.nav-link.active .text-primary {
  color: #ffffff !important;
  /* #4c5c63 al 20% */
}

.nav-link:not(.active) .bg-soft-primary {
  background-color: #4c5c6366 !important;
  /* #4c5c63 al 20% */
}

.nav-link:not(.active) .text-primary {
  color: #000000 !important;
  /* #4c5c63 al 20% */
}

/* base */
.btn-service-option {
  background-color: rgba(146, 178, 167, 0.2);
  color: #92b2a7;
  border: 1px solid #92b2a7;
  transition: all .3s ease-in-out;
}

/* hover no seleccionado */
.btn-check-service+.btn-service-option:hover {
  background-color: rgba(146, 178, 167, 0.3);
  color: #92b2a7;
}

/* seleccionado */
.btn-check-service:checked+.btn-service-option {
  background-color: #92b2a7;
  color: #fff;
  border-color: #92b2a7;
}

/* hover estando seleccionado (que no se aclare) */
.btn-check-service:checked+.btn-service-option:hover {
  background-color: #92b2a7;
  color: #fff;
}

/* heredan color para textos internos */
.btn-service-option .service-title,
.btn-service-option .service-desc,
.btn-service-option .service-price {
  color: inherit;
}


/* ==== Paso al resumen ==== */
/* ---- Ajustes rápidos  ---- */
/* Valores por defecto (col-9 / col-3 ≈ 75% / 25%) */
#presupuesto-row{
  --main-col: 75%;
  --summary-col: 25%;
  --il-dur-main: 1.4s;
  --il-dur-summary: .6s;
  --il-delay-main: .15s;     /* empieza un poco después */
  --il-delay-summary: 0s;
  --il-ease-main: cubic-bezier(.2,.8,.2,1);
  --il-ease-summary: cubic-bezier(.4,0,.2,1);
  --il-shift: 32px;
}

/* Forzamos que el ancho venga de las variables (y sea animable) */
@media (prefers-reduced-motion: no-preference){
  #presupuesto-row .col-main{
    flex: 0 0 var(--main-col) !important;
    max-width: var(--main-col) !important;
    transition:
      flex-basis var(--il-dur-main) var(--il-ease-main) var(--il-delay-main),
      max-width var(--il-dur-main) var(--il-ease-main) var(--il-delay-main);
  }
  #presupuesto-row .summary-col{
    flex: 0 0 var(--summary-col) !important;
    max-width: var(--summary-col) !important;
    transition:
      flex-basis var(--il-dur-summary) var(--il-ease-summary) var(--il-delay-summary),
      max-width var(--il-dur-summary) var(--il-ease-summary) var(--il-delay-summary),
      opacity var(--il-dur-summary) var(--il-ease-summary) var(--il-delay-summary),
      transform var(--il-dur-summary) var(--il-ease-summary) var(--il-delay-summary);
  }
}

/* Estado expandido: cambiamos SOLO las variables (esto sí se anima) */
#presupuesto-row.expanded{
  --main-col: 100%;
  --summary-col: 0%;
}

#presupuesto-row.expanded .summary-col{
  opacity: 0;
  transform: translateX(var(--il-shift));
  pointer-events: none;
  overflow: hidden;
}

@media (min-width: 1200px){
  /* Evita que las columnas se vayan a la siguiente línea durante la animación */
  #presupuesto-row{
    display: flex;         /* por si acaso algún wrapper cambia el display */
    flex-wrap: nowrap;     /* <-- clave */
    align-items: stretch;
  }
  /* Permite que las columnas puedan encoger sin forzar salto de línea */
  #presupuesto-row .col-main,
  #presupuesto-row .summary-col{
    min-width: 0;          /* <-- clave para que el contenido no fuerce ancho */
  }
  /* Opcional: evita “asomar” algo durante el slide */
  #presupuesto-row .summary-col{
    overflow: hidden;
  }
}



/* ==== BOTONES  ==== */
/* --- Base de la barra (dos filas) --- */
.buttons-bar{
  display:flex;
  flex-direction:column;
  gap:.75rem;
  width:100%;
}

/* Fila 1: acciones centradas */
.buttons-row.center{
  display:flex;
  flex-wrap:wrap;
  justify-content:center;
  gap:.75rem;
}

/* Fila 2: extremos (prev izq / next dcha) */
.buttons-row.split{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:.75rem;
}

/* El “slot” derecho (puede contener Siguiente o Login) */
.buttons-row.split .right-slot{
  margin-left:auto;             /* en desktop empuja a la derecha */
  display:flex;
  align-items:center;
  gap:.75rem;
}

/* --- Limpieza de márgenes heredados para consistencia de gap --- */
.buttons-bar .btn.mx-2{ margin-left:0 !important; margin-right:0 !important; }

/* ================= MOBILE / CONTENEDOR ESTRECHO ================= */
/* A partir de aquí, todo ocurre cuando el contenedor #presupuesto-row
   es estrecho (p.ej., móvil u offcanvas abierto). Ajusta 576px si lo necesitas */
@container presupuesto (max-width: 576px){

  /* Fila 1: acciones apiladas y a 100% ancho */
  .buttons-row.center{
    width:100%;
  }
  .buttons-row.center .btn{
    width:100%;
    justify-content:center;     /* icono + texto centrados */
    max-width: 100%;            /* sin límites */
  }

  /* Fila 2: apilar elementos; cada bloque a 100% */
  .buttons-row.split{
    flex-direction:column;
    align-items:stretch;         /* hace que los hijos estiren a 100% */
    justify-content:flex-start;
  }
  .buttons-row.split > *{
    width:100%;
  }

  /* Botón “Anterior” si existe → 100% y centrado */
  .buttons-row.split > button.btn{
    width:100%;
    justify-content:center;
  }

  /* Bloque derecho (Siguiente / Login) a 100% */
  .buttons-row.split .right-slot{
    width:100%;
    margin-left:0;               /* neutraliza el empuje a la derecha */
    justify-content:stretch;     /* estira su contenido */
  }
  .buttons-row.split .right-slot .btn{
    width:100%;
    justify-content:center;      /* texto centrado */
  }
}