.gmf-announcement-bar{
    --gmf-ann-bg-1:#071f3b;
    --gmf-ann-bg-2:#0d426f;
    --gmf-ann-text:#fff;
    --gmf-ann-accent:#20df6b;
    --gmf-ann-cta-bg:#fff;
    --gmf-ann-cta-text:#082f52;
    position:relative;
    isolation:isolate;
    z-index:1001;
    width:100%;
    min-height:50px;
    overflow:hidden;
    background:
        radial-gradient(circle at 52% -135%,rgba(32,223,107,.34) 0,rgba(32,223,107,.08) 28%,transparent 54%),
        linear-gradient(102deg,var(--gmf-ann-bg-1),var(--gmf-ann-bg-2));
    color:var(--gmf-ann-text);
    font-size:14px;
    line-height:1.35;
    border-bottom:1px solid rgba(255,255,255,.11);
    box-shadow:0 7px 24px rgba(4,25,48,.16),inset 0 -1px rgba(0,0,0,.14);
}
.gmf-announcement-bar[hidden]{display:none!important}
.gmf-announcement-bar:before{
    content:"";
    position:absolute;
    inset:0;
    z-index:-2;
    pointer-events:none;
    background:repeating-linear-gradient(116deg,transparent 0 27px,rgba(255,255,255,.035) 27px 28px);
}
.gmf-announcement-bar:after{
    content:"";
    position:absolute;
    z-index:-1;
    top:-85%;
    bottom:-85%;
    left:-24%;
    width:14%;
    pointer-events:none;
    transform:rotate(16deg);
    background:linear-gradient(90deg,transparent,rgba(255,255,255,.16),transparent);
    animation:gmfAnnouncementShine 8s cubic-bezier(.2,.65,.35,1) infinite 1.6s;
}
.gmf-announcement-bar__glow{
    position:absolute;
    z-index:-1;
    top:50%;
    right:14%;
    width:170px;
    height:58px;
    border-radius:50%;
    pointer-events:none;
    transform:translateY(-50%);
    background:rgba(32,223,107,.2);
    filter:blur(30px);
    opacity:.7;
    animation:gmfAnnouncementGlow 3.8s ease-in-out infinite;
}
.gmf-announcement-bar__inner{
    width:min(calc(100% - 32px),1580px);
    min-height:50px;
    margin-inline:auto;
    display:flex;
    align-items:center;
    justify-content:center;
    position:relative;
    padding:6px 48px;
    box-sizing:border-box;
}
.gmf-announcement-bar__content{
    display:flex;
    align-items:center;
    justify-content:center;
    gap:11px;
    min-width:0;
    max-width:100%;
    font-weight:800;
}
.gmf-announcement-bar__badge{
    position:relative;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    gap:6px;
    flex:0 0 auto;
    min-height:29px;
    padding:4px 11px;
    border:1px solid rgba(255,255,255,.35);
    border-radius:999px;
    background:var(--gmf-ann-accent);
    color:var(--gmf-ann-cta-text);
    font-size:11.5px;
    font-weight:950;
    white-space:nowrap;
    box-shadow:0 6px 18px rgba(1,26,43,.2),inset 0 1px rgba(255,255,255,.32);
}
.gmf-announcement-bar__badge:after{
    content:"";
    position:absolute;
    inset:-4px;
    z-index:-1;
    border:1px solid rgba(32,223,107,.25);
    border-radius:inherit;
    animation:gmfAnnouncementBadgePulse 2.8s ease-out infinite;
}
.gmf-announcement-bar__badge-icon,.gmf-announcement-bar__icon{
    width:17px;
    height:17px;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    flex:0 0 auto;
}
.gmf-announcement-bar__badge-icon svg,.gmf-announcement-bar__icon svg{
    width:16px;
    height:16px;
    fill:currentColor;
}
.gmf-announcement-bar__badge-icon{animation:gmfAnnouncementSpark 2.7s ease-in-out infinite}
.gmf-announcement-bar__icon{color:var(--gmf-ann-accent)}
.gmf-announcement-bar__message{
    min-width:0;
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
    color:var(--gmf-ann-text);
    font-size:14.5px;
    font-weight:900;
    letter-spacing:-.12px;
    text-shadow:0 1px 1px rgba(0,0,0,.18);
}
.gmf-announcement-bar__cta{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    gap:7px;
    flex:0 0 auto;
    min-height:31px;
    padding:4px 7px 4px 12px;
    border:1px solid rgba(255,255,255,.42);
    border-radius:999px;
    background:var(--gmf-ann-cta-bg);
    color:var(--gmf-ann-cta-text)!important;
    text-decoration:none!important;
    font-size:12px;
    font-weight:950;
    white-space:nowrap;
    box-shadow:0 7px 18px rgba(1,24,44,.2),inset 0 1px rgba(255,255,255,.55);
    transition:transform .18s ease,box-shadow .18s ease,background-color .18s ease;
}
.gmf-announcement-bar__cta-icon{
    width:22px;
    height:22px;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    border-radius:50%;
    background:var(--gmf-ann-accent);
    color:var(--gmf-ann-cta-text);
    transition:transform .18s ease;
}
.gmf-announcement-bar__cta svg{
    width:13px;
    height:13px;
    fill:none;
    stroke:currentColor;
    stroke-width:2.3;
    stroke-linecap:round;
    stroke-linejoin:round;
}
.gmf-announcement-bar__cta:hover{
    transform:translateY(-1px);
    box-shadow:0 10px 24px rgba(1,24,44,.27),inset 0 1px rgba(255,255,255,.62);
}
.gmf-announcement-bar__cta:hover .gmf-announcement-bar__cta-icon{transform:translateX(-2px)}
.gmf-announcement-bar__cta:focus-visible,.gmf-announcement-bar__close:focus-visible{
    outline:2px solid var(--gmf-ann-accent);
    outline-offset:2px;
}
.gmf-announcement-bar > .gmf-announcement-bar__close{
    all:unset!important;
    position:absolute!important;
    left:max(10px,env(safe-area-inset-left))!important;
    right:auto!important;
    top:50%!important;
    bottom:auto!important;
    transform:translateY(-50%)!important;
    width:30px!important;
    min-width:30px!important;
    max-width:30px!important;
    height:30px!important;
    min-height:30px!important;
    max-height:30px!important;
    display:flex!important;
    align-items:center!important;
    justify-content:center!important;
    box-sizing:border-box!important;
    margin:0!important;
    padding:0!important;
    border:0!important;
    border-radius:50%!important;
    background:rgba(255,255,255,.09)!important;
    box-shadow:inset 0 0 0 1px rgba(255,255,255,.18)!important;
    color:var(--gmf-ann-text)!important;
    font:inherit!important;
    line-height:0!important;
    cursor:pointer!important;
    z-index:8!important;
    appearance:none!important;
    -webkit-appearance:none!important;
    backdrop-filter:blur(5px);
    -webkit-backdrop-filter:blur(5px);
    opacity:.84;
    pointer-events:auto!important;
    transition:background .18s ease,transform .18s ease,opacity .18s ease,box-shadow .18s ease;
}
.gmf-announcement-bar > .gmf-announcement-bar__close:hover{
    background:rgba(255,255,255,.18)!important;
    box-shadow:inset 0 0 0 1px rgba(255,255,255,.28),0 6px 16px rgba(0,0,0,.14)!important;
    transform:translateY(-50%) scale(1.05)!important;
    opacity:1;
}
.gmf-announcement-bar > .gmf-announcement-bar__close:focus-visible{
    outline:2px solid var(--gmf-ann-accent)!important;
    outline-offset:2px!important;
}
.gmf-announcement-bar > .gmf-announcement-bar__close svg{
    width:15px!important;
    height:15px!important;
    display:block!important;
    flex:0 0 auto!important;
    fill:none!important;
    stroke:currentColor!important;
    stroke-width:2.2!important;
    stroke-linecap:round!important;
    stroke-linejoin:round!important;
    pointer-events:none!important;
}
.gmf-announcement-bar > .gmf-announcement-bar__close::before,
.gmf-announcement-bar > .gmf-announcement-bar__close::after{
    content:none!important;
    display:none!important;
}
.gmf-announcement-bar.is-closing{overflow:hidden;animation:gmfAnnouncementClose .25s ease forwards}
@keyframes gmfAnnouncementClose{to{min-height:0;height:0;opacity:0;transform:translateY(-8px)}}
@keyframes gmfAnnouncementShine{0%,68%{left:-24%;opacity:0}73%{opacity:.8}88%{left:112%;opacity:0}100%{left:112%;opacity:0}}
@keyframes gmfAnnouncementGlow{0%,100%{opacity:.42;transform:translateY(-50%) scale(.88)}50%{opacity:.78;transform:translateY(-50%) scale(1.12)}}
@keyframes gmfAnnouncementBadgePulse{0%{opacity:.65;transform:scale(.94)}72%,100%{opacity:0;transform:scale(1.16)}}
@keyframes gmfAnnouncementSpark{0%,100%{transform:rotate(0) scale(1)}50%{transform:rotate(12deg) scale(1.14)}}
@media (max-width:900px){
    .gmf-announcement-bar__inner{width:100%;padding-inline:12px 43px}
    .gmf-announcement-bar__content{gap:8px}
    .gmf-announcement-bar__message{font-size:13.5px}
}
@media (max-width:767px){
    .gmf-announcement-bar{min-height:42px;font-size:12px}
    .gmf-announcement-bar__inner{min-height:42px;padding:5px 12px 5px 42px;justify-content:center}
    .gmf-announcement-bar__content{width:auto;max-width:calc(100% - 4px);gap:7px;justify-content:center;align-items:center;margin-inline:auto}
    .gmf-announcement-bar__badge{width:28px;min-width:28px;min-height:28px;padding:0;gap:0}
    .gmf-announcement-bar__badge-text{display:none}
    .gmf-announcement-bar__badge-icon{width:17px;height:17px}
    .gmf-announcement-bar__message{flex:0 1 auto;text-align:center;font-size:12.3px;letter-spacing:-.15px}
    .gmf-announcement-bar__cta{min-height:28px;padding:3px 5px 3px 9px;font-size:10.8px;gap:5px;flex:0 0 auto}
    .gmf-announcement-bar__cta-icon{width:19px;height:19px}
    .gmf-announcement-bar__cta svg{width:11px;height:11px}
    .gmf-announcement-bar__glow{right:25%;width:105px;height:46px}
    .gmf-announcement-bar > .gmf-announcement-bar__close{
        left:max(7px,env(safe-area-inset-left))!important;
        width:27px!important;
        min-width:27px!important;
        max-width:27px!important;
        height:27px!important;
        min-height:27px!important;
        max-height:27px!important;
    }
    .gmf-announcement-bar > .gmf-announcement-bar__close svg{width:14px!important;height:14px!important}
}
@media (max-width:390px){
    .gmf-announcement-bar__inner{padding-right:8px;padding-left:38px}
    .gmf-announcement-bar__badge{display:none}
    .gmf-announcement-bar__content{gap:5px;max-width:calc(100% - 2px)}
    .gmf-announcement-bar__message{font-size:11.8px}
    .gmf-announcement-bar__cta{padding-inline:7px}
    .gmf-announcement-bar__cta-icon{display:none}
}

