/* ═══════════════════════════════════════════════════════════
   FERTILITY FOUNT — BLOG LISTING
   ═══════════════════════════════════════════════════════════
   File: css/blog.css   |   Prefix: ff-bl-*
   Pairs with: blog.php, includes/common/blog-sidebar.php, custom/js/blog.js

   Design intent: premium medical · clean · trustworthy.
   Brand tokens (--ff-blue / --ff-pink / --ff-orange / fonts) come from
   custom/css/core.css, which every page imports via /custom.css.
   ═══════════════════════════════════════════════════════════ */

.ff-bl{
  /* Section gutter (--ff-gut: 28px desktop / 14px phones) comes from core.css
     so the whole site lines up. Used on each full-width section's inner
     container. Same convention as gg / zc. */
  --ff-bl-gap:16px;       /* main ↔ sidebar gap (halved from 32px) */
  --ff-bl-aside:340px;
  background:#ffffff;      /* white */
  min-height:60vh;
  padding-bottom:64px;
}
.ff-bl *{box-sizing:border-box}

/* lazy image fade-in (JS adds .is-loaded once the image loads) */
.ff-bl img.lazy,.ff-bld img.lazy{opacity:1}
img.lazy.is-loaded{opacity:1;animation:ff-img-in .5s var(--ff-ease)}
@keyframes ff-img-in{from{opacity:0}to{opacity:1}}
/* missing/broken image → muted brand favicon placeholder */
.ff-img-fb{object-fit:contain !important;padding:16%;background:var(--ff-bg-2);filter:grayscale(1);opacity:.5}

/* ─────────────────────────────────────────────────────────
   [HERO] Journal masthead — soft clinical gradient
───────────────────────────────────────────────────────── */
.ff-bl-hero{
  position:relative;overflow:hidden;
  /* gg-style soft radial wash over white, in brand blue */
  background:
    radial-gradient(ellipse at top left,rgba(0,119,182,.07) 0%,transparent 55%),
    radial-gradient(ellipse at bottom right,rgba(0,119,182,.045) 0%,transparent 55%),
    var(--ff-white);
  border-bottom:1px solid var(--ff-sep);
}
/* gg "head-glow" — a soft blurred orb behind the counter (brand blue) */
.ff-bl-hero::before{content:'';position:absolute;right:-40px;top:-70px;width:300px;height:300px;border-radius:50%;background:radial-gradient(circle,rgba(0,119,182,.20) 0%,transparent 60%);filter:blur(26px);pointer-events:none;z-index:0}
/* a fainter second orb, bottom-left, for depth */
.ff-bl-hero::after{content:'';position:absolute;left:-60px;bottom:-90px;width:260px;height:260px;border-radius:50%;background:radial-gradient(circle,rgba(0,119,182,.12) 0%,transparent 62%);filter:blur(28px);pointer-events:none;z-index:0}
.ff-bl-hero-w{padding:44px var(--ff-gut);position:relative;z-index:2;display:flex;align-items:center;justify-content:space-between;gap:44px}
.ff-bl-hero-left{min-width:0;flex:1}
.ff-bl-eyebrow{
  display:inline-flex;align-items:center;gap:8px;
  font-size:11px;font-weight:800;letter-spacing:1.6px;text-transform:uppercase;
  color:var(--ff-blue);background:var(--ff-blue-06);
  padding:6px 14px;border-radius:100px;border:1px solid var(--ff-blue-10);
}
.ff-bl-eyebrow-dot{width:7px;height:7px;border-radius:50%;background:var(--ff-blue);box-shadow:0 0 0 3px var(--ff-blue-10)}
.ff-bl-h1{
  font-family:var(--ff-font);font-weight:800;
  font-size:clamp(30px,4vw,48px);line-height:1.06;letter-spacing:-1.4px;
  color:var(--ff-text);margin:16px 0 0;
}
/* Accent phrase ("fertility journey") — brand display face, solid brand blue.
   A deliberate font contrast against the Outfit headline (no gradient text). */
.ff-bl-h1 em{font-family:var(--ff-logo);font-style:normal;font-weight:700;letter-spacing:-.5px;color:var(--ff-blue)}
.ff-bl-sub{
  font-size:clamp(14px,1.3vw,16px);line-height:1.6;color:var(--ff-text-2);
  margin:14px 0 0;
}
/* medically-reviewed trust pill */
.ff-bl-reviewed{display:inline-flex;align-items:center;gap:8px;margin-top:18px;padding:8px 15px;border-radius:100px;background:var(--ff-green-10);font-size:12.5px;font-weight:600;color:var(--ff-green)}
.ff-bl-reviewed i{font-size:13px}

