/* ==========================================================
   Hoffer Top Announcement
   ========================================================== */
:root{--top-banner-height:0px;--top-banner-text-color:#fff}
/* Push the page down by the banner height. 'html body' outranks a theme's plain 'body' rule. */
html body{transition:padding-top .4s ease;padding-top:var(--top-banner-height)}

/* Fixed wrapper + slide-in */
.top-announcement{position:fixed;top:0;left:0;width:100%;z-index:99999;color:var(--top-banner-text-color);box-shadow:0 2px 6px rgba(0,0,0,.15);transform:translateY(-100%);transition:transform .6s ease;overflow:hidden}
.top-announcement.show{transform:translateY(0)}
body.admin-bar .top-announcement.show{transform:translateY(32px)}

/* Banner */
.top-announcement .hfb{display:block;text-decoration:none;color:#fff;background:#3f73bf;background:linear-gradient(90deg,#2f5fa8 0%,#4a80cc 50%,#2f5fa8 100%);font-family:Roboto,Arial,sans-serif;position:relative;overflow:hidden}
.top-announcement .hfb:hover,.top-announcement .hfb:focus{color:#fff;text-decoration:none}
.top-announcement .hfb__in{max-width:1260px;margin:0 auto;padding:14px 56px 14px 24px;display:flex;align-items:center;gap:20px;box-sizing:border-box}

/* Keep the theme's fonts off every part of the banner */
.top-announcement .hfb,.top-announcement .hfb span,.top-announcement .top-announcement__close{font-family:Roboto,Arial,sans-serif}

/* Icon */
.top-announcement .hfb__icon{flex:0 0 52px;height:52px;border-radius:50%;background:#fff;display:flex;align-items:center;justify-content:center;position:relative}
.top-announcement .hfb__icon::before,.top-announcement .hfb__icon::after{content:"";position:absolute;inset:0;border-radius:50%;border:2px solid #fff;animation:hfbRing 2.4s ease-out infinite}
.top-announcement .hfb__icon::after{animation-delay:1.2s}
.top-announcement .hfb__icon svg{width:28px;height:28px;transform-origin:30% 60%;animation:hfbShake 2.4s ease-in-out infinite}
.top-announcement .hfb__wave{opacity:0;animation:hfbWave 2.4s ease-in-out infinite}
.top-announcement .hfb__wave--2{animation-delay:.15s}
.top-announcement .hfb__wave--3{animation-delay:.3s}
.top-announcement .hfb__thumb{flex:0 0 auto;width:115px;height:auto;max-width:115px;border-radius:4px;display:block;margin:0}

/* Text */
.top-announcement .hfb__txt{flex:1 1 auto;min-width:0;display:block}
.top-announcement .hfb__tag{display:inline-block;background:#c8102e;color:#fff;font-size:11px;line-height:normal;font-weight:700;letter-spacing:.12em;text-transform:uppercase;padding:3px 8px;border-radius:2px;margin-right:10px;vertical-align:3px}
.top-announcement .hfb__title{display:block;font-family:Roboto,Arial,sans-serif;font-size:21px;line-height:1.25;font-weight:700;margin:0 0 3px;padding:0;letter-spacing:.01em;color:#fff;text-transform:none}
.top-announcement .hfb__sub{display:block;font-family:Roboto,Arial,sans-serif;font-size:15px;line-height:1.45;font-weight:400;margin:0;padding:0;color:#e9f0fa}

/* Button */
.top-announcement .hfb__cta{flex:0 0 auto;display:inline-flex;align-items:center;gap:8px;background:#fff;color:#1f4f96;font-size:14px;line-height:normal;font-weight:700;letter-spacing:.06em;text-transform:uppercase;padding:12px 20px;border-radius:3px;position:relative;overflow:hidden;box-shadow:0 2px 0 rgba(0,0,0,.15);transition:background .2s,color .2s;white-space:nowrap}
.top-announcement .hfb__cta::after{content:"";position:absolute;top:0;left:-60%;width:40%;height:100%;background:linear-gradient(100deg,transparent,rgba(74,128,204,.35),transparent);animation:hfbShine 3.2s ease-in-out infinite}
.top-announcement .hfb__arrow{display:inline-block;transition:transform .2s}
.top-announcement .hfb:hover .hfb__cta{background:#c8102e;color:#fff}
.top-announcement .hfb:hover .hfb__arrow{transform:translateX(4px)}

/* Close */
.top-announcement .top-announcement__close{position:absolute;top:8px;right:12px;z-index:2;background:transparent;border:none;color:var(--top-banner-text-color);font-size:22px;cursor:pointer;line-height:1;transition:opacity .3s ease}
.top-announcement .top-announcement__close:hover{opacity:.7}

/* Animations */
@keyframes hfbShake{0%,55%,100%{transform:rotate(0)}60%{transform:rotate(-14deg)}65%{transform:rotate(12deg)}70%{transform:rotate(-10deg)}75%{transform:rotate(8deg)}80%{transform:rotate(-4deg)}85%{transform:rotate(0)}}
@keyframes hfbWave{0%,55%{opacity:0}65%,85%{opacity:1}100%{opacity:0}}
@keyframes hfbRing{0%{transform:scale(1);opacity:.7}100%{transform:scale(1.6);opacity:0}}
@keyframes hfbShine{0%,60%{left:-60%}100%{left:130%}}

/* Mobile */
@media (max-width:760px){
  .top-announcement .hfb__in{flex-wrap:wrap;gap:12px 14px;padding:12px 48px 14px 16px}
  .top-announcement .hfb__icon{flex-basis:40px;height:40px}
  .top-announcement .hfb__icon svg{width:22px;height:22px}
  .top-announcement .hfb__thumb{width:64px;max-width:64px}
  .top-announcement .hfb__txt{flex:1 1 calc(100% - 60px)}
  .top-announcement .hfb__title{font-size:17px}
  .top-announcement .hfb__sub{font-size:14px}
  .top-announcement .hfb__cta{margin-left:54px;padding:10px 16px;font-size:13px}
}
@media (prefers-reduced-motion:reduce){
  .top-announcement .hfb *,.top-announcement .hfb *::before,.top-announcement .hfb *::after{animation:none!important}
  .top-announcement .hfb__wave{opacity:1}
}
