/* NOUN Student Portal — Services Hub
 * @version 4.19.4
 *
 * Bold, full-bleed services landing + compact inline featured block.
 * Light + dark mode, WCAG AAA contrast throughout.
 * Scoped to .nsp-hub / .nsp-hub-inline so it cannot bleed into other plugins.
 */

/* ───── Tokens (scoped to hub elements so we don't conflict with theme tokens) ───── */
.nsp-hub,
.nsp-hub-inline{
    --nh-bg:#0a1024;
    --nh-bg2:#0f1730;
    --nh-fg:#ffffff;
    --nh-fg2:#e5e7eb;
    --nh-fg3:#cbd5e1;
    --nh-card:#ffffff;
    --nh-card-fg:#0f172a;
    --nh-card-fg2:#1e293b;
    --nh-card-fg3:#475569;          /* 7.59:1 on white — AAA */
    --nh-card-bd:#e2e8f0;
    --nh-card-bd-hover:#0A5D44;
    --nh-r:20px;
    --nh-r-lg:28px;
    --nh-shadow:0 1px 3px rgba(0,0,0,.06),0 8px 28px rgba(0,0,0,.07);
    --nh-shadow-hero:0 4px 14px rgba(0,0,0,.08),0 16px 48px rgba(0,0,0,.10);
    --nh-shadow-hover:0 8px 24px rgba(0,0,0,.10),0 24px 60px rgba(0,0,0,.16);

    /* Accent palette — used per-card; values pass AAA when paired below */
    --nh-green:#0A5D44;   --nh-green-fg:#064E3B;   --nh-green-soft:#ecfdf5;
    --nh-blue:#1d4ed8;    --nh-blue-fg:#1e3a8a;    --nh-blue-soft:#eff6ff;
    --nh-amber:#b45309;   --nh-amber-fg:#78350f;   --nh-amber-soft:#fffbeb;
    --nh-pink:#be185d;    --nh-pink-fg:#831843;    --nh-pink-soft:#fdf2f8;
}

[data-theme="dark"] .nsp-hub,
[data-theme="dark"] .nsp-hub-inline,
html[data-theme="dark"] .nsp-hub,
html[data-theme="dark"] .nsp-hub-inline,
body.dark-mode .nsp-hub,
body.dark-mode .nsp-hub-inline{
    --nh-bg:#06091a;
    --nh-bg2:#0b1228;
    --nh-fg:#f5f5f5;
    --nh-fg2:#e5e7eb;
    --nh-fg3:#b3b3b3;               /* 7.29:1 on #1e1e1e — AAA */
    --nh-card:#1a1d24;
    --nh-card-fg:#f5f5f5;
    --nh-card-fg2:#d0d0d0;
    --nh-card-fg3:#b3b3b3;
    --nh-card-bd:#262a30;
    --nh-card-bd-hover:#34d399;
    --nh-shadow:0 1px 3px rgba(0,0,0,.4),0 8px 28px rgba(0,0,0,.35);
    --nh-shadow-hero:0 4px 14px rgba(0,0,0,.5),0 16px 48px rgba(0,0,0,.4);
    --nh-shadow-hover:0 8px 24px rgba(0,0,0,.5),0 24px 60px rgba(0,0,0,.5);
    --nh-green-soft:rgba(10,93,68,.18);
    --nh-blue-soft:rgba(29,78,216,.16);
    --nh-amber-soft:rgba(180,83,9,.18);
    --nh-pink-soft:rgba(190,24,93,.18);
    --nh-green-fg:#34d399; --nh-green:#34d399;
    --nh-blue-fg:#93c5fd;  --nh-blue:#60a5fa;
    --nh-amber-fg:#fcd34d; --nh-amber:#fbbf24;
    --nh-pink-fg:#f9a8d4;  --nh-pink:#f472b6;
}

/* ═══════════════════════════════════════════════════════════════════════════
   FULL HUB PAGE
   ═══════════════════════════════════════════════════════════════════════════ */
