/* The block editor and the theme like to drop stray empty elements into
   shortcode output, so only real banners are allowed to show here - the
   same guard the card grid and the promo stack already use. */
.tp-crosslinks{display:flex;gap:16px;margin-top:40px;}
/* Only real banners show here. The escape hatch matters: a guard written
   as "> *:not(.x)" hides the whole block the moment anything runs the markup
   through wpautop and it comes back with the children wrapped in a <p> - the
   <p> is not .x, so it is hidden, and everything inside it goes with it.
   That took the banners off a page once already. A stray <p> is unwrapped
   instead of hidden. */
.tp-crosslinks > p{display:contents;}
.tp-crosslinks > *:not(.tp-crosslink):not(p){display:none;}
.tp-crosslink{min-width:0;}
.tp-crosslink{flex:1;display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;background:#fff;color:#4f46e5;border-radius:16px;padding:28px 26px;text-decoration:none;box-shadow:0 6px 20px -14px rgba(16,20,30,.25);transition:transform .15s, box-shadow .15s;}
.tp-crosslink .tad-promo-title{font-size:19px;font-weight:700;color:#4f46e5;margin-bottom:8px;}
.tp-crosslink .tad-promo-text{font-size:15px;line-height:1.55;color:#8a8f98;margin-bottom:18px;}
.tp-crosslink .tad-promo-cta{display:inline-block;align-self:flex-start;margin-top:auto;font-size:15px;font-weight:600;line-height:1;color:#fff;background:#4f46e5;border-radius:999px;padding:11px 20px;transition:background .15s;}
.tp-crosslink:hover{transform:translateY(-2px);box-shadow:0 14px 32px -10px rgba(79,70,229,.38);}
.tp-crosslink:hover .tad-promo-cta{background:#4338ca;}
.tp-crosslink .tad-promo-title{font-size:19px;font-weight:700;color:#4f46e5;margin-bottom:8px;}
.tp-crosslink .tad-promo-text{font-size:15px;line-height:1.55;color:#8a8f98;margin-bottom:18px;}
@media(max-width:640px){.tp-crosslinks{flex-direction:column;}}