/* Sticky mode: keeps the announcement visible and moves WoodMart's sticky header below it. */
.gmf-announcement-bar--sticky{
    position:sticky;
    top:var(--gmf-announcement-admin-offset,0px);
    z-index:10050;
}
@media (prefers-reduced-motion:reduce){
    .gmf-announcement-bar:after,.gmf-announcement-bar__glow,.gmf-announcement-bar__badge:after,.gmf-announcement-bar__badge-icon{animation:none}
    .gmf-announcement-bar__cta,.gmf-announcement-bar__cta-icon,.gmf-announcement-bar__close{transition:none}
    .gmf-announcement-bar.is-closing{animation:none;display:none}
}

/*
 * Stable mobile/desktop header stack.
 * Authentication state is intentionally irrelevant: the visible WordPress
 * toolbar and the real announcement height are the only offsets.
 */
:root{
    --gmf-header-stack-top:0px;
}

/* WoodMart places .whb-sticked on the header wrapper when it becomes sticky. */
html.gmf-announcement-sticky-active .gmf-header-stack-managed.whb-header.whb-sticked,
html.gmf-announcement-sticky-active .whb-header.whb-sticked{
    top:var(--gmf-header-stack-top)!important;
}

/* Compatibility with cloned/sticky header variants used by WoodMart builds. */
html.gmf-announcement-sticky-active .gmf-header-stack-managed.whb-sticky-header,
html.gmf-announcement-sticky-active .whb-sticked > .whb-sticky-header{
    top:var(--gmf-header-stack-top)!important;
}

