/* PELORA site chrome, pack 3 (Web Design, T-0554, 2026-11-01): the shared footer site map and menu tap targets. No premium layer. */
.pl-foot{border-top:1px solid rgba(255,255,255,.08);background:#0D0D0D;color:#8A8A8A;font-family:'Satoshi','Satoshi Fallback',system-ui,sans-serif;font-size:14px;line-height:1.5}
.pl-foot-inner{max-width:1200px;margin:0 auto;padding:40px clamp(16px,4vw,32px) 24px}
.pl-foot-entity{margin:0 0 24px;max-width:72ch;color:#B5B5B5;font-size:15px}
.pl-foot-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:24px 28px}
.pl-foot .pl-foot-h{margin:0 0 8px;font-size:11px;font-weight:800;letter-spacing:.18em;text-transform:uppercase;color:#B5B5B5}
.pl-foot a{display:flex;align-items:center;min-height:36px;color:#8A8A8A;text-decoration:none}
.pl-foot a:hover,.pl-foot a:focus-visible{color:var(--accent,#B1FF2B)}
@media (max-width:900px){.pl-foot-grid{grid-template-columns:1fr 1fr}}
@media (max-width:520px){.pl-foot-grid{grid-template-columns:1fr}.pl-foot a{min-height:44px}}
.footer-links a{min-height:44px;display:inline-flex;align-items:center}
.nav .nav-links>a,.nav .nav-drop-top{min-height:44px;display:inline-flex;align-items:center}
.nav .logo,.nav a.logo{min-height:44px;display:inline-flex;align-items:center}
.nav-burger,.js-burger{min-width:44px;min-height:44px}
.mobile-panel[aria-hidden="true"]{visibility:hidden}

/* Shared footer top block (pack 2+3 fix, 2026-11-02): copied verbatim from index.html <style>, the only page that had them. Identical rules, so the
   homepage is unchanged. The :where() fallback has zero specificity: it only fills in on pages with no .container rule. */
footer {
  padding: 56px 0 48px; background: var(--bg);
  border-top: 1px solid var(--hairline);
}
footer .container {
  display: flex; justify-content: space-between; align-items: center;
  flex-wrap: wrap; gap: 20px;
}
footer .meta { font-size: 13px; color: var(--ink-3); }
footer .links { display: flex; flex-wrap: wrap; gap: 12px 24px; font-size: 13px; color: var(--ink-3); }
footer a:hover { color: var(--accent); }
@media (max-width: 720px) {
  footer .container { justify-content: center; text-align: center; }
  footer .links { justify-content: center; }
}
:where(footer > .container){max-width:var(--maxw,1240px);margin:0 auto;padding:0 24px}

/* Pack 4c (PELORA CEO, Preston 11-02: "make all of our buttons do that shimmer ... make sure they're all consistent").
   Read from forwardiq.io's live CSS: a bright rim, a face darker at the top and lit from below, and a light band that
   sweeps BEHIND the label every 2.6 s (a background layer, so the words stay sharp; no pseudo-elements, so no
   stacking-context surprises). Size, padding, font and layout are untouched on every button: only the paint changes. */
@keyframes pel-sheen{0%{background-position:100% 0,0 0}32%,100%{background-position:0% 0,0 0}}
:root{--pel-sheen:linear-gradient(110deg,rgba(255,255,255,0) 42%,rgba(255,255,255,.62) 50%,rgba(255,255,255,0) 58%) no-repeat;
      --pel-sheen-soft:linear-gradient(110deg,rgba(255,255,255,0) 42%,rgba(255,255,255,.20) 50%,rgba(255,255,255,0) 58%) no-repeat}
/* 1. Lime buttons, every class the site uses for them. */
.btn.btn-primary,:is(a,button):is(.prs-hero-cta,.prs-who-cta,.lc-cta-primary,.vd-cta,.btn-infl,.tier-cta--primary,.btn-cta,.calc-cta,.hpb-cta,.pav-cta,.pcalc-btn,.hb-cta){
  background:var(--pel-sheen),linear-gradient(180deg,#93D81F 0%,#A8EE29 55%,#B9FF3F 100%);background-size:250% 100%,100% 100%;
  box-shadow:inset 0 0 0 1px rgba(222,255,150,.80),inset 0 2px 5px 0 rgba(255,255,255,.45),inset 0 -3px 10px 0 #B1FF2B,
             0 8px 22px -8px rgba(177,255,43,.60),0 0 40px -14px rgba(177,255,43,.55);
  animation:pel-sheen 2.6s ease-in-out infinite}
.btn.btn-primary:hover,:is(a,button):is(.prs-hero-cta,.prs-who-cta,.lc-cta-primary,.vd-cta,.btn-infl,.tier-cta--primary,.btn-cta,.calc-cta,.hpb-cta,.pav-cta,.pcalc-btn,.hb-cta):hover{
  background:var(--pel-sheen),linear-gradient(180deg,#A2E62A 0%,#B4F735 55%,#C8FF5E 100%);background-size:250% 100%,100% 100%;
  box-shadow:inset 0 0 0 1px rgba(232,255,175,.90),inset 0 2px 5px 0 rgba(255,255,255,.55),inset 0 -3px 10px 0 #B1FF2B,
             0 12px 28px -10px rgba(177,255,43,.70),0 0 52px -14px rgba(177,255,43,.65)}
/* 2. Outline (ghost) buttons: the same sweep, softer, over their own glass. */
.btn.btn-ghost,:is(a,button).tier-cta:not(.tier-cta--primary){
  background:var(--pel-sheen-soft),linear-gradient(180deg,rgba(255,255,255,.06),rgba(255,255,255,.02));background-size:250% 100%,100% 100%;
  animation:pel-sheen 2.6s ease-in-out infinite}
.btn.btn-ghost:hover,:is(a,button).tier-cta:not(.tier-cta--primary):hover{
  background:var(--pel-sheen-soft),linear-gradient(180deg,rgba(177,255,43,.12),rgba(177,255,43,.04));background-size:250% 100%,100% 100%}
/* 3. The orange and purple buttons keep their colours and get the sweep. */
.btn.btn-ember{background:var(--pel-sheen),linear-gradient(155deg,#ffb066 0%,var(--ember) 46%,var(--ember-2) 100%);background-size:250% 100%,100% 100%;animation:pel-sheen 2.6s ease-in-out infinite}
.btn.btn-violet{background:var(--pel-sheen),linear-gradient(155deg,#a78bfa 0%,var(--violet) 46%,var(--violet-2) 100%);background-size:250% 100%,100% 100%;animation:pel-sheen 2.6s ease-in-out infinite}
/* The one page with its own sweep (/consultation): ours replaces it, never two at once. */
.btn.btn-primary::before{content:none}
/* The homepage's closing section sits on a lime field: keep its dark button exactly as it was, no sweep. */
.final .btn.btn-primary{background:linear-gradient(155deg,#242424 0%,var(--bg) 60%,#050505 100%);background-size:auto;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.14),0 8px 22px -10px rgba(0,0,0,.65);animation:none}
.final .btn.btn-primary:hover{background:linear-gradient(155deg,#2e2e2e 0%,#1a1a1a 60%,#0a0a0a 100%);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 14px 32px -12px rgba(0,0,0,.75)}
@media (prefers-reduced-motion:reduce){
  .btn.btn-primary,.btn.btn-ghost,.btn.btn-ember,.btn.btn-violet,:is(a,button):is(.prs-hero-cta,.prs-who-cta,.lc-cta-primary,.vd-cta,.btn-infl,.tier-cta,.btn-cta,.calc-cta,.hpb-cta,.pav-cta,.pcalc-btn,.hb-cta){animation:none;background-position:100% 0,0 0}}

/* ===== H1 clip fix (11-02): under 768px the hero words sit in flow inside .prs-art (overflow hidden);
   the scroll parallax pushed them out of the box. Words hold still there; the art keeps its drift.
   "html body" because the page's inline rules come later in the document and would win a tie. */
@media (max-width:767px){html body .pelora-rank-strip .prs-art-words{animation:none;transform:none}}
