/**
 * SQL Feature Page Styles
 * Migrated from legacy /css/sql.css
 */

.innerhero__pic--sql {
  width: auto;
  height: auto;
  top: auto;
  bottom: -11rem;
  transform: none;
  left: 77%;
}

.dist__link {
  display: inline-block;
  margin-top: 1rem;
  color: lightgrey;
}

.dist__link:hover {
  color: lightgrey;
}

.dist {
  padding-top: 13rem;
  padding-bottom: 13rem;
}

.dist__block {
  justify-content: space-between;
}

.dist__image {
  background: #f6f6f6;
  border-radius: var(--ai-radius-md);
  padding: 9rem 12rem 8rem 12.5rem;
  margin-left: 7rem;
}

.dist__text {
  font-size: 2rem;
  line-height: 1.6;
  max-width: 647px;
  margin-top: 2rem;
}

.dist__items {
  margin-top: 5rem;
}

.dist__item-title {
  font-size: 2rem;
}

.dist__item:last-child {
  margin-left: 10.6rem;
}

.dist__item-grey {
  background: #f6f6f6;
  border-radius: var(--ai-radius-md);
  padding: 2.8rem;
  padding-bottom: 2.5rem;
  margin-top: 2rem;
  height: 145px;
  flex-direction: column;
}

.dist__item-grey1 {
  padding-right: 11.4rem;
  padding-left: 2.9rem;
}

.dist__item-grey2 {
  flex-direction: row;
}

.dist__item-span {
  margin-top: 0.6rem;
}

.dist__itemitem {
  flex-direction: column;
  width: 74px;
}

.dist__itemitem__end {
  margin-left: 2rem;
}

.dist__h3 {
  font-size: 2rem;
  margin-top: 8rem;
}

.dist__parts {
  margin-top: 2.5rem;
}

.dist__part {
  margin-left: 8.2rem;
  align-items: center;
}

.dist__part:first-child {
  margin-left: 0rem;
  margin-top: 0rem;
}

.dist__part:last-child {
  align-items: flex-start;
}

.dist__part-grey {
  max-width: 210px;
  color: #9c9c9c;
  margin-top: 1rem;
}

.dist__part-text {
  margin-left: 1rem;
  flex-direction: column;
}

.dist1 {
  background: #f6f6f6;
  padding-top: 8rem;
  padding-bottom: 11rem;
}

.dist1__subtext {
  font-size: 2rem;
  margin-top: 2rem;
}

.dist1__parts {
  margin-top: 5rem;
  margin-bottom: 8rem;
}

.dist1__part {
  padding: 1.3rem;
  width: 180px;
  background: #ffffff;
  border-radius: var(--ai-radius-2xl);
  margin-left: 3.3rem;
  text-align: center;
  font-size: 2rem;
}

.dist1__partend {
  width: 202px;
}

.dist1__part:first-child {
  margin-left: 0;
  margin-top: 0;
}

.dist1__title {
  text-transform: uppercase;
}

.dist1__text {
  font-weight: normal;
  max-width: 1000px;
  margin-top: 2rem;
  margin-bottom: 7rem;
}

.dist1__blocks {
  margin-top: 5rem;
}

.dist1__block {
  margin-left: 6rem;
  max-width: 370px;
}

.dist1__block:first-child {
  margin-left: 0rem;
}

.dist1__link::after {
  content: ",";
  color: black;
}

.dist1__h4 {
  font-size: 2rem;
  margin-bottom: 2rem;
}

.dist1__texts {
  font-size: inherit;
  line-height: inherit;
}

.dist2 {
  padding-top: 13rem;
}

.dist2__p {
  margin-top: 2rem;
  font-size: 2rem;
  max-width: 650px;
}

.dist2__blocks {
  margin-top: 5rem;
}

.dist2__block {
  padding: 3.3rem;
  padding-bottom: 4.2rem;
  background: #f6f6f6;
  border-radius: var(--ai-radius-md);
  width: 405px;
  margin-left: 2.7rem;
  position: relative;
}

.dist2__block:first-child {
  margin-left: 0;
}

.dist2__h3 {
  font-size: 2.4rem;
  line-height: 1.6;
}

.dist2__text {
  margin-top: 2rem;
  font-size: 2rem;
  height: 4.8rem;
}

.dist2__text1 {
  height: 8.6rem;
}

.dist2__active {
  width: 24px;
  height: 24px;
  cursor: pointer;
  border-radius: 50%;
  padding: 10px;
  position: absolute;
  right: 34px;
  top: 15rem;
}

