/* microsoft365.css — configurador M365 (reusa tokens/clases de webhosting.css). */
.nx-m365 { background: #e9e8e7; padding: 96px 0 64px; }
.nx-m365-grid { display: flex; flex-wrap: wrap; gap: 32px; justify-content: center; align-items: stretch; max-width: 1280px; margin: 0 auto; }
.nx-m365-card { flex: 1 1 320px; max-width: 384px; min-width: 300px; }
.nx-m365-card.is-requerido { box-shadow: 0 0 0 2px #898ef2 inset; }
.nx-m365-badge-req {
  display: inline-block; vertical-align: middle; margin-left: 8px;
  font-size: .6875rem; font-weight: 700; text-transform: uppercase; letter-spacing: .03em;
  color: #5b60d6; background: #ecedfb; border-radius: 999px; padding: 2px 8px;
}

.nx-m365-precio { display: flex; flex-direction: column; }
.nx-m365-precio-amount { font-size: 2rem; font-weight: 700; letter-spacing: -.5px; color: #06162b; }
.nx-m365-precio-suffix { font-size: .8125rem; font-weight: 600; color: #354457; }

.nx-m365-stepper { display: flex; align-items: center; gap: 8px; }
.nx-m365-step {
  appearance: none; width: 44px; height: 44px; flex-shrink: 0;
  border: 1px solid #b6bfcd; border-radius: 12px; background: #fff; color: #0f1a28;
  font-size: 1.25rem; font-weight: 600; cursor: pointer; transition: background .15s, border-color .15s;
}
.nx-m365-step:hover { background: rgba(15,26,40,0.06); border-color: #0f1a28; }
.nx-m365-qty { flex: 1 1 0; height: 44px; min-width: 0; text-align: center; border: 1px solid #b6bfcd; border-radius: 12px; font-size: 1.125rem; font-weight: 600; color: #06162b; outline: none; }
.nx-m365-qty:focus { border-color: #0f1a28; }

.nx-m365-resumen { display: flex; flex-direction: column; align-items: center; gap: 8px; margin-top: 48px; text-align: center; }
.nx-m365-cuentas { font-size: 1rem; color: #354457; margin: 0; }
.nx-m365-valor { font-size: 1.25rem; color: #06162b; margin: 0 0 8px; }

/* Selector de tipo de soporte en el resumen: opciones apiladas full-width (el resumen es
   angosto y centrado; las cards en fila del componente de VPS se desbordaban). */
.nx-m365-soporte { width: 100%; max-width: 400px; margin: 4px auto 8px; text-align: left; }
.nx-m365-soporte-head { display: flex; align-items: center; gap: 8px; margin-bottom: 10px; color: #06162b; font-weight: 600; }
.nx-m365-soporte-head svg { width: 20px; height: 20px; flex-shrink: 0; }
.nx-m365-soporte-cards { display: flex; flex-direction: column; gap: 8px; }
.nx-m365-sop-card { display: flex; gap: 12px; align-items: center; padding: 12px 14px; border: 1px solid #9aa5b4; border-radius: 12px; background: #fff; cursor: pointer; transition: border-color .15s, box-shadow .15s; }
.nx-m365-sop-card input { position: absolute; opacity: 0; width: 0; height: 0; }
.nx-m365-sop-radio { position: relative; width: 20px; height: 20px; flex-shrink: 0; border: 2px solid #b6bfcd; border-radius: 50%; background: #fff; transition: border-color .15s, background .15s; }
.nx-m365-sop-card input:checked ~ .nx-m365-sop-radio { border-color: #6973ff; background: #6973ff; }
.nx-m365-sop-card input:checked ~ .nx-m365-sop-radio::after { content: ""; position: absolute; inset: 5px; border-radius: 50%; background: #fff; }
.nx-m365-sop-card:has(input:checked) { border-color: #6973ff; box-shadow: 0 0 0 1px #6973ff; }
.nx-m365-sop-card input:focus-visible ~ .nx-m365-sop-radio { box-shadow: 0 0 0 3px rgba(105,115,255,.35); }
.nx-m365-sop-label { font-size: .95rem; font-weight: 500; color: #06162b; line-height: 1.3; min-width: 0; overflow-wrap: anywhere; }

/* Nota period-aware bajo el precio de la card */
.nx-m365-precio-nota { font-size: .78rem; color: #708098; margin: 4px 0 0; line-height: 1.35; }

/* Subtotales del resumen (planes / soporte): periodo + equivalente */
.nx-m365-subtotal { display: flex; flex-direction: column; gap: 2px; width: 100%; max-width: 400px; margin: 4px auto; text-align: center; }
.nx-m365-subtotal-label { font-size: .78rem; font-weight: 600; color: #354457; text-transform: uppercase; letter-spacing: .03em; }
.nx-m365-subtotal-main { font-size: 1.05rem; color: #06162b; }
.nx-m365-subtotal-main strong { font-weight: 700; }
.nx-m365-subtotal-equiv { font-size: .82rem; color: #708098; }
/* Botón "Contratar configuración" — degradado Figma (amarillo → verde → lila) +
   borde navy + glow. Las reglas .nx-btn-contratar de webhosting.css están scopeadas
   a .nx-wh-card, así que el botón del resumen (fuera de la card) necesita su propio estilo. */
.nx-m365-resumen .nx-btn-contratar {
  width: auto; min-width: 260px;
  display: inline-flex; align-items: center; justify-content: center;
  padding: 12px 28px; border-radius: 9999px;
  border: 1px solid #0F1A28; color: #06162b;
  background: linear-gradient(90deg, #f6fd60 0%, #c2f9c6 50%, #898ef2 100%);
  font-weight: 600; font-size: 1rem; cursor: pointer;
  box-shadow:
    0 12px 16px -4px rgba(250, 255, 69, 0.14),
    0 4px 6px -2px rgba(250, 255, 69, 0.08);
  transition: box-shadow .18s ease, padding .18s ease, filter .18s ease;
}
.nx-m365-resumen .nx-btn-contratar:hover:not(:disabled) {
  filter: brightness(1.03);
  padding-top: 10px; padding-bottom: 14px;
  box-shadow: inset 0 -4px 0 #898ef2;
}
.nx-m365-resumen .nx-btn-contratar:disabled { opacity: .5; cursor: not-allowed; }

/* Aplicaciones y servicios incluidos (iconos por plan, desde SOAP). */
.nx-m365-apps { margin-top: 16px; text-align: center; }
.nx-m365-apps-title { font-size: .8125rem; font-weight: 700; color: #06162b; margin: 0 0 8px; }
.nx-m365-apps-icons { display: flex; flex-wrap: wrap; gap: 10px; justify-content: center; align-items: center; }
.nx-m365-apps-icons img { width: 28px; height: 28px; object-fit: contain; }
/* Fallback cuando el binario del icono no está en la DB: chip con el nombre. */
.nx-m365-apps-chip { display: inline-flex; align-items: center; padding: 4px 10px; border: 1px solid #b6bfcd; border-radius: 9999px; font-size: .75rem; font-weight: 600; color: #354457; background: #fff; }

@media (max-width: 767px) {
  .nx-m365 { padding: 56px 0 64px; }
  .nx-m365-grid { gap: 20px; }
}