/* hero counter (right) — flat single row of 4, vertical dividers, no card */
.ff-bl-hero-right{display:flex;flex-shrink:0}
.ff-bl-count{display:flex;align-items:center;gap:11px;padding:8px 22px}
.ff-bl-count + .ff-bl-count{border-left:1px solid var(--ff-sep)}
/* single-colour, restrained icon — minimalist/medical, no tile */
.ff-bl-count-ico{font-size:17px;line-height:1;flex-shrink:0;display:flex;color:var(--ff-blue)}
.ff-bl-count-txt{display:flex;flex-direction:column;min-width:0;line-height:1}
.ff-bl-count-n{font-size:19px;font-weight:700;line-height:1;letter-spacing:-.3px;color:var(--ff-text)}
.ff-bl-count-l{margin-top:5px;font-size:10px;font-weight:600;letter-spacing:.5px;text-transform:uppercase;color:var(--ff-text-3)}

/* ─────────────────────────────────────────────────────────
   [CATEGORY BAR] horizontal filter pills
───────────────────────────────────────────────────────── */
.ff-bl-catbar{
  position:sticky;top:55px;z-index:40;
  background:rgba(255,255,255,.82);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  border-bottom:1px solid var(--ff-sep);
}
.ff-bl-catbar-w{
  padding:11px var(--ff-gut);
  display:flex;align-items:center;gap:13px;
}
/* leading title + divider */
.ff-bl-catbar-title{flex-shrink:0;font-size:12px;font-weight:800;letter-spacing:.8px;text-transform:uppercase;color:var(--ff-text-2)}
.ff-bl-catbar-div{flex-shrink:0;width:1px;height:20px;background:var(--ff-sep)}
/* the pills scroll inside this track. The padding + negative margin give the
   active pill's shadow room so overflow-x:auto doesn't clip it at the bottom. */