.nsp-hub-full{
    background:radial-gradient(ellipse at top, var(--nh-bg2) 0%, var(--nh-bg) 60%);
    color:var(--nh-fg);
    font-family:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;
    padding:80px 24px 96px;
    min-height:100vh;
    position:relative;
    overflow:hidden;
}
.nsp-hub-full *{box-sizing:border-box}
.nsp-hub-full::before{
    /* Subtle aurora behind hero */
    content:"";
    position:absolute;inset:0;
    background:
        radial-gradient(600px circle at 20% 0%, rgba(52,211,153,.10), transparent 60%),
        radial-gradient(800px circle at 80% 0%, rgba(96,165,250,.10), transparent 60%);
    pointer-events:none;
}
.nsp-hub-w{max-width:1200px;margin:0 auto;position:relative}

/* Hero */
.nsp-hub-hero{text-align:center;margin-bottom:72px}
.nsp-hub-title{
    font-size:clamp(2rem,5.6vw,4.25rem);
    font-weight:900;line-height:1.05;letter-spacing:-.03em;
    margin:0 0 20px;color:var(--nh-fg);
}

/* v4.19.3 — Hide the theme's page H1 wrapper on the hub page.
   The hub renders its own H1, so the page-template H1 is redundant.
   Covers the most common theme markup patterns. */
