/* Partner offers (partials/promo) – public site and the /app panel. --promo is the partner's colour. */
.rt-promo {
    --pr-bg: #fff; --pr-border: #e7e2dc; --pr-fg: #1c1917; --pr-muted: #6b635d; --pr-faint: #a8a29e; --pr-accent: #ea580c;
    position: relative; color: var(--pr-fg); font-size: .92rem;
}
@media (prefers-color-scheme: dark) {
    body:not(.fi-body) .rt-promo { --pr-bg: #171412; --pr-border: #2c2724; --pr-fg: #f5f5f4; --pr-muted: #a8a29e; --pr-faint: #78716c; }
}
.dark .rt-promo { --pr-bg: #171412; --pr-border: rgba(255, 255, 255, .1); --pr-fg: #f5f5f4; --pr-muted: #a8a29e; --pr-faint: #78716c; }

.rt-promo-label {
    display: inline-flex; align-items: center; gap: 6px; margin-bottom: 8px;
    font: 700 10.5px/1 Inter, system-ui, sans-serif; letter-spacing: .12em; text-transform: uppercase; color: var(--pr-faint);
}
.rt-promo-label::before { content: ''; width: 6px; height: 6px; border-radius: 50%; background: currentColor; opacity: .6; }

/* Card */
.rt-promo-card-body {
    display: grid; grid-template-columns: 56px 1fr auto; gap: 16px; align-items: center; padding: 18px 20px;
    border-radius: 16px; background: var(--pr-bg); border: 1px solid var(--pr-border);
    box-shadow: 0 1px 2px rgba(28, 25, 23, .05), 0 8px 24px rgba(28, 25, 23, .06);
}
.rt-promo-logo {
    width: 56px; height: 56px; border-radius: 14px; overflow: hidden; display: grid; place-items: center;
    background: var(--promo); color: #fff; font: 800 19px/1 Unbounded, Inter, sans-serif; text-decoration: none;
}
.rt-promo-logo img { width: 100%; height: 100%; object-fit: cover; }
.rt-promo-text { display: grid; gap: 3px; min-width: 0; }
.rt-promo-title { font-weight: 700; font-size: 1rem; color: var(--pr-fg); text-decoration: none; }
.rt-promo-title:hover { text-decoration: underline; }
.rt-promo-text p { margin: 0; color: var(--pr-muted); line-height: 1.45; }
.rt-promo-meta { margin-top: 3px; font-size: .78rem; color: var(--pr-faint); }

.rt-promo-code { display: flex; align-items: center; gap: 8px; }
.rt-promo-code b {
    padding: 9px 12px; border: 1.5px dashed var(--pr-accent); border-radius: 10px; background: color-mix(in srgb, var(--pr-accent) 8%, var(--pr-bg));
    font: 800 .88rem/1 ui-monospace, SFMono-Regular, Menlo, monospace; letter-spacing: .06em; color: var(--pr-accent); user-select: all;
}
.rt-promo-code button, .rt-promo-cta {
    padding: 9px 14px; border: 0; border-radius: 999px; background: var(--pr-accent); color: #fff; cursor: pointer;
    font: 700 .82rem/1 Inter, system-ui, sans-serif; white-space: nowrap; text-decoration: none;
}
.rt-promo-code button:hover, .rt-promo-cta:hover { filter: brightness(1.08); }

/* Banner */
.rt-promo-banner:not(.has-image) {
    display: flex; align-items: center; justify-content: space-between; gap: 24px; overflow: hidden; padding: 26px 30px; border-radius: 18px;
    color: #fff; background: linear-gradient(115deg, color-mix(in srgb, var(--promo) 75%, #000) 0%, var(--promo) 55%, color-mix(in srgb, var(--promo) 70%, #fff) 130%);
}
.rt-promo-banner:not(.has-image)::after {
    content: ''; position: absolute; right: -60px; top: -80px; width: 320px; height: 320px; border-radius: 50%; border: 40px solid rgba(255, 255, 255, .08);
}
.rt-promo-banner-body { position: relative; z-index: 1; display: grid; gap: 6px; }
.rt-promo-banner .rt-promo-label { color: rgba(255, 255, 255, .75); margin-bottom: 2px; }
.rt-promo-banner h3 { margin: 0; color: #fff; font: 800 1.45rem/1.15 Unbounded, Inter, sans-serif; }
.rt-promo-banner p { margin: 0; color: rgba(255, 255, 255, .88); }
.rt-promo-banner .rt-promo-code { margin-top: 6px; }
.rt-promo-banner .rt-promo-code b { border-color: rgba(255, 255, 255, .7); background: rgba(255, 255, 255, .12); color: #fff; }
.rt-promo-banner .rt-promo-code button, .rt-promo-banner .rt-promo-cta { background: #fff; color: color-mix(in srgb, var(--promo) 80%, #000); }
.rt-promo-banner .rt-promo-cta { position: relative; z-index: 1; }

.rt-promo-image { position: relative; display: block; border-radius: 18px; overflow: hidden; }
.rt-promo-image img { display: block; width: 100%; height: auto; }
.rt-promo-image .rt-promo-label { position: absolute; left: 12px; top: 12px; margin: 0; padding: 5px 8px; border-radius: 6px; background: rgba(0, 0, 0, .55); color: #fff; }

/* Two offers side by side (dashboard) */
.rt-promo-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 12px; }
.rt-promo-row .rt-promo-card-body { grid-template-columns: 48px 1fr; height: calc(100% - 26px); align-content: start; }
.rt-promo-row .rt-promo-logo { width: 48px; height: 48px; font-size: 16px; }
.rt-promo-row .rt-promo-code, .rt-promo-row .rt-promo-card-body > .rt-promo-cta { grid-column: 1 / -1; justify-self: start; }

@media (max-width: 640px) {
    .rt-promo-card-body { grid-template-columns: 48px 1fr; padding: 16px; }
    .rt-promo-logo { width: 48px; height: 48px; font-size: 16px; }
    .rt-promo-card-body > .rt-promo-code, .rt-promo-card-body > .rt-promo-cta { grid-column: 1 / -1; justify-self: start; }
    .rt-promo-banner:not(.has-image) { flex-direction: column; align-items: flex-start; padding: 22px; }
    .rt-promo-banner h3 { font-size: 1.2rem; }
}

/* Space around an offer between sections of the public event page */
.rt-promo-slot { margin: 8px 0 40px; }