.dist2__active:hover {
  background: #e6e6e6;
}

details[open] summary.dist2__active img {
  transform: rotate(45deg);
  transition: 0.5s all;
}

details[open] .dist2__block {
  height: auto;
}

.dist2__subtext {
  margin-top: 8rem;
}

.dist2__subtext p {
  font-size: inherit;
  line-height: inherit;
}

.dist2__subtext p.pt-1 {
  margin-top: 1rem;
}

@media (max-width: 1210px) {
  .dist2__blocks {
    flex-wrap: wrap;
  }
  .dist2__block:last-child {
    margin-left: 0;
    margin-top: 2rem;
  }
}

@media (max-width: 1199px) {
  .innerhero__pic--sql {
    width: 50rem;
  }

  .dist__image {
    margin-left: 4rem;
    width: 50%;
    padding: 8rem;
  }
  .dist__item-grey {
    height: auto;
  }
  .dist__items {
    flex-direction: column;
  }
  .dist__item:last-child {
    margin-left: 0;
    margin-top: 3rem;
  }
  .dist__parts {
    flex-direction: column;
  }
  .dist__part {
    margin-left: 0;
    margin-top: 3rem;
  }
  .dist__h3 {
    margin-top: 5rem;
  }
}

@media (max-width: 992px) {
  .dist {
    padding-top: 8rem;
    padding-bottom: 8rem;
  }
  .dist2 {
    padding-top: 8rem;
  }
  .dist2__blocks {
    flex-direction: column;
  }
  .dist2__block {
    margin-left: 0;
    margin-top: 2rem;
  }
}

@media (max-width: 767px) {
  .dist2__blocks {
    margin-top: 3rem;
  }
  .dist2__block {
    width: 100%;
  }
  .dist__item-grey2 {
    padding: 2rem;
  }
  .dist__item-grey1 {
    padding: 2rem;
  }
  .dist__block {
    flex-direction: column;
  }

  .dist__link {
    margin-right: 2rem;
  }
  .dist__image {
    width: 100%;
    padding: 5rem 8rem;
    margin-top: 4rem;
    margin-left: 0;
  }

  .dist1 {
    padding-top: 6rem;
    padding-bottom: 8rem;
  }
  .dist1__block {
    margin-left: 0;
    margin-top: 3rem;
  }
  .dist1__blocks {
    flex-direction: column;
    margin-top: 0rem;
  }
  .dist1__text {
    margin-bottom: 4rem;
  }
  .dist1__parts {
    flex-direction: column;
    margin-top: 0;
    margin-bottom: 4rem;
    margin-top: 2rem;
  }
  .dist1__part {
    margin-left: 0;
    margin-top: 1.5rem;
  }
  .dist__part-textend {
    margin-top: 0.3rem;
  }
}

/* Native persistence bottom section */
.native-bottom {
  padding: 8rem 0 12rem;
}

.native-bottom__grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 5rem;
}

.nativebotblock {
  border: 1px solid var(--ai-border-medium);
  border-radius: var(--ai-radius-md);
  padding: 4rem 4.5rem;
  position: relative;
}

.nativebotblock__title {
  display: flex;
  flex-direction: row;
  flex-wrap: nowrap;
  align-items: center;
  padding-bottom: 1rem;
}

.nativebotblock__icon {
  width: 48px;
  height: 48px;
  margin-right: 1.5rem;
}

.nativebotblock__text {
  font-size: 2rem;
  padding-top: 2rem;
  max-width: 430px;
}

.nativebotblock__link {
  display: inline-block;
}

@media (max-width: 992px) {
  .native-bottom {
    padding: 6rem 0 8rem;
  }
  .native-bottom__grid {
    grid-template-columns: 1fr;
    gap: 3rem;
  }
}

@media (max-width: 767px) {
  .native-bottom {
    padding: 4rem 0 6rem;
  }
  .nativebotblock {
    padding: 3rem 2.5rem;
  }
  .nativebotblock__text {
    font-size: 1.8rem;
  }
}

/* Compute points styling (for icon bullets) */
.compute2-points__item {
  position: relative;
  display: block;
  padding-left: 0;
  margin-right: 1rem;
}

.compute2-points__item::before {
  content: "";
  display: block;
  width: 6px;
  height: 6px;
  background: var(--ai-blue);
  border-radius: 50%;
  position: absolute;
  left: 0;
  top: 50%;
  margin-top: -3px;
}
