/* Top-of-app festival/occasion ribbon (see the inline script next to
   #occasionRibbon in index.html for the OCCASIONS config, and
   dashboard_occasion.js for the matching dashboard hero banner). */

.occasion-ribbon {
    position: relative;
    text-align: center;
    padding: 8px 10px 4px;
    background: linear-gradient(180deg, #fff8ec 0%, #ffffff 100%);
}

.occasion-ribbon__text {
    font-size: 15px;
    font-weight: 800;
    color: var(--occasion-accent, #46567a);
    letter-spacing: 0.01em;
}

.occasion-ribbon__date {
    font-size: 11px;
    font-weight: 700;
    color: #46567a;
    margin-top: 2px;
    letter-spacing: 0.04em;
}

.occasion-ribbon__wave {
    display: block;
    width: 100%;
    height: 22px;
    margin-top: 6px;
    filter: drop-shadow(0 3px 4px rgba(24, 49, 86, 0.10));
}

/* Below 768px #hoe-header switches to position:fixed and would otherwise
   render on top of the ribbon (desktop avoids this because #hoeapp-wrapper
   already reserves header-height of padding-top for flow content). Pad the
   ribbon's own box by the header's height instead of moving the header, so
   its content clears the header without disturbing the header's fixed
   position — and without anything to un-clear once the page is scrolled. */
@media (max-width: 767px) {
    .occasion-ribbon {
        padding-top: var(--occasion-header-h, 60px);
    }
}

/* #hoeapp-wrapper gets .occasion-active (via the script above) only while a
   festival ribbon is showing, so this only applies then — reverts on its own
   the moment no occasion is active. */
@media (max-width: 726px) {
    #hoeapp-wrapper[hoe-device-type="phone"].occasion-active #main-content {
        top: 0px !important;
    }
}
