/* RedHaze Ads · luxury campaign portal styling.
 * Pairs with apple.css (shared variables) and adds layout for the
 * advertiser console, landing pages and the floating widget served on
 * Mall pages.
 */

.ads-shell {
    max-width: 1180px;
    margin: 0 auto;
    padding: 56px var(--pad-x) 80px;
}

.ads-hero {
    background: radial-gradient(circle at 0% 0%, rgba(255, 80, 80, 0.18), transparent 55%),
                linear-gradient(135deg, #110909, #1d1d1f 55%, #2a161a);
    color: #fff;
    border-radius: 26px;
    padding: 56px 44px;
    margin-bottom: 36px;
    position: relative;
    overflow: hidden;
}
.ads-hero h1 {
    margin: 0 0 12px;
    font-size: clamp(32px, 4vw, 50px);
    letter-spacing: -0.02em;
}
.ads-hero p {
    margin: 0 0 22px;
    color: rgba(255, 255, 255, 0.85);
    font-size: 17px;
    max-width: 760px;
}

.ads-cta-row {
    display: flex;
    flex-wrap: wrap;
    gap: 14px;
}

.ads-section-title {
    margin: 32px 0 14px;
    font-size: 24px;
    letter-spacing: -0.01em;
}

.ads-vertical-row {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
    gap: 18px;
    margin-bottom: 36px;
}
.ads-vertical {
    background: var(--hue-bg-strong, #fff);
    border-radius: 22px;
    overflow: hidden;
    box-shadow: 0 14px 28px rgba(20, 12, 12, 0.08);
    display: flex;
    flex-direction: column;
}
.ads-vertical .vertical-cover {
    position: relative;
    aspect-ratio: 16 / 10;
    background: #1d1d1f;
}
.ads-vertical .vertical-cover img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
.ads-vertical .vertical-tag {
    position: absolute;
    top: 12px;
    left: 12px;
    padding: 4px 10px;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.85);
    color: #c41a1a;
    font-size: 12px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.08em;
}
.ads-vertical .vertical-body {
    padding: 16px 18px 20px;
}
.ads-vertical .vertical-body h2 {
    margin: 0 0 8px;
    font-size: 18px;
}
.ads-vertical .vertical-body p {
    margin: 0;
    color: var(--hue-ink-muted, #6e6e73);
    font-size: 14px;
}

.ads-stats {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 12px;
    margin: 20px 0 36px;
}
.ads-stats .stat {
    background: var(--hue-bg-strong, #fff);
    border-radius: 16px;
    padding: 18px;
    box-shadow: 0 6px 14px rgba(0, 0, 0, 0.04);
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.ads-stats .num {
    font-size: 26px;
    font-weight: 600;
    letter-spacing: -0.01em;
}
.ads-stats .label {
    color: var(--hue-ink-muted, #6e6e73);
    font-size: 13px;
}

.ads-campaign-row h2 {
    margin: 28px 0 14px;
    font-size: 22px;
}
.ads-campaign-list {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
    gap: 14px;
}
.ads-campaign-card {
    background: var(--hue-bg-strong, #fff);
    border-radius: 18px;
    padding: 18px;
    text-decoration: none;
    color: var(--hue-ink, #1d1d1f);
    box-shadow: 0 8px 18px rgba(20, 12, 12, 0.05);
    display: block;
    transition: transform 0.15s ease;
}
.ads-campaign-card:hover {
    transform: translateY(-2px);
}
.ads-campaign-card .badge {
    display: inline-block;
    padding: 3px 10px;
    border-radius: 999px;
    background: rgba(196, 26, 26, 0.1);
    color: #c41a1a;
    font-size: 12px;
    font-weight: 600;
    margin-bottom: 6px;
}
.ads-campaign-card h3 {
    margin: 6px 0;
    font-size: 17px;
}
.ads-campaign-card .meta {
    color: var(--hue-ink-muted, #6e6e73);
    font-size: 13px;
}

.ads-table {
    width: 100%;
    border-collapse: collapse;
    margin-top: 14px;
    background: var(--hue-bg-strong, #fff);
    border-radius: 14px;
    overflow: hidden;
    box-shadow: 0 6px 14px rgba(0, 0, 0, 0.04);
}
.ads-table th, .ads-table td {
    text-align: left;
    padding: 12px 14px;
    border-bottom: 1px solid var(--hue-line, #d2d2d7);
    font-size: 13px;
}
.ads-table th {
    background: rgba(196, 26, 26, 0.06);
    font-weight: 600;
    color: var(--hue-ink, #1d1d1f);
}
.ads-table tr:last-child td {
    border-bottom: 0;
}

.ads-empty {
    background: var(--hue-bg-strong, #fff);
    border-radius: 14px;
    padding: 22px;
    color: var(--hue-ink-muted, #6e6e73);
}

.ads-callout {
    max-width: 760px;
}
.ads-tip ul {
    list-style: disc;
    padding-left: 20px;
    color: var(--hue-ink-muted, #6e6e73);
    font-size: 14px;
}

/* Campaign detail */
.ads-campaign-detail .hero {
    background: linear-gradient(135deg, #c41a1a, #2a0c0c);
    color: #fff;
    border-radius: 22px;
    padding: 40px 36px;
    margin-bottom: 24px;
}
.ads-campaign-detail .hero h1 {
    margin: 8px 0 14px;
    font-size: 32px;
}
.ads-campaign-detail .creative-list {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
    gap: 16px;
}
.creative-card {
    background: var(--hue-bg-strong, #fff);
    border-radius: 18px;
    overflow: hidden;
    box-shadow: 0 8px 18px rgba(20, 12, 12, 0.05);
    display: flex;
    flex-direction: column;
}
.creative-card.detailed { margin-top: 18px; }
.creative-card .thumb {
    aspect-ratio: 16 / 10;
    background: #1d1d1f;
}
.creative-card .thumb img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}
.creative-card .body {
    padding: 14px 16px 18px;
}
.creative-card .body h3 {
    margin: 0 0 6px;
    font-size: 16px;
}
.creative-card .body p.muted {
    margin: 0 0 10px;
    color: var(--hue-ink-muted, #6e6e73);
    font-size: 13px;
}
.creative-card .body pre.raw {
    background: rgba(0, 0, 0, 0.04);
    border-radius: 12px;
    padding: 10px;
    font-size: 12px;
    overflow-x: auto;
}

/* Landing page */
.ads-landing { background: #0e0a0c; color: #fff; }
.ads-landing .landing-hero {
    padding: 90px 8vw 70px;
    text-align: center;
    background: radial-gradient(circle at 30% 0%, rgba(255, 50, 50, 0.18), transparent 60%),
                linear-gradient(135deg, #200a0a, #050304);
}
.ads-landing .brand-strip {
    color: rgba(255, 255, 255, 0.5);
    font-size: 13px;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    margin-bottom: 18px;
}
.ads-landing .landing-hero h1 {
    font-size: clamp(36px, 5vw, 64px);
    letter-spacing: -0.02em;
    margin: 0 0 14px;
}
.ads-landing .landing-hero .lead {
    margin: 0 0 26px;
    color: rgba(255, 255, 255, 0.78);
    font-size: 17px;
}
.ads-landing .cta-btn {
    display: inline-block;
    padding: 14px 32px;
    border-radius: 999px;
    background: #c41a1a;
    color: #fff;
    font-size: 16px;
    text-decoration: none;
    box-shadow: 0 14px 24px rgba(196, 26, 26, 0.45);
    transition: transform 0.15s ease;
}
.ads-landing .cta-btn:hover { transform: translateY(-1px); }
.ads-landing .cta-btn.outline {
    background: transparent;
    border: 1px solid rgba(255, 255, 255, 0.3);
    box-shadow: none;
}
.ads-landing .landing-creatives {
    max-width: 1100px;
    margin: 0 auto;
    padding: 60px 24px;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 26px;
}
.ads-landing .landing-creative {
    background: rgba(255, 255, 255, 0.03);
    border-radius: 22px;
    overflow: hidden;
    border: 1px solid rgba(255, 255, 255, 0.06);
}
.ads-landing .landing-creative .cover {
    aspect-ratio: 16 / 10;
    background: #1d1d1f;
}
.ads-landing .landing-creative .cover img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}
.ads-landing .landing-creative .copy {
    padding: 22px 24px 26px;
}
.ads-landing .landing-creative h2 {
    margin: 0 0 10px;
    font-size: 22px;
}
.ads-landing .landing-creative .rich {
    color: rgba(255, 255, 255, 0.78);
    font-size: 15px;
    line-height: 1.55;
    margin-bottom: 14px;
}
.ads-landing .landing-footer {
    text-align: center;
    padding: 30px 24px 50px;
    color: rgba(255, 255, 255, 0.45);
    font-size: 13px;
}
@media (max-width: 720px) {
    .ads-landing .landing-creatives { grid-template-columns: 1fr; }
}

/* vertical accent colors */
.vertical-jet    { background: linear-gradient(135deg, #2a0c0c, #c41a1a); }
.vertical-yacht  { background: linear-gradient(135deg, #07142d, #2666c4); }
.vertical-cruise { background: linear-gradient(135deg, #0e2727, #169f9f); }
.vertical-car    { background: linear-gradient(135deg, #2a0d22, #b51d6c); }

/* Mall floater (loaded via /static/js/ads-floater.js).
 * The floater builds its DOM dynamically; styles live here so the
 * CSS travels with the Ads subsystem static asset bundle. */
#rh-ads-floater {
    position: fixed;
    right: 20px;
    bottom: 20px;
    width: 320px;
    background: #fff;
    border-radius: 18px;
    overflow: hidden;
    box-shadow: 0 22px 60px rgba(0, 0, 0, 0.22);
    z-index: 99999;
    transform: translateY(36px);
    opacity: 0;
    transition: transform 0.45s ease, opacity 0.4s ease;
    font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", sans-serif;
}
#rh-ads-floater.visible {
    transform: translateY(0);
    opacity: 1;
}
#rh-ads-floater .ads-img {
    aspect-ratio: 16 / 10;
    background: #1d1d1f;
}
#rh-ads-floater .ads-img img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}
#rh-ads-floater .ads-body {
    padding: 14px 16px 16px;
}
#rh-ads-floater .ads-meta {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 8px;
}
#rh-ads-floater .ads-tag {
    font-size: 11px;
    letter-spacing: 0.1em;
    color: #c41a1a;
    text-transform: uppercase;
    font-weight: 600;
}
#rh-ads-floater .ads-close {
    background: none;
    border: 0;
    cursor: pointer;
    color: #6e6e73;
    font-size: 16px;
    line-height: 1;
}
#rh-ads-floater .ads-title {
    margin: 0 0 6px;
    font-size: 16px;
    line-height: 1.3;
    color: #1d1d1f;
}
#rh-ads-floater .ads-text {
    margin: 0 0 12px;
    color: #515154;
    font-size: 13px;
    line-height: 1.45;
    max-height: 4em;
    overflow: hidden;
}
#rh-ads-floater .ads-cta {
    display: inline-block;
    padding: 9px 20px;
    border-radius: 999px;
    background: #c41a1a;
    color: #fff;
    text-decoration: none;
    font-size: 13px;
    font-weight: 600;
}
