/* Block: CTA panel. */
.ab-cta { padding: 96px 0; }
.ab-cta__panel { max-width: var(--container); margin: 0 auto; position: relative; overflow: hidden; border-radius: 28px;
  background: #0c1526; border: 1px solid rgba(128,176,215,.24); padding: 84px var(--pad-x); text-align: center; }
/* subtle dotted texture (no gradient fill) */
.ab-cta__panel::before { content: ""; position: absolute; inset: 0; z-index: 1; pointer-events: none;
  background-image: radial-gradient(circle at 1px 1px, rgba(128,176,215,.14) 1px, transparent 0); background-size: 30px 30px;
  mask-image: radial-gradient(ellipse 60% 70% at 50% 40%, #000, transparent 75%); -webkit-mask-image: radial-gradient(ellipse 60% 70% at 50% 40%, #000, transparent 75%); opacity: .5; }

/* optional photo background + readable overlay */
.ab-cta__bg { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: 0; }
.ab-cta__panel.has-image { border-color: rgba(128,176,215,.32); }
.ab-cta__panel.has-image::after { content: ""; position: absolute; inset: 0; z-index: 1; pointer-events: none;
  background: linear-gradient(180deg, rgba(6,12,26,.72), rgba(6,12,26,.82)); }

.ab-cta__panel > .ab__key { position: relative; z-index: 2; }
.ab-cta__h { position: relative; z-index: 2; margin: 16px auto 0; max-width: 18ch; font-family: "Fraunces", serif; font-weight: 500;
  font-size: clamp(32px, 4.2vw, 56px); line-height: 1.06; letter-spacing: -1.3px; color: #eef4fc; }
.ab-cta__actions { position: relative; z-index: 2; margin-top: 36px; display: flex; gap: 14px; justify-content: center; flex-wrap: wrap; }
