/* ---- AISC badge: rides the top banner, slides off right on scroll ---- */
.hhs-aisc{
  position:absolute; top:74px; right:32px; z-index:20;
  width:clamp(150px, 22vw, 290px);
  margin:0; pointer-events:none;
  transform:translate3d(calc(100% + 32px + 4vw),0,0);
  opacity:0;
  transition:transform .85s cubic-bezier(.16,1,.3,1), opacity .5s ease;
  will-change:transform;
}
.hhs-aisc.is-in{ transform:translate3d(0,0,0); opacity:1; }
.hhs-aisc img{
  display:block; width:100%; height:auto;
  filter:drop-shadow(0 1px 2px rgba(0,0,0,.55)) drop-shadow(0 6px 18px rgba(0,0,0,.45));
}
/* widths are continuous across these breakpoints - the badge must never
   get larger as the screen gets smaller. Check any edit against that. */
@media (max-width:781px){ .hhs-aisc{ top:62px; right:18px; width:min(38vw,172px); } }
@media (max-width:480px){ .hhs-aisc{ top:32px; right:14px; } }

/* ---- Best of Florida ribbon: slides in from the left once you
        scroll past the top banner, slides back out on the way up ---- */
.hhs-ribbon{
  position:fixed; left:22px; bottom:22px; z-index:9990;
  width:clamp(88px, 9vw, 132px);
  line-height:0; margin:0;
  transform:translate3d(calc(-100% - 22px - 4vw),0,0);
  opacity:0;
  pointer-events:none;
  transition:transform .7s cubic-bezier(.16,1,.3,1), opacity .5s ease, bottom .35s ease;
  will-change:transform;
}
.hhs-ribbon.is-in{
  transform:translate3d(0,0,0);
  opacity:1;
  pointer-events:auto;
}
.hhs-ribbon a{ display:block; box-shadow:none; border:0; }
.hhs-ribbon img{
  display:block; width:100%; height:auto;
  filter:drop-shadow(0 6px 16px rgba(0,0,0,.35));
  transition:transform .3s ease;
}
.hhs-ribbon a:hover img,
.hhs-ribbon a:focus-visible img{ transform:translateY(-3px) scale(1.03); }
.hhs-ribbon a:focus-visible{ outline:3px solid #fff; outline-offset:4px; border-radius:4px; }
.hhs-ribbon.is-lifted{ bottom:var(--hhs-lift,140px); }
@media (max-width:781px){ .hhs-ribbon{ left:14px; bottom:14px; width:min(16vw,72px); } }
@media (max-width:480px){ .hhs-ribbon{ left:12px; bottom:12px; } }

/* ---- respect reduced-motion preferences ---- */
@media (prefers-reduced-motion:reduce){
  .hhs-aisc, .hhs-ribbon, .hhs-ribbon img{ transition:opacity .3s ease; }
  .hhs-aisc, .hhs-aisc.is-in{ transform:none; }
  .hhs-ribbon, .hhs-ribbon.is-in{ transform:none; }
}