.hero-v21-block {
    max-width: 48rem;
}

.hero-v21-icon {
    width: 2.5rem;
    height: 2.5rem;
}

.hero-v21-btn-ghost {
    background-color: transparent;
    transition: background-color 0.2s ease, color 0.2s ease;
}

.hero-v21-btn-ghost:hover,
.hero-v21-btn-ghost:focus {
    background-color: rgba(255, 255, 255, 0.2);
    color: #fff !important;
    border-color: #fff !important;
}

/* -- Button hover states -- */
.hero-btn-primary {
    transition: filter 0.2s ease, transform 0.15s ease;
}
.hero-btn-primary:hover,
.hero-btn-primary:focus {
    filter: brightness(1.12);
    transform: translateY(-1px);
}

.hero-btn-outline-secondary {
    transition: background-color 0.2s ease, color 0.2s ease, border-color 0.2s ease, transform 0.15s ease;
}
.hero-btn-outline-secondary:hover,
.hero-btn-outline-secondary:focus {
    background-color: var(--bs-secondary) !important;
    color: #fff !important;
    border-color: var(--bs-secondary) !important;
    transform: translateY(-1px);
}

.hero-btn-outline-primary-light {
    transition: background-color 0.2s ease, color 0.2s ease, border-color 0.2s ease, transform 0.15s ease;
}
.hero-btn-outline-primary-light:hover,
.hero-btn-outline-primary-light:focus {
    background-color: var(--bs-primary) !important;
    color: #fff !important;
    border-color: var(--bs-primary) !important;
    transform: translateY(-1px);
}
.intro-split-gradient__col-left {
    flex: 1 1 60%;
}

.intro-split-gradient__skew-decor {
    width: 8rem;
}

.intro-split-gradient__content-area {
    max-width: 42rem;
}

.intro-split-gradient__text-box {
    max-width: 36rem;
}

.intro-split-gradient__col-right {
    flex: 1 1 40%;
    display: flex;
    flex-direction: column;
    min-height: 0;
    align-self: stretch;
}

.intro-split-gradient__media-frame {
    flex: 1 1 auto;
    position: relative;
    overflow: hidden;
    /* Завжди є «коробка» для absolute img (BS Reboot: img height:auto ламає h-100 у порожнього батька) */
    min-height: 16rem;
    aspect-ratio: 4 / 3;
}

/* Перебиваємо Bootstrap reboot для img */
.intro-split-gradient__media-frame > img.intro-split-gradient__media-img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    max-width: none;
    object-fit: cover;
    z-index: 0;
}

@media (min-width: 992px) {
    /* Права смуга на всю висоту в’юпорту — тоді flex-grow має від чого рахувати */
    .intro-split-gradient__col-right {
        min-height: 100vh;
        min-height: 100dvh;
    }

    .intro-split-gradient__media-frame {
        flex: 1 1 0;
        width: 100%;
        min-height: min(50vh, 24rem);
        max-height: none;
        aspect-ratio: auto;
    }

    .intro-split-gradient__media-frame > img.intro-split-gradient__media-img {
        height: 100%;
    }
}

.intro-split-gradient__media-img img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}


.watermark-number__tile {
  min-width: 260px;
  max-width: 380px;
  min-height: 300px;
}

.watermark-number__bg {
  z-index: 0;
}

.watermark-number__tile::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
}

.watermark-number__tile--0::before {
  background-image: radial-gradient(
    circle at 20% 15%,
    rgba(var(--bs-primary-rgb), 0.16) 0,
    transparent 45%
  );
}

.watermark-number__tile--1::before {
  background-image: repeating-linear-gradient(
    -40deg,
    transparent,
    transparent 12px,
    rgba(var(--bs-primary-rgb), 0.06) 12px,
    rgba(var(--bs-primary-rgb), 0.06) 13px
  );
}

.watermark-number__tile--2::before {
  background-image: radial-gradient(
    rgba(var(--bs-primary-rgb), 0.12) 1.5px,
    transparent 1.5px
  );
  background-size: 16px 16px;
  mask-image: radial-gradient(circle at center, black 30%, transparent 75%);
  -webkit-mask-image: radial-gradient(circle at center, black 30%, transparent 75%);
}

.watermark-number__glyph {
  font-size: clamp(6rem, 14vw, 9rem);
  opacity: 0.35;
}

.watermark-number__mark {
  z-index: 2;
}

.watermark-number__body {
  min-height: 300px;
  z-index: 3;
}

/* glossary zig — reserved for layout-only hooks; motion lives in Tailwind on @sem('row'). */

/* Bootstrap: grid + gap (row gutters often collapse) */
.tips-detailed__bs-row {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 1.5rem;
}

@media (min-width: 768px) {
    .tips-detailed__bs-row {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

.tips-detailed__subtitle-max {
    max-width: 42rem;
}

.tips-detailed__thumb {
    width: 3rem;
    height: 3rem;
}

.tips-detailed__cta-thumb {
    width: 2rem;
    height: 2rem;
}

.tips-detailed__min-shrink {
    min-width: 0;
}

/* subscribe v21 — bento grid: geometry shared by both CSS frameworks (Bootstrap has no grid-template utilities) */
.mailing-bento-benefits__section--py-4xl {
    padding-top: 6rem;
    padding-bottom: 6rem;
}

.mxw-5xl {
    max-width: 64rem !important;
}

.mailing-bento-benefits__grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1rem;
}

.mailing-bento-benefits__panel {
    grid-column: span 2 / span 2;
    grid-row: span 2 / span 2;
    min-height: 14rem;
    padding: 1.5rem;
}

.mailing-bento-benefits__title {
    font-size: 1.5rem;
}

.mailing-bento-benefits__card {
    padding: 1.25rem;
}

.mailing-bento-benefits__dot {
    top: 0.5rem;
    inset-inline-end: 0.5rem;
    width: 0.5rem;
    height: 0.5rem;
}

.mailing-bento-benefits__row {
    flex-direction: column;
    gap: 1rem;
}

.mailing-bento-benefits__input {
    padding: 0.75rem 1rem;
}

.mailing-bento-benefits__cta {
    width: 100%;
    padding: 0.75rem 1.5rem;
}

@media (min-width: 640px) {
    .mailing-bento-benefits__row {
        flex-direction: row;
    }

    .mailing-bento-benefits__cta {
        width: auto;
    }
}

@media (min-width: 768px) {
    .mailing-bento-benefits__grid {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }

    .mailing-bento-benefits__panel {
        padding: 2rem;
    }

    .mailing-bento-benefits__title {
        font-size: 1.875rem;
    }
}