/* A smooth state change only; no per-scroll transition or JS top writes. */
.gmf-header-stack-managed.whb-header,
.gmf-header-stack-managed.whb-sticky-header{
    transition-property:top;
    transition-duration:.18s;
    transition-timing-function:cubic-bezier(.2,.75,.25,1);
}

/* On narrow screens the WP toolbar is normally document-flow/absolute. Do not
 * reserve its height after it scrolls away. The announcement naturally starts
 * below it in document flow and then sticks to top:0. */
@media (max-width:782px){
    html.gmf-adminbar-flow .gmf-announcement-bar--sticky{
        top:0;
    }
}

@media (prefers-reduced-motion:reduce){
    .gmf-header-stack-managed.whb-header,
    .gmf-header-stack-managed.whb-sticky-header{
        transition:none!important;
    }
}

/*
 * Gymarket Foundation site-header integration.
 * The live mobile header is #gm-site-header.gmh, not WoodMart's .whb-header.
 * Keep its sticky offset derived from the same single source of truth used by
 * the announcement bar and prevent auth/admin state from changing geometry.
 */
html.gmf-announcement-sticky-active #gm-site-header.gmh{
    --gmh-sticky-top:var(--gmf-header-stack-top,0px)!important;
}

@media (max-width:782px){
    /* The custom Gymarket header already owns its sticky geometry through
       --gmh-sticky-top. Writing `top` from Foundation as well created a
       geometry feedback loop in the header's native full/compact detector.
       Only publish the offset variable; never override `top`, height or
       min-height on the live custom header. */
    #gm-site-header.gmh{
        box-sizing:border-box;
    }

    /* State changes should resize the whole header as one unit. Avoid any
       Foundation transition on geometry; the header's own component styles
       remain responsible for its visual compact animation. */
    html.gmf-custom-header-state-stable #gm-site-header.gmh{
        transition-property:background-color,box-shadow,border-color!important;
    }
}

