.menu-campaigns {
    display: flex;
    gap: 16px;
    margin: 20px 0;
    max-width: 100%;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    overscroll-behavior-x: contain;
    scrollbar-width: thin;
    scrollbar-color: var(--campaign-accent, #625bff) transparent;
    align-items: flex-start;
}
.menu-campaigns > .menu-campaign-card {
    flex: 0 0 100%;
    min-width: 0;
    box-sizing: border-box;
    scroll-snap-align: start;
    scroll-snap-stop: always;
}
.menu-campaigns:focus-visible { outline: 2px solid var(--campaign-accent, #625bff); outline-offset: 3px; }
.campaign-carousel { margin: 12px 0 0; min-width: 0; }
.campaign-carousel-track {
    display: flex;
    gap: 10px;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    overscroll-behavior-x: contain;
    scrollbar-width: none;
    padding: 2px 0;
}
.campaign-carousel-track::-webkit-scrollbar { display: none; }
.campaign-carousel-track::after { content: ''; flex: 0 0 calc(8% - 10px); }
.campaign-banner {
    flex: 0 0 92%;
    min-width: 0;
    height: clamp(100px, var(--campaign-image-height, 140px), 160px);
    padding: 0;
    border: 1px solid var(--campaign-border, #e5e7eb);
    border-radius: var(--campaign-radius, 16px);
    background: var(--campaign-bg, #ffffff);
    color: var(--campaign-text, #202124);
    overflow: hidden;
    scroll-snap-align: start;
    scroll-snap-stop: always;
    cursor: pointer;
    text-align: left;
    font: inherit;
}
.campaign-banner:only-child { flex-basis: 100%; }
.campaign-banner-scheduled { position: relative; }
.campaign-banner-scheduled.campaign-banner-text { padding-bottom: 52px; }
.campaign-status {
    display: block;
    padding: 7px 10px;
    background: var(--campaign-status-bg, var(--campaign-button-bg, #202124));
    color: var(--campaign-status-text, var(--campaign-button-text, #ffffff));
    font-size: var(--campaign-status-font-size, 12px);
    font-weight: 600;
    line-height: 1.4;
    letter-spacing: normal;
    text-transform: none;
    white-space: normal;
}
.campaign-banner > .campaign-status { position: absolute; inset: auto 0 0; }
.campaign-status-detail { border-radius: 6px; margin: 0 0 12px; }
.campaign-banner:hover,
.campaign-banner:focus,
.campaign-banner:active {
    color: var(--campaign-text, #202124);
    border-color: var(--campaign-border, #e5e7eb);
}
.campaign-banner img { display: block; width: 100%; height: 100%; object-fit: cover; }
.campaign-banner-text { display: flex; flex-direction: column; justify-content: center; gap: 6px; padding: 16px 20px; }
.campaign-banner-title { color: var(--campaign-title, #202124); font-weight: 700; font-size: 20px; line-height: 1.25; }
.campaign-banner-title, .campaign-banner-description { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden; overflow-wrap: anywhere; }
.campaign-banner-description { font-size: 13px; line-height: 1.4; -webkit-line-clamp: 1; }
.campaign-carousel-dots { display: flex; justify-content: center; align-items: center; }
.campaign-carousel-dot { display: grid; place-items: center; width: 28px; height: 28px; padding: 0; border: 0; background: transparent; cursor: pointer; }
.campaign-carousel-dot::after { content: ''; width: 6px; height: 6px; border-radius: 8px; background: var(--campaign-accent, #625bff); opacity: .35; }
.campaign-carousel-dot[aria-current="true"]::after { width: 16px; opacity: 1; }
.campaign-banner:focus-visible, .campaign-carousel-dot:focus-visible, .campaign-carousel-track:focus-visible { outline: 2px solid var(--campaign-accent, #625bff); outline-offset: -2px; }
.menu-campaign-card {
    background: var(--campaign-bg, #ffffff);
    color: var(--campaign-text, #202124);
    border: 1px solid var(--campaign-border, #e5e7eb);
    border-radius: var(--campaign-radius, 20px);
    overflow: hidden;
    overflow-wrap: anywhere;
    text-align: left;
}
.menu-campaign-image { display: block; width: 100%; height: var(--campaign-image-height, 180px); object-fit: cover; }
.menu-campaign-content { padding: 20px; }
.menu-campaign-kind { color: var(--campaign-accent, #625bff); font-weight: 700; font-size: 13px; }
.menu-campaign-title { color: var(--campaign-title, #202124); font-size: 22px; line-height: 1.3; margin: 8px 0 12px; }
.menu-campaign-body { color: var(--campaign-text, #202124); white-space: pre-wrap; line-height: 1.6; margin: 0 0 16px; }
.menu-campaign-content .menu-campaign-offer {
    display: grid;
    gap: 14px;
    margin: 16px 0;
    padding: 16px 0;
    border-block: 1px solid var(--campaign-border, #e5e7eb);
    color: var(--campaign-text, #202124);
    white-space: normal;
    text-align: left;
}
.menu-campaign-offer-price { display: flex; align-items: baseline; flex-wrap: wrap; gap: 4px 8px; }
.menu-campaign-offer-price strong { color: var(--campaign-title, #202124); font-size: 26px; line-height: 1.2; font-weight: 700; }
.menu-campaign-offer-price span { font-size: 13px; line-height: 1.4; }
.menu-campaign-offer .menu-campaign-offer-times { display: grid; gap: 10px; margin: 0; padding: 0; }
.menu-campaign-offer-times > div { display: grid; gap: 2px; min-width: 0; }
.menu-campaign-offer-times dt { margin: 0; font-size: 11px; line-height: 1.4; font-weight: 500; }
.menu-campaign-offer-times dd { margin: 0; font-size: 14px; line-height: 1.45; font-weight: 500; }
.menu-campaign-offer .menu-campaign-offer-note { margin: 0; font-size: 12px; line-height: 1.5; text-align: left; white-space: normal; }
.menu-campaign-date { color: var(--campaign-accent, #625bff); font-size: 14px; margin: 0 0 12px; }
.menu-campaign-links { display: flex; flex-wrap: wrap; gap: 8px; }
.menu-campaign-link, .menu-campaign-close {
    display: inline-block; padding: 10px 16px; border: 0; border-radius: var(--campaign-radius, 20px);
    background: var(--campaign-button-bg, #202124); color: var(--campaign-button-text, #ffffff);
    text-decoration: none; font: inherit; cursor: pointer;
}
.menu-campaign-link:focus-visible, .menu-campaign-close:focus-visible { outline: 3px solid var(--campaign-accent, #625bff); outline-offset: 3px; }
.menu-campaign-dialog:not([open]), .menu-campaign-card[hidden] { display: none; }
.menu-campaign-dialog {
    overscroll-behavior: contain;
    position: fixed; inset: 0; margin: auto; box-sizing: border-box;
    width: min(94vw, 520px); max-height: 85dvh; overflow: auto; padding: 20px;
    border: 0; border-radius: var(--campaign-radius, 20px);
    background: var(--campaign-dialog-bg, var(--campaign-bg, #ffffff)); color: var(--campaign-text, #202124);
    box-shadow: 0 16px 60px #0003;
}
.menu-campaign-dialog::backdrop { background: var(--campaign-overlay, #00000088); }
.menu-campaign-dialog .menu-campaign-close {
    background: var(--campaign-close-bg, var(--campaign-button-bg, #202124));
    color: var(--campaign-close-text, var(--campaign-button-text, #ffffff));
}
.menu-campaign-dialog-header { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 12px; margin-bottom: 16px; }
.menu-campaign-dialog-header h2 { font-size: 18px; margin: 0; color: var(--campaign-title, #202124); }
.menu-campaign-dialog .menu-campaign-card + .menu-campaign-card { margin-top: 16px; }
