/* Floating festival offer (markup: Views/Shared/Components/FestivalOffer/Default.cshtml, behaviour: wwwroot/js/festival.js).
   Bottom-LEFT, stacked above the WhatsApp button when there is one (the back-to-top button and live chat are bottom-right). */
.fest {
    position: fixed; left: 20px; bottom: 20px; z-index: 3450;
    width: 196px; box-sizing: border-box; padding: 10px 10px 12px;
    background: #fff; border-radius: 18px; border: 1px solid #E8EDF3;
    box-shadow: 0 18px 44px rgba(11, 16, 39, .22), 0 2px 8px rgba(11, 16, 39, .10);
    opacity: 0; transform: translateY(14px);
    transition: opacity .3s ease, transform .3s ease;
}
.fest[hidden] { display: none; }
.fest.in { opacity: 1; transform: none; }
body:has(.wa-float) .fest { bottom: 90px; }

.fest-close {
    position: absolute; top: -10px; right: -10px; z-index: 1; width: 28px; height: 28px; padding: 0;
    border: 0; border-radius: 50%; background: var(--ink, #0B1027); color: #fff; font-size: 18px; line-height: 1; cursor: pointer;
    display: flex; align-items: center; justify-content: center; box-shadow: 0 4px 10px rgba(11, 16, 39, .3);
}
.fest-close:hover { background: var(--cyan-deep, #0E85A6); }
.fest-close:focus-visible, .fest-art:focus-visible, .fest-code button:focus-visible { outline: 3px solid var(--cyan, #1AA3C7); outline-offset: 2px; }

.fest-art {
    display: block; width: 100%; padding: 0; border: 0; border-radius: 12px; cursor: pointer;
    background: linear-gradient(160deg, #FFF6E5, #FFE6C2);
}
.fest-art img { display: block; width: 100%; aspect-ratio: 1 / 1; object-fit: contain; border-radius: 12px; }

.fest-info { display: flex; flex-direction: column; gap: 3px; margin-top: 9px; text-align: center; }
.fest-title { font-size: 14px; font-weight: 800; line-height: 1.25; color: var(--ink, #0B1027); }
.fest-sum { font-size: 12.5px; font-weight: 600; color: var(--cyan-deep, #0E85A6); }
.fest-ends { font-size: 11.5px; color: var(--ink-soft, #4B5468); }

.fest-code {
    display: flex; align-items: center; justify-content: space-between; gap: 6px; margin-top: 6px;
    border: 1.5px dashed var(--cyan, #1AA3C7); border-radius: 10px; padding: 4px 4px 4px 10px; background: #F4FBFD;
}
.fest-code code {
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: 14px; font-weight: 800; letter-spacing: .05em;
    color: var(--ink, #0B1027); user-select: all; -webkit-user-select: all; overflow-wrap: anywhere; text-align: left;
}
.fest-code button {
    flex: none; border: 0; border-radius: 7px; background: var(--ink, #0B1027); color: #fff; font: inherit; font-size: 12px; font-weight: 700;
    padding: 6px 10px; cursor: pointer;
}
.fest-code button:hover { background: var(--cyan-deep, #0E85A6); }
.fest-code button.is-copied { background: #16A34A; }
.fest-note { min-height: 15px; font-size: 11.5px; font-weight: 600; color: #15803D; }

@media (max-width: 900px) {
    .fest { left: 14px; bottom: 14px; width: 150px; padding: 8px 8px 10px; border-radius: 15px; }
    body:has(.wa-float) .fest { bottom: 78px; }
    .fest-title { font-size: 12.5px; }
    .fest-sum { font-size: 11.5px; }
    .fest-code code { font-size: 12.5px; }
}
@media (prefers-reduced-motion: reduce) { .fest { transition: none; transform: none; } }
@media print { .fest { display: none !important; } }