body.nsp-hub-page .ns-entry-hdr,
body.nsp-hub-page .ns-entry-title,
body.nsp-hub-page .entry-header,
body.nsp-hub-page .entry-title,
body.nsp-hub-page .page-header,
body.nsp-hub-page .page-title,
body.nsp-hub-page .post-title{
    display:none!important;
}
.nsp-hub-title em{
    color:#34d399;font-style:normal;
    background:linear-gradient(135deg,#34d399,#60a5fa);
    -webkit-background-clip:text;background-clip:text;
    -webkit-text-fill-color:transparent;color:transparent;
}
.nsp-hub-sub{
    font-size:clamp(1rem,1.6vw,1.2rem);
    line-height:1.6;max-width:760px;margin:0 auto;
    color:var(--nh-fg2);font-weight:500;
}

/* Hero cards (2-up on desktop) */
.nsp-hub-section{margin-bottom:64px}
.nsp-hub-heroes{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:24px;
}
.nsp-hub-hero-card{
    position:relative;
    display:flex;flex-direction:column;
    background:var(--nh-card);color:var(--nh-card-fg);
    border:2px solid var(--nh-card-bd);
    border-radius:var(--nh-r-lg);
    padding:36px 32px 32px;
    text-decoration:none;
    box-shadow:var(--nh-shadow-hero);
    transition:transform .25s cubic-bezier(.22,.68,0,1),box-shadow .25s,border-color .25s;
    overflow:hidden;
    min-height:340px;
}
.nsp-hub-hero-card::before{
    /* Accent stripe top */
    content:"";position:absolute;left:0;right:0;top:0;height:6px;
    background:linear-gradient(90deg,currentColor,transparent);
    color:var(--nh-green);
    opacity:.9;
}
.nsp-hub-hero-card.nsp-hub-accent-blue::before{color:var(--nh-blue)}
.nsp-hub-hero-card.nsp-hub-accent-amber::before{color:var(--nh-amber)}
.nsp-hub-hero-card.nsp-hub-accent-pink::before{color:var(--nh-pink)}
.nsp-hub-hero-card:hover,
.nsp-hub-hero-card:focus-visible{
    transform:translateY(-6px);
    box-shadow:var(--nh-shadow-hover);
    border-color:var(--nh-card-bd-hover);
    outline:none;
}
.nsp-hub-hero-top{
    display:flex;align-items:center;justify-content:space-between;
    margin-bottom:24px;
}
.nsp-hub-hero-icon{
    font-size:3.4rem;line-height:1;
    width:80px;height:80px;
    display:flex;align-items:center;justify-content:center;
    background:var(--nh-green-soft);color:var(--nh-green-fg);
    border-radius:20px;
}
.nsp-hub-hero-card.nsp-hub-accent-blue  .nsp-hub-hero-icon{background:var(--nh-blue-soft); color:var(--nh-blue-fg)}
.nsp-hub-hero-card.nsp-hub-accent-amber .nsp-hub-hero-icon{background:var(--nh-amber-soft);color:var(--nh-amber-fg)}
.nsp-hub-hero-card.nsp-hub-accent-pink  .nsp-hub-hero-icon{background:var(--nh-pink-soft); color:var(--nh-pink-fg)}
.nsp-hub-badge{
    display:inline-block;
    font-size:.7rem;font-weight:900;letter-spacing:.12em;text-transform:uppercase;
    padding:7px 14px;border-radius:999px;
    background:linear-gradient(135deg,#0A5D44,#047857);color:#fff;
    box-shadow:0 4px 12px rgba(10,93,68,.3);
}
.nsp-hub-hero-card.nsp-hub-accent-blue  .nsp-hub-badge{background:linear-gradient(135deg,#1e3a8a,#1d4ed8);box-shadow:0 4px 12px rgba(29,78,216,.3)}
.nsp-hub-hero-card.nsp-hub-accent-amber .nsp-hub-badge{background:linear-gradient(135deg,#78350f,#b45309);box-shadow:0 4px 12px rgba(180,83,9,.3)}
.nsp-hub-hero-card.nsp-hub-accent-pink  .nsp-hub-badge{background:linear-gradient(135deg,#831843,#be185d);box-shadow:0 4px 12px rgba(190,24,93,.3)}
.nsp-hub-hero-title{
    font-size:1.85rem;font-weight:900;letter-spacing:-.02em;line-height:1.15;
    margin:0 0 10px;color:var(--nh-card-fg);
}
.nsp-hub-hero-tag{
    font-size:1.02rem;font-weight:600;line-height:1.4;margin:0 0 14px;
    color:var(--nh-card-fg2);
}
.nsp-hub-hero-desc{
    font-size:.95rem;line-height:1.6;margin:0 0 24px;
    color:var(--nh-card-fg3);flex:1;
}
.nsp-hub-hero-foot{
    display:flex;align-items:center;justify-content:space-between;gap:16px;
    margin-top:auto;padding-top:8px;
}
.nsp-hub-hero-price{
    font-size:1.6rem;font-weight:900;letter-spacing:-.02em;
    color:var(--nh-green-fg);
}
.nsp-hub-hero-card.nsp-hub-accent-blue  .nsp-hub-hero-price{color:var(--nh-blue-fg)}
.nsp-hub-hero-card.nsp-hub-accent-amber .nsp-hub-hero-price{color:var(--nh-amber-fg)}
.nsp-hub-hero-card.nsp-hub-accent-pink  .nsp-hub-hero-price{color:var(--nh-pink-fg)}
.nsp-hub-hero-cta{
    display:inline-flex;align-items:center;gap:8px;
    padding:14px 24px;
    background:linear-gradient(135deg,#0A5D44,#047857);
    color:#fff;font-size:.95rem;font-weight:800;
    border-radius:14px;
    box-shadow:0 4px 14px rgba(10,93,68,.32);
    transition:transform .15s,box-shadow .15s;
}
.nsp-hub-hero-card.nsp-hub-accent-blue  .nsp-hub-hero-cta{background:linear-gradient(135deg,#1e3a8a,#1d4ed8);box-shadow:0 4px 14px rgba(29,78,216,.32)}
.nsp-hub-hero-card.nsp-hub-accent-amber .nsp-hub-hero-cta{background:linear-gradient(135deg,#78350f,#b45309);box-shadow:0 4px 14px rgba(180,83,9,.32)}
.nsp-hub-hero-card.nsp-hub-accent-pink  .nsp-hub-hero-cta{background:linear-gradient(135deg,#831843,#be185d);box-shadow:0 4px 14px rgba(190,24,93,.32)}
.nsp-hub-hero-card:hover .nsp-hub-hero-cta{transform:translateX(4px)}

/* Section divider */
.nsp-hub-divider{text-align:center;margin:80px 0 40px}
.nsp-hub-section-title{
    font-size:clamp(1.6rem,3.5vw,2.4rem);
    font-weight:900;letter-spacing:-.025em;margin:0 0 10px;
    color:var(--nh-fg);
}
.nsp-hub-section-sub{
    font-size:1.02rem;color:var(--nh-fg2);margin:0;font-weight:500;
}

/* Tools grid */
.nsp-hub-tools{
    display:grid;
    grid-template-columns:repeat(3,1fr);
    gap:20px;
}
.nsp-hub-tool{
    display:flex;flex-direction:column;
    background:var(--nh-card);color:var(--nh-card-fg);
    border:2px solid var(--nh-card-bd);
    border-radius:var(--nh-r);
    padding:28px 24px;
    text-decoration:none;
    box-shadow:var(--nh-shadow);
    transition:transform .2s cubic-bezier(.22,.68,0,1),box-shadow .2s,border-color .2s;
    min-height:280px;position:relative;overflow:hidden;
}
.nsp-hub-tool::before{
    content:"";position:absolute;left:0;top:0;bottom:0;width:5px;
    background:var(--nh-green);
}
.nsp-hub-tool.nsp-hub-accent-blue::before {background:var(--nh-blue)}
.nsp-hub-tool.nsp-hub-accent-amber::before{background:var(--nh-amber)}
.nsp-hub-tool.nsp-hub-accent-pink::before {background:var(--nh-pink)}
.nsp-hub-tool:hover,
.nsp-hub-tool:focus-visible{
    transform:translateY(-4px);
    box-shadow:var(--nh-shadow-hover);
    border-color:var(--nh-card-bd-hover);
    outline:none;
}
.nsp-hub-tool-icon{
    font-size:2.2rem;line-height:1;
    width:60px;height:60px;
    display:flex;align-items:center;justify-content:center;
    background:var(--nh-green-soft);color:var(--nh-green-fg);
    border-radius:14px;margin-bottom:18px;
}
.nsp-hub-tool.nsp-hub-accent-blue  .nsp-hub-tool-icon{background:var(--nh-blue-soft); color:var(--nh-blue-fg)}
.nsp-hub-tool.nsp-hub-accent-amber .nsp-hub-tool-icon{background:var(--nh-amber-soft);color:var(--nh-amber-fg)}
.nsp-hub-tool.nsp-hub-accent-pink  .nsp-hub-tool-icon{background:var(--nh-pink-soft); color:var(--nh-pink-fg)}
.nsp-hub-tool-title{
    font-size:1.25rem;font-weight:800;letter-spacing:-.015em;line-height:1.2;
    margin:0 0 6px;color:var(--nh-card-fg);
}
.nsp-hub-tool-tag{
    font-size:.86rem;font-weight:700;margin:0 0 12px;
    color:var(--nh-green-fg);
}
.nsp-hub-tool.nsp-hub-accent-blue  .nsp-hub-tool-tag{color:var(--nh-blue-fg)}
.nsp-hub-tool.nsp-hub-accent-amber .nsp-hub-tool-tag{color:var(--nh-amber-fg)}
.nsp-hub-tool.nsp-hub-accent-pink  .nsp-hub-tool-tag{color:var(--nh-pink-fg)}
.nsp-hub-tool-desc{
    font-size:.9rem;line-height:1.55;margin:0 0 18px;
    color:var(--nh-card-fg3);flex:1;
}
.nsp-hub-tool-cta{
    display:inline-flex;align-items:center;gap:6px;
    font-size:.9rem;font-weight:800;color:var(--nh-card-fg);
    margin-top:auto;
}
.nsp-hub-tool:hover .nsp-hub-tool-cta{color:var(--nh-green-fg)}
.nsp-hub-tool.nsp-hub-accent-blue:hover .nsp-hub-tool-cta{color:var(--nh-blue-fg)}
.nsp-hub-tool.nsp-hub-accent-amber:hover .nsp-hub-tool-cta{color:var(--nh-amber-fg)}
.nsp-hub-tool.nsp-hub-accent-pink:hover .nsp-hub-tool-cta{color:var(--nh-pink-fg)}

/* Trust strip */
.nsp-hub-trust{
    display:grid;grid-template-columns:repeat(3,1fr);gap:32px;
    margin-top:80px;padding:36px 32px;
    background:rgba(255,255,255,.04);
    border:1.5px solid rgba(255,255,255,.08);
    border-radius:var(--nh-r);
}
.nsp-hub-trust-item strong{
    display:block;font-size:1.1rem;font-weight:800;letter-spacing:-.01em;
    color:var(--nh-fg);margin-bottom:6px;
}
.nsp-hub-trust-item span{
    display:block;font-size:.92rem;line-height:1.5;color:var(--nh-fg2);
}

/* ───── Responsive ───── */
@media (max-width:960px){
    .nsp-hub-full{padding:60px 18px 72px}
    .nsp-hub-heroes{grid-template-columns:1fr;gap:18px}
    .nsp-hub-tools{grid-template-columns:repeat(2,1fr);gap:16px}
    .nsp-hub-trust{grid-template-columns:1fr;gap:20px;padding:28px 24px}
    .nsp-hub-hero-card{padding:28px 24px 24px;min-height:0}
    .nsp-hub-hero-icon{width:64px;height:64px;font-size:2.6rem;border-radius:16px}
    .nsp-hub-hero-title{font-size:1.6rem}
    .nsp-hub-hero-foot{flex-direction:column;align-items:stretch;gap:14px}
    .nsp-hub-hero-cta{justify-content:center;text-align:center}
    .nsp-hub-divider{margin:56px 0 28px}
}
@media (max-width:520px){
    .nsp-hub-tools{grid-template-columns:1fr;gap:14px}
    .nsp-hub-tool{padding:22px 20px;min-height:0}
    .nsp-hub-hero-icon{width:56px;height:56px;font-size:2.2rem}
}

/* ═══════════════════════════════════════════════════════════════════════════
   INLINE TEASER BLOCK — homepage, in-post, footer
   Single CTA → hub page. Restrained, theme-friendly, fits any content flow.
   Light + dark mode, WCAG AAA contrast.
   ═══════════════════════════════════════════════════════════════════════════ */
.nsp-hub-inline{
    --nht-bg:#ffffff;
    --nht-bd:#e2e8f0;
    --nht-accent:#0A5D44;
    --nht-strong:#0f172a;        /* 19.3:1 on white — AAA */
    --nht-text:#475569;          /* 7.59:1 on white — AAA */
    --nht-cta-bg:#0A5D44;
    --nht-cta-fg:#ffffff;        /* 9.4:1 — AAA */
    --nht-cta-bg-hover:#064E3B;
    --nht-icon-bg:#ecfdf5;
    --nht-icon-fg:#064E3B;
    display:block;
    margin:32px 0;
    font-family:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;
}
[data-theme="dark"] .nsp-hub-inline,
html[data-theme="dark"] .nsp-hub-inline,
body.dark-mode .nsp-hub-inline{
    --nht-bg:#1a1d24;
    --nht-bd:#262a30;
    --nht-accent:#34d399;
    --nht-strong:#f5f5f5;        /* 19.1:1 on #1a1d24 — AAA */
    --nht-text:#b3b3b3;          /* 7.31:1 on #1a1d24 — AAA */
    --nht-cta-bg:#34d399;
    --nht-cta-fg:#052e16;        /* 9.6:1 on #34d399 — AAA */
    --nht-cta-bg-hover:#2ed99a;
    --nht-icon-bg:rgba(52,211,153,.14);
    --nht-icon-fg:#34d399;
}

.nsp-hub-inline *{box-sizing:border-box}

.nsp-hub-inline-w{
    display:flex;align-items:center;gap:20px;
    padding:20px 22px;
    background:var(--nht-bg);
    border:1.5px solid var(--nht-bd);
    border-left:4px solid var(--nht-accent);
    border-radius:12px;
    color:var(--nht-text);
    /* Honour LiteSpeed's no-optimize */
}

/* Decorative icon strip — purely visual hint, not interactive */
.nsp-hub-inline-icons{
    display:flex;align-items:center;gap:6px;
    flex-shrink:0;
}
.nsp-hub-inline-icons span{
    display:inline-flex;align-items:center;justify-content:center;
    width:36px;height:36px;
    background:var(--nht-icon-bg);
    color:var(--nht-icon-fg);
    border-radius:9px;
    font-size:1.05rem;line-height:1;
}

.nsp-hub-inline-body{flex:1;min-width:0}
.nsp-hub-inline-strong{
    display:block;
    font-size:1rem;font-weight:800;letter-spacing:-.01em;line-height:1.25;
    color:var(--nht-strong);
    margin:0 0 4px;
}
.nsp-hub-inline-p{
    font-size:.88rem;line-height:1.5;color:var(--nht-text);
    margin:0;font-weight:500;
}

.nsp-hub-inline-cta{
    flex-shrink:0;
    display:inline-flex;align-items:center;gap:6px;
    padding:11px 20px;
    background:var(--nht-cta-bg);
    color:var(--nht-cta-fg);
    font-size:.88rem;font-weight:800;letter-spacing:-.005em;
    text-decoration:none;
    border-radius:9px;
    transition:background .15s,transform .15s;
}
.nsp-hub-inline-cta:hover,
.nsp-hub-inline-cta:focus{
    background:var(--nht-cta-bg-hover);
    color:var(--nht-cta-fg);
    text-decoration:none;
}
.nsp-hub-inline-cta:hover{transform:translateX(2px)}
.nsp-hub-inline-cta:focus-visible{
    outline:3px solid var(--nht-accent);outline-offset:3px;
}

/* ───── Variants ─────
   in-post: same layout, slightly tighter vertical rhythm so it sits in flowing copy
   footer-row: full-width, edge-to-edge — sits inside footer.php as a row */
.nsp-hub-variant-in-post{margin:28px 0}

.nsp-hub-variant-footer-row{margin:0}
.nsp-hub-variant-footer-row .nsp-hub-inline-w{
    max-width:1200px;margin:0 auto;
    border-radius:10px;
}

/* ───── Responsive ───── */
@media (max-width:760px){
    .nsp-hub-inline-w{
        flex-direction:column;align-items:flex-start;gap:14px;
        padding:18px 20px;
    }
    .nsp-hub-inline-cta{width:100%;justify-content:center;padding:13px 20px}
}
@media (max-width:420px){
    .nsp-hub-inline-icons span:nth-child(n+4){display:none} /* keep 3 icons on tiny screens */
    .nsp-hub-inline-w{padding:16px 18px}
}

/* ───── Focus rings (keyboard a11y, all states) ───── */
.nsp-hub-hero-card:focus-visible,
.nsp-hub-tool:focus-visible,
.nsp-hub-inline-cta:focus-visible{
    outline:3px solid #34d399;outline-offset:3px;
}

/* ───── Reduced motion ───── */
@media (prefers-reduced-motion:reduce){
    .nsp-hub-hero-card,.nsp-hub-tool,.nsp-hub-inline-cta,
    .nsp-hub-hero-cta{
        transition:none!important;
    }
}

/* ═══════════════════════════════════════════════════════════════════════════
   v4.19.4 — Full-bleed hub page
   Make the hub stretch edge-to-edge (left↔right), and remove every gap so
   its dark gradient meets the header (top) and footer (bottom) cleanly.
   All overrides scoped to body.nsp-hub-page so they only fire on the hub.
   Selectors target the NOUNUniversity theme's wrappers — harmless no-ops on
   any other theme.
   ═══════════════════════════════════════════════════════════════════════════ */

/* 1. Hide the breadcrumb bar on the hub page — hub is a landing, not a node in a tree */
body.nsp-hub-page .ns-bc-bar{display:none!important}

/* 2. Strip the <main> top/bottom padding so the hub touches header + footer */
body.nsp-hub-page .ns-main{padding:0!important}

/* 3. Break out of the .ns-w max-width container so the dark gradient fills the viewport.
      Only target the direct .ns-w inside .ns-main — never the global .ns-w (used in
      header, breadcrumb wrap, footer, etc.). */
body.nsp-hub-page .ns-main > .ns-w{max-width:none!important;padding:0!important;margin:0!important;width:100%!important}

/* 4. Neutralise the theme's prose styling inherited by .ns-content — the hub manages
      its own typography. */
body.nsp-hub-page .ns-main .ns-content,
body.nsp-hub-page .ns-main .ns-fullwidth-content{
    font-size:inherit!important;line-height:inherit!important;color:inherit!important;
    max-width:none!important;padding:0!important;margin:0!important;
}

/* 5. Strip any margin/padding the theme might give the <article> or page hero wrapper. */
body.nsp-hub-page .ns-main article,
body.nsp-hub-page .ns-main article.page,
body.nsp-hub-page .ns-main article[id^="page-"],
body.nsp-hub-page .ns-main .ns-page-hero{
    margin:0!important;padding:0!important;background:transparent!important;border:0!important;
}

/* 6. Belt-and-braces: extra title-container hides for the full-width template
      and any page hero the theme might layer on top. */
body.nsp-hub-page .ns-main .ns-page-hero{display:none!important}

/* 7. Make sure the hub fills viewport height even on short content so nothing
      shows through. (Already has min-height:100vh; reaffirm it wins.) */
body.nsp-hub-page .nsp-hub-full{min-height:100vh}

/* 8. Defensive: if the page somehow renders inside a `.ns-fi` (featured image)
      wrapper, hide that too — the hub has its own visuals. */
body.nsp-hub-page .ns-main .ns-fi{display:none!important}