/* Foundation keeps ownership of announcement stacking on Vira Amazing Offers pages. */
body.vira-amazing-offers-public-page .gmf-announcement-bar--sticky {
    position: sticky !important;
    top: var(--gmf-announcement-admin-offset, 0px) !important;
}

/* 0.4.43 — announcement reflow for browser zoom / very narrow CSS viewports. */
@media (max-width: 480px) {
    .gmf-announcement-bar {
        min-height: 40px;
    }

    .gmf-announcement-bar__inner {
        min-height: 40px;
        padding: 4px 7px 4px 34px;
    }

    .gmf-announcement-bar__content {
        gap: 4px;
    }

    .gmf-announcement-bar__message {
        font-size: 11px;
    }

    .gmf-announcement-bar__cta {
        min-height: 26px;
        padding: 2px 6px;
        gap: 4px;
        font-size: 10px;
    }

    .gmf-announcement-bar > .gmf-announcement-bar__close {
        left: max(5px, env(safe-area-inset-left)) !important;
        width: 24px !important;
        min-width: 24px !important;
        max-width: 24px !important;
        height: 24px !important;
        min-height: 24px !important;
        max-height: 24px !important;
    }
}

@media (max-width: 340px) {
    .gmf-announcement-bar {
        min-height: 36px;
    }

    .gmf-announcement-bar__inner {
        min-height: 36px;
        padding: 3px 5px 3px 30px;
    }

    .gmf-announcement-bar__message {
        font-size: 9.8px;
        letter-spacing: -.2px;
    }

    .gmf-announcement-bar__cta {
        flex: 0 0 27px;
        width: 27px;
        min-width: 27px;
        min-height: 27px;
        padding: 0;
        border-radius: 50%;
    }

    .gmf-announcement-bar__cta > span:first-child {
        position: absolute !important;
        width: 1px !important;
        height: 1px !important;
        overflow: hidden !important;
        clip: rect(0, 0, 0, 0) !important;
        white-space: nowrap !important;
    }

    .gmf-announcement-bar__cta-icon {
        display: inline-flex !important;
        width: 20px;
        height: 20px;
    }

    .gmf-announcement-bar > .gmf-announcement-bar__close {
        left: max(4px, env(safe-area-inset-left)) !important;
        width: 22px !important;
        min-width: 22px !important;
        max-width: 22px !important;
        height: 22px !important;
        min-height: 22px !important;
        max-height: 22px !important;
    }
}
