.sbac-affiliate-module {
    --sbac-accent: #76508d;
    --sbac-bg: #fffaf3;
    position: relative;
    isolation: isolate;
    margin: clamp(30px, 5vw, 58px) auto;
    padding: clamp(22px, 4vw, 38px);
    overflow: hidden;
    border: 1px solid color-mix(in srgb, var(--sbac-accent) 22%, white);
    border-radius: 26px;
    background:
        radial-gradient(circle at 94% 4%, color-mix(in srgb, var(--sbac-accent) 14%, transparent), transparent 33%),
        var(--sbac-bg);
    box-shadow: 0 18px 48px rgba(56, 36, 62, .09);
    color: #3e3542;
}

.sbac-affiliate-module,
.sbac-affiliate-module *,
.sbac-affiliate-module *::before,
.sbac-affiliate-module *::after {
    box-sizing: border-box;
}

.sbac-affiliate-module::before {
    position: absolute;
    z-index: -1;
    top: -36px;
    right: 0;
    width: 140px;
    height: 140px;
    border: 18px solid color-mix(in srgb, var(--sbac-accent) 10%, transparent);
    border-radius: 50%;
    content: "";
}

.sbac-site-disclosure,
.sbac-link-disclosure {
    margin: 0;
    color: #675d6b;
    font-size: 12px;
    line-height: 1.55;
}

.sbac-site-disclosure {
    margin-bottom: 18px;
    padding: 9px 12px;
    border: 1px solid rgba(89, 70, 96, .14);
    border-radius: 10px;
    background: rgba(255, 255, 255, .74);
    font-weight: 700;
}

.sbac-module-heading {
    display: grid;
    grid-template-columns: 1fr auto;
    gap: 7px 14px;
    align-items: start;
    margin-bottom: 20px;
}

.sbac-module-eyebrow {
    color: var(--sbac-accent);
    font-size: 11px;
    font-weight: 850;
    letter-spacing: .14em;
    text-transform: uppercase;
}

.sbac-module-badge {
    grid-column: 2;
    grid-row: 1 / span 2;
    padding: 6px 10px;
    border-radius: 999px;
    background: var(--sbac-accent);
    color: #fff;
    font-size: 11px;
    font-weight: 850;
}

.sbac-module-heading h3 {
    grid-column: 1;
    margin: 0;
    color: #351f3d;
    font-family: Georgia, "Times New Roman", serif;
    font-size: clamp(23px, 3vw, 34px);
    line-height: 1.12;
}

.sbac-module-body {
    grid-column: 1 / -1;
    max-width: 760px;
    color: #5e5263;
    font-size: 16px;
    line-height: 1.7;
}

.sbac-module-body > :last-child { margin-bottom: 0; }
.sbac-products { display: grid; gap: 15px; }

.sbac-product {
    display: grid;
    grid-template-columns: minmax(96px, 150px) minmax(0, 1fr);
    gap: clamp(15px, 3vw, 24px);
    align-items: center;
    padding: clamp(16px, 2.5vw, 24px);
    border: 1px solid rgba(93, 68, 102, .14);
    border-radius: 19px;
    background: rgba(255, 255, 255, .86);
}

.sbac-product:only-child:not(:has(.sbac-product-image)) { grid-template-columns: 1fr; }

.sbac-product-image {
    display: grid;
    min-height: 110px;
    place-items: center;
    padding: 10px;
    border-radius: 14px;
    background: #fff;
}

.sbac-product-image img {
    display: block;
    width: auto;
    max-width: 100%;
    height: auto;
    max-height: 150px;
    margin: 0 auto;
    object-fit: contain;
}

.sbac-product-copy { min-width: 0; }
.sbac-product-brand { color: #827386; font-size: 11px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.sbac-product h4 { margin: 3px 0 9px; color: #39283f; font-size: clamp(18px, 2.5vw, 23px); line-height: 1.24; }
.sbac-product-description, .sbac-product-note, .sbac-product-safety { margin: 0 0 11px; color: #615566; line-height: 1.6; }
.sbac-product-safety { padding: 9px 11px; border-left: 3px solid #d28b62; background: #fff7ec; font-size: 13px; }
.sbac-product-price { display: inline-block; margin: 0 12px 10px 0; color: #2f654a; font-weight: 850; }

.sbac-product-cta {
    display: inline-flex;
    gap: 8px;
    align-items: center;
    justify-content: center;
    min-height: 44px;
    padding: 11px 17px;
    border-radius: 999px;
    background: var(--sbac-accent);
    color: #fff !important;
    font-weight: 850;
    line-height: 1.2;
    text-decoration: none !important;
    box-shadow: 0 8px 18px color-mix(in srgb, var(--sbac-accent) 24%, transparent);
    transition: transform .16s ease, box-shadow .16s ease;
}

.sbac-product-cta:hover,
.sbac-product-cta:focus-visible { transform: translateY(-1px); box-shadow: 0 11px 24px color-mix(in srgb, var(--sbac-accent) 30%, transparent); }
.sbac-product-cta:focus-visible { outline: 3px solid #fff; outline-offset: 3px; }
.sbac-link-disclosure { margin-top: 15px; }

.sbac-style-gentle { --sbac-accent: #487a69; --sbac-bg: #f3fbf6; }
.sbac-style-editor_pick { --sbac-accent: #76508d; --sbac-bg: #f8f2ff; }
.sbac-style-comparison { --sbac-accent: #3d6583; --sbac-bg: #f2f8fc; }
.sbac-style-comparison .sbac-products { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.sbac-style-comparison .sbac-product { grid-template-columns: 1fr; align-content: start; }
.sbac-style-budget { --sbac-accent: #36734d; --sbac-bg: #f1faef; }
.sbac-style-premium { --sbac-accent: #7e5e2f; --sbac-bg: #fff8e9; }
.sbac-style-checklist { --sbac-accent: #aa5e6b; --sbac-bg: #fff4f5; }
.sbac-style-minimal { padding: 22px; border-left: 5px solid var(--sbac-accent); border-radius: 14px; box-shadow: none; }
.sbac-style-minimal::before, .sbac-style-minimal .sbac-product-image { display: none; }
.sbac-style-minimal .sbac-product { grid-template-columns: 1fr; padding: 0; border: 0; background: transparent; }

@media (max-width: 680px) {
    .sbac-affiliate-module { border-radius: 20px; }
    .sbac-module-heading { grid-template-columns: 1fr; }
    .sbac-module-badge { grid-column: 1; grid-row: auto; justify-self: start; }
    .sbac-product, .sbac-style-comparison .sbac-products { grid-template-columns: 1fr; }
    .sbac-product-image { min-height: 0; }
    .sbac-product-image img { max-height: 180px; }
    .sbac-product-cta { width: 100%; }
}

@media (prefers-reduced-motion: reduce) {
    .sbac-product-cta { transition: none; }
}