.ff-bl-cats{flex:1;min-width:0;display:flex;gap:8px;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-webkit-overflow-scrolling:touch;padding:10px 2px;margin:-10px 0}
.ff-bl-cats::-webkit-scrollbar{display:none}
/* right side: active-filter status + clear */
.ff-bl-catbar-status{flex-shrink:0;display:flex;align-items:center;gap:12px}
.ff-bl-catbar-found{font-size:12.5px;color:var(--ff-text-3);white-space:nowrap}
.ff-bl-catbar-found b{color:var(--ff-text);font-weight:700}
.ff-bl-catbar-clear{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:700;color:var(--ff-pink);background:var(--ff-pink-10);padding:7px 13px;border-radius:100px;white-space:nowrap;transition:all .2s var(--ff-ease)}
.ff-bl-catbar-clear:hover{background:var(--ff-pink);color:#fff}
.ff-bl-cat{
  flex-shrink:0;display:inline-flex;align-items:center;gap:7px;
  padding:8px 16px;border-radius:100px;font-size:13px;font-weight:600;
  color:var(--ff-text-2);background:var(--ff-bg-2);border:1.5px solid transparent;
  transition:all .22s var(--ff-ease);white-space:nowrap;cursor:pointer;
}
/* SVG icon (same approach as homepage tabs): neutral, →white when active */
.ff-bl-cat-ico{width:15px;height:15px;flex-shrink:0;opacity:.5;transition:all .25s var(--ff-ease)}
.ff-bl-cat:hover .ff-bl-cat-ico{opacity:.8}
.ff-bl-cat.is-active .ff-bl-cat-ico{opacity:1;filter:brightness(0) invert(1)}
.ff-bl-cat:hover{background:var(--ff-white);border-color:var(--ff-border);color:var(--ff-text)}
.ff-bl-cat-count{font-size:10px;font-weight:800;padding:1px 7px;border-radius:100px;background:rgba(0,0,0,.05);color:var(--ff-text-3)}
.ff-bl-cat.is-active{color:#fff;background:var(--cat-color,var(--ff-blue));border-color:var(--cat-color,var(--ff-blue));box-shadow:0 4px 14px -4px var(--cat-color,var(--ff-blue))}
.ff-bl-cat.is-active .ff-bl-cat-count{background:rgba(255,255,255,.22);color:#fff}

/* ─────────────────────────────────────────────────────────
   [SHELL] main + sidebar grid
───────────────────────────────────────────────────────── */
.ff-bl-shell{
  padding:32px var(--ff-gut) 0;
  display:grid;grid-template-columns:minmax(0,1fr) var(--ff-bl-aside);gap:var(--ff-bl-gap);
  align-items:start;
}
.ff-bl-main{min-width:0}

/* active-filter banner */
.ff-bl-filterbar{
  display:flex;align-items:center;gap:12px;flex-wrap:wrap;
  background:var(--ff-white);border-radius:var(--ff-r-md);
  padding:14px 18px;margin-bottom:22px;box-shadow:0 1px 3px rgba(16,24,40,.05),0 10px 26px -16px rgba(16,24,40,.12);
}
.ff-bl-filterbar-ico{width:38px;height:38px;border-radius:var(--ff-r-sm);display:flex;align-items:center;justify-content:center;font-size:15px;flex-shrink:0;background:var(--ff-blue-06);color:var(--ff-blue)}
.ff-bl-filterbar-txt{flex:1;min-width:0}
.ff-bl-filterbar-h{font-size:16px;font-weight:700;color:var(--ff-text);line-height:1.2}
.ff-bl-filterbar-p{font-size:12.5px;color:var(--ff-text-3);margin-top:2px}
.ff-bl-filterbar-clear{
  display:inline-flex;align-items:center;gap:6px;font-size:12.5px;font-weight:600;
  color:var(--ff-pink);background:var(--ff-pink-10);padding:8px 14px;border-radius:100px;
  transition:all .2s var(--ff-ease);flex-shrink:0;
}
.ff-bl-filterbar-clear:hover{background:var(--ff-pink);color:#fff}

/* ─────────────────────────────────────────────────────────
   [FEATURE] editor's pick — large split card
───────────────────────────────────────────────────────── */
.ff-bl-feature{
  display:grid;grid-template-columns:1.15fr 1fr;
  background:var(--ff-white);border-radius:var(--ff-r-md);
  overflow:hidden;margin-bottom:30px;box-shadow:0 1px 3px rgba(16,24,40,.05),0 10px 26px -16px rgba(16,24,40,.14);
  transition:transform .35s var(--ff-ease),box-shadow .35s var(--ff-ease);
}
.ff-bl-feature:hover{transform:translateY(-3px);box-shadow:var(--ff-sh-lg)}
.ff-bl-feature-media{position:relative;min-height:300px;background:var(--ff-bg-3);overflow:hidden}
.ff-bl-feature-media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .6s var(--ff-ease)}
.ff-bl-feature:hover .ff-bl-feature-media img{transform:scale(1.05)}
.ff-bl-feature-pick{
  position:absolute;top:16px;left:16px;z-index:2;display:inline-flex;align-items:center;gap:6px;
  font-size:10.5px;font-weight:800;letter-spacing:.6px;text-transform:uppercase;color:#fff;
  background:linear-gradient(135deg,var(--ff-pink),var(--ff-pink-dark));padding:6px 12px;border-radius:100px;box-shadow:0 4px 14px rgba(216,27,96,.3)}
.ff-bl-feature-body{padding:clamp(24px,3vw,38px);display:flex;flex-direction:column;justify-content:center}
.ff-bl-feature-title{
  font-family:var(--ff-font);font-weight:700;font-size:clamp(22px,2.4vw,30px);line-height:1.18;
  color:var(--ff-text);margin:14px 0 12px;letter-spacing:-.3px;
  display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;
}
.ff-bl-feature:hover .ff-bl-feature-title{color:var(--ff-blue)}
.ff-bl-feature-ex{font-size:14.5px;line-height:1.6;color:var(--ff-text-2);margin-bottom:20px;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.ff-bl-feature-foot{display:flex;align-items:center;gap:12px;margin-top:auto}

/* category badge (shared) */
.ff-bl-badge{
  display:inline-flex;align-items:center;gap:6px;align-self:flex-start;
  padding:5px 12px;border-radius:100px;font-size:11px;font-weight:700;
  text-transform:uppercase;letter-spacing:.4px;
  color:var(--cat-color,var(--ff-blue));
  background:color-mix(in srgb,var(--cat-color,#0077B6) 10%,#fff);
  border:1px solid color-mix(in srgb,var(--cat-color,#0077B6) 18%,transparent);
}
.ff-bl-badge i{font-size:10px}

/* ─────────────────────────────────────────────────────────
   [LIST META] count + sort
───────────────────────────────────────────────────────── */
.ff-bl-listmeta{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:18px;flex-wrap:wrap}
.ff-bl-listmeta-h{font-size:15px;font-weight:700;color:var(--ff-text)}
.ff-bl-listmeta-h span{color:var(--ff-text-3);font-weight:500}
/* custom sort dropdown (no native select; options are path-based links) */
.ff-bl-dd{position:relative;display:flex;align-items:center;gap:9px}
.ff-bl-dd-lbl{font-size:12.5px;color:var(--ff-text-3);font-weight:600}
.ff-bl-dd-btn{
  display:inline-flex;align-items:center;gap:10px;
  padding:9px 14px;border-radius:var(--ff-r-sm);border:1.5px solid var(--ff-border);
  background:var(--ff-white);font-family:var(--ff-font);font-size:13px;font-weight:700;color:var(--ff-text);
  cursor:pointer;transition:all .2s var(--ff-ease);min-width:148px;justify-content:space-between;
}
.ff-bl-dd-btn:hover{border-color:var(--ff-blue);color:var(--ff-blue)}
.ff-bl-dd-chev{font-size:10px;color:var(--ff-text-4);transition:transform .25s var(--ff-ease)}
.ff-bl-dd.is-open .ff-bl-dd-btn{border-color:var(--ff-blue);color:var(--ff-blue);box-shadow:0 0 0 4px var(--ff-blue-06)}
.ff-bl-dd.is-open .ff-bl-dd-chev{transform:rotate(180deg);color:var(--ff-blue)}
.ff-bl-dd-panel{
  position:absolute;top:calc(100% + 8px);right:0;z-index:50;min-width:200px;
  background:var(--ff-white);border:1px solid var(--ff-sep);border-radius:var(--ff-r-md);
  box-shadow:var(--ff-sh-lg);padding:6px;
  opacity:0;visibility:hidden;transform:translateY(-6px) scale(.98);transition:all .22s var(--ff-ease);
}
.ff-bl-dd.is-open .ff-bl-dd-panel{opacity:1;visibility:visible;transform:translateY(0) scale(1)}
.ff-bl-dd-opt{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border-radius:var(--ff-r-xs);font-size:13px;font-weight:600;color:var(--ff-text-2);transition:background .15s}
.ff-bl-dd-opt:hover{background:var(--ff-bg-2);color:var(--ff-text)}
.ff-bl-dd-opt.is-active{background:var(--ff-blue-06);color:var(--ff-blue)}
.ff-bl-dd-opt i{font-size:11px;color:var(--ff-blue)}

/* ─────────────────────────────────────────────────────────
   [GRID] post cards — 3 across, premium editorial
───────────────────────────────────────────────────────── */
.ff-bl-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}
/* Editorial medical-journal card — crisp white, hairline border, a category
   rule that draws across the top on hover, restrained shadow + soft blue lift. */
.ff-bl-card{
  position:relative;display:flex;flex-direction:column;
  /* gg-style "spot" glow — soft blue radials in the body corners over white,
     subtle at rest, blooming on hover. */
  background:
    radial-gradient(ellipse 80% 62% at 100% 100%,rgba(0,119,182,.05) 0%,transparent 60%),
    radial-gradient(ellipse 70% 55% at 0% 100%,rgba(0,119,182,.035) 0%,transparent 60%),
    var(--ff-white);
  border-radius:var(--ff-r-md);   /* same radius as homepage Featured Clinics */
  overflow:hidden;
  /* clean layered shadow — crisp on a white page, no border */
  box-shadow:0 1px 3px rgba(16,24,40,.05),0 10px 26px -16px rgba(16,24,40,.14);
  transition:transform .55s cubic-bezier(.22,1,.36,1),box-shadow .55s cubic-bezier(.22,1,.36,1),background .55s cubic-bezier(.22,1,.36,1);
}
/* category top rule — the "journal section marker" */
.ff-bl-card::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;z-index:3;background:var(--cat-color,var(--ff-blue));transform:scaleX(0);transform-origin:left;transition:transform .5s var(--ff-ease)}
.ff-bl-card:hover::before{transform:scaleX(1)}
/* hover: gentle lift + the spot glow blooms + soft blue shadow */
.ff-bl-card:hover{
  transform:translateY(-6px);
  background:
    radial-gradient(ellipse 92% 70% at 100% 100%,rgba(0,119,182,.14) 0%,transparent 62%),
    radial-gradient(ellipse 80% 60% at 0% 100%,rgba(0,119,182,.09) 0%,transparent 62%),
    var(--ff-white);
  box-shadow:0 4px 10px rgba(0,119,182,.07),0 26px 52px -22px rgba(0,119,182,.32);
}
.ff-bl-card-media{position:relative;aspect-ratio:3/2;background:var(--ff-bg-3);overflow:hidden;display:block}
.ff-bl-card-media::after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,rgba(10,22,40,.20) 0%,transparent 30%);opacity:0;transition:opacity .4s var(--ff-ease)}
.ff-bl-card:hover .ff-bl-card-media::after{opacity:1}
.ff-bl-card-media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .8s var(--ff-ease)}
.ff-bl-card:hover .ff-bl-card-media img{transform:scale(1.05)}
.ff-bl-card-read{
  position:absolute;top:12px;left:12px;z-index:2;display:inline-flex;align-items:center;gap:5px;
  padding:5px 10px;border-radius:6px;font-size:10.5px;font-weight:700;letter-spacing:.4px;text-transform:uppercase;
  color:var(--ff-text);background:rgba(255,255,255,.92);box-shadow:0 2px 8px rgba(16,24,40,.12);
  backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);
}
.ff-bl-card-read i{font-size:9px;color:var(--ff-blue)}
/* view + comment counts overlaid on the image (bottom-left) */
.ff-bl-card-imgstats{position:absolute;left:12px;bottom:12px;z-index:2;display:flex;gap:7px}
.ff-bl-imgstat{display:inline-flex;align-items:center;gap:5px;padding:4px 9px;border-radius:6px;font-size:10.5px;font-weight:600;color:#fff;background:rgba(10,22,40,.5);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
.ff-bl-imgstat i{font-size:9px}
.ff-bl-card-body{padding:20px 22px 18px;display:flex;flex-direction:column;flex:1}
/* journal section label — leading rule + uppercase category */
.ff-bl-kicker{display:inline-flex;align-items:center;gap:9px;align-self:flex-start;font-size:10.5px;font-weight:800;letter-spacing:1.4px;text-transform:uppercase;color:var(--cat-color,var(--ff-blue));margin-bottom:13px}
.ff-bl-kicker::before{content:'';width:20px;height:2px;border-radius:2px;background:var(--cat-color,var(--ff-blue));transition:width .3s var(--ff-ease)}
.ff-bl-card:hover .ff-bl-kicker::before{width:30px}
.ff-bl-card-title{
  font-size:19px;font-weight:700;line-height:1.26;color:var(--ff-text);margin-bottom:10px;letter-spacing:-.4px;
  display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;transition:color .25s
}
.ff-bl-card:hover .ff-bl-card-title{color:var(--cat-color,var(--ff-blue))}
.ff-bl-card-ex{font-size:13.5px;line-height:1.64;color:var(--ff-text-3);margin-bottom:18px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.ff-bl-card-foot{display:flex;align-items:center;gap:10px;margin-top:auto;padding-top:15px;border-top:1px solid var(--ff-sep)}
/* date on the right of the footer */
.ff-bl-card-date{margin-left:auto;display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:600;color:var(--ff-text-3);white-space:nowrap;flex-shrink:0}
.ff-bl-card-date i{font-size:11px;color:var(--ff-text-4)}

/* author chip (shared by card + feature) */
.ff-bl-author{display:flex;align-items:center;gap:9px;min-width:0}
.ff-bl-author-av{width:34px;height:34px;border-radius:50%;overflow:hidden;flex-shrink:0;background:var(--ff-bg-3);border:1.5px solid var(--ff-white);box-shadow:0 0 0 1px var(--ff-sep)}
.ff-bl-author-av img{width:100%;height:100%;object-fit:cover}
.ff-bl-author-meta{min-width:0}
.ff-bl-author-name{font-size:12.5px;font-weight:700;color:var(--ff-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ff-bl-author-sub{font-size:11px;color:var(--ff-text-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ff-bl-card-stats{display:flex;align-items:center;gap:12px;margin-left:auto;flex-shrink:0}
.ff-bl-stat{display:inline-flex;align-items:center;gap:4px;font-size:11.5px;font-weight:600;color:var(--ff-text-3)}
.ff-bl-stat i{font-size:11px;color:var(--ff-text-4)}

/* ─────────────────────────────────────────────────────────
   [EMPTY STATE]
───────────────────────────────────────────────────────── */
.ff-bl-empty{
  text-align:center;background:var(--ff-white);border:1px dashed var(--ff-border);
  border-radius:var(--ff-r-lg);padding:56px 24px;
}
.ff-bl-empty-ico{font-size:42px;color:var(--ff-text-5);margin-bottom:14px}
.ff-bl-empty-h{font-size:19px;font-weight:700;color:var(--ff-text);margin-bottom:8px}
.ff-bl-empty-p{font-size:14px;color:var(--ff-text-3);line-height:1.6;max-width:380px;margin:0 auto 20px}
.ff-bl-empty-btn{display:inline-flex;align-items:center;gap:8px;padding:11px 22px;border-radius:100px;background:var(--ff-blue);color:#fff;font-size:13.5px;font-weight:600;transition:all .2s var(--ff-ease)}
.ff-bl-empty-btn:hover{background:var(--ff-blue-deep);transform:translateY(-1px)}

/* ─────────────────────────────────────────────────────────
   [LOAD MORE] gg-style progressive loader (JS appends next page)
───────────────────────────────────────────────────────── */
.ff-bl-loadwrap{display:flex;justify-content:center;margin-top:18px}
.ff-bl-loadwrap:empty{display:none}
.ff-bl-loadmore{
  display:inline-flex;align-items:center;gap:10px;padding:14px 34px;border-radius:100px;
  border:1.5px solid var(--ff-border);background:var(--ff-white);color:var(--ff-text);
  font-family:var(--ff-font);font-size:14px;font-weight:700;cursor:pointer;
  box-shadow:var(--ff-sh-xs);transition:all .25s var(--ff-ease);
}
.ff-bl-loadmore:hover{border-color:var(--ff-blue);color:var(--ff-blue);transform:translateY(-2px);box-shadow:var(--ff-sh-md)}
.ff-bl-loadmore:active{transform:translateY(0) scale(.98)}
.ff-bl-loadmore i{font-size:13px;transition:transform .3s var(--ff-ease)}
.ff-bl-loadmore.is-loading{pointer-events:none;opacity:.7}
.ff-bl-loadmore.is-loading i{animation:ff-bl-spin .7s linear infinite}
@keyframes ff-bl-spin{to{transform:rotate(360deg)}}
/* appended cards fade in */
@keyframes ff-bl-fade{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
.ff-bl-card-in{animation:ff-bl-fade .5s var(--ff-ease) both}

/* ─────────────────────────────────────────────────────────
   [PAGINATION] (kept for SEO / no-JS; secondary to Load More)
───────────────────────────────────────────────────────── */
.ff-bl-pager{display:flex;align-items:center;justify-content:center;gap:6px;flex-wrap:wrap;margin-top:38px}
.ff-bl-pager-btn,.ff-bl-pager-num{
  height:42px;border-radius:var(--ff-r-sm);font-family:var(--ff-font);font-size:13.5px;font-weight:700;
  display:inline-flex;align-items:center;justify-content:center;transition:all .2s var(--ff-ease);
}
.ff-bl-pager-btn{gap:7px;padding:0 16px;border:1.5px solid var(--ff-border);background:var(--ff-white);color:var(--ff-text-2)}
.ff-bl-pager-btn:hover{border-color:var(--ff-blue);background:var(--ff-blue);color:#fff}
.ff-bl-pager-btn.is-disabled{opacity:.4;pointer-events:none}
.ff-bl-pager-num{min-width:42px;padding:0 8px;color:var(--ff-text-2);border:1.5px solid transparent;background:transparent}
.ff-bl-pager-num:hover{background:var(--ff-bg-2);color:var(--ff-text)}
.ff-bl-pager-num.is-current{background:var(--ff-blue);color:#fff;box-shadow:0 6px 16px -4px rgba(0,119,182,.5)}
.ff-bl-pager-gap{min-width:28px;text-align:center;color:var(--ff-text-4);font-weight:700}

/* ─────────────────────────────────────────────────────────
   [SIDEBAR]
───────────────────────────────────────────────────────── */
.ff-bl-aside{position:sticky;top:120px;display:flex;flex-direction:column;gap:20px}
.ff-bl-widget{background:var(--ff-white);border-radius:var(--ff-r-md);padding:20px;box-shadow:0 1px 3px rgba(16,24,40,.05),0 10px 26px -16px rgba(16,24,40,.12)}
.ff-bl-widget-h{display:flex;align-items:center;gap:9px;font-size:13px;font-weight:800;letter-spacing:.4px;text-transform:uppercase;color:var(--ff-text);margin-bottom:16px}
.ff-bl-widget-h i{font-size:13px;color:var(--ff-blue)}
.ff-bl-widget-h .fa-fire{color:var(--ff-orange)}

/* sidebar search */
.ff-bl-wsearch{position:relative}
.ff-bl-wsearch input{width:100%;height:44px;padding:0 44px 0 16px;border-radius:var(--ff-r-sm);border:1.5px solid var(--ff-border);background:var(--ff-bg-2);font-family:var(--ff-font);font-size:13.5px;color:var(--ff-text);transition:all .2s}
.ff-bl-wsearch input:focus{outline:none;border-color:var(--ff-blue);background:#fff}
.ff-bl-wsearch button{position:absolute;right:6px;top:6px;width:32px;height:32px;border-radius:var(--ff-r-xs);background:var(--ff-blue);color:#fff;display:flex;align-items:center;justify-content:center;font-size:12px}
.ff-bl-wsearch button:active{transform:scale(.9)}

/* categories list */
.ff-bl-catlist{display:flex;flex-direction:column;gap:2px}
.ff-bl-catlist-i{display:flex;align-items:center;gap:11px;padding:10px 12px;border-radius:var(--ff-r-sm);transition:background .15s;position:relative}
.ff-bl-catlist-i:hover{background:var(--ff-bg-2)}
.ff-bl-catlist-i.is-active{background:var(--ff-bg-2)}
.ff-bl-catlist-dot{width:9px;height:9px;border-radius:50%;flex-shrink:0;background:var(--cat-color,var(--ff-blue))}
.ff-bl-catlist-name{flex:1;font-size:13.5px;font-weight:600;color:var(--ff-text-2);min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ff-bl-catlist-i.is-active .ff-bl-catlist-name{color:var(--ff-text)}
.ff-bl-catlist-n{font-size:11px;font-weight:800;color:var(--ff-text-3);background:var(--ff-bg-2);padding:2px 9px;border-radius:100px}
.ff-bl-catlist-i:hover .ff-bl-catlist-n,.ff-bl-catlist-i.is-active .ff-bl-catlist-n{background:#fff}

/* trending — ranked rows with thumbnails */
.ff-bl-trend{display:flex;flex-direction:column}
.ff-bl-trend-i{display:flex;align-items:center;gap:13px;padding:13px 0;border-bottom:1px solid var(--ff-sep)}
.ff-bl-trend-i:first-child{padding-top:0}
.ff-bl-trend-i:last-child{border-bottom:none;padding-bottom:0}
.ff-bl-trend-num{flex-shrink:0;width:24px;text-align:center;font-size:22px;font-weight:800;line-height:1;color:var(--ff-text-5);font-variant-numeric:tabular-nums}
.ff-bl-trend-i:nth-child(1) .ff-bl-trend-num{background:linear-gradient(135deg,var(--ff-pink),var(--ff-orange));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.ff-bl-trend-i:nth-child(2) .ff-bl-trend-num{color:var(--ff-blue)}
.ff-bl-trend-i:nth-child(3) .ff-bl-trend-num{color:var(--ff-orange)}
.ff-bl-trend-thumb{width:76px;height:54px;border-radius:var(--ff-r-sm);overflow:hidden;flex-shrink:0;background:var(--ff-bg-3)}
.ff-bl-trend-thumb img{width:100%;height:100%;object-fit:cover;transition:transform .5s var(--ff-ease)}
.ff-bl-trend-i:hover .ff-bl-trend-thumb img{transform:scale(1.08)}
.ff-bl-trend-body{min-width:0;flex:1}
.ff-bl-trend-title{font-size:13px;font-weight:600;color:var(--ff-text);line-height:1.38;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;transition:color .2s}
.ff-bl-trend-i:hover .ff-bl-trend-title{color:var(--ff-blue)}
.ff-bl-trend-meta{font-size:11px;color:var(--ff-text-3);margin-top:4px;display:flex;align-items:center;gap:5px}
.ff-bl-trend-meta i{font-size:10px;color:var(--ff-orange)}

/* recent */
.ff-bl-recent{display:flex;flex-direction:column;gap:14px}
.ff-bl-recent-i{display:flex;gap:12px;align-items:center}
.ff-bl-recent-img{width:84px;height:60px;border-radius:var(--ff-r-sm);overflow:hidden;flex-shrink:0;background:var(--ff-bg-3)}
.ff-bl-recent-img img{width:100%;height:100%;object-fit:cover}
.ff-bl-recent-body{min-width:0}
.ff-bl-recent-title{font-size:13px;font-weight:600;color:var(--ff-text);line-height:1.38;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;transition:color .2s}
.ff-bl-recent-i:hover .ff-bl-recent-title{color:var(--ff-blue)}
.ff-bl-recent-date{font-size:11px;color:var(--ff-text-3);margin-top:4px}

/* tags */
.ff-bl-tags{display:flex;flex-wrap:wrap;gap:7px}
.ff-bl-tag{display:inline-flex;align-items:center;font-size:12px;font-weight:600;color:var(--ff-text-2);background:var(--ff-bg-2);padding:6px 12px;border-radius:100px;border:1px solid transparent;transition:all .2s var(--ff-ease)}
.ff-bl-tag:hover{color:var(--ff-blue);border-color:var(--ff-blue-10);background:var(--ff-blue-06)}
.ff-bl-tag.is-active{color:#fff;background:var(--ff-blue);border-color:var(--ff-blue)}

/* newsletter */
.ff-bl-news{position:relative;overflow:hidden;border:none;color:#fff;background:linear-gradient(145deg,var(--ff-blue),var(--ff-blue-deep))}
.ff-bl-news::before{content:'';position:absolute;top:-40px;right:-40px;width:160px;height:160px;border-radius:50%;background:rgba(255,255,255,.08)}
.ff-bl-news-ico{width:46px;height:46px;border-radius:var(--ff-r-sm);background:rgba(255,255,255,.15);display:flex;align-items:center;justify-content:center;font-size:20px;margin-bottom:14px;position:relative}
.ff-bl-news-h{font-family:var(--ff-font);font-size:20px;font-weight:700;margin-bottom:6px;position:relative}
.ff-bl-news-p{font-size:13px;line-height:1.55;color:rgba(255,255,255,.85);margin-bottom:16px;position:relative}
.ff-bl-news-form{display:flex;gap:8px;position:relative}
.ff-bl-news-form input{flex:1;height:44px;padding:0 14px;border-radius:var(--ff-r-sm);border:none;font-family:var(--ff-font);font-size:13px;color:var(--ff-text);min-width:0}
.ff-bl-news-form input:focus{outline:none;box-shadow:0 0 0 3px rgba(255,255,255,.4)}
.ff-bl-news-form button{width:44px;height:44px;border-radius:var(--ff-r-sm);background:var(--ff-orange);color:#fff;display:flex;align-items:center;justify-content:center;font-size:15px;flex-shrink:0;transition:all .2s}
.ff-bl-news-form button:hover{background:var(--ff-orange-dark)}
.ff-bl-news-fine{font-size:10.5px;color:rgba(255,255,255,.6);margin-top:10px;position:relative}

/* mobile filter toggle (hidden on desktop) */
.ff-bl-mobfilter{display:none}

/* ─────────────────────────────────────────────────────────
   [RESPONSIVE]
───────────────────────────────────────────────────────── */
/* Sidebar drops below once the main column would squeeze the 3-up grid. */
@media(max-width:1200px){
  .ff-bl-shell{grid-template-columns:1fr;gap:0}
  .ff-bl-aside{position:static;display:grid;grid-template-columns:repeat(2,1fr);gap:20px;margin-top:44px}
  .ff-bl-news{grid-column:1/-1}
  .ff-bl-catbar{top:0}
}
@media(max-width:980px){
  .ff-bl-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:22px}
}
/* Hero stacks: text on top, counter row below */
@media(max-width:860px){
  .ff-bl-hero-w{flex-direction:column;align-items:flex-start;gap:26px;padding:32px var(--ff-gut)}
  .ff-bl-hero-right{width:100%}
  .ff-bl-count{flex:1;padding:8px 16px}
}
@media(max-width:768px){
  .ff-bl-feature{grid-template-columns:1fr}
  .ff-bl-feature-media{min-height:210px;aspect-ratio:16/9}
  .ff-bl-aside{grid-template-columns:1fr}
  .ff-bl-catbar{position:static}
  .ff-bl-catbar-title,.ff-bl-catbar-div,.ff-bl-catbar-found{display:none}
  .ff-bl-pager-btn span{display:none}
  .ff-bl-pager-btn{padding:0 13px}
}
@media(max-width:600px){
  .ff-bl-grid{grid-template-columns:1fr;gap:18px}
  .ff-bl-hero-w{padding:26px var(--ff-gut)}
  /* 4-in-row → 2×2 on phones with a clean cross divider */
  .ff-bl-hero-right{flex-wrap:wrap}
  .ff-bl-count{flex:0 0 50%;padding:13px 14px;gap:10px}
  .ff-bl-count + .ff-bl-count{border-left:none}
  .ff-bl-count:nth-child(even){border-left:1px solid var(--ff-sep)}
  .ff-bl-count:nth-child(1),.ff-bl-count:nth-child(2){border-bottom:1px solid var(--ff-sep)}
  .ff-bl-count-ico{font-size:16px}
  .ff-bl-count-n{font-size:18px}
  .ff-bl-card-foot .ff-bl-author-sub{display:none}
  .ff-bl-card-stats{gap:10px}
}
