{"id":2979,"date":"2026-04-12T08:50:25","date_gmt":"2026-04-12T11:50:25","guid":{"rendered":"https:\/\/rodolfobasilio.com\/?page_id=2979"},"modified":"2026-04-13T09:32:50","modified_gmt":"2026-04-13T12:32:50","slug":"recursos","status":"publish","type":"page","link":"https:\/\/rodolfobasilio.com\/en\/recursos\/","title":{"rendered":"Recursos"},"content":{"rendered":"\n<!-- =============================================================\n     RODOLFO BASILIO \u00b7 RECURSOS \/ CONTE\u00daDOS (v2)\n     Single self-contained block. Paste into a WordPress HTML block.\n     All CSS and JS is scoped under .rb-hub to avoid theme conflicts.\n     ============================================================= -->\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Poppins:wght@300;400;500;600;700;800;900&#038;display=swap\" rel=\"stylesheet\">\n\n<style>\n\/* ============================================================\n   SCROLL PROGRESS BAR\n   ============================================================ *\/\n.rb-hub .rb-progress {\n  position: fixed;\n  top: 0; left: 0;\n  height: 3px;\n  width: 0;\n  background: linear-gradient(90deg, var(--rb-accent), var(--rb-accent-glow));\n  z-index: 200;\n  border-radius: 0 3px 3px 0;\n  box-shadow: 0 0 16px rgba(4,171,255,0.6);\n  transition: width 0.08s linear;\n  pointer-events: none;\n}\n\n\/* ============================================================\n   FILM-GRAIN NOISE OVERLAY (subtle, premium texture)\n   ============================================================ *\/\n.rb-hub .rb-noise {\n  position: fixed;\n  inset: 0;\n  pointer-events: none;\n  z-index: 99;\n  opacity: 0.035;\n  mix-blend-mode: overlay;\n  background-image: url(\"data:image\/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http:\/\/www.w3.org\/2000\/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'\/%3E%3CfeColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.6 0'\/%3E%3C\/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'\/%3E%3C\/svg%3E\");\n  background-size: 200px 200px;\n}\n\n\/* ============================================================\n   3D TILT \u2014 applied via JS, animated via CSS variables\n   ============================================================ *\/\n.rb-hub .rb-tilt {\n  transform: perspective(1000px) rotateX(var(--tx, 0deg)) rotateY(var(--ty, 0deg)) translateY(var(--lift, 0));\n  transform-style: preserve-3d;\n  transition: transform 0.3s cubic-bezier(.2,.8,.2,1);\n}\n.rb-hub .rb-tilt:hover {\n  transition: transform 0.08s linear;\n}\n\n\/* ============================================================\n   MAGNETIC BUTTONS \u2014 JS sets CSS vars, CSS handles transform\n   ============================================================ *\/\n.rb-hub .rb-magnetic {\n  transition: transform 0.4s cubic-bezier(.2,.8,.2,1);\n}\n\n\/* ============================================================\n   SCOPED RESET + TOKENS\n   ============================================================ *\/\n.rb-hub, .rb-hub *, .rb-hub *::before, .rb-hub *::after {\n  box-sizing: border-box;\n}\n.rb-hub {\n  --rb-bg:           #0d1117;\n  --rb-bg-card:      linear-gradient(165deg, #151d2e 0%, #0d1220 100%);\n  --rb-bg-card-hi:   linear-gradient(165deg, #1a2438 0%, #11172a 100%);\n  --rb-bg-deep:      #0a0e18;\n  --rb-accent:       #04ABFF;\n  --rb-accent-blue:  #3b5bff;\n  --rb-accent-glow:  #85D6FF;\n  --rb-accent-dim:   rgba(4,171,255,0.10);\n  --rb-accent-bdr:   rgba(4,171,255,0.28);\n  --rb-white:        #FFFFFF;\n  --rb-text:         rgba(255,255,255,0.88);\n  --rb-text-muted:   rgba(255,255,255,0.65);\n  --rb-text-dim:     rgba(255,255,255,0.45);\n  --rb-border:       rgba(255,255,255,0.09);\n  --rb-border-hi:    rgba(255,255,255,0.18);\n  --rb-success:      #22C55E;\n\n  font-family: 'Poppins', -apple-system, BlinkMacSystemFont, sans-serif;\n  background: var(--rb-bg);\n  color: var(--rb-white);\n  line-height: 1.6;\n  position: relative;\n  \/* Full-width breakout that doesn't break mobile scroll *\/\n  margin-left: calc(50% - 50vw);\n  margin-right: calc(50% - 50vw);\n  \/* clip (not hidden) \u2014 doesn't create a scroll container, so sticky + touch scroll work *\/\n  overflow-x: clip;\n  \/* Tell mobile browsers explicitly: vertical pan is always allowed *\/\n  touch-action: pan-y;\n}\n\n\/* ambient backdrop drift *\/\n.rb-hub::before {\n  content: '';\n  position: absolute; inset: 0;\n  background:\n    radial-gradient(ellipse at 20% 0%,    rgba(4,171,255,0.10) 0%, transparent 55%),\n    radial-gradient(ellipse at 80% 40%,   rgba(4,171,255,0.05) 0%, transparent 50%),\n    radial-gradient(ellipse at 30% 100%,  rgba(4,171,255,0.06) 0%, transparent 55%);\n  pointer-events: none; z-index: 0;\n  animation: rb-drift 22s ease-in-out infinite alternate;\n}\n@keyframes rb-drift {\n  0%   { transform: translate(0, 0); }\n  100% { transform: translate(-3%, 2%); }\n}\n\n.rb-hub .rb-layer { position: relative; z-index: 1; }\n\n\/* reset elements so WP\/Elementor can't leak in *\/\n.rb-hub img { max-width: 100%; display: block; border: 0; }\n.rb-hub a { color: inherit; text-decoration: none; transition: color 0.2s ease; }\n.rb-hub button,\n.rb-hub input,\n.rb-hub textarea,\n.rb-hub select {\n  font-family: inherit;\n  font-size: inherit;\n  color: inherit;\n  background: transparent;\n  border: 0;\n  outline: 0;\n  cursor: pointer;\n  text-align: left;\n  -webkit-appearance: none;\n  appearance: none;\n  -webkit-tap-highlight-color: transparent;\n}\n.rb-hub button:focus,\n.rb-hub button:active,\n.rb-hub button:hover { outline: none; }\n.rb-hub button:focus-visible { outline: 2px solid var(--rb-accent); outline-offset: 3px; }\n.rb-hub h1, .rb-hub h2, .rb-hub h3, .rb-hub h4, .rb-hub h5, .rb-hub h6, .rb-hub p {\n  margin: 0;\n  color: inherit;\n}\n\n\/* ============================================================\n   TOP BAR\n   ============================================================ *\/\n.rb-hub .rb-top-bar {\n  position: sticky; top: 0; z-index: 100;\n  background: rgba(13,17,23,0.92);\n  backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px);\n  border-bottom: 1px solid var(--rb-border);\n  padding: 11px 20px;\n  text-align: center;\n  font-size: 12px; font-weight: 400; color: var(--rb-text-muted);\n}\n.rb-hub .rb-top-bar strong { color: var(--rb-accent); font-weight: 600; }\n\n\/* ============================================================\n   MARQUEE \u2014 bulletproof seamless loop\n   ============================================================ *\/\n.rb-hub .rb-marquee {\n  overflow: hidden;\n  background: var(--rb-accent);\n  padding: 12px 0;\n  position: relative; z-index: 2;\n}\n.rb-hub .rb-marquee-track {\n  display: flex;\n  width: max-content;\n  animation: rb-marquee 45s linear infinite;\n  will-change: transform;\n}\n.rb-hub .rb-marquee-item {\n  display: inline-flex; align-items: center; gap: 26px;\n  padding: 0 22px;\n  font-size: 12px; font-weight: 700;\n  color: var(--rb-bg);\n  text-transform: uppercase; letter-spacing: 2.2px;\n  white-space: nowrap;\n}\n.rb-hub .rb-marquee-item::before {\n  content: 'rb';\n  font-weight: 900; font-size: 14px;\n  opacity: 0.35; font-style: italic;\n}\n@keyframes rb-marquee {\n  0%   { transform: translate3d(0, 0, 0); }\n  100% { transform: translate3d(-50%, 0, 0); }\n}\n\n\/* ============================================================\n   HERO \u2014 split layout with portrait + monogram\n   ============================================================ *\/\n.rb-hub .rb-hero {\n  position: relative; z-index: 1;\n  max-width: 1280px;\n  margin: 0 auto;\n  padding: 72px 24px 32px;\n  --mx: 50%;\n  --my: 50%;\n}\n\/* cursor-tracking spotlight (desktop only) *\/\n.rb-hub .rb-hero::after {\n  content: '';\n  position: absolute;\n  inset: 0;\n  background: radial-gradient(\n    circle 480px at var(--mx) var(--my),\n    rgba(4,171,255,0.14) 0%,\n    rgba(4,171,255,0.04) 30%,\n    transparent 65%\n  );\n  pointer-events: none;\n  opacity: 0;\n  transition: opacity 0.5s ease;\n  z-index: 0;\n  mix-blend-mode: screen;\n}\n@media (hover: hover) and (pointer: fine) {\n  .rb-hub .rb-hero:hover::after { opacity: 1; }\n}\n.rb-hub .rb-hero-grid {\n  display: grid;\n  grid-template-columns: 1fr;\n  gap: 32px;\n  align-items: center;\n}\n@media (min-width: 900px) {\n  .rb-hub .rb-hero {\n    padding: 96px 24px 48px;\n  }\n  .rb-hub .rb-hero-grid {\n    grid-template-columns: 1.1fr 0.9fr;\n    gap: 48px;\n    min-height: 520px;\n  }\n}\n\n.rb-hub .rb-hero-text {\n  position: relative;\n}\n.rb-hub .rb-eyebrow {\n  display: inline-flex; align-items: center; gap: 8px;\n  background: var(--rb-accent-dim);\n  border: 1px solid var(--rb-accent-bdr);\n  border-radius: 100px;\n  padding: 8px 18px;\n  font-size: 11px; font-weight: 600;\n  color: var(--rb-accent);\n  text-transform: uppercase; letter-spacing: 1.4px;\n  margin-bottom: 28px;\n}\n.rb-hub .rb-eyebrow::before {\n  content: ''; width: 6px; height: 6px;\n  background: var(--rb-accent); border-radius: 50%;\n  animation: rb-pulse 2.4s ease-in-out infinite;\n}\n@keyframes rb-pulse { 0%,100% { opacity: 1; } 50% { opacity: 0.4; } }\n\n.rb-hub .rb-hero h1 {\n  font-size: clamp(34px, 5.5vw, 60px);\n  font-weight: 300;\n  line-height: 1.05;\n  letter-spacing: -0.025em;\n  color: var(--rb-white);\n  margin-bottom: 24px;\n}\n.rb-hub .rb-hero h1 strong {\n  font-weight: 800;\n  display: inline;\n  background: linear-gradient(\n    100deg,\n    var(--rb-accent) 0%,\n    var(--rb-accent-glow) 35%,\n    #b5e6ff 50%,\n    var(--rb-accent-glow) 65%,\n    var(--rb-accent) 100%\n  );\n  background-size: 250% 100%;\n  background-position: 100% 0;\n  -webkit-background-clip: text;\n  background-clip: text;\n  -webkit-text-fill-color: transparent;\n  color: transparent;\n  animation: rb-shimmer 5.5s ease-in-out infinite;\n}\n@keyframes rb-shimmer {\n  0%, 100% { background-position: 100% 0; }\n  50%      { background-position: 0% 0; }\n}\n\n\/* Word-by-word reveal on hero h1 *\/\n.rb-hub .rb-hero h1 .rb-word {\n  display: inline-block;\n  opacity: 0;\n  transform: translateY(28px);\n  transition: opacity 0.85s cubic-bezier(.2,.8,.2,1), transform 0.85s cubic-bezier(.2,.8,.2,1);\n  will-change: transform, opacity;\n}\n.rb-hub .rb-hero h1.rb-words-in .rb-word {\n  opacity: 1;\n  transform: translateY(0);\n}\n.rb-hub .rb-hero p {\n  font-size: clamp(15px, 1.5vw, 17px);\n  color: var(--rb-text-muted);\n  line-height: 1.7;\n  font-weight: 300;\n  max-width: 540px;\n}\n\n\/* portrait side *\/\n.rb-hub .rb-hero-portrait {\n  position: relative;\n  aspect-ratio: 4 \/ 5;\n  max-width: 480px;\n  margin: 0 auto;\n  width: 100%;\n  overflow: visible;\n}\n.rb-hub .rb-hero-portrait::before {\n  content: 'b';\n  position: absolute;\n  top: 50%; left: 50%;\n  transform: translate(-50%, -52%);\n  font-family: 'Poppins', sans-serif;\n  font-weight: 900; font-style: italic;\n  font-size: clamp(280px, 42vw, 480px);\n  line-height: 1;\n  color: var(--rb-accent);\n  opacity: 0.08;\n  pointer-events: none;\n  z-index: 0;\n  letter-spacing: -0.06em;\n}\n.rb-hub .rb-hero-portrait-img {\n  position: relative; z-index: 1;\n  width: 100%; height: 100%;\n  object-fit: cover;\n  object-position: center 20%;\n  border-radius: 24px;\n  border: 1px solid var(--rb-border);\n  box-shadow: 0 30px 80px -30px rgba(4,171,255,0.3);\n  animation: rb-float 6s ease-in-out infinite;\n}\n@keyframes rb-float {\n  0%, 100% { transform: translateY(0); }\n  50%      { transform: translateY(-8px); }\n}\n\n\/* ============================================================\n   JUMP NAV \u2014 brighter idle, clearer hover\n   ============================================================ *\/\n.rb-hub .rb-jump-nav {\n  display: flex; flex-wrap: wrap; justify-content: center; gap: 8px;\n  padding: 8px 24px 0;\n  max-width: 900px;\n  margin: 0 auto 0;\n  position: relative; z-index: 1;\n}\n.rb-hub .rb-jump-link {\n  font-size: 12px; font-weight: 500;\n  color: rgba(255,255,255,0.78);\n  padding: 10px 18px;\n  border: 1px solid rgba(255,255,255,0.14);\n  border-radius: 100px;\n  background: rgba(255,255,255,0.05);\n  transition: all 0.2s ease;\n  cursor: pointer;\n}\n.rb-hub .rb-jump-link:hover {\n  color: var(--rb-bg);\n  background: var(--rb-accent);\n  border-color: var(--rb-accent);\n  transform: translateY(-1px);\n}\n\n\/* ============================================================\n   SECTIONS\n   ============================================================ *\/\n.rb-hub .rb-section {\n  padding: 88px 24px;\n  max-width: 1280px;\n  margin: 0 auto;\n  position: relative; z-index: 1;\n}\n@media (max-width: 720px) { .rb-hub .rb-section { padding: 64px 20px; } }\n\n.rb-hub .rb-section-head {\n  display: flex; align-items: flex-end; justify-content: space-between;\n  gap: 24px; margin-bottom: 44px; flex-wrap: wrap;\n}\n.rb-hub .rb-section-head-left { flex: 1; min-width: 240px; }\n.rb-hub .rb-section-eyebrow {\n  display: inline-flex;\n  align-items: center;\n  gap: 14px;\n  font-size: 11px; font-weight: 600;\n  color: var(--rb-accent);\n  text-transform: uppercase; letter-spacing: 1.6px;\n  margin-bottom: 14px;\n}\n.rb-hub .rb-section-eyebrow::before {\n  content: '';\n  display: inline-block;\n  width: 36px;\n  height: 1px;\n  background: var(--rb-accent);\n  opacity: 0.7;\n  transform-origin: left center;\n  transform: scaleX(0);\n  transition: transform 1s cubic-bezier(.2,.8,.2,1) 0.15s;\n}\n.rb-hub .rb-in .rb-section-eyebrow::before,\n.rb-hub .rb-section-eyebrow.rb-in::before,\n.rb-hub .rb-section-head.rb-in .rb-section-eyebrow::before {\n  transform: scaleX(1);\n}\n.rb-hub .rb-section-title {\n  font-size: clamp(30px, 4.2vw, 46px);\n  font-weight: 300;\n  color: var(--rb-white);\n  line-height: 1.1;\n  letter-spacing: -0.02em;\n}\n.rb-hub .rb-section-title strong { font-weight: 800; }\n\n.rb-hub .rb-section-link {\n  display: inline-flex; align-items: center; gap: 8px;\n  font-size: 13px; font-weight: 500;\n  color: var(--rb-white);\n  padding: 12px 22px;\n  border: 1px solid rgba(255,255,255,0.18);\n  background: rgba(255,255,255,0.05);\n  border-radius: 100px;\n  transition: all 0.2s ease;\n  white-space: nowrap;\n  cursor: pointer;\n}\n.rb-hub .rb-section-link::after {\n  content: '\u2192';\n  transition: transform 0.2s ease;\n}\n.rb-hub .rb-section-link:hover {\n  background: var(--rb-accent);\n  color: var(--rb-bg);\n  border-color: var(--rb-accent);\n}\n.rb-hub .rb-section-link:hover::after { transform: translateX(3px); }\n\n\/* ============================================================\n   FEATURED \u2014 magazine layout with wrapper columns\n   Main tile fills col 1, mini-row sits below it in same col\n   ============================================================ *\/\n.rb-hub .rb-featured-grid {\n  display: grid;\n  grid-template-columns: 1fr;\n  gap: 20px;\n}\n@media (min-width: 900px) {\n  .rb-hub .rb-featured-grid {\n    grid-template-columns: 1.5fr 1fr;\n    gap: 24px;\n    align-items: stretch;\n  }\n}\n.rb-hub .rb-feat-col {\n  display: flex;\n  flex-direction: column;\n  gap: 20px;\n  min-width: 0;\n}\n@media (min-width: 900px) {\n  .rb-hub .rb-feat-col { gap: 24px; }\n}\n\/* Main tile fills available height in col 1 (after mini row) *\/\n.rb-hub .rb-feat-col-1 > .rb-feat-main {\n  flex: 1;\n  min-height: 0;\n}\n\/* Side tiles share col 2 equally *\/\n.rb-hub .rb-feat-col-2 > .rb-feat-side {\n  flex: 1;\n  min-height: 0;\n}\n\n.rb-hub .rb-feat-card {\n  position: relative;\n  background: var(--rb-bg-card);\n  border: 1px solid var(--rb-border);\n  border-radius: 22px;\n  display: flex; flex-direction: column;\n  overflow: hidden;\n  transition: all 0.4s cubic-bezier(.2,.8,.2,1);\n  cursor: pointer;\n}\n.rb-hub .rb-feat-card:hover {\n  border-color: var(--rb-border-hi);\n  transform: translateY(-4px);\n  box-shadow: 0 25px 70px -20px rgba(4,171,255,0.22);\n}\n.rb-hub .rb-feat-img {\n  position: relative;\n  width: 100%;\n  background: var(--rb-bg-deep);\n  overflow: hidden;\n  border-bottom: 1px solid var(--rb-border);\n}\n.rb-hub .rb-feat-main .rb-feat-img { aspect-ratio: 16 \/ 8.5; }\n.rb-hub .rb-feat-side .rb-feat-img { aspect-ratio: 16 \/ 9; }\n.rb-hub .rb-feat-img img {\n  width: 100%; height: 100%;\n  object-fit: cover;\n  transition: transform 0.8s ease;\n}\n.rb-hub .rb-feat-card:hover .rb-feat-img img { transform: scale(1.05); }\n.rb-hub .rb-feat-img::after {\n  content: '';\n  position: absolute; inset: 0;\n  background: linear-gradient(180deg, transparent 40%, rgba(13,17,23,0.55) 100%);\n  pointer-events: none;\n}\n\n\/* branded placeholder *\/\n.rb-hub .rb-placeholder {\n  position: absolute; inset: 0;\n  background:\n    radial-gradient(ellipse at 70% 30%, rgba(4,171,255,0.2) 0%, transparent 55%),\n    linear-gradient(135deg, #1a2438 0%, #0d1220 100%);\n  display: flex; align-items: center; justify-content: center;\n}\n.rb-hub .rb-placeholder::before {\n  content: 'rb';\n  font-style: italic; font-weight: 900;\n  font-size: 88px;\n  color: var(--rb-accent);\n  opacity: 0.18;\n  letter-spacing: -3px;\n}\n.rb-hub .rb-feat-side .rb-placeholder::before { font-size: 64px; }\n\n.rb-hub .rb-feat-body {\n  padding: 30px 30px 32px;\n  flex: 1;\n  display: flex;\n  flex-direction: column;\n  justify-content: space-between;\n}\n.rb-hub .rb-feat-side .rb-feat-body { padding: 22px 22px 24px; }\n\n.rb-hub .rb-feat-tag {\n  display: inline-block;\n  font-size: 10px; font-weight: 700;\n  color: var(--rb-accent);\n  text-transform: uppercase; letter-spacing: 1.4px;\n  margin-bottom: 14px;\n}\n.rb-hub .rb-feat-main h3 {\n  font-size: clamp(22px, 2.6vw, 30px);\n  font-weight: 700;\n  line-height: 1.2;\n  color: var(--rb-white);\n  margin-bottom: 16px;\n  letter-spacing: -0.01em;\n}\n.rb-hub .rb-feat-side h3 {\n  font-size: 17px;\n  font-weight: 600;\n  color: var(--rb-white);\n  line-height: 1.3;\n  margin-bottom: 10px;\n}\n.rb-hub .rb-feat-main p {\n  font-size: 14px;\n  color: var(--rb-text-muted);\n  line-height: 1.7;\n  font-weight: 300;\n  margin-bottom: 22px;\n}\n.rb-hub .rb-feat-side p {\n  font-size: 12.5px;\n  color: var(--rb-text-muted);\n  line-height: 1.6;\n  font-weight: 300;\n  margin-bottom: 14px;\n}\n.rb-hub .rb-feat-footer {\n  display: flex; align-items: center; justify-content: space-between;\n  gap: 12px;\n  padding-top: 18px;\n  border-top: 1px solid var(--rb-border);\n}\n.rb-hub .rb-feat-meta {\n  display: flex; align-items: center; gap: 10px;\n  font-size: 11px;\n  color: var(--rb-text-dim);\n}\n.rb-hub .rb-feat-meta strong { color: var(--rb-text-muted); font-weight: 500; }\n.rb-hub .rb-feat-meta-dot {\n  width: 3px; height: 3px;\n  background: var(--rb-text-dim);\n  border-radius: 50%;\n}\n.rb-hub .rb-feat-main .rb-feat-read {\n  font-size: 12px; font-weight: 600;\n  color: var(--rb-accent);\n  display: inline-flex; align-items: center; gap: 6px;\n}\n.rb-hub .rb-feat-main .rb-feat-read::after {\n  content: '\u2192';\n  transition: transform 0.2s ease;\n}\n.rb-hub .rb-feat-card:hover .rb-feat-read::after { transform: translateX(4px); }\n\n\/* Main featured tile is now an <article> with sub-links *\/\n.rb-hub .rb-feat-cover {\n  display: block;\n  cursor: pointer;\n}\n.rb-hub .rb-feat-body-top {\n  padding: 30px 30px 20px;\n}\n.rb-hub .rb-feat-body-top .rb-feat-tag {\n  display: inline-block;\n  font-size: 10px; font-weight: 700;\n  color: var(--rb-accent);\n  text-transform: uppercase; letter-spacing: 1.4px;\n  margin-bottom: 14px;\n}\n.rb-hub .rb-feat-body-top h3 {\n  font-size: clamp(22px, 2.6vw, 30px);\n  font-weight: 700;\n  line-height: 1.2;\n  color: var(--rb-white);\n  margin-bottom: 16px;\n  letter-spacing: -0.01em;\n}\n.rb-hub .rb-feat-body-top p {\n  font-size: 14px;\n  color: var(--rb-text-muted);\n  line-height: 1.7;\n  font-weight: 300;\n}\n\n\/* Mini tiles inside featured main *\/\n.rb-hub .rb-feat-mini-row {\n  display: grid;\n  grid-template-columns: 1fr;\n  gap: 10px;\n  padding: 0 30px;\n  margin-top: auto;\n}\n@media (min-width: 640px) {\n  .rb-hub .rb-feat-mini-row { grid-template-columns: 1fr 1fr; }\n}\n.rb-hub .rb-extra-card {\n  display: grid;\n  grid-template-columns: auto 1fr auto;\n  gap: 12px;\n  align-items: center;\n  padding: 13px 16px;\n  background: rgba(255,255,255,0.04);\n  border: 1px solid var(--rb-border);\n  border-radius: 12px;\n  transition: all 0.25s ease;\n  cursor: pointer;\n  text-decoration: none;\n}\n.rb-hub .rb-extra-card:hover {\n  background: rgba(4,171,255,0.10);\n  border-color: var(--rb-accent-bdr);\n  transform: translateY(-2px);\n}\n.rb-hub .rb-extra-icon {\n  width: 36px; height: 36px;\n  background: rgba(4,171,255,0.14);\n  border: 1px solid var(--rb-accent-bdr);\n  border-radius: 50%;\n  display: flex; align-items: center; justify-content: center;\n  font-size: 13px;\n  color: var(--rb-accent);\n  flex-shrink: 0;\n}\n.rb-hub .rb-extra-content {\n  display: flex;\n  flex-direction: column;\n  min-width: 0;\n}\n.rb-hub .rb-extra-eyebrow {\n  font-size: 9px; font-weight: 700;\n  color: var(--rb-accent);\n  text-transform: uppercase; letter-spacing: 1.2px;\n  margin-bottom: 3px;\n}\n.rb-hub .rb-extra-title {\n  font-size: 12.5px;\n  font-weight: 600;\n  color: var(--rb-white);\n  white-space: nowrap;\n  overflow: hidden;\n  text-overflow: ellipsis;\n  line-height: 1.3;\n}\n.rb-hub .rb-extra-arrow {\n  font-size: 14px;\n  color: var(--rb-accent);\n  transition: transform 0.2s ease;\n  flex-shrink: 0;\n}\n.rb-hub .rb-extra-card:hover .rb-extra-arrow { transform: translateX(4px); }\n\n.rb-hub .rb-feat-foot {\n  display: flex; align-items: center; justify-content: space-between;\n  gap: 12px;\n  padding: 22px 30px 30px;\n  margin-top: 24px;\n  border-top: 1px solid var(--rb-border);\n  cursor: pointer;\n}\n.rb-hub .rb-feat-foot .rb-feat-meta {\n  display: flex; align-items: center; gap: 10px;\n  font-size: 11px;\n  color: var(--rb-text-dim);\n}\n.rb-hub .rb-feat-foot .rb-feat-meta strong { color: var(--rb-text-muted); font-weight: 500; }\n.rb-hub .rb-feat-foot .rb-feat-meta-dot {\n  width: 3px; height: 3px;\n  background: var(--rb-text-dim);\n  border-radius: 50%;\n}\n.rb-hub .rb-feat-foot .rb-feat-read {\n  font-size: 12px; font-weight: 600;\n  color: var(--rb-accent);\n  display: inline-flex; align-items: center; gap: 6px;\n}\n.rb-hub .rb-feat-foot .rb-feat-read::after {\n  content: '\u2192';\n  transition: transform 0.2s ease;\n}\n.rb-hub .rb-feat-card:hover .rb-feat-foot .rb-feat-read::after { transform: translateX(4px); }\n\n\/* Ken burns on main featured image \u2014 slow, ambient *\/\n.rb-hub .rb-feat-main .rb-feat-img img {\n  animation: rb-kenburns 22s ease-in-out infinite alternate;\n}\n@keyframes rb-kenburns {\n  0%   { transform: scale(1.02) translate(0, 0); }\n  100% { transform: scale(1.08) translate(-1.5%, -1%); }\n}\n.rb-hub .rb-feat-main:hover .rb-feat-img img {\n  animation-play-state: paused;\n}\n\n\/* ============================================================\n   COMPACT MINI ROW \u2014 sits below main featured tile in col 1\n   Two horizontal cards with small animated visuals\n   ============================================================ *\/\n.rb-hub .rb-feat-mini-row {\n  display: grid;\n  grid-template-columns: 1fr;\n  gap: 12px;\n}\n@media (min-width: 520px) {\n  .rb-hub .rb-feat-mini-row {\n    grid-template-columns: 1fr 1fr;\n    gap: 14px;\n  }\n}\n.rb-hub .rb-mini-card {\n  display: grid;\n  grid-template-columns: auto 1fr auto;\n  gap: 14px;\n  align-items: center;\n  padding: 14px 18px;\n  background: var(--rb-bg-card);\n  border: 1px solid var(--rb-border);\n  border-radius: 14px;\n  transition: all 0.3s cubic-bezier(.2,.8,.2,1);\n  cursor: pointer;\n  min-height: 80px;\n}\n.rb-hub .rb-mini-card:hover {\n  border-color: var(--rb-border-hi);\n  background: var(--rb-bg-card-hi);\n  transform: translateY(-2px);\n  box-shadow: 0 12px 30px -12px rgba(4,171,255,0.2);\n}\n.rb-hub .rb-mini-visual {\n  width: 50px;\n  height: 50px;\n  position: relative;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  flex-shrink: 0;\n  border-radius: 12px;\n  background:\n    radial-gradient(ellipse at center, rgba(4,171,255,0.12) 0%, transparent 70%),\n    rgba(4,171,255,0.04);\n  border: 1px solid var(--rb-accent-bdr);\n  overflow: hidden;\n}\n.rb-hub .rb-mini-text {\n  display: flex;\n  flex-direction: column;\n  min-width: 0;\n}\n.rb-hub .rb-mini-eyebrow {\n  font-size: 9px; font-weight: 700;\n  color: var(--rb-accent);\n  text-transform: uppercase; letter-spacing: 1.2px;\n  margin-bottom: 4px;\n}\n.rb-hub .rb-mini-title {\n  font-size: 13px;\n  font-weight: 600;\n  color: var(--rb-white);\n  line-height: 1.3;\n  white-space: nowrap;\n  overflow: hidden;\n  text-overflow: ellipsis;\n}\n.rb-hub .rb-mini-arrow {\n  font-size: 14px;\n  color: var(--rb-accent);\n  transition: transform 0.25s ease;\n  flex-shrink: 0;\n}\n.rb-hub .rb-mini-card:hover .rb-mini-arrow { transform: translateX(4px); }\n\n\/* Small ring pulse \u2014 V\u00eddeos mini card *\/\n.rb-hub .rb-mini-rings {\n  position: relative;\n  width: 50px;\n  height: 50px;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n}\n.rb-hub .rb-mini-ring {\n  position: absolute;\n  top: 50%; left: 50%;\n  width: 22px; height: 22px;\n  margin-top: -11px;\n  margin-left: -11px;\n  border: 1px solid var(--rb-accent);\n  border-radius: 50%;\n  opacity: 0;\n  animation: rb-mini-ring-pulse 14s cubic-bezier(0.25, 0.46, 0.45, 0.94) infinite;\n  will-change: transform, opacity;\n}\n.rb-hub .rb-mini-ring-1 { animation-delay: 0s; }\n.rb-hub .rb-mini-ring-2 { animation-delay: 4.66s; }\n.rb-hub .rb-mini-ring-3 { animation-delay: 9.33s; }\n@keyframes rb-mini-ring-pulse {\n  0%   { transform: scale(0.7); opacity: 0; }\n  20%  { opacity: 0.55; }\n  100% { transform: scale(2);   opacity: 0; }\n}\n.rb-hub .rb-mini-ring-center {\n  position: relative;\n  z-index: 2;\n  width: 22px;\n  height: 22px;\n  background: var(--rb-accent);\n  color: var(--rb-bg);\n  border-radius: 50%;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  box-shadow: 0 4px 12px -2px rgba(4,171,255,0.6);\n}\n.rb-hub .rb-mini-ring-center svg {\n  width: 11px; height: 11px;\n  margin-left: 1px;\n}\n\n\/* Small audio waveform \u2014 Podcast mini card *\/\n.rb-hub .rb-mini-wave {\n  display: flex;\n  align-items: center;\n  gap: 2px;\n  height: 30px;\n}\n.rb-hub .rb-mini-wave span {\n  display: block;\n  width: 2px;\n  background: var(--rb-accent);\n  border-radius: 2px;\n  animation: rb-wave-bar 8s cubic-bezier(0.445, 0.05, 0.55, 0.95) infinite;\n  opacity: 0.75;\n  transform-origin: center;\n  will-change: transform, opacity;\n}\n.rb-hub .rb-mini-wave span:nth-child(1) { height: 30%; animation-delay: 0.0s; }\n.rb-hub .rb-mini-wave span:nth-child(2) { height: 60%; animation-delay: 0.5s; }\n.rb-hub .rb-mini-wave span:nth-child(3) { height: 95%; animation-delay: 1.0s; }\n.rb-hub .rb-mini-wave span:nth-child(4) { height: 50%; animation-delay: 1.5s; }\n.rb-hub .rb-mini-wave span:nth-child(5) { height: 80%; animation-delay: 2.0s; }\n.rb-hub .rb-mini-wave span:nth-child(6) { height: 35%; animation-delay: 2.5s; }\n.rb-hub .rb-mini-wave span:nth-child(7) { height: 70%; animation-delay: 3.0s; }\n.rb-hub .rb-mini-wave span:nth-child(8) { height: 45%; animation-delay: 3.5s; }\n\n\/* ============================================================\n   VIDEOS \u2014 grid + lightbox trigger\n   ============================================================ *\/\n.rb-hub .rb-video-grid {\n  display: grid;\n  grid-template-columns: 1fr;\n  gap: 24px;\n}\n@media (min-width: 980px) {\n  .rb-hub .rb-video-grid {\n    grid-template-columns: 1.6fr 1fr;\n    gap: 28px;\n  }\n}\n\n.rb-hub .rb-video-feature {\n  background: var(--rb-bg-card);\n  border: 1px solid var(--rb-border);\n  border-radius: 22px;\n  overflow: hidden;\n  cursor: pointer;\n  transition: all 0.3s ease;\n}\n.rb-hub .rb-video-feature:hover {\n  border-color: var(--rb-border-hi);\n  box-shadow: 0 25px 60px -20px rgba(4,171,255,0.25);\n}\n.rb-hub .rb-video-thumb-box {\n  position: relative;\n  width: 100%;\n  aspect-ratio: 16 \/ 9;\n  background: var(--rb-bg-deep);\n  overflow: hidden;\n}\n.rb-hub .rb-video-thumb-box img {\n  width: 100%; height: 100%;\n  object-fit: cover;\n  transition: transform 0.6s ease;\n}\n.rb-hub .rb-video-feature:hover .rb-video-thumb-box img { transform: scale(1.04); }\n.rb-hub .rb-video-thumb-box::after {\n  content: '';\n  position: absolute; inset: 0;\n  background: linear-gradient(180deg, transparent 40%, rgba(13,17,23,0.75) 100%);\n}\n.rb-hub .rb-play-btn {\n  position: absolute;\n  left: 50%; top: 50%;\n  transform: translate(-50%, -50%);\n  width: 72px; height: 72px;\n  background: rgba(4,171,255,0.95);\n  border: 2px solid rgba(255,255,255,0.25);\n  border-radius: 50%;\n  backdrop-filter: blur(6px);\n  z-index: 2;\n  transition: all 0.3s ease;\n  box-shadow: 0 15px 40px -10px rgba(4,171,255,0.6);\n}\n.rb-hub .rb-play-btn::before {\n  content: '';\n  position: absolute;\n  left: 55%; top: 50%;\n  transform: translate(-50%, -50%);\n  width: 0; height: 0;\n  border-left: 18px solid var(--rb-bg);\n  border-top: 12px solid transparent;\n  border-bottom: 12px solid transparent;\n}\n.rb-hub .rb-video-feature:hover .rb-play-btn {\n  transform: translate(-50%, -50%) scale(1.08);\n  background: var(--rb-accent-glow);\n}\n.rb-hub .rb-video-tile:hover .rb-play-btn-sm {\n  transform: translate(-50%, -50%) scale(1.1);\n}\n.rb-hub .rb-video-feature-body { padding: 26px 28px; }\n.rb-hub .rb-video-feature h3 {\n  font-size: 20px;\n  font-weight: 700;\n  color: var(--rb-white);\n  line-height: 1.3;\n  margin-bottom: 8px;\n}\n.rb-hub .rb-video-feature p {\n  font-size: 13px;\n  color: var(--rb-text-muted);\n  font-weight: 300;\n  line-height: 1.6;\n}\n\n.rb-hub .rb-video-list {\n  display: flex; flex-direction: column;\n  gap: 14px;\n}\n.rb-hub .rb-video-tile {\n  display: grid;\n  grid-template-columns: 140px 1fr;\n  gap: 16px;\n  background: var(--rb-bg-card);\n  border: 1px solid var(--rb-border);\n  border-radius: 16px;\n  padding: 14px;\n  transition: all 0.3s cubic-bezier(.2,.8,.2,1);\n  cursor: pointer;\n}\n.rb-hub .rb-video-tile:hover {\n  border-color: var(--rb-border-hi);\n  background: var(--rb-bg-card-hi);\n  transform: translateX(3px);\n}\n.rb-hub .rb-video-thumb {\n  position: relative;\n  width: 100%;\n  aspect-ratio: 16 \/ 9;\n  background: var(--rb-bg-deep);\n  border-radius: 10px;\n  overflow: hidden;\n}\n.rb-hub .rb-video-thumb img {\n  width: 100%; height: 100%;\n  object-fit: cover;\n}\n.rb-hub .rb-video-thumb::after {\n  content: '';\n  position: absolute; inset: 0;\n  background: linear-gradient(180deg, transparent 50%, rgba(13,17,23,0.6) 100%);\n}\n.rb-hub .rb-play-btn-sm {\n  position: absolute;\n  left: 50%; top: 50%;\n  transform: translate(-50%, -50%);\n  width: 36px; height: 36px;\n  background: rgba(4,171,255,0.95);\n  border-radius: 50%;\n  z-index: 2;\n  transition: all 0.3s ease;\n}\n.rb-hub .rb-play-btn-sm::before {\n  content: '';\n  position: absolute;\n  left: 55%; top: 50%;\n  transform: translate(-50%, -50%);\n  width: 0; height: 0;\n  border-left: 9px solid var(--rb-bg);\n  border-top: 6px solid transparent;\n  border-bottom: 6px solid transparent;\n}\n.rb-hub .rb-video-tile-info {\n  display: flex; flex-direction: column;\n  justify-content: center;\n  min-width: 0;\n}\n.rb-hub .rb-video-tile-tag {\n  font-size: 9px; font-weight: 700;\n  color: var(--rb-accent);\n  text-transform: uppercase; letter-spacing: 1.2px;\n  margin-bottom: 6px;\n}\n.rb-hub .rb-video-tile-info h4 {\n  font-size: 13px;\n  font-weight: 600;\n  color: var(--rb-white);\n  line-height: 1.35;\n  margin-bottom: 6px;\n}\n.rb-hub .rb-video-tile-info span {\n  font-size: 10px;\n  color: var(--rb-text-dim);\n}\n\n\/* CTA at the bottom of the video list *\/\n.rb-hub .rb-video-cta {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  gap: 12px;\n  margin-top: 4px;\n  padding: 16px 22px;\n  background: rgba(4,171,255,0.08);\n  border: 1px solid var(--rb-accent-bdr);\n  border-radius: 16px;\n  font-size: 13px;\n  font-weight: 600;\n  color: var(--rb-accent);\n  text-transform: uppercase;\n  letter-spacing: 1px;\n  transition: all 0.25s ease;\n}\n.rb-hub .rb-video-cta span {\n  font-size: 16px;\n  transition: transform 0.2s ease;\n}\n.rb-hub .rb-video-cta:hover {\n  background: var(--rb-accent);\n  color: var(--rb-bg);\n  border-color: var(--rb-accent);\n  transform: translateX(2px);\n}\n.rb-hub .rb-video-cta:hover span { transform: translateX(4px); }\n\n\/* ============================================================\n   VIDEO LIGHTBOX MODAL\n   ============================================================ *\/\n.rb-hub .rb-modal {\n  position: fixed;\n  inset: 0;\n  background: rgba(5,8,14,0.92);\n  backdrop-filter: blur(16px);\n  -webkit-backdrop-filter: blur(16px);\n  z-index: 9999;\n  display: none;\n  align-items: center;\n  justify-content: center;\n  padding: 24px;\n  opacity: 0;\n  transition: opacity 0.3s ease;\n}\n.rb-hub .rb-modal.rb-open {\n  display: flex;\n  opacity: 1;\n}\n.rb-hub .rb-modal-inner {\n  position: relative;\n  width: 100%;\n  max-width: 1100px;\n  aspect-ratio: 16 \/ 9;\n  background: #000;\n  border-radius: 16px;\n  overflow: hidden;\n  transform: scale(0.95);\n  transition: transform 0.3s cubic-bezier(.2,.8,.2,1);\n  box-shadow: 0 40px 120px -20px rgba(4,171,255,0.3);\n}\n.rb-hub .rb-modal.rb-open .rb-modal-inner { transform: scale(1); }\n.rb-hub .rb-modal-inner iframe {\n  position: absolute;\n  inset: 0;\n  width: 100%;\n  height: 100%;\n  border: 0;\n}\n.rb-hub .rb-modal-close {\n  position: absolute;\n  top: -48px; right: 0;\n  width: 40px; height: 40px;\n  background: rgba(255,255,255,0.1);\n  border: 1px solid rgba(255,255,255,0.2);\n  border-radius: 50%;\n  color: var(--rb-white);\n  font-size: 20px;\n  font-weight: 300;\n  display: flex; align-items: center; justify-content: center;\n  transition: all 0.2s ease;\n  cursor: pointer;\n}\n.rb-hub .rb-modal-close:hover {\n  background: var(--rb-accent);\n  border-color: var(--rb-accent);\n  color: var(--rb-bg);\n}\n@media (max-width: 720px) {\n  .rb-hub .rb-modal-close { top: 12px; right: 12px; }\n}\n\n\/* ============================================================\n   ARTICLES \u2014 filter + pagination\n   ============================================================ *\/\n.rb-hub .rb-filter-bar {\n  display: flex; flex-wrap: wrap; gap: 8px;\n  margin-bottom: 36px;\n}\n.rb-hub .rb-filter-chip {\n  font-size: 12px; font-weight: 500;\n  color: rgba(255,255,255,0.78) !important;\n  padding: 10px 18px;\n  border: 1px solid rgba(255,255,255,0.14) !important;\n  border-radius: 100px;\n  background: rgba(255,255,255,0.05) !important;\n  transition: all 0.2s ease;\n  cursor: pointer;\n  white-space: nowrap;\n}\n.rb-hub .rb-filter-chip:hover {\n  color: var(--rb-white) !important;\n  border-color: rgba(255,255,255,0.3) !important;\n  background: rgba(255,255,255,0.09) !important;\n}\n.rb-hub .rb-filter-chip.rb-active,\n.rb-hub .rb-filter-chip.rb-active:hover,\n.rb-hub .rb-filter-chip.rb-active:focus,\n.rb-hub .rb-filter-chip.rb-active:active {\n  background: var(--rb-accent) !important;\n  color: var(--rb-bg) !important;\n  border-color: var(--rb-accent) !important;\n  font-weight: 600;\n}\n\n.rb-hub .rb-article-grid {\n  display: grid;\n  grid-template-columns: 1fr;\n  gap: 20px;\n}\n@media (min-width: 680px) {\n  .rb-hub .rb-article-grid { grid-template-columns: 1fr 1fr; }\n}\n@media (min-width: 980px) {\n  .rb-hub .rb-article-grid {\n    grid-template-columns: repeat(5, 1fr);\n    gap: 16px;\n  }\n}\n\n.rb-hub .rb-article-card {\n  background: var(--rb-bg-card);\n  border: 1px solid var(--rb-border);\n  border-radius: 18px;\n  overflow: hidden;\n  display: flex; flex-direction: column;\n  transition: all 0.35s cubic-bezier(.2,.8,.2,1);\n  cursor: pointer;\n}\n.rb-hub .rb-article-card.rb-hidden { display: none !important; }\n.rb-hub .rb-article-card.rb-paged { display: none; }\n.rb-hub .rb-article-card.rb-visible { display: flex; }\n.rb-hub .rb-article-card:hover {\n  border-color: var(--rb-border-hi);\n  transform: translateY(-4px);\n  box-shadow: 0 20px 50px -20px rgba(4,171,255,0.2);\n}\n.rb-hub .rb-article-card .rb-feat-img { aspect-ratio: 16 \/ 10; }\n.rb-hub .rb-article-body {\n  padding: 22px 22px 24px;\n  flex: 1;\n  display: flex;\n  flex-direction: column;\n}\n.rb-hub .rb-article-card h3 {\n  font-size: 16px;\n  font-weight: 600;\n  color: var(--rb-white);\n  line-height: 1.32;\n  margin-bottom: 12px;\n  letter-spacing: -0.005em;\n}\n.rb-hub .rb-article-card p {\n  font-size: 12.5px;\n  color: var(--rb-text-muted);\n  line-height: 1.6;\n  font-weight: 300;\n  margin-bottom: 18px;\n  flex: 1;\n}\n.rb-hub .rb-article-meta {\n  display: flex; align-items: center; gap: 8px;\n  font-size: 11px;\n  color: var(--rb-text-dim);\n  padding-top: 14px;\n  border-top: 1px solid var(--rb-border);\n}\n.rb-hub .rb-article-meta strong { color: var(--rb-text-muted); font-weight: 500; }\n.rb-hub .rb-article-meta-dot {\n  width: 3px; height: 3px;\n  background: var(--rb-text-dim);\n  border-radius: 50%;\n}\n\n\/* Tighter card sizing on the 5-col desktop layout *\/\n@media (min-width: 980px) {\n  .rb-hub .rb-article-body { padding: 18px 18px 20px; }\n  .rb-hub .rb-article-card h3 {\n    font-size: 14px;\n    line-height: 1.3;\n    margin-bottom: 10px;\n  }\n  .rb-hub .rb-article-card p {\n    font-size: 11.5px;\n    line-height: 1.55;\n    margin-bottom: 14px;\n  }\n  .rb-hub .rb-article-card .rb-feat-tag {\n    font-size: 9px;\n    margin-bottom: 10px;\n  }\n  .rb-hub .rb-article-meta {\n    font-size: 10px;\n    padding-top: 12px;\n  }\n}\n\n.rb-hub .rb-load-more-wrap {\n  display: flex;\n  justify-content: center;\n  margin-top: 36px;\n}\n.rb-hub .rb-load-more {\n  display: inline-flex; align-items: center; gap: 10px;\n  font-size: 12px; font-weight: 600;\n  color: var(--rb-white);\n  padding: 14px 32px;\n  border: 1px solid rgba(255,255,255,0.22);\n  background: rgba(255,255,255,0.05);\n  border-radius: 100px;\n  text-transform: uppercase; letter-spacing: 1px;\n  transition: all 0.2s ease;\n  cursor: pointer;\n}\n.rb-hub .rb-load-more:hover {\n  background: var(--rb-accent);\n  color: var(--rb-bg);\n  border-color: var(--rb-accent);\n}\n.rb-hub .rb-load-more::after { content: '\u2193'; font-size: 14px; }\n\n.rb-hub .rb-empty {\n  text-align: center;\n  padding: 60px 24px;\n  color: var(--rb-text-muted);\n  font-size: 14px;\n  display: none;\n}\n\n\/* ============================================================\n   PODCAST \u2014 Spotify player + episode carousel\n   ============================================================ *\/\n.rb-hub .rb-podcast-shell {\n  background:\n    radial-gradient(ellipse at top right, rgba(4,171,255,0.12) 0%, transparent 60%),\n    var(--rb-bg-card);\n  border: 1px solid var(--rb-border);\n  border-radius: 24px;\n  overflow: hidden;\n  position: relative;\n}\n.rb-hub .rb-podcast-shell::before {\n  content: '';\n  position: absolute; top: 0; left: 0; right: 0;\n  height: 2px;\n  background: linear-gradient(90deg, transparent, var(--rb-accent), transparent);\n}\n\n.rb-hub .rb-podcast-head {\n  padding: 40px 36px 0;\n  display: grid;\n  grid-template-columns: 1fr;\n  gap: 24px;\n  align-items: center;\n}\n@media (min-width: 880px) {\n  .rb-hub .rb-podcast-head {\n    grid-template-columns: 1fr auto;\n    gap: 40px;\n    padding: 48px 44px 8px;\n  }\n}\n.rb-hub .rb-podcast-head h3 {\n  font-size: clamp(24px, 3.2vw, 34px);\n  font-weight: 300;\n  color: var(--rb-white);\n  line-height: 1.18;\n  margin-bottom: 14px;\n  letter-spacing: -0.015em;\n}\n.rb-hub .rb-podcast-head h3 strong { font-weight: 800; }\n.rb-hub .rb-podcast-head p {\n  font-size: 14px;\n  color: var(--rb-text-muted);\n  line-height: 1.7;\n  font-weight: 300;\n  max-width: 560px;\n}\n.rb-hub .rb-podcast-stats {\n  display: flex; gap: 28px;\n  flex-wrap: wrap;\n}\n.rb-hub .rb-podcast-stat { text-align: center; }\n.rb-hub .rb-podcast-stat .rb-num {\n  font-size: 32px;\n  font-weight: 800;\n  color: var(--rb-accent);\n  line-height: 1;\n  display: block;\n  margin-bottom: 6px;\n  font-variant-numeric: tabular-nums;\n}\n.rb-hub .rb-podcast-stat .rb-lbl {\n  font-size: 10px;\n  color: var(--rb-text-dim);\n  text-transform: uppercase;\n  letter-spacing: 1.2px;\n}\n\n.rb-hub .rb-podcast-body {\n  padding: 32px 36px 44px;\n  display: grid;\n  grid-template-columns: 1fr;\n  gap: 28px;\n}\n@media (min-width: 980px) {\n  .rb-hub .rb-podcast-body {\n    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);\n    gap: 36px;\n    padding: 40px 44px 52px;\n  }\n}\n\n.rb-hub .rb-podcast-player {\n  position: relative;\n  border-radius: 14px;\n  overflow: hidden;\n  min-height: 232px;\n  background: var(--rb-bg-deep);\n}\n.rb-hub .rb-podcast-player iframe {\n  width: 100%;\n  min-height: 232px;\n  border: 0;\n  border-radius: 14px;\n}\n\n\/* Player column wrapper holds player + Spotify CTA *\/\n.rb-hub .rb-podcast-player-col {\n  display: flex;\n  flex-direction: column;\n  gap: 14px;\n}\n.rb-hub .rb-spotify-cta {\n  display: grid;\n  grid-template-columns: auto 1fr auto;\n  gap: 14px;\n  align-items: center;\n  padding: 16px 20px;\n  background:\n    linear-gradient(135deg, rgba(30,215,96,0.10) 0%, rgba(4,171,255,0.06) 100%);\n  border: 1px solid rgba(30,215,96,0.30);\n  border-radius: 14px;\n  transition: all 0.3s cubic-bezier(.2,.8,.2,1);\n  cursor: pointer;\n}\n.rb-hub .rb-spotify-cta:hover {\n  background:\n    linear-gradient(135deg, rgba(30,215,96,0.18) 0%, rgba(4,171,255,0.10) 100%);\n  border-color: rgba(30,215,96,0.55);\n  transform: translateY(-2px);\n  box-shadow: 0 18px 40px -18px rgba(30,215,96,0.4);\n}\n.rb-hub .rb-spotify-icon {\n  width: 38px; height: 38px;\n  display: flex; align-items: center; justify-content: center;\n  flex-shrink: 0;\n}\n.rb-hub .rb-spotify-icon svg {\n  width: 100%; height: 100%;\n  fill: #1ED760;\n}\n.rb-hub .rb-spotify-text {\n  display: flex; flex-direction: column;\n  min-width: 0;\n}\n.rb-hub .rb-spotify-text strong {\n  font-size: 13px;\n  font-weight: 700;\n  color: var(--rb-white);\n  line-height: 1.3;\n}\n.rb-hub .rb-spotify-text small {\n  font-size: 10px;\n  color: var(--rb-text-dim);\n  text-transform: uppercase;\n  letter-spacing: 1px;\n  margin-top: 3px;\n}\n.rb-hub .rb-spotify-arrow {\n  font-size: 18px;\n  color: #1ED760;\n  transition: transform 0.25s ease;\n  flex-shrink: 0;\n}\n.rb-hub .rb-spotify-cta:hover .rb-spotify-arrow {\n  transform: translateX(4px);\n}\n\n.rb-hub .rb-podcast-episodes {\n  display: flex;\n  flex-direction: column;\n  min-width: 0;\n}\n.rb-hub .rb-podcast-episodes-label {\n  font-size: 10px; font-weight: 700;\n  color: var(--rb-accent);\n  text-transform: uppercase; letter-spacing: 1.4px;\n  margin-bottom: 14px;\n}\n.rb-hub .rb-episode-list {\n  display: flex;\n  flex-direction: column;\n  gap: 10px;\n  padding-right: 4px;\n}\n\/* Only enable inner scroll on desktop, where there's a side-by-side layout *\/\n@media (min-width: 980px) {\n  .rb-hub .rb-episode-list {\n    max-height: 320px;\n    overflow-y: auto;\n    overscroll-behavior: contain;\n    padding-right: 8px;\n    scrollbar-width: thin;\n    scrollbar-color: var(--rb-accent) transparent;\n  }\n}\n.rb-hub .rb-episode-list::-webkit-scrollbar { width: 6px; }\n.rb-hub .rb-episode-list::-webkit-scrollbar-track { background: transparent; }\n.rb-hub .rb-episode-list::-webkit-scrollbar-thumb {\n  background: rgba(4,171,255,0.4);\n  border-radius: 3px;\n}\n\n.rb-hub .rb-episode {\n  display: grid;\n  grid-template-columns: 54px 1fr auto;\n  gap: 12px;\n  align-items: center;\n  padding: 10px;\n  background: rgba(255,255,255,0.03);\n  border: 1px solid var(--rb-border);\n  border-radius: 12px;\n  transition: all 0.25s ease;\n  cursor: pointer;\n  text-align: left;\n  width: 100%;\n}\n.rb-hub .rb-episode:hover {\n  background: rgba(4,171,255,0.08);\n  border-color: var(--rb-accent-bdr);\n  transform: translateX(2px);\n}\n.rb-hub .rb-episode.rb-active {\n  background: rgba(4,171,255,0.12);\n  border-color: var(--rb-accent);\n}\n.rb-hub .rb-episode-thumb {\n  width: 54px; height: 54px;\n  border-radius: 8px;\n  background: var(--rb-bg-deep);\n  overflow: hidden;\n  flex-shrink: 0;\n}\n.rb-hub .rb-episode-thumb img {\n  width: 100%; height: 100%;\n  object-fit: cover;\n}\n.rb-hub .rb-episode-info {\n  min-width: 0;\n  overflow: hidden;\n}\n.rb-hub .rb-episode-title {\n  font-size: 12px;\n  font-weight: 600;\n  color: var(--rb-white);\n  line-height: 1.3;\n  margin-bottom: 4px;\n  white-space: nowrap;\n  overflow: hidden;\n  text-overflow: ellipsis;\n}\n.rb-hub .rb-episode-sub {\n  font-size: 10px;\n  color: var(--rb-text-dim);\n  white-space: nowrap;\n  overflow: hidden;\n  text-overflow: ellipsis;\n}\n.rb-hub .rb-episode-play {\n  width: 28px; height: 28px;\n  background: rgba(4,171,255,0.12);\n  border: 1px solid var(--rb-accent-bdr);\n  border-radius: 50%;\n  display: flex; align-items: center; justify-content: center;\n  flex-shrink: 0;\n  transition: all 0.2s ease;\n}\n.rb-hub .rb-episode-play::before {\n  content: '';\n  width: 0; height: 0;\n  border-left: 7px solid var(--rb-accent);\n  border-top: 4px solid transparent;\n  border-bottom: 4px solid transparent;\n  margin-left: 2px;\n}\n.rb-hub .rb-episode:hover .rb-episode-play,\n.rb-hub .rb-episode.rb-active .rb-episode-play {\n  background: var(--rb-accent);\n}\n.rb-hub .rb-episode:hover .rb-episode-play::before,\n.rb-hub .rb-episode.rb-active .rb-episode-play::before {\n  border-left-color: var(--rb-bg);\n}\n\n\/* ============================================================\n   DROPS \u2014 YouTube Shorts inline-playable grid\n   Desktop: 6 tiles in a single row, 9:16 aspect\n   Mobile: horizontal carousel showing 2 tiles, auto-scroll\n   ============================================================ *\/\n.rb-hub .rb-drops-wrap {\n  position: relative;\n}\n.rb-hub .rb-drops-grid {\n  display: grid;\n  grid-template-columns: repeat(6, 1fr);\n  gap: 14px;\n}\n@media (max-width: 720px) {\n  .rb-hub .rb-drops-grid {\n    display: flex;\n    overflow-x: auto;\n    overflow-y: hidden;\n    scroll-snap-type: x mandatory;\n    gap: 12px;\n    padding: 4px 4px 14px;\n    margin: 0 -4px;\n    scrollbar-width: none;\n    -ms-overflow-style: none;\n    -webkit-overflow-scrolling: touch;\n  }\n  .rb-hub .rb-drops-grid::-webkit-scrollbar { display: none; }\n  .rb-hub .rb-drops-grid .rb-drop-tile {\n    flex: 0 0 calc(50% - 6px);\n    scroll-snap-align: start;\n  }\n}\n\n.rb-hub .rb-drop-tile {\n  position: relative;\n  aspect-ratio: 9 \/ 16;\n  border-radius: 14px;\n  overflow: hidden;\n  background: var(--rb-bg-deep);\n  border: 1px solid var(--rb-border);\n  cursor: pointer;\n  transition: all 0.35s cubic-bezier(.2,.8,.2,1);\n}\n.rb-hub .rb-drop-tile:hover {\n  border-color: var(--rb-border-hi);\n  transform: translateY(-3px);\n  box-shadow: 0 18px 40px -18px rgba(4,171,255,0.3);\n}\n\n.rb-hub .rb-drop-thumb {\n  position: absolute;\n  inset: 0;\n  width: 100%;\n  height: 100%;\n  object-fit: cover;\n  transition: opacity 0.4s ease, transform 0.8s cubic-bezier(.2,.8,.2,1);\n  z-index: 1;\n}\n.rb-hub .rb-drop-tile:hover .rb-drop-thumb { transform: scale(1.06); }\n.rb-hub .rb-drop-tile.rb-playing .rb-drop-thumb { opacity: 0; }\n\n.rb-hub .rb-drop-iframe-mount {\n  position: absolute;\n  inset: 0;\n  z-index: 2;\n}\n.rb-hub .rb-drop-iframe-mount iframe,\n.rb-hub .rb-drop-iframe-mount > div {\n  position: absolute;\n  inset: 0;\n  width: 100% !important;\n  height: 100% !important;\n  border: none;\n  opacity: 0;\n  transition: opacity 0.5s ease;\n}\n.rb-hub .rb-drop-tile.rb-playing .rb-drop-iframe-mount iframe,\n.rb-hub .rb-drop-tile.rb-playing .rb-drop-iframe-mount > div {\n  opacity: 1;\n}\n\n.rb-hub .rb-drop-gradient {\n  position: absolute;\n  bottom: 0; left: 0; right: 0;\n  height: 45%;\n  background: linear-gradient(to top, rgba(13,17,23,0.75), transparent);\n  pointer-events: none;\n  z-index: 3;\n  transition: opacity 0.4s ease;\n}\n.rb-hub .rb-drop-tile.rb-playing .rb-drop-gradient { opacity: 0; }\n\n.rb-hub .rb-drop-play {\n  position: absolute;\n  top: 50%; left: 50%;\n  transform: translate(-50%, -50%);\n  width: 46px;\n  height: 46px;\n  background: rgba(13,17,23,0.7);\n  backdrop-filter: blur(6px);\n  border: 1.5px solid rgba(255,255,255,0.3);\n  border-radius: 50%;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  color: var(--rb-white);\n  pointer-events: none;\n  z-index: 4;\n  transition: all 0.3s cubic-bezier(.2,.8,.2,1);\n}\n.rb-hub .rb-drop-tile:hover .rb-drop-play {\n  background: var(--rb-accent);\n  border-color: var(--rb-accent);\n  color: var(--rb-bg);\n  transform: translate(-50%, -50%) scale(1.08);\n  box-shadow: 0 8px 24px -6px rgba(4,171,255,0.6);\n}\n.rb-hub .rb-drop-tile.rb-playing .rb-drop-play {\n  opacity: 0;\n  transform: translate(-50%, -50%) scale(0.7);\n}\n.rb-hub .rb-drop-play svg {\n  width: 16px;\n  height: 16px;\n  margin-left: 2px;\n}\n\n.rb-hub .rb-drop-pause {\n  position: absolute;\n  top: 50%; left: 50%;\n  transform: translate(-50%, -50%) scale(0.7);\n  width: 46px;\n  height: 46px;\n  background: rgba(13,17,23,0.7);\n  backdrop-filter: blur(6px);\n  border: 1.5px solid rgba(255,255,255,0.3);\n  border-radius: 50%;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  color: var(--rb-white);\n  pointer-events: none;\n  z-index: 4;\n  opacity: 0;\n  transition: all 0.3s cubic-bezier(.2,.8,.2,1);\n}\n.rb-hub .rb-drop-tile.rb-playing:hover .rb-drop-pause {\n  opacity: 1;\n  transform: translate(-50%, -50%) scale(1);\n}\n.rb-hub .rb-drop-pause svg {\n  width: 14px;\n  height: 14px;\n}\n\n\/* Corner buttons (mute + fullscreen) \u2014 visible during playback *\/\n.rb-hub .rb-drop-mute,\n.rb-hub .rb-drop-fullscreen {\n  position: absolute;\n  top: 10px;\n  width: 30px;\n  height: 30px;\n  border-radius: 50%;\n  background: rgba(13,17,23,0.72);\n  -webkit-backdrop-filter: blur(8px);\n  backdrop-filter: blur(8px);\n  border: 1px solid rgba(255,255,255,0.22);\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  color: var(--rb-white);\n  z-index: 6;\n  cursor: pointer;\n  opacity: 0;\n  transform: scale(0.7);\n  pointer-events: none;\n  transition: opacity 0.3s ease, transform 0.3s cubic-bezier(.2,.8,.2,1), background 0.2s ease, border-color 0.2s ease, color 0.2s ease;\n}\n.rb-hub .rb-drop-mute { right: 10px; }\n.rb-hub .rb-drop-fullscreen { left: 10px; }\n\n.rb-hub .rb-drop-tile.rb-playing .rb-drop-mute,\n.rb-hub .rb-drop-tile.rb-playing .rb-drop-fullscreen {\n  opacity: 1;\n  transform: scale(1);\n  pointer-events: auto;\n}\n\n.rb-hub .rb-drop-mute:hover,\n.rb-hub .rb-drop-fullscreen:hover {\n  background: var(--rb-accent);\n  border-color: var(--rb-accent);\n  color: var(--rb-bg);\n}\n.rb-hub .rb-drop-mute:focus-visible,\n.rb-hub .rb-drop-fullscreen:focus-visible {\n  outline: 2px solid var(--rb-accent);\n  outline-offset: 2px;\n}\n\n.rb-hub .rb-drop-mute svg,\n.rb-hub .rb-drop-fullscreen svg {\n  width: 14px;\n  height: 14px;\n  display: block;\n}\n\n\/* Mute icon state swap *\/\n.rb-hub .rb-drop-mute .rb-icon-unmuted { display: none; }\n.rb-hub .rb-drop-mute .rb-icon-muted   { display: block; }\n.rb-hub .rb-drop-tile.rb-unmuted .rb-drop-mute .rb-icon-muted   { display: none; }\n.rb-hub .rb-drop-tile.rb-unmuted .rb-drop-mute .rb-icon-unmuted { display: block; }\n\n\/* Hide fullscreen button on iOS (iframes can't go fullscreen on iOS Safari) *\/\n.rb-hub .rb-drop-tile.rb-no-fs .rb-drop-fullscreen { display: none; }\n\n.rb-hub .rb-drop-click-catcher {\n  position: absolute;\n  inset: 0;\n  z-index: 5;\n  cursor: pointer;\n}\n\n.rb-hub .rb-drops-status {\n  grid-column: 1 \/ -1;\n  text-align: center;\n  padding: 80px 20px;\n  color: var(--rb-text-muted);\n  font-size: 13px;\n  font-weight: 300;\n}\n\n\/* CTA below drops grid (re-uses old IG CTA name for compatibility) *\/\n.rb-hub .rb-ig-cta {\n  margin-top: 28px;\n  text-align: center;\n}\n.rb-hub .rb-ig-cta a {\n  display: inline-flex; align-items: center; gap: 10px;\n  font-size: 13px; font-weight: 600;\n  color: var(--rb-white);\n  padding: 14px 28px;\n  border: 1px solid rgba(255,255,255,0.2);\n  background: rgba(255,255,255,0.05);\n  border-radius: 100px;\n  transition: all 0.2s ease;\n}\n.rb-hub .rb-ig-cta a:hover {\n  background: var(--rb-accent);\n  color: var(--rb-bg);\n  border-color: var(--rb-accent);\n}\n\n\/* ============================================================\n   NEWSLETTER\n   ============================================================ *\/\n.rb-hub .rb-news-wrap {\n  max-width: 780px;\n  margin: 0 auto;\n  background:\n    radial-gradient(ellipse at top, rgba(4,171,255,0.12) 0%, transparent 60%),\n    var(--rb-bg-card);\n  border: 1px solid var(--rb-border);\n  border-radius: 24px;\n  padding: 52px 40px 48px;\n  text-align: center;\n  position: relative;\n  overflow: hidden;\n}\n.rb-hub .rb-news-wrap::before {\n  content: '';\n  position: absolute; top: 0; left: 0; right: 0;\n  height: 2px;\n  background: linear-gradient(90deg, transparent, var(--rb-accent), transparent);\n}\n.rb-hub .rb-news-wrap .rb-section-eyebrow { margin-bottom: 14px; }\n.rb-hub .rb-news-wrap h3 {\n  font-size: clamp(26px, 3.6vw, 38px);\n  font-weight: 300;\n  color: var(--rb-white);\n  line-height: 1.15;\n  margin-bottom: 16px;\n  letter-spacing: -0.015em;\n}\n.rb-hub .rb-news-wrap h3 strong { font-weight: 800; }\n.rb-hub .rb-news-wrap > p {\n  font-size: 14px;\n  color: var(--rb-text-muted);\n  line-height: 1.7;\n  font-weight: 300;\n  max-width: 500px;\n  margin: 0 auto 32px;\n}\n\n\/* Custom newsletter form (posts to HubSpot Submissions API) *\/\n.rb-hub .rb-news-form-wrap {\n  max-width: 540px;\n  margin: 0 auto;\n}\n.rb-hub .rb-newsletter-form {\n  width: 100%;\n}\n.rb-hub .rb-form-row {\n  display: grid;\n  grid-template-columns: 1fr;\n  gap: 14px;\n  margin-bottom: 20px;\n}\n@media (min-width: 520px) {\n  .rb-hub .rb-form-row { grid-template-columns: 1fr 1fr; }\n}\n.rb-hub .rb-field {\n  text-align: left;\n  position: relative;\n}\n.rb-hub .rb-field label {\n  display: block;\n  font-size: 11px;\n  font-weight: 500;\n  color: var(--rb-text-muted);\n  margin-bottom: 8px;\n  letter-spacing: 0.3px;\n}\n.rb-hub .rb-field input {\n  width: 100%;\n  background: rgba(13,17,23,0.6);\n  border: 1px solid var(--rb-border-hi);\n  border-radius: 100px;\n  padding: 14px 22px;\n  color: var(--rb-white);\n  font-family: inherit;\n  font-size: 13px;\n  outline: none;\n  transition: all 0.25s ease;\n}\n.rb-hub .rb-field input::placeholder {\n  color: var(--rb-text-dim);\n}\n.rb-hub .rb-field input:hover {\n  border-color: rgba(255,255,255,0.28);\n}\n.rb-hub .rb-field input:focus {\n  border-color: var(--rb-accent);\n  background: rgba(4,171,255,0.06);\n  box-shadow: 0 0 0 4px rgba(4,171,255,0.10);\n}\n.rb-hub .rb-field input.rb-invalid {\n  border-color: #ef4444;\n  background: rgba(239,68,68,0.06);\n}\n\n.rb-hub .rb-submit-row {\n  display: flex;\n  justify-content: center;\n  margin-top: 4px;\n}\n.rb-hub .rb-submit {\n  position: relative;\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  gap: 10px;\n  background: var(--rb-accent);\n  color: var(--rb-bg);\n  font-size: 12px;\n  font-weight: 700;\n  padding: 15px 36px;\n  border-radius: 100px;\n  text-transform: uppercase;\n  letter-spacing: 1.2px;\n  cursor: pointer;\n  transition: all 0.3s cubic-bezier(.2,.8,.2,1);\n  min-width: 180px;\n  overflow: hidden;\n}\n.rb-hub .rb-submit::before {\n  content: '';\n  position: absolute;\n  inset: 0;\n  background: linear-gradient(120deg,\n    transparent 30%,\n    rgba(255,255,255,0.3) 50%,\n    transparent 70%);\n  transform: translateX(-100%);\n  transition: transform 0.6s ease;\n}\n.rb-hub .rb-submit:hover:not(:disabled) {\n  background: var(--rb-accent-glow);\n  transform: translateY(-2px);\n  box-shadow: 0 18px 40px -15px rgba(4,171,255,0.5);\n}\n.rb-hub .rb-submit:hover:not(:disabled)::before {\n  transform: translateX(100%);\n}\n.rb-hub .rb-submit:disabled {\n  opacity: 0.7;\n  cursor: not-allowed;\n}\n.rb-hub .rb-submit.rb-loading .rb-submit-label { opacity: 0; }\n.rb-hub .rb-submit-spinner {\n  position: absolute;\n  width: 18px;\n  height: 18px;\n  border: 2px solid rgba(13,17,23,0.3);\n  border-top-color: var(--rb-bg);\n  border-radius: 50%;\n  opacity: 0;\n  animation: rb-spin 0.8s linear infinite;\n}\n.rb-hub .rb-submit.rb-loading .rb-submit-spinner { opacity: 1; }\n@keyframes rb-spin { to { transform: rotate(360deg); } }\n\n.rb-hub .rb-form-msg {\n  margin-top: 18px;\n  font-size: 12px;\n  font-weight: 500;\n  text-align: center;\n  min-height: 18px;\n  transition: color 0.25s ease;\n}\n.rb-hub .rb-form-msg.rb-error { color: #ef4444; }\n.rb-hub .rb-form-msg.rb-success {\n  color: #22c55e;\n  font-weight: 600;\n  font-size: 13px;\n}\n\n\/* Newsletter success state *\/\n.rb-hub .rb-form-success {\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  gap: 18px;\n  padding: 12px 0;\n  animation: rb-fade-in 0.5s ease;\n}\n@keyframes rb-fade-in {\n  from { opacity: 0; transform: translateY(8px); }\n  to   { opacity: 1; transform: translateY(0); }\n}\n.rb-hub .rb-success-icon {\n  width: 56px;\n  height: 56px;\n  border-radius: 50%;\n  background: rgba(34,197,94,0.12);\n  border: 1px solid rgba(34,197,94,0.4);\n  color: #22c55e;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  animation: rb-success-pop 0.6s cubic-bezier(.2,.8,.2,1);\n}\n@keyframes rb-success-pop {\n  0%   { transform: scale(0.5); opacity: 0; }\n  60%  { transform: scale(1.1); }\n  100% { transform: scale(1); opacity: 1; }\n}\n.rb-hub .rb-success-icon svg {\n  width: 28px;\n  height: 28px;\n}\n.rb-hub .rb-form-success h4 {\n  font-size: 18px;\n  font-weight: 700;\n  color: var(--rb-white);\n  margin: 0;\n}\n.rb-hub .rb-form-success p {\n  font-size: 13px;\n  color: var(--rb-text-muted);\n  line-height: 1.6;\n  font-weight: 300;\n  max-width: 380px;\n  text-align: center;\n  margin: 0;\n}\n\n.rb-hub .rb-news-micro {\n  font-size: 11px;\n  color: var(--rb-text-dim);\n  margin-top: 18px;\n}\n\n\/* ============================================================\n   FINAL CTA\n   ============================================================ *\/\n.rb-hub .rb-final-cta {\n  max-width: 1280px;\n  margin: 0 auto;\n  padding: 0 24px 100px;\n  position: relative; z-index: 1;\n}\n.rb-hub .rb-final-card {\n  background:\n    radial-gradient(ellipse at left, rgba(4,171,255,0.14) 0%, transparent 55%),\n    var(--rb-bg-card);\n  border: 1px solid var(--rb-border);\n  border-radius: 24px;\n  padding: 44px 40px;\n  display: flex; align-items: center; justify-content: space-between;\n  flex-wrap: wrap; gap: 24px;\n  position: relative;\n  overflow: hidden;\n}\n.rb-hub .rb-final-card::before {\n  content: '';\n  position: absolute; top: 0; left: 0; right: 0;\n  height: 2px;\n  background: linear-gradient(90deg, transparent, var(--rb-accent), transparent);\n}\n.rb-hub .rb-final-text { flex: 1; min-width: 260px; }\n.rb-hub .rb-final-text .rb-section-eyebrow { margin-bottom: 10px; }\n.rb-hub .rb-final-text h3 {\n  font-size: clamp(22px, 3vw, 32px);\n  font-weight: 300;\n  color: var(--rb-white);\n  line-height: 1.2;\n  letter-spacing: -0.015em;\n}\n.rb-hub .rb-final-text h3 strong { font-weight: 800; }\n.rb-hub .rb-final-btn {\n  display: inline-flex; align-items: center; gap: 10px;\n  background: var(--rb-accent);\n  color: var(--rb-bg) !important;\n  font-size: 13px; font-weight: 700;\n  padding: 16px 28px;\n  border-radius: 100px;\n  text-transform: uppercase; letter-spacing: 1px;\n  transition: all 0.25s ease;\n  white-space: nowrap;\n  align-self: center;\n}\n.rb-hub .rb-final-btn::after {\n  content: '\u2192';\n  transition: transform 0.2s ease;\n}\n.rb-hub .rb-final-btn:hover {\n  background: var(--rb-accent-glow);\n  box-shadow: 0 20px 40px -15px rgba(4,171,255,0.5);\n}\n.rb-hub .rb-final-btn:hover::after { transform: translateX(4px); }\n\n\/* ============================================================\n   STICKY WHATSAPP + BACK TO TOP (floating)\n   ============================================================ *\/\n.rb-hub .rb-sticky-stack {\n  position: fixed;\n  right: 20px;\n  bottom: 20px;\n  z-index: 9998;\n  display: flex;\n  flex-direction: column;\n  gap: 12px;\n  align-items: flex-end;\n}\n.rb-hub .rb-wa {\n  width: 60px; height: 60px;\n  border-radius: 50%;\n  background: #25D366;\n  display: flex; align-items: center; justify-content: center;\n  box-shadow: 0 15px 40px -10px rgba(37,211,102,0.6);\n  transition: all 0.3s cubic-bezier(.2,.8,.2,1);\n  position: relative;\n}\n.rb-hub .rb-wa::before {\n  content: '';\n  position: absolute;\n  inset: -6px;\n  border: 2px solid rgba(37,211,102,0.4);\n  border-radius: 50%;\n  animation: rb-wa-pulse 2.4s ease-out infinite;\n}\n@keyframes rb-wa-pulse {\n  0%   { transform: scale(0.95); opacity: 0.9; }\n  80%  { transform: scale(1.35); opacity: 0; }\n  100% { transform: scale(1.35); opacity: 0; }\n}\n.rb-hub .rb-wa:hover {\n  background: #20b95a;\n  box-shadow: 0 20px 50px -10px rgba(37,211,102,0.7);\n}\n.rb-hub .rb-wa svg {\n  width: 32px; height: 32px;\n  fill: #fff;\n}\n.rb-hub .rb-btt {\n  width: 46px; height: 46px;\n  border-radius: 50%;\n  background: rgba(13,17,23,0.92);\n  backdrop-filter: blur(12px);\n  border: 1px solid var(--rb-border-hi);\n  color: var(--rb-white);\n  display: flex; align-items: center; justify-content: center;\n  font-size: 18px;\n  opacity: 0;\n  visibility: hidden;\n  transform: translateY(8px);\n  transition: all 0.3s ease;\n  cursor: pointer;\n}\n.rb-hub .rb-btt.rb-visible {\n  opacity: 1;\n  visibility: visible;\n  transform: translateY(0);\n}\n.rb-hub .rb-btt:hover {\n  background: var(--rb-accent);\n  color: var(--rb-bg);\n  border-color: var(--rb-accent);\n}\n@media (max-width: 600px) {\n  .rb-hub .rb-sticky-stack { right: 14px; bottom: 14px; }\n  .rb-hub .rb-wa { width: 54px; height: 54px; }\n  .rb-hub .rb-wa svg { width: 28px; height: 28px; }\n}\n\n\/* ============================================================\n   SCROLL REVEAL\n   ============================================================ *\/\n.rb-hub .rb-reveal {\n  opacity: 0;\n  transform: translateY(24px);\n  transition: opacity 0.8s ease, transform 0.8s cubic-bezier(.2,.8,.2,1);\n}\n.rb-hub .rb-reveal.rb-in {\n  opacity: 1;\n  transform: translateY(0);\n}\n\n\/* Stagger children when parent enters viewport *\/\n.rb-hub .rb-stagger > * {\n  opacity: 0;\n  transform: translateY(20px);\n  transition: opacity 0.65s ease, transform 0.65s cubic-bezier(.2,.8,.2,1);\n}\n.rb-hub .rb-stagger > .rb-in {\n  opacity: 1;\n  transform: translateY(0);\n}\n\n\/* ============================================================\n   ACCESSIBILITY\n   ============================================================ *\/\n@media (prefers-reduced-motion: reduce) {\n  .rb-hub *,\n  .rb-hub *::before,\n  .rb-hub *::after {\n    animation-duration: 0.01ms !important;\n    animation-iteration-count: 1 !important;\n    transition-duration: 0.01ms !important;\n  }\n}\n<\/style>\n\n<!-- ============================================================\n     HTML STARTS\n     ============================================================ -->\n<div class=\"rb-hub\">\n\n  <!-- FILM-GRAIN NOISE OVERLAY -->\n  <div class=\"rb-noise\"><\/div>\n\n  <!-- SCROLL PROGRESS BAR -->\n  <div class=\"rb-progress\" id=\"rb-progress\"><\/div>\n\n  <!-- TOP BAR -->\n  <div class=\"rb-top-bar\">\n    <strong>Conte\u00fados<\/strong> \u00b7 Aprenda com Rodolfo Basilio\n  <\/div>\n\n  <!-- MARQUEE -->\n  <div class=\"rb-marquee\">\n    <div class=\"rb-marquee-track\">\n      <span class=\"rb-marquee-item\">Artigos<\/span>\n      <span class=\"rb-marquee-item\">V\u00eddeos<\/span>\n      <span class=\"rb-marquee-item\">Podcast<\/span>\n      <span class=\"rb-marquee-item\">Drops<\/span>\n      <span class=\"rb-marquee-item\">Newsletter<\/span>\n      <span class=\"rb-marquee-item\">Bastidores<\/span>\n      <span class=\"rb-marquee-item\">An\u00e1lises<\/span>\n      <span class=\"rb-marquee-item\">Casos Reais<\/span>\n      <span class=\"rb-marquee-item\">Artigos<\/span>\n      <span class=\"rb-marquee-item\">V\u00eddeos<\/span>\n      <span class=\"rb-marquee-item\">Podcast<\/span>\n      <span class=\"rb-marquee-item\">Drops<\/span>\n      <span class=\"rb-marquee-item\">Newsletter<\/span>\n      <span class=\"rb-marquee-item\">Bastidores<\/span>\n      <span class=\"rb-marquee-item\">An\u00e1lises<\/span>\n      <span class=\"rb-marquee-item\">Casos Reais<\/span>\n      <!-- Duplicate set (required for seamless loop) -->\n      <span class=\"rb-marquee-item\">Artigos<\/span>\n      <span class=\"rb-marquee-item\">V\u00eddeos<\/span>\n      <span class=\"rb-marquee-item\">Podcast<\/span>\n      <span class=\"rb-marquee-item\">Drops<\/span>\n      <span class=\"rb-marquee-item\">Newsletter<\/span>\n      <span class=\"rb-marquee-item\">Bastidores<\/span>\n      <span class=\"rb-marquee-item\">An\u00e1lises<\/span>\n      <span class=\"rb-marquee-item\">Casos Reais<\/span>\n      <span class=\"rb-marquee-item\">Artigos<\/span>\n      <span class=\"rb-marquee-item\">V\u00eddeos<\/span>\n      <span class=\"rb-marquee-item\">Podcast<\/span>\n      <span class=\"rb-marquee-item\">Drops<\/span>\n      <span class=\"rb-marquee-item\">Newsletter<\/span>\n      <span class=\"rb-marquee-item\">Bastidores<\/span>\n      <span class=\"rb-marquee-item\">An\u00e1lises<\/span>\n      <span class=\"rb-marquee-item\">Casos Reais<\/span>\n    <\/div>\n  <\/div>\n\n  <!-- ============================================================\n       HERO\n       ============================================================ -->\n  <section class=\"rb-hero\">\n    <div class=\"rb-hero-grid\">\n\n      <div class=\"rb-hero-text rb-reveal\">\n        <div class=\"rb-eyebrow\">Biblioteca de Conte\u00fados<\/div>\n        <h1>O que separa as empresas que crescem das que <strong>estagnam.<\/strong><\/h1>\n        <p>Vinte anos analisando empresas. Mais de 10 mil diagn\u00f3sticos. Tudo o que aprendi reunido aqui em artigos, v\u00eddeos, podcast e bastidores. Sem teoria de palco. Sem promessa f\u00e1cil.<\/p>\n      <\/div>\n\n      <div class=\"rb-hero-portrait rb-reveal\">\n        <img decoding=\"async\"\n          src=\"https:\/\/rodolfobasilio.com\/wp-content\/uploads\/2026\/03\/sobre-rodolfo.webp\"\n          alt=\"Rodolfo Basilio\"\n          class=\"rb-hero-portrait-img\"\n          onerror=\"this.style.display='none'\">\n      <\/div>\n\n    <\/div>\n  <\/section>\n\n  <!-- JUMP NAV -->\n  <nav class=\"rb-jump-nav rb-reveal\">\n    <a href=\"#rb-destaque\" class=\"rb-jump-link\">Em destaque<\/a>\n    <a href=\"#rb-videos\" class=\"rb-jump-link\">V\u00eddeos<\/a>\n    <a href=\"#rb-artigos\" class=\"rb-jump-link\">Artigos<\/a>\n    <a href=\"#rb-podcast\" class=\"rb-jump-link\">Podcast<\/a>\n    <a href=\"#rb-drops\" class=\"rb-jump-link\">Drops<\/a>\n    <a href=\"#rb-newsletter\" class=\"rb-jump-link\">Newsletter<\/a>\n  <\/nav>\n\n  <!-- ============================================================\n       SECTION 1 \u00b7 EM DESTAQUE\n       ============================================================ -->\n  <section class=\"rb-section\" id=\"rb-destaque\">\n    <div class=\"rb-section-head rb-reveal\">\n      <div class=\"rb-section-head-left\">\n        <div class=\"rb-section-eyebrow\">Em destaque<\/div>\n        <h2 class=\"rb-section-title\">O que est\u00e1 rendendo <strong>conversa.<\/strong><\/h2>\n      <\/div>\n    <\/div>\n\n    <div class=\"rb-featured-grid rb-reveal\">\n\n      <!-- COLUMN 1: Main featured + mini row below -->\n      <div class=\"rb-feat-col rb-feat-col-1\">\n\n        <a href=\"https:\/\/rodolfobasilio.com\/quando-voce-deve-apertar-as-maos-com-seu-concorrente\/\" class=\"rb-feat-card rb-feat-main\" data-post-url=\"https:\/\/rodolfobasilio.com\/quando-voce-deve-apertar-as-maos-com-seu-concorrente\/\">\n          <div class=\"rb-feat-img\">\n            <div class=\"rb-placeholder\"><\/div>\n          <\/div>\n          <div class=\"rb-feat-body\">\n            <span class=\"rb-feat-tag\">Empreendedorismo e Lideran\u00e7a<\/span>\n            <h3>Quando voc\u00ea deve apertar as m\u00e3os com seu concorrente?<\/h3>\n            <p>Voc\u00ea j\u00e1 pensou em fundir seu neg\u00f3cio com o de seu concorrente? Em alguns mercados, essa \u00e9 a \u00fanica jogada que faz sentido. Em outros, \u00e9 o caminho mais r\u00e1pido para destruir tudo o que voc\u00ea construiu. Depois de duas d\u00e9cadas vendo fus\u00f5es darem certo e erradas, o que realmente diferencia uma decis\u00e3o acertada de um erro caro.<\/p>\n            <div class=\"rb-feat-footer\">\n              <div class=\"rb-feat-meta\">\n                <strong>Rodolfo Basilio<\/strong>\n                <span class=\"rb-feat-meta-dot\"><\/span>\n                <span>04 dez 2025<\/span>\n                <span class=\"rb-feat-meta-dot\"><\/span>\n                <span>6 min<\/span>\n              <\/div>\n              <span class=\"rb-feat-read\">Ler artigo<\/span>\n            <\/div>\n          <\/div>\n        <\/a>\n\n        <!-- Mini row: outside the main article, below it in col 1 -->\n        <div class=\"rb-feat-mini-row\">\n\n          <a href=\"#rb-videos\" class=\"rb-mini-card\">\n            <div class=\"rb-mini-visual\">\n              <div class=\"rb-mini-rings\" aria-hidden=\"true\">\n                <span class=\"rb-mini-ring rb-mini-ring-1\"><\/span>\n                <span class=\"rb-mini-ring rb-mini-ring-2\"><\/span>\n                <span class=\"rb-mini-ring rb-mini-ring-3\"><\/span>\n                <div class=\"rb-mini-ring-center\">\n                  <svg viewBox=\"0 0 24 24\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" fill=\"currentColor\"><path d=\"M8 5v14l11-7z\"\/><\/svg>\n                <\/div>\n              <\/div>\n            <\/div>\n            <div class=\"rb-mini-text\">\n              <span class=\"rb-mini-eyebrow\">V\u00eddeos<\/span>\n              <span class=\"rb-mini-title\">Aulas curtas, ideias diretas<\/span>\n            <\/div>\n            <span class=\"rb-mini-arrow\">\u2192<\/span>\n          <\/a>\n\n          <a href=\"#rb-podcast\" class=\"rb-mini-card\">\n            <div class=\"rb-mini-visual\">\n              <div class=\"rb-mini-wave\" aria-hidden=\"true\">\n                <span><\/span><span><\/span><span><\/span><span><\/span>\n                <span><\/span><span><\/span><span><\/span><span><\/span>\n              <\/div>\n            <\/div>\n            <div class=\"rb-mini-text\">\n              <span class=\"rb-mini-eyebrow\">Podcast<\/span>\n              <span class=\"rb-mini-title\">Conversas com quem constr\u00f3i<\/span>\n            <\/div>\n            <span class=\"rb-mini-arrow\">\u2192<\/span>\n          <\/a>\n\n        <\/div>\n\n      <\/div>\n\n      <!-- COLUMN 2: Two side featured tiles -->\n      <div class=\"rb-feat-col rb-feat-col-2\">\n\n        <a href=\"https:\/\/rodolfobasilio.com\/qual-deveria-ser-o-ponto-ideal-de-foco-no-seu-negocio\/\" class=\"rb-feat-card rb-feat-side\" data-post-url=\"https:\/\/rodolfobasilio.com\/qual-deveria-ser-o-ponto-ideal-de-foco-no-seu-negocio\/\">\n          <div class=\"rb-feat-img\">\n            <div class=\"rb-placeholder\"><\/div>\n          <\/div>\n          <div class=\"rb-feat-body\">\n            <span class=\"rb-feat-tag\">Estrat\u00e9gia<\/span>\n            <h3>Qual deveria ser o ponto ideal de foco no seu neg\u00f3cio?<\/h3>\n            <p>Vinte anos vendo empres\u00e1rios bem-sucedidos em mais de um neg\u00f3cio. E ainda mais vendo bons neg\u00f3cios morrerem por falta de foco.<\/p>\n            <div class=\"rb-feat-meta\">\n              <span>27 nov 2025<\/span>\n              <span class=\"rb-feat-meta-dot\"><\/span>\n              <span>5 min<\/span>\n            <\/div>\n          <\/div>\n        <\/a>\n\n        <a href=\"https:\/\/rodolfobasilio.com\/voce-e-empresario-ou-empreendedor\/\" class=\"rb-feat-card rb-feat-side\" data-post-url=\"https:\/\/rodolfobasilio.com\/voce-e-empresario-ou-empreendedor\/\">\n          <div class=\"rb-feat-img\">\n            <div class=\"rb-placeholder\"><\/div>\n          <\/div>\n          <div class=\"rb-feat-body\">\n            <span class=\"rb-feat-tag\">Lideran\u00e7a<\/span>\n            <h3>Voc\u00ea \u00e9 empres\u00e1rio ou empreendedor?<\/h3>\n            <p>A diferen\u00e7a entre os dois pode explicar por que tantos neg\u00f3cios promissores nunca passam dos primeiros anos. N\u00e3o \u00e9 sem\u00e2ntica.<\/p>\n            <div class=\"rb-feat-meta\">\n              <span>05 ago 2025<\/span>\n              <span class=\"rb-feat-meta-dot\"><\/span>\n              <span>4 min<\/span>\n            <\/div>\n          <\/div>\n        <\/a>\n\n      <\/div>\n\n    <\/div>\n  <\/section>\n\n  <!-- ============================================================\n       SECTION 2 \u00b7 V\u00cdDEOS\n       ============================================================ -->\n  <section class=\"rb-section\" id=\"rb-videos\">\n    <div class=\"rb-section-head rb-reveal\">\n      <div class=\"rb-section-head-left\">\n        <div class=\"rb-section-eyebrow\">V\u00eddeos<\/div>\n        <h2 class=\"rb-section-title\">Aulas curtas, ideias <strong>diretas.<\/strong><\/h2>\n      <\/div>\n    <\/div>\n\n    <div class=\"rb-video-grid rb-reveal\">\n\n      <!-- FEATURED VIDEO (opens in lightbox) -->\n      <button type=\"button\" class=\"rb-video-feature\" data-video-id=\"XNopMGiQ8lI\">\n        <div class=\"rb-video-thumb-box\">\n          <img decoding=\"async\" src=\"https:\/\/i.ytimg.com\/vi\/XNopMGiQ8lI\/maxresdefault.jpg\" alt=\"V\u00eddeo em destaque\" onerror=\"this.src='https:\/\/i.ytimg.com\/vi\/XNopMGiQ8lI\/hqdefault.jpg'\">\n          <div class=\"rb-play-btn\"><\/div>\n        <\/div>\n        <div class=\"rb-video-feature-body\">\n          <h3>V\u00eddeo em destaque<\/h3>\n          <p>An\u00e1lises diretas sobre o que realmente funciona para crescer sua empresa no Reino Unido.<\/p>\n        <\/div>\n      <\/button>\n\n      <!-- VIDEO LIST -->\n      <div class=\"rb-video-list\">\n\n        <button type=\"button\" class=\"rb-video-tile\" data-video-id=\"oXsrkHaSa2A\">\n          <div class=\"rb-video-thumb\">\n            <img decoding=\"async\" src=\"https:\/\/i.ytimg.com\/vi\/oXsrkHaSa2A\/hqdefault.jpg\" alt=\"\">\n            <div class=\"rb-play-btn-sm\"><\/div>\n          <\/div>\n          <div class=\"rb-video-tile-info\">\n            <span class=\"rb-video-tile-tag\">Estrat\u00e9gia<\/span>\n            <h4>An\u00e1lise direta \u00b7 Rodolfo Basilio<\/h4>\n            <span>YouTube<\/span>\n          <\/div>\n        <\/button>\n\n        <button type=\"button\" class=\"rb-video-tile\" data-video-id=\"MCIN-KtGFZg\">\n          <div class=\"rb-video-thumb\">\n            <img decoding=\"async\" src=\"https:\/\/i.ytimg.com\/vi\/MCIN-KtGFZg\/hqdefault.jpg\" alt=\"\">\n            <div class=\"rb-play-btn-sm\"><\/div>\n          <\/div>\n          <div class=\"rb-video-tile-info\">\n            <span class=\"rb-video-tile-tag\">Financeiro<\/span>\n            <h4>An\u00e1lise direta \u00b7 Rodolfo Basilio<\/h4>\n            <span>YouTube<\/span>\n          <\/div>\n        <\/button>\n\n        <button type=\"button\" class=\"rb-video-tile\" data-video-id=\"iZCEV7Co2cs\">\n          <div class=\"rb-video-thumb\">\n            <img decoding=\"async\" src=\"https:\/\/i.ytimg.com\/vi\/iZCEV7Co2cs\/hqdefault.jpg\" alt=\"\">\n            <div class=\"rb-play-btn-sm\"><\/div>\n          <\/div>\n          <div class=\"rb-video-tile-info\">\n            <span class=\"rb-video-tile-tag\">Lideran\u00e7a<\/span>\n            <h4>An\u00e1lise direta \u00b7 Rodolfo Basilio<\/h4>\n            <span>YouTube<\/span>\n          <\/div>\n        <\/button>\n\n        <a href=\"https:\/\/www.youtube.com\/@RodolfoBasilioOficial\" target=\"_blank\" rel=\"noopener\" class=\"rb-video-cta\">\n          Ver canal no YouTube <span>\u2192<\/span>\n        <\/a>\n\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <!-- ============================================================\n       SECTION 3 \u00b7 ARTIGOS\n       ============================================================ -->\n  <section class=\"rb-section\" id=\"rb-artigos\">\n    <div class=\"rb-section-head rb-reveal\">\n      <div class=\"rb-section-head-left\">\n        <div class=\"rb-section-eyebrow\">Artigos<\/div>\n        <h2 class=\"rb-section-title\">Tudo o que escrevi at\u00e9 <strong>aqui.<\/strong><\/h2>\n      <\/div>\n    <\/div>\n\n    <div class=\"rb-filter-bar rb-reveal\" id=\"rb-filter-bar\">\n      <button type=\"button\" class=\"rb-filter-chip rb-active\" data-filter=\"all\">Todos<\/button>\n      <button type=\"button\" class=\"rb-filter-chip\" data-filter=\"estrategia\">Estrat\u00e9gia<\/button>\n      <button type=\"button\" class=\"rb-filter-chip\" data-filter=\"lideranca\">Empreendedorismo &amp; Lideran\u00e7a<\/button>\n      <button type=\"button\" class=\"rb-filter-chip\" data-filter=\"financiamento\">Financiamento<\/button>\n      <button type=\"button\" class=\"rb-filter-chip\" data-filter=\"financas\">Finan\u00e7as<\/button>\n    <\/div>\n\n    <div class=\"rb-article-grid rb-stagger\" id=\"rb-article-grid\">\n\n      <a href=\"https:\/\/rodolfobasilio.com\/quais-licoes-de-negocios-aprendi-jogando-damas-como-os-relacionamentos-com-bancos-se-alteram-nas-diferentes-fases-de-crescimento-de-uma-empresa\/\" class=\"rb-article-card\" data-category=\"estrategia\" data-post-url=\"https:\/\/rodolfobasilio.com\/quais-licoes-de-negocios-aprendi-jogando-damas-como-os-relacionamentos-com-bancos-se-alteram-nas-diferentes-fases-de-crescimento-de-uma-empresa\/\">\n        <div class=\"rb-feat-img\"><div class=\"rb-placeholder\"><\/div><\/div>\n        <div class=\"rb-article-body\">\n          <span class=\"rb-feat-tag\">Estrat\u00e9gia<\/span>\n          <h3>Quais li\u00e7\u00f5es de neg\u00f3cios aprendi jogando Damas?<\/h3>\n          <p>Como os relacionamentos com bancos se alteram em cada fase do crescimento de uma empresa.<\/p>\n          <div class=\"rb-article-meta\">\n            <strong>Out 2025<\/strong>\n            <span class=\"rb-article-meta-dot\"><\/span>\n            <span>7 min de leitura<\/span>\n          <\/div>\n        <\/div>\n      <\/a>\n\n      <a href=\"https:\/\/rodolfobasilio.com\/um-negocio-sem-uma-receita-e-uma-receita-para-o-desastre\/\" class=\"rb-article-card\" data-category=\"estrategia\" data-post-url=\"https:\/\/rodolfobasilio.com\/um-negocio-sem-uma-receita-e-uma-receita-para-o-desastre\/\">\n        <div class=\"rb-feat-img\"><div class=\"rb-placeholder\"><\/div><\/div>\n        <div class=\"rb-article-body\">\n          <span class=\"rb-feat-tag\">Estrat\u00e9gia<\/span>\n          <h3>Um neg\u00f3cio sem uma receita \u00e9 uma receita para o desastre<\/h3>\n          <p>O n\u00famero de funcion\u00e1rios cresce. As noites sem dormir come\u00e7am. O que est\u00e1 realmente faltando.<\/p>\n          <div class=\"rb-article-meta\">\n            <strong>Out 2025<\/strong>\n            <span class=\"rb-article-meta-dot\"><\/span>\n            <span>6 min de leitura<\/span>\n          <\/div>\n        <\/div>\n      <\/a>\n\n      <a href=\"https:\/\/rodolfobasilio.com\/quais-fases-voce-deve-esperar-no-crescimento-de-uma-pequena-empresa\/\" class=\"rb-article-card\" data-category=\"estrategia\" data-post-url=\"https:\/\/rodolfobasilio.com\/quais-fases-voce-deve-esperar-no-crescimento-de-uma-pequena-empresa\/\">\n        <div class=\"rb-feat-img\"><div class=\"rb-placeholder\"><\/div><\/div>\n        <div class=\"rb-article-body\">\n          <span class=\"rb-feat-tag\">Estrat\u00e9gia<\/span>\n          <h3>Quais fases voc\u00ea deve esperar no crescimento de uma pequena empresa?<\/h3>\n          <p>Desde 2007 acompanhando de perto o sucesso e o fracasso de centenas de empresas. Os padr\u00f5es existem.<\/p>\n          <div class=\"rb-article-meta\">\n            <strong>Out 2025<\/strong>\n            <span class=\"rb-article-meta-dot\"><\/span>\n            <span>8 min de leitura<\/span>\n          <\/div>\n        <\/div>\n      <\/a>\n\n      <a href=\"https:\/\/rodolfobasilio.com\/como-conseguir-alcancar-as-metas-do-seu-negocio\/\" class=\"rb-article-card\" data-category=\"estrategia\" data-post-url=\"https:\/\/rodolfobasilio.com\/como-conseguir-alcancar-as-metas-do-seu-negocio\/\">\n        <div class=\"rb-feat-img\"><div class=\"rb-placeholder\"><\/div><\/div>\n        <div class=\"rb-article-body\">\n          <span class=\"rb-feat-tag\">Estrat\u00e9gia<\/span>\n          <h3>Como conseguir alcan\u00e7ar as metas do seu neg\u00f3cio?<\/h3>\n          <p>A maioria das pessoas n\u00e3o escreve seus objetivos. Quem escreve, raramente os revisa. Como sair do ciclo.<\/p>\n          <div class=\"rb-article-meta\">\n            <strong>Mar 2025<\/strong>\n            <span class=\"rb-article-meta-dot\"><\/span>\n            <span>5 min de leitura<\/span>\n          <\/div>\n        <\/div>\n      <\/a>\n\n      <a href=\"https:\/\/rodolfobasilio.com\/o-seu-negocio-sofre-com-a-sazonalidade\/\" class=\"rb-article-card\" data-category=\"estrategia\" data-post-url=\"https:\/\/rodolfobasilio.com\/o-seu-negocio-sofre-com-a-sazonalidade\/\">\n        <div class=\"rb-feat-img\"><div class=\"rb-placeholder\"><\/div><\/div>\n        <div class=\"rb-article-body\">\n          <span class=\"rb-feat-tag\">Estrat\u00e9gia<\/span>\n          <h3>O seu neg\u00f3cio sofre com a sazonalidade?<\/h3>\n          <p>Vendas que sobem e caem em ciclos previs\u00edveis. Boa not\u00edcia: voc\u00ea n\u00e3o est\u00e1 sozinho. Melhor not\u00edcia: d\u00e1 para resolver.<\/p>\n          <div class=\"rb-article-meta\">\n            <strong>Mar 2025<\/strong>\n            <span class=\"rb-article-meta-dot\"><\/span>\n            <span>5 min de leitura<\/span>\n          <\/div>\n        <\/div>\n      <\/a>\n\n      <a href=\"https:\/\/rodolfobasilio.com\/9-otimas-maneiras-de-arrecadar-dinheiro-para-abrir-o-proprio-negocio\/\" class=\"rb-article-card\" data-category=\"financiamento\" data-post-url=\"https:\/\/rodolfobasilio.com\/9-otimas-maneiras-de-arrecadar-dinheiro-para-abrir-o-proprio-negocio\/\">\n        <div class=\"rb-feat-img\"><div class=\"rb-placeholder\"><\/div><\/div>\n        <div class=\"rb-article-body\">\n          <span class=\"rb-feat-tag\">Financiamento<\/span>\n          <h3>9 \u00f3timas maneiras de arrecadar dinheiro para abrir o pr\u00f3prio neg\u00f3cio<\/h3>\n          <p>Voc\u00ea tem o plano. Sabe quanto precisa investir. Falta a parte mais dif\u00edcil: encontrar o capital.<\/p>\n          <div class=\"rb-article-meta\">\n            <strong>Mar 2025<\/strong>\n            <span class=\"rb-article-meta-dot\"><\/span>\n            <span>7 min de leitura<\/span>\n          <\/div>\n        <\/div>\n      <\/a>\n\n      <!-- PAGED (hidden initially) -->\n      <a href=\"https:\/\/rodolfobasilio.com\/quando-voce-deve-apertar-as-maos-com-seu-concorrente\/\" class=\"rb-article-card rb-paged\" data-category=\"lideranca\" data-post-url=\"https:\/\/rodolfobasilio.com\/quando-voce-deve-apertar-as-maos-com-seu-concorrente\/\">\n        <div class=\"rb-feat-img\"><div class=\"rb-placeholder\"><\/div><\/div>\n        <div class=\"rb-article-body\">\n          <span class=\"rb-feat-tag\">Lideran\u00e7a<\/span>\n          <h3>Quando voc\u00ea deve apertar as m\u00e3os com seu concorrente?<\/h3>\n          <p>Fundir o seu neg\u00f3cio com o de um concorrente pode ser o melhor movimento ou o pior erro. Como decidir.<\/p>\n          <div class=\"rb-article-meta\">\n            <strong>Dez 2025<\/strong>\n            <span class=\"rb-article-meta-dot\"><\/span>\n            <span>6 min de leitura<\/span>\n          <\/div>\n        <\/div>\n      <\/a>\n\n      <a href=\"https:\/\/rodolfobasilio.com\/qual-deveria-ser-o-ponto-ideal-de-foco-no-seu-negocio\/\" class=\"rb-article-card rb-paged\" data-category=\"estrategia\" data-post-url=\"https:\/\/rodolfobasilio.com\/qual-deveria-ser-o-ponto-ideal-de-foco-no-seu-negocio\/\">\n        <div class=\"rb-feat-img\"><div class=\"rb-placeholder\"><\/div><\/div>\n        <div class=\"rb-article-body\">\n          <span class=\"rb-feat-tag\">Estrat\u00e9gia<\/span>\n          <h3>Qual deveria ser o ponto ideal de foco no seu neg\u00f3cio?<\/h3>\n          <p>Empreendedores que sustentam mais de um neg\u00f3cio fazem uma coisa diferente. N\u00e3o \u00e9 talento.<\/p>\n          <div class=\"rb-article-meta\">\n            <strong>Nov 2025<\/strong>\n            <span class=\"rb-article-meta-dot\"><\/span>\n            <span>5 min de leitura<\/span>\n          <\/div>\n        <\/div>\n      <\/a>\n\n      <a href=\"https:\/\/rodolfobasilio.com\/voce-e-empresario-ou-empreendedor\/\" class=\"rb-article-card rb-paged\" data-category=\"lideranca\" data-post-url=\"https:\/\/rodolfobasilio.com\/voce-e-empresario-ou-empreendedor\/\">\n        <div class=\"rb-feat-img\"><div class=\"rb-placeholder\"><\/div><\/div>\n        <div class=\"rb-article-body\">\n          <span class=\"rb-feat-tag\">Lideran\u00e7a<\/span>\n          <h3>Voc\u00ea \u00e9 empres\u00e1rio ou empreendedor?<\/h3>\n          <p>A diferen\u00e7a entre os dois pode explicar por que tantos neg\u00f3cios promissores nunca passam dos primeiros anos.<\/p>\n          <div class=\"rb-article-meta\">\n            <strong>Ago 2025<\/strong>\n            <span class=\"rb-article-meta-dot\"><\/span>\n            <span>4 min de leitura<\/span>\n          <\/div>\n        <\/div>\n      <\/a>\n\n    <\/div>\n\n    <div class=\"rb-load-more-wrap\">\n      <button type=\"button\" class=\"rb-load-more\" id=\"rb-load-more\">Carregar mais<\/button>\n    <\/div>\n\n    <div class=\"rb-empty\" id=\"rb-empty\">\n      Nenhum artigo nessa categoria por enquanto. Em breve.\n    <\/div>\n  <\/section>\n\n  <!-- ============================================================\n       SECTION 4 \u00b7 PODCAST\n       ============================================================ -->\n  <section class=\"rb-section\" id=\"rb-podcast\">\n\n    <div class=\"rb-podcast-shell rb-reveal\">\n\n      <div class=\"rb-podcast-head\">\n        <div>\n          <div class=\"rb-section-eyebrow\">Podcast<\/div>\n          <h3>Conversas longas com quem realmente <strong>constr\u00f3i.<\/strong><\/h3>\n          <p>Entrevistas com empres\u00e1rios brasileiros que est\u00e3o operando no Reino Unido e na Europa. Sem palco motivacional. Os erros, os n\u00fameros, as decis\u00f5es que ningu\u00e9m conta nas redes sociais.<\/p>\n        <\/div>\n\n        <div class=\"rb-podcast-stats\">\n          <div class=\"rb-podcast-stat\">\n            <span class=\"rb-num\" data-count=\"8\">0<\/span>\n            <span class=\"rb-lbl\">Epis\u00f3dios<\/span>\n          <\/div>\n          <div class=\"rb-podcast-stat\">\n            <span class=\"rb-num\" data-count=\"3\">0<\/span>\n            <span class=\"rb-lbl\">Temporadas<\/span>\n          <\/div>\n          <div class=\"rb-podcast-stat\">\n            <span class=\"rb-num\" data-count=\"10\">0<\/span>\n            <span class=\"rb-lbl\" style=\"white-space:nowrap\">Horas de Conte\u00fado<\/span>\n          <\/div>\n        <\/div>\n      <\/div>\n\n      <div class=\"rb-podcast-body\">\n\n        <div class=\"rb-podcast-player-col\">\n          <div class=\"rb-podcast-player\" id=\"rb-podcast-player\">\n            <!-- Player iframe injected by JS -->\n          <\/div>\n          <!-- Real Spotify show link -->\n          <a href=\"https:\/\/open.spotify.com\/show\/7iQXmUT7XGuZSzAMjoNWlX\" target=\"_blank\" rel=\"noopener\" class=\"rb-spotify-cta\">\n            <span class=\"rb-spotify-icon\">\n              <svg viewBox=\"0 0 24 24\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\">\n                <path d=\"M12 0C5.4 0 0 5.4 0 12s5.4 12 12 12 12-5.4 12-12S18.66 0 12 0zm5.521 17.34c-.24.359-.66.48-1.021.24-2.82-1.74-6.36-2.101-10.561-1.141-.418.122-.779-.179-.899-.539-.12-.421.18-.78.54-.9 4.56-1.021 8.52-.6 11.64 1.32.42.18.479.659.301 1.02zm1.44-3.3c-.301.42-.841.6-1.262.3-3.239-1.98-8.159-2.58-11.939-1.38-.479.12-1.02-.12-1.14-.6-.12-.48.12-1.021.6-1.141C9.6 9.9 15 10.561 18.72 12.84c.361.181.54.78.241 1.2zm.12-3.36C15.24 8.4 8.82 8.16 5.16 9.301c-.6.179-1.2-.181-1.38-.721-.18-.601.18-1.2.72-1.381 4.26-1.26 11.28-1.02 15.721 1.621.539.3.719 1.02.419 1.56-.299.421-1.02.599-1.56.3z\"\/>\n              <\/svg>\n            <\/span>\n            <span class=\"rb-spotify-text\">\n              <strong>Ouvir todos os epis\u00f3dios<\/strong>\n              <small>no Spotify<\/small>\n            <\/span>\n            <span class=\"rb-spotify-arrow\">\u2192<\/span>\n          <\/a>\n        <\/div>\n\n        <div class=\"rb-podcast-episodes\">\n          <div class=\"rb-podcast-episodes-label\">Epis\u00f3dios em destaque<\/div>\n\n          <div class=\"rb-episode-list\" id=\"rb-episode-list\">\n            <!-- Episodes injected by JS from data array below -->\n          <\/div>\n        <\/div>\n\n      <\/div>\n\n    <\/div>\n  <\/section>\n\n  <!-- ============================================================\n       SECTION 5 \u00b7 DROPS (latest YouTube Shorts, auto-refreshed)\n       Fetches from \/wp-json\/rodolfo\/v1\/youtube-shorts (PHP endpoint)\n       Inline playback via YouTube IFrame API, no lightbox\n       ============================================================ -->\n  <section class=\"rb-section\" id=\"rb-drops\">\n    <div class=\"rb-section-head rb-reveal\">\n      <div class=\"rb-section-head-left\">\n        <div class=\"rb-section-eyebrow\">Drops<\/div>\n        <h2 class=\"rb-section-title\">O dia a dia, em <strong>tempo real.<\/strong><\/h2>\n      <\/div>\n      <a href=\"https:\/\/www.instagram.com\/basilio.rodolfo\/\" target=\"_blank\" rel=\"noopener\" class=\"rb-section-link\">@basilio.rodolfo<\/a>\n    <\/div>\n\n    <div class=\"rb-drops-wrap\">\n      <div class=\"rb-drops-grid\" id=\"rb-drops-grid\">\n        <!-- Tiles populated by JS from \/wp-json\/rodolfo\/v1\/youtube-shorts -->\n        <div class=\"rb-drops-status\">A carregar os \u00faltimos drops&#8230;<\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"rb-ig-cta\">\n      <a href=\"https:\/\/www.instagram.com\/basilio.rodolfo\/\" target=\"_blank\" rel=\"noopener\">Seguir no Instagram \u2192<\/a>\n    <\/div>\n  <\/section>\n\n  <!-- ============================================================\n       SECTION 6 \u00b7 NEWSLETTER (HubSpot form)\n       ============================================================ -->\n  <section class=\"rb-section\" id=\"rb-newsletter\">\n    <div class=\"rb-news-wrap rb-reveal\">\n      <div class=\"rb-section-eyebrow\">Newsletter<\/div>\n      <h3>Receba as pr\u00f3ximas an\u00e1lises antes de <strong>todo mundo.<\/strong><\/h3>\n      <p>Uma vez por m\u00eas, no e-mail. Os artigos novos, os bastidores das empresas que estou acompanhando e algumas observa\u00e7\u00f5es que ainda n\u00e3o est\u00e3o prontas para publica\u00e7\u00e3o.<\/p>\n\n      <div class=\"rb-news-form-wrap\">\n        <form class=\"rb-newsletter-form\" id=\"rb-newsletter-form\" novalidate>\n          <div class=\"rb-form-row\">\n            <div class=\"rb-field\">\n              <label for=\"rb-name\">Nome<\/label>\n              <input type=\"text\" id=\"rb-name\" name=\"firstname\" placeholder=\"Seu nome\" required autocomplete=\"given-name\">\n            <\/div>\n            <div class=\"rb-field\">\n              <label for=\"rb-email\">E-mail<\/label>\n              <input type=\"email\" id=\"rb-email\" name=\"email\" placeholder=\"seu@email.com\" required autocomplete=\"email\">\n            <\/div>\n          <\/div>\n          <div class=\"rb-submit-row\">\n            <button type=\"submit\" class=\"rb-submit\" id=\"rb-submit-btn\">\n              <span class=\"rb-submit-label\">Quero receber<\/span>\n              <span class=\"rb-submit-spinner\" aria-hidden=\"true\"><\/span>\n            <\/button>\n          <\/div>\n          <div class=\"rb-form-msg\" id=\"rb-form-msg\" aria-live=\"polite\"><\/div>\n        <\/form>\n      <\/div>\n\n      <div class=\"rb-news-micro\">Sem spam. Cancelar com um clique.<\/div>\n    <\/div>\n  <\/section>\n\n  <!-- ============================================================\n       FINAL CTA\n       ============================================================ -->\n  <div class=\"rb-final-cta rb-reveal\">\n    <div class=\"rb-final-card\">\n      <div class=\"rb-final-text\">\n        <div class=\"rb-section-eyebrow\">Pronto para o pr\u00f3ximo passo?<\/div>\n        <h3>Aplique tudo isso ao <strong>seu neg\u00f3cio.<\/strong><\/h3>\n      <\/div>\n      <a href=\"https:\/\/rodolfobasilio.com\/ofertas\" class=\"rb-final-btn rb-magnetic\">Ver as op\u00e7\u00f5es de consultoria<\/a>\n    <\/div>\n  <\/div>\n\n  <!-- ============================================================\n       FLOATING BUTTONS: WhatsApp + Back to top\n       ============================================================ -->\n  <div class=\"rb-sticky-stack\">\n    <button type=\"button\" class=\"rb-btt\" id=\"rb-btt\" aria-label=\"Voltar ao topo\">\u2191<\/button>\n    <a href=\"https:\/\/wa.me\/447462115601?text=Oi%20Rodolfo%2C%20vim%20pela%20p%C3%A1gina%20de%20conte%C3%BAdos\" target=\"_blank\" rel=\"noopener\" class=\"rb-wa rb-magnetic\" aria-label=\"Falar no WhatsApp\">\n      <svg viewBox=\"0 0 24 24\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n        <path d=\"M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413z\"\/>\n      <\/svg>\n    <\/a>\n  <\/div>\n\n  <!-- ============================================================\n       VIDEO LIGHTBOX MODAL\n       ============================================================ -->\n  <div class=\"rb-modal\" id=\"rb-modal\" aria-hidden=\"true\">\n    <div class=\"rb-modal-inner\">\n      <button type=\"button\" class=\"rb-modal-close\" id=\"rb-modal-close\" aria-label=\"Fechar\">\u00d7<\/button>\n      <iframe id=\"rb-modal-iframe\" src=\"\" title=\"V\u00eddeo\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen loading=\"lazy\"><\/iframe>\n    <\/div>\n  <\/div>\n\n<\/div>\n<!-- \/.rb-hub -->\n\n<script>\n(function () {\n  'use strict';\n  var root = document.querySelector('.rb-hub');\n  if (!root) return;\n\n  \/* ============================================================\n     1 \u00b7 ARTICLE FILTER + PAGINATION\n     ============================================================ *\/\n  var filterBar = root.querySelector('#rb-filter-bar');\n  var grid      = root.querySelector('#rb-article-grid');\n  var empty     = root.querySelector('#rb-empty');\n  var loadMore  = root.querySelector('#rb-load-more');\n  var loadMoreWrap = root.querySelector('.rb-load-more-wrap');\n\n  var currentFilter = 'all';\n  var isExpanded = false;\n\n  function getVisibleCards() {\n    return Array.prototype.slice.call(grid.querySelectorAll('.rb-article-card'))\n      .filter(function (c) { return !c.classList.contains('rb-hidden'); });\n  }\n\n  function getInitialLimit() {\n    var w = window.innerWidth;\n    if (w < 680) return 3;\n    if (w < 980) return 4;\n    return 5;\n  }\n\n  function applyLayout() {\n    var cards = Array.prototype.slice.call(grid.querySelectorAll('.rb-article-card'));\n    cards.forEach(function (card) {\n      var cat = card.getAttribute('data-category');\n      var matchFilter = (currentFilter === 'all') || (cat === currentFilter);\n      card.classList.toggle('rb-hidden', !matchFilter);\n    });\n\n    \/\/ Apply pagination after filtering\n    var visibleAfterFilter = getVisibleCards();\n    var initialLimit = getInitialLimit();\n\n    if (currentFilter !== 'all' || isExpanded) {\n      \/\/ Show everything that matches\n      visibleAfterFilter.forEach(function (c) {\n        c.classList.remove('rb-paged');\n        c.classList.add('rb-visible');\n      });\n      loadMoreWrap.style.display = 'none';\n    } else {\n      visibleAfterFilter.forEach(function (c, idx) {\n        if (idx < initialLimit) {\n          c.classList.remove('rb-paged');\n          c.classList.add('rb-visible');\n        } else {\n          c.classList.remove('rb-visible');\n          c.classList.add('rb-paged');\n        }\n      });\n      loadMoreWrap.style.display = (visibleAfterFilter.length > initialLimit) ? 'flex' : 'none';\n    }\n\n    empty.style.display = (visibleAfterFilter.length === 0) ? 'block' : 'none';\n  }\n\n  if (filterBar) {\n    filterBar.addEventListener('click', function (e) {\n      var btn = e.target.closest('.rb-filter-chip');\n      if (!btn) return;\n      currentFilter = btn.getAttribute('data-filter');\n      isExpanded = false;\n      filterBar.querySelectorAll('.rb-filter-chip').forEach(function (c) {\n        c.classList.toggle('rb-active', c === btn);\n      });\n      applyLayout();\n    });\n  }\n\n  if (loadMore) {\n    loadMore.addEventListener('click', function () {\n      isExpanded = true;\n      applyLayout();\n    });\n  }\n\n  applyLayout();\n  window.addEventListener('resize', function () {\n    if (!isExpanded && currentFilter === 'all') applyLayout();\n  });\n\n  \/* ============================================================\n     2 \u00b7 BLOG FEATURED IMAGES via WordPress oEmbed\n     Fetches real featured image URLs for any element with\n     data-post-url attribute and swaps placeholder \u2192 real image.\n     ============================================================ *\/\n  function hydrateBlogImages() {\n    var cards = root.querySelectorAll('[data-post-url]');\n    cards.forEach(function (card) {\n      var postUrl = card.getAttribute('data-post-url');\n      var imgBox = card.querySelector('.rb-feat-img');\n      if (!imgBox || !postUrl) return;\n\n      var oembedUrl = 'https:\/\/rodolfobasilio.com\/wp-json\/oembed\/1.0\/embed?url=' +\n                      encodeURIComponent(postUrl);\n\n      fetch(oembedUrl, { credentials: 'omit' })\n        .then(function (r) { return r.ok ? r.json() : null; })\n        .then(function (data) {\n          if (!data || !data.thumbnail_url) return;\n          var placeholder = imgBox.querySelector('.rb-placeholder');\n          var img = document.createElement('img');\n          img.src = data.thumbnail_url;\n          img.alt = data.title || '';\n          img.loading = 'lazy';\n          img.onload = function () {\n            if (placeholder) placeholder.remove();\n          };\n          imgBox.appendChild(img);\n        })\n        .catch(function () { \/* silent \u2014 placeholder stays *\/ });\n    });\n  }\n  hydrateBlogImages();\n\n  \/* ============================================================\n     3 \u00b7 VIDEO LIGHTBOX\n     ============================================================ *\/\n  var modal      = root.querySelector('#rb-modal');\n  var modalIframe = root.querySelector('#rb-modal-iframe');\n  var modalClose = root.querySelector('#rb-modal-close');\n\n  function openVideo(id) {\n    if (!id) return;\n    modalIframe.src = 'https:\/\/www.youtube-nocookie.com\/embed\/' + id +\n                      '?autoplay=1&rel=0&modestbranding=1';\n    modal.classList.add('rb-open');\n    modal.setAttribute('aria-hidden', 'false');\n    document.body.style.overflow = 'hidden';\n  }\n  function closeVideo() {\n    modal.classList.remove('rb-open');\n    modal.setAttribute('aria-hidden', 'true');\n    modalIframe.src = '';\n    document.body.style.overflow = '';\n  }\n\n  root.querySelectorAll('[data-video-id]').forEach(function (el) {\n    el.addEventListener('click', function (e) {\n      e.preventDefault();\n      openVideo(el.getAttribute('data-video-id'));\n    });\n  });\n  if (modalClose) modalClose.addEventListener('click', closeVideo);\n  if (modal) {\n    modal.addEventListener('click', function (e) {\n      if (e.target === modal) closeVideo();\n    });\n  }\n  document.addEventListener('keydown', function (e) {\n    if (e.key === 'Escape' && modal.classList.contains('rb-open')) closeVideo();\n  });\n\n  \/* ============================================================\n     4 \u00b7 SPOTIFY PODCAST \u2014 dynamic player + episode list\n     ============================================================ *\/\n  var episodes = [\n    { id: '7LAWGvR7MNzog1rSS8yfHJ' },\n    { id: '5nAN8WfZsXkjMRMeGWHCOM' },\n    { id: '7uutsovjvrOumfmjIH08N0' },\n    { id: '5ADSqVKTdfpNd8sKe4rNDU' },\n    { id: '1YuJBWn7IWMCb32MyVuyQ8' },\n    { id: '3IWYsx5XV9hOFJdtFOKbU8' },\n    { id: '2SPAWVe33i3nhZHPBdTU7o' }\n  ];\n\n  var player = root.querySelector('#rb-podcast-player');\n  var list   = root.querySelector('#rb-episode-list');\n\n  function renderPlayer(episodeId) {\n    player.innerHTML =\n      '<iframe style=\"border-radius:14px\" ' +\n      'src=\"https:\/\/open.spotify.com\/embed\/episode\/' + episodeId + '?utm_source=generator&#038;theme=0\" ' +\n      'width=\"100%\" height=\"232\" frameborder=\"0\" ' +\n      'allowfullscreen=\"\" ' +\n      'allow=\"autoplay; clipboard-write; encrypted-media; fullscreen; picture-in-picture\" ' +\n      'loading=\"lazy\"><\/iframe>';\n  }\n\n  function renderList() {\n    list.innerHTML = '';\n    episodes.forEach(function (ep, idx) {\n      var btn = document.createElement('button');\n      btn.type = 'button';\n      btn.className = 'rb-episode' + (idx === 0 ? ' rb-active' : '');\n      btn.setAttribute('data-ep-id', ep.id);\n      btn.innerHTML =\n        '<div class=\"rb-episode-thumb\"><\/div>' +\n        '<div class=\"rb-episode-info\">' +\n          '<div class=\"rb-episode-title\">Carregando epis\u00f3dio\u2026<\/div>' +\n          '<div class=\"rb-episode-sub\">Spotify \u00b7 Podcast<\/div>' +\n        '<\/div>' +\n        '<div class=\"rb-episode-play\"><\/div>';\n      btn.addEventListener('click', function () {\n        list.querySelectorAll('.rb-episode').forEach(function (e) {\n          e.classList.remove('rb-active');\n        });\n        btn.classList.add('rb-active');\n        renderPlayer(ep.id);\n      });\n      list.appendChild(btn);\n\n      \/\/ Fetch metadata from Spotify oEmbed\n      var oembedUrl = 'https:\/\/open.spotify.com\/oembed?url=https:\/\/open.spotify.com\/episode\/' + ep.id;\n      fetch(oembedUrl)\n        .then(function (r) { return r.ok ? r.json() : null; })\n        .then(function (data) {\n          if (!data) return;\n          var title = btn.querySelector('.rb-episode-title');\n          var thumb = btn.querySelector('.rb-episode-thumb');\n          if (data.title) title.textContent = data.title;\n          if (data.thumbnail_url) {\n            var img = document.createElement('img');\n            img.src = data.thumbnail_url;\n            img.alt = '';\n            thumb.appendChild(img);\n          }\n        })\n        .catch(function () { \/* fallback: stays generic *\/ });\n    });\n  }\n\n  if (player && list) {\n    renderPlayer(episodes[0].id);\n    renderList();\n  }\n\n  \/* ============================================================\n     5 \u00b7 SCROLL REVEAL + STAGGER\n     ============================================================ *\/\n  if ('IntersectionObserver' in window) {\n    var io = new IntersectionObserver(function (entries) {\n      entries.forEach(function (entry) {\n        if (entry.isIntersecting) {\n          entry.target.classList.add('rb-in');\n          if (entry.target.classList.contains('rb-stagger')) {\n            Array.prototype.slice.call(entry.target.children).forEach(function (child, idx) {\n              setTimeout(function () { child.classList.add('rb-in'); }, idx * 70);\n            });\n          }\n          io.unobserve(entry.target);\n        }\n      });\n    }, { threshold: 0.12, rootMargin: '0px 0px -60px 0px' });\n\n    root.querySelectorAll('.rb-reveal, .rb-stagger').forEach(function (el) { io.observe(el); });\n  } else {\n    root.querySelectorAll('.rb-reveal, .rb-stagger').forEach(function (el) {\n      el.classList.add('rb-in');\n      Array.prototype.slice.call(el.children).forEach(function (c) { c.classList.add('rb-in'); });\n    });\n  }\n\n  \/* ============================================================\n     6 \u00b7 COUNTER ANIMATION (podcast stats)\n     ============================================================ *\/\n  function animateCounter(el, target, duration) {\n    var start = 0;\n    var startTime = null;\n    function step(ts) {\n      if (!startTime) startTime = ts;\n      var progress = Math.min((ts - startTime) \/ duration, 1);\n      var eased = 1 - Math.pow(1 - progress, 3);\n      el.textContent = Math.floor(eased * target);\n      if (progress < 1) requestAnimationFrame(step);\n      else el.textContent = target;\n    }\n    requestAnimationFrame(step);\n  }\n\n  if ('IntersectionObserver' in window) {\n    var counterIO = new IntersectionObserver(function (entries) {\n      entries.forEach(function (entry) {\n        if (entry.isIntersecting) {\n          var target = parseInt(entry.target.getAttribute('data-count'), 10);\n          animateCounter(entry.target, target, 1400);\n          counterIO.unobserve(entry.target);\n        }\n      });\n    }, { threshold: 0.5 });\n\n    root.querySelectorAll('[data-count]').forEach(function (el) { counterIO.observe(el); });\n  }\n\n  \/* ============================================================\n     7 \u00b7 BACK TO TOP + SCROLL PROGRESS BAR\n     ============================================================ *\/\n  var btt = root.querySelector('#rb-btt');\n  var progress = root.querySelector('#rb-progress');\n\n  function updateScroll() {\n    var doc = document.documentElement;\n    var max = doc.scrollHeight - doc.clientHeight;\n    var ratio = max > 0 ? (window.scrollY \/ max) : 0;\n    if (progress) progress.style.width = (ratio * 100) + '%';\n    if (btt) btt.classList.toggle('rb-visible', window.scrollY > 600);\n  }\n\n  window.addEventListener('scroll', updateScroll, { passive: true });\n  updateScroll();\n\n  if (btt) {\n    btt.addEventListener('click', function () {\n      window.scrollTo({ top: 0, behavior: 'smooth' });\n    });\n  }\n\n  \/* ============================================================\n     8 \u00b7 DROPS \u2014 fetch latest YouTube Shorts from PHP endpoint\n     Inline playback via YouTube IFrame API, no lightbox.\n     Mobile: horizontal carousel with auto-scroll until touched.\n     Sound: muted on first play (browser policy), unmute via corner\n     button. Once unmuted in a session, subsequent tiles auto-unmute.\n     ============================================================ *\/\n  var dropsGrid = root.querySelector('#rb-drops-grid');\n  var ytApiPromise = null;\n  var ytPlayers = {};\n  var currentDropId = null;\n  var dropsAutoScroll = null;\n  var dropsUserTouched = false;\n  var dropsSessionUnmuted = false; \/\/ session-wide unmute preference\n\n  \/\/ iOS detection \u2014 fullscreen on iframes doesn't work on iOS Safari\n  var dropsIsIOS = \/iPad|iPhone|iPod\/.test(navigator.userAgent) ||\n                   (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1);\n\n  function loadYouTubeAPI() {\n    if (ytApiPromise) return ytApiPromise;\n    ytApiPromise = new Promise(function (resolve) {\n      if (window.YT && window.YT.Player) { resolve(); return; }\n      var existing = document.querySelector('script[src*=\"youtube.com\/iframe_api\"]');\n      if (!existing) {\n        var tag = document.createElement('script');\n        tag.src = 'https:\/\/www.youtube.com\/iframe_api';\n        document.head.appendChild(tag);\n      }\n      var prev = window.onYouTubeIframeAPIReady;\n      window.onYouTubeIframeAPIReady = function () {\n        if (prev) try { prev(); } catch (e) {}\n        resolve();\n      };\n      \/\/ Fallback in case API loaded but ready event already fired\n      var checks = 0;\n      var poll = setInterval(function () {\n        checks++;\n        if (window.YT && window.YT.Player) {\n          clearInterval(poll);\n          resolve();\n        } else if (checks > 50) {\n          clearInterval(poll);\n        }\n      }, 100);\n    });\n    return ytApiPromise;\n  }\n\n  function fetchDrops() {\n    if (!dropsGrid) return;\n    fetch('\/wp-json\/rodolfo\/v1\/youtube-shorts', { credentials: 'omit' })\n      .then(function (r) { return r.ok ? r.json() : null; })\n      .then(function (data) {\n        if (!data || !data.videos || !data.videos.length) {\n          dropsGrid.innerHTML = '<div class=\"rb-drops-status\">Sem v\u00eddeos no momento.<\/div>';\n          return;\n        }\n        renderDrops(data.videos);\n      })\n      .catch(function () {\n        dropsGrid.innerHTML = '<div class=\"rb-drops-status\">N\u00e3o foi poss\u00edvel carregar os drops.<\/div>';\n      });\n  }\n\n  \/\/ SVG icons as constants for reuse\n  var SVG_PLAY = '<svg viewBox=\"0 0 24 24\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" fill=\"currentColor\"><path d=\"M8 5v14l11-7z\"\/><\/svg>';\n  var SVG_PAUSE = '<svg viewBox=\"0 0 24 24\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" fill=\"currentColor\"><path d=\"M6 5h4v14H6zm8 0h4v14h-4z\"\/><\/svg>';\n  var SVG_MUTED = '<svg class=\"rb-icon-muted\" viewBox=\"0 0 24 24\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" fill=\"currentColor\"><path d=\"M16.5 12c0-1.77-1.02-3.29-2.5-4.03v2.21l2.45 2.45c.03-.2.05-.41.05-.63zm2.5 0c0 .94-.2 1.82-.54 2.64l1.51 1.51C20.63 14.91 21 13.5 21 12c0-4.28-2.99-7.86-7-8.77v2.06c2.89.86 5 3.54 5 6.71zM4.27 3L3 4.27 7.73 9H3v6h4l5 5v-6.73l4.25 4.25c-.67.52-1.42.93-2.25 1.18v2.06c1.38-.31 2.63-.95 3.69-1.81L19.73 21 21 19.73l-9-9L4.27 3zM12 4L9.91 6.09 12 8.18V4z\"\/><\/svg>';\n  var SVG_UNMUTED = '<svg class=\"rb-icon-unmuted\" viewBox=\"0 0 24 24\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" fill=\"currentColor\"><path d=\"M3 9v6h4l5 5V4L7 9H3zm13.5 3c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02zM14 3.23v2.06c2.89.86 5 3.54 5 6.71s-2.11 5.85-5 6.71v2.06c4.01-.91 7-4.49 7-8.77s-2.99-7.86-7-8.77z\"\/><\/svg>';\n  var SVG_FULLSCREEN = '<svg viewBox=\"0 0 24 24\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" fill=\"currentColor\"><path d=\"M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z\"\/><\/svg>';\n\n  function renderDrops(videos) {\n    dropsGrid.innerHTML = '';\n    videos.forEach(function (video) {\n      var tile = document.createElement('div');\n      tile.className = 'rb-drop-tile';\n      if (dropsIsIOS) tile.classList.add('rb-no-fs');\n      tile.setAttribute('data-video-id', video.id);\n      tile.innerHTML =\n        '<img decoding=\"async\" class=\"rb-drop-thumb\" src=\"' + video.thumbnail + '\" alt=\"' + (video.title || '').replace(\/\"\/g, '&quot;') + '\" loading=\"lazy\">' +\n        '<div class=\"rb-drop-gradient\"><\/div>' +\n        '<div class=\"rb-drop-iframe-mount\"><\/div>' +\n        '<div class=\"rb-drop-play\">' + SVG_PLAY + '<\/div>' +\n        '<div class=\"rb-drop-pause\">' + SVG_PAUSE + '<\/div>' +\n        '<div class=\"rb-drop-click-catcher\"><\/div>' +\n        '<div class=\"rb-drop-fullscreen\" role=\"button\" tabindex=\"0\" aria-label=\"Tela cheia\">' + SVG_FULLSCREEN + '<\/div>' +\n        '<div class=\"rb-drop-mute\" role=\"button\" tabindex=\"0\" aria-label=\"Som\">' + SVG_MUTED + SVG_UNMUTED + '<\/div>';\n\n      tile.querySelector('.rb-drop-click-catcher').addEventListener('click', function () {\n        handleDropClick(tile, video.id);\n      });\n\n      var muteBtn = tile.querySelector('.rb-drop-mute');\n      muteBtn.addEventListener('click', function (e) {\n        e.stopPropagation();\n        handleMuteToggle(tile, video.id);\n      });\n      muteBtn.addEventListener('keydown', function (e) {\n        if (e.key === 'Enter' || e.key === ' ') {\n          e.preventDefault();\n          e.stopPropagation();\n          handleMuteToggle(tile, video.id);\n        }\n      });\n\n      var fsBtn = tile.querySelector('.rb-drop-fullscreen');\n      fsBtn.addEventListener('click', function (e) {\n        e.stopPropagation();\n        handleFullscreen(video.id);\n      });\n      fsBtn.addEventListener('keydown', function (e) {\n        if (e.key === 'Enter' || e.key === ' ') {\n          e.preventDefault();\n          e.stopPropagation();\n          handleFullscreen(video.id);\n        }\n      });\n\n      dropsGrid.appendChild(tile);\n    });\n    setupDropsCarousel();\n  }\n\n  function handleDropClick(tile, videoId) {\n    loadYouTubeAPI().then(function () {\n      \/\/ Pause any currently playing drop\n      if (currentDropId && currentDropId !== videoId) {\n        var prevTile = root.querySelector('.rb-drop-tile[data-video-id=\"' + currentDropId + '\"]');\n        if (prevTile) prevTile.classList.remove('rb-playing');\n        if (ytPlayers[currentDropId]) {\n          try { ytPlayers[currentDropId].pauseVideo(); } catch (e) {}\n        }\n      }\n\n      if (!ytPlayers[videoId]) {\n        \/\/ First click: create the YT.Player instance\n        var mount = tile.querySelector('.rb-drop-iframe-mount');\n        var playerId = 'rb-yt-' + videoId;\n        var playerEl = document.createElement('div');\n        playerEl.id = playerId;\n        mount.appendChild(playerEl);\n\n        ytPlayers[videoId] = new YT.Player(playerId, {\n          videoId: videoId,\n          playerVars: {\n            autoplay: 1,\n            controls: 0,\n            modestbranding: 1,\n            rel: 0,\n            playsinline: 1,\n            loop: 1,\n            playlist: videoId,\n            mute: 1,\n            iv_load_policy: 3,\n            fs: 1,\n            disablekb: 1\n          },\n          events: {\n            onReady: function (e) {\n              try { e.target.playVideo(); } catch (err) {}\n              \/\/ If user already unmuted earlier in the session, unmute this one too\n              if (dropsSessionUnmuted) {\n                try { e.target.unMute(); } catch (err) {}\n                tile.classList.add('rb-unmuted');\n              }\n              tile.classList.add('rb-playing');\n              currentDropId = videoId;\n            }\n          }\n        });\n      } else {\n        \/\/ Subsequent click: toggle play\/pause\n        if (tile.classList.contains('rb-playing')) {\n          try { ytPlayers[videoId].pauseVideo(); } catch (e) {}\n          tile.classList.remove('rb-playing');\n          currentDropId = null;\n        } else {\n          try { ytPlayers[videoId].playVideo(); } catch (e) {}\n          tile.classList.add('rb-playing');\n          currentDropId = videoId;\n        }\n      }\n    });\n  }\n\n  function handleMuteToggle(tile, videoId) {\n    var player = ytPlayers[videoId];\n    if (!player) return;\n    try {\n      if (tile.classList.contains('rb-unmuted')) {\n        player.mute();\n        tile.classList.remove('rb-unmuted');\n        dropsSessionUnmuted = false;\n      } else {\n        player.unMute();\n        \/\/ Some browsers reset volume on unmute \u2014 make sure it's audible\n        try { player.setVolume(80); } catch (e) {}\n        tile.classList.add('rb-unmuted');\n        dropsSessionUnmuted = true;\n      }\n    } catch (e) {}\n  }\n\n  function handleFullscreen(videoId) {\n    var player = ytPlayers[videoId];\n    if (!player) return;\n    try {\n      var iframe = player.getIframe();\n      if (!iframe) return;\n      if (iframe.requestFullscreen) {\n        iframe.requestFullscreen();\n      } else if (iframe.webkitRequestFullscreen) {\n        iframe.webkitRequestFullscreen();\n      } else if (iframe.mozRequestFullScreen) {\n        iframe.mozRequestFullScreen();\n      } else if (iframe.msRequestFullscreen) {\n        iframe.msRequestFullscreen();\n      }\n    } catch (e) {}\n  }\n\n  function setupDropsCarousel() {\n    if (!dropsGrid) return;\n    if (window.innerWidth >= 720) return; \/\/ Desktop = no carousel\n    var tiles = dropsGrid.querySelectorAll('.rb-drop-tile');\n    if (tiles.length < 3) return;\n\n    var idx = 0;\n    if (dropsAutoScroll) clearInterval(dropsAutoScroll);\n    dropsAutoScroll = setInterval(function () {\n      if (dropsUserTouched) return;\n      idx = (idx + 1) % tiles.length;\n      var target = tiles[idx];\n      if (target) {\n        dropsGrid.scrollTo({\n          left: target.offsetLeft - 4,\n          behavior: 'smooth'\n        });\n      }\n    }, 3500);\n\n    \/\/ Stop auto-scroll permanently on user interaction\n    var stopAuto = function () {\n      dropsUserTouched = true;\n      if (dropsAutoScroll) {\n        clearInterval(dropsAutoScroll);\n        dropsAutoScroll = null;\n      }\n    };\n    dropsGrid.addEventListener('touchstart', stopAuto, { passive: true });\n    dropsGrid.addEventListener('mousedown', stopAuto, { passive: true });\n    dropsGrid.addEventListener('wheel', stopAuto, { passive: true });\n  }\n\n  fetchDrops();\n\n  \/* ============================================================\n     9 \u00b7 NEWSLETTER FORM \u2014 submits to HubSpot Submissions API\n     Bypasses HubSpot's iframe embed completely, gives us full\n     control over styling and UX states.\n     ============================================================ *\/\n  var form = root.querySelector('#rb-newsletter-form');\n  if (form) {\n    var nameInput = form.querySelector('#rb-name');\n    var emailInput = form.querySelector('#rb-email');\n    var submitBtn = form.querySelector('#rb-submit-btn');\n    var msgEl = form.querySelector('#rb-form-msg');\n\n    var HS_PORTAL = '147198606';\n    var HS_FORM = '8f84b9a9-5dcd-4c9b-9092-c19deeca0df3';\n    var HS_ENDPOINT = 'https:\/\/api.hsforms.com\/submissions\/v3\/integration\/submit\/' +\n                      HS_PORTAL + '\/' + HS_FORM;\n\n    function setMsg(text, type) {\n      msgEl.textContent = text;\n      msgEl.className = 'rb-form-msg' + (type ? ' rb-' + type : '');\n    }\n    function isValidEmail(v) {\n      return \/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/.test(v);\n    }\n\n    form.addEventListener('submit', function (e) {\n      e.preventDefault();\n\n      var name = nameInput.value.trim();\n      var email = emailInput.value.trim();\n\n      \/\/ Validation\n      nameInput.classList.remove('rb-invalid');\n      emailInput.classList.remove('rb-invalid');\n\n      if (!name) {\n        nameInput.classList.add('rb-invalid');\n        setMsg('Por favor, preencha seu nome.', 'error');\n        nameInput.focus();\n        return;\n      }\n      if (!isValidEmail(email)) {\n        emailInput.classList.add('rb-invalid');\n        setMsg('Por favor, insira um e-mail v\u00e1lido.', 'error');\n        emailInput.focus();\n        return;\n      }\n\n      \/\/ Loading state\n      submitBtn.disabled = true;\n      submitBtn.classList.add('rb-loading');\n      setMsg('', '');\n\n      var payload = {\n        fields: [\n          { objectTypeId: '0-1', name: 'firstname', value: name },\n          { objectTypeId: '0-1', name: 'email',     value: email }\n        ],\n        context: {\n          pageUri: window.location.href,\n          pageName: document.title\n        }\n      };\n\n      fetch(HS_ENDPOINT, {\n        method: 'POST',\n        headers: { 'Content-Type': 'application\/json' },\n        body: JSON.stringify(payload)\n      })\n      .then(function (r) {\n        if (r.ok) return r.json();\n        return r.json().then(function (err) { throw err; });\n      })\n      .then(function () {\n        \/\/ Success \u2014 replace form with confirmation\n        form.style.transition = 'opacity 0.3s ease';\n        form.style.opacity = '0';\n        setTimeout(function () {\n          form.innerHTML =\n            '<div class=\"rb-form-success\">' +\n              '<div class=\"rb-success-icon\">' +\n                '<svg viewBox=\"0 0 24 24\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">' +\n                  '<path d=\"M20 6L9 17l-5-5\"\/>' +\n                '<\/svg>' +\n              '<\/div>' +\n              '<h4>Pronto, inscri\u00e7\u00e3o feita!<\/h4>' +\n              '<p>Te enviamos um email, voc\u00ea deve receber em alguns minutos. ' +\n              'Se n\u00e3o aparecer, d\u00e1 uma olhada no spam.<\/p>' +\n            '<\/div>';\n          form.style.opacity = '1';\n        }, 320);\n      })\n      .catch(function (err) {\n        submitBtn.disabled = false;\n        submitBtn.classList.remove('rb-loading');\n        var hint = '';\n        if (err && err.errors && err.errors.length) {\n          hint = ' (' + (err.errors[0].message || '') + ')';\n        }\n        setMsg('Algo deu errado. Tente novamente em alguns segundos.' + hint, 'error');\n        console.error('HubSpot submission error:', err);\n      });\n    });\n  }\n\n  \/* ============================================================\n     10 \u00b7 HERO H1 \u2014 word-by-word reveal\n     Recursively walks text nodes (preserving the <strong> tag),\n     wraps each word in a <span class=\"rb-word\">, then triggers\n     the staggered animation.\n     ============================================================ *\/\n  var heroH1 = root.querySelector('.rb-hero h1');\n  if (heroH1) {\n    function wrapWords(node) {\n      if (node.nodeType === 3) { \/\/ text node\n        var text = node.textContent;\n        var parts = text.split(\/(\\s+)\/);\n        var frag = document.createDocumentFragment();\n        parts.forEach(function (p) {\n          if (!p) return;\n          if (\/^\\s+$\/.test(p)) {\n            frag.appendChild(document.createTextNode(p));\n          } else {\n            var span = document.createElement('span');\n            span.className = 'rb-word';\n            span.textContent = p;\n            frag.appendChild(span);\n          }\n        });\n        node.parentNode.replaceChild(frag, node);\n      } else if (node.nodeType === 1) {\n        \/\/ Treat <strong> (and any other styled inline element we don't want\n        \/\/ to break) as a single word \u2014 add the class directly, don't recurse.\n        \/\/ Recursing into <strong> would break the shimmer effect because\n        \/\/ -webkit-text-fill-color: transparent inherits to child spans but\n        \/\/ the background gradient doesn't.\n        if (node.tagName === 'STRONG' || node.tagName === 'EM') {\n          node.classList.add('rb-word');\n          return;\n        }\n        \/\/ Element node \u2014 recurse into children (clone array first since we mutate)\n        Array.prototype.slice.call(node.childNodes).forEach(wrapWords);\n      }\n    }\n    wrapWords(heroH1);\n\n    var words = heroH1.querySelectorAll('.rb-word');\n    words.forEach(function (w, i) {\n      w.style.transitionDelay = (i * 0.07) + 's';\n    });\n\n    \/\/ Trigger on next frame so the initial hidden state paints first\n    requestAnimationFrame(function () {\n      requestAnimationFrame(function () {\n        heroH1.classList.add('rb-words-in');\n      });\n    });\n  }\n\n  \/* ============================================================\n     11 \u00b7 CURSOR SPOTLIGHT on hero\n     Updates --mx \/ --my CSS variables on mousemove.\n     Disabled on touch devices (no hover capability).\n     ============================================================ *\/\n  var hero = root.querySelector('.rb-hero');\n  if (hero && window.matchMedia('(hover: hover) and (pointer: fine)').matches) {\n    var rafSpotlight = null;\n    var lastMx = 50, lastMy = 50;\n    hero.addEventListener('mousemove', function (e) {\n      var rect = hero.getBoundingClientRect();\n      lastMx = ((e.clientX - rect.left) \/ rect.width) * 100;\n      lastMy = ((e.clientY - rect.top) \/ rect.height) * 100;\n      if (rafSpotlight) return;\n      rafSpotlight = requestAnimationFrame(function () {\n        hero.style.setProperty('--mx', lastMx + '%');\n        hero.style.setProperty('--my', lastMy + '%');\n        rafSpotlight = null;\n      });\n    });\n  }\n\n  \/* ============================================================\n     12 \u00b7 3D TILT on featured cards\n     Subtle perspective rotation on mouse position.\n     Desktop only. Lerped via raf for smoothness.\n     ============================================================ *\/\n  function setupTilt(card) {\n    var current = { rx: 0, ry: 0 };\n    var target = { rx: 0, ry: 0 };\n    var rafTilt = null;\n    var hovering = false;\n\n    function loop() {\n      current.rx += (target.rx - current.rx) * 0.18;\n      current.ry += (target.ry - current.ry) * 0.18;\n      card.style.transform =\n        'perspective(1000px) rotateX(' + current.rx.toFixed(2) + 'deg) rotateY(' + current.ry.toFixed(2) + 'deg) translateY(' + (hovering ? '-4px' : '0') + ')';\n      if (Math.abs(current.rx - target.rx) > 0.01 || Math.abs(current.ry - target.ry) > 0.01 || hovering) {\n        rafTilt = requestAnimationFrame(loop);\n      } else {\n        card.style.transform = '';\n        rafTilt = null;\n      }\n    }\n\n    card.addEventListener('mouseenter', function () {\n      hovering = true;\n      if (!rafTilt) rafTilt = requestAnimationFrame(loop);\n    });\n    card.addEventListener('mousemove', function (e) {\n      var rect = card.getBoundingClientRect();\n      var x = (e.clientX - rect.left) \/ rect.width;\n      var y = (e.clientY - rect.top) \/ rect.height;\n      target.ry = (x - 0.5) * 6;   \/\/ max 3deg either way\n      target.rx = (y - 0.5) * -5;  \/\/ max 2.5deg either way\n      if (!rafTilt) rafTilt = requestAnimationFrame(loop);\n    });\n    card.addEventListener('mouseleave', function () {\n      hovering = false;\n      target.rx = 0;\n      target.ry = 0;\n      if (!rafTilt) rafTilt = requestAnimationFrame(loop);\n    });\n  }\n\n  if (window.matchMedia('(hover: hover) and (pointer: fine)').matches) {\n    root.querySelectorAll('.rb-feat-card').forEach(setupTilt);\n  }\n\n  \/* ============================================================\n     13 \u00b7 MAGNETIC effect on .rb-magnetic elements\n     Button slightly tracks the cursor when nearby.\n     Desktop only.\n     ============================================================ *\/\n  function setupMagnetic(el, strength) {\n    strength = strength || 0.35;\n    var rafMag = null;\n    var tx = 0, ty = 0;\n\n    el.addEventListener('mousemove', function (e) {\n      var rect = el.getBoundingClientRect();\n      var cx = rect.left + rect.width \/ 2;\n      var cy = rect.top + rect.height \/ 2;\n      tx = (e.clientX - cx) * strength;\n      ty = (e.clientY - cy) * strength;\n      if (rafMag) return;\n      rafMag = requestAnimationFrame(function () {\n        el.style.transform = 'translate(' + tx.toFixed(1) + 'px, ' + ty.toFixed(1) + 'px)';\n        rafMag = null;\n      });\n    });\n    el.addEventListener('mouseleave', function () {\n      el.style.transform = '';\n    });\n  }\n\n  if (window.matchMedia('(hover: hover) and (pointer: fine)').matches) {\n    root.querySelectorAll('.rb-magnetic').forEach(function (el) {\n      setupMagnetic(el, 0.35);\n    });\n  }\n\n})();\n<\/script>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Conte\u00fados \u00b7 Aprenda com Rodolfo Basilio Artigos V\u00eddeos Podcast Drops Newsletter Bastidores An\u00e1lises Casos Reais Artigos V\u00eddeos Podcast Drops Newsletter Bastidores An\u00e1lises Casos Reais Artigos V\u00eddeos Podcast Drops Newsletter Bastidores An\u00e1lises Casos Reais Artigos V\u00eddeos Podcast Drops Newsletter Bastidores An\u00e1lises Casos Reais Biblioteca de Conte\u00fados O que separa as empresas que crescem das que estagnam. Vinte anos analisando empresas. Mais de 10 mil diagn\u00f3sticos. Tudo o que aprendi reunido aqui em artigos, v\u00eddeos, podcast e bastidores. Sem teoria de palco. Sem promessa f\u00e1cil. Em destaque V\u00eddeos Artigos Podcast Drops Newsletter Em destaque O que est\u00e1 rendendo conversa. Empreendedorismo e Lideran\u00e7a Quando voc\u00ea deve apertar as m\u00e3os com seu concorrente? Voc\u00ea j\u00e1 pensou em fundir seu neg\u00f3cio com o de seu concorrente? Em alguns mercados, essa \u00e9 a \u00fanica jogada que faz sentido. Em outros, \u00e9 o caminho mais r\u00e1pido para destruir tudo o que voc\u00ea construiu. Depois de duas d\u00e9cadas vendo fus\u00f5es darem certo e erradas, o que realmente diferencia uma decis\u00e3o acertada de um erro caro. Rodolfo Basilio 04 dez 2025 6 min Ler artigo V\u00eddeos Aulas curtas, ideias diretas \u2192 Podcast Conversas com quem constr\u00f3i \u2192 Estrat\u00e9gia Qual deveria ser o ponto ideal de foco no seu neg\u00f3cio? Vinte anos vendo empres\u00e1rios bem-sucedidos em mais de um neg\u00f3cio. E ainda mais vendo bons neg\u00f3cios morrerem por falta de foco. 27 nov 2025 5 min Lideran\u00e7a Voc\u00ea \u00e9 empres\u00e1rio ou empreendedor? A diferen\u00e7a entre os dois pode explicar por que tantos neg\u00f3cios promissores nunca passam dos primeiros anos. N\u00e3o \u00e9 sem\u00e2ntica. 05 ago 2025 4 min V\u00eddeos Aulas curtas, ideias diretas. V\u00eddeo em destaque An\u00e1lises diretas sobre o que realmente funciona para crescer sua empresa no Reino Unido. Estrat\u00e9gia An\u00e1lise direta \u00b7 Rodolfo Basilio YouTube Financeiro An\u00e1lise direta \u00b7 Rodolfo Basilio YouTube Lideran\u00e7a An\u00e1lise direta \u00b7 Rodolfo Basilio YouTube Ver canal no YouTube \u2192 Artigos Tudo o que escrevi at\u00e9 aqui. Todos Estrat\u00e9gia Empreendedorismo &amp; Lideran\u00e7a Financiamento Finan\u00e7as Estrat\u00e9gia Quais li\u00e7\u00f5es de neg\u00f3cios aprendi jogando Damas? Como os relacionamentos com bancos se alteram em cada fase do crescimento de uma empresa. Out 2025 7 min de leitura Estrat\u00e9gia Um neg\u00f3cio sem uma receita \u00e9 uma receita para o desastre O n\u00famero de funcion\u00e1rios cresce. As noites sem dormir come\u00e7am. O que est\u00e1 realmente faltando. Out 2025 6 min de leitura Estrat\u00e9gia Quais fases voc\u00ea deve esperar no crescimento de uma pequena empresa? Desde 2007 acompanhando de perto o sucesso e o fracasso de centenas de empresas. Os padr\u00f5es existem. Out 2025 8 min de leitura Estrat\u00e9gia Como conseguir alcan\u00e7ar as metas do seu neg\u00f3cio? A maioria das pessoas n\u00e3o escreve seus objetivos. Quem escreve, raramente os revisa. Como sair do ciclo. Mar 2025 5 min de leitura Estrat\u00e9gia O seu neg\u00f3cio sofre com a sazonalidade? Vendas que sobem e caem em ciclos previs\u00edveis. Boa not\u00edcia: voc\u00ea n\u00e3o est\u00e1 sozinho. Melhor not\u00edcia: d\u00e1 para resolver. Mar 2025 5 min de leitura Financiamento 9 \u00f3timas maneiras de arrecadar dinheiro para abrir o pr\u00f3prio neg\u00f3cio Voc\u00ea tem o plano. Sabe quanto precisa investir. Falta a parte mais dif\u00edcil: encontrar o capital. Mar 2025 7 min de leitura Lideran\u00e7a Quando voc\u00ea deve apertar as m\u00e3os com seu concorrente? Fundir o seu neg\u00f3cio com o de um concorrente pode ser o melhor movimento ou o pior erro. Como decidir. Dez 2025 6 min de leitura Estrat\u00e9gia Qual deveria ser o ponto ideal de foco no seu neg\u00f3cio? Empreendedores que sustentam mais de um neg\u00f3cio fazem uma coisa diferente. N\u00e3o \u00e9 talento. Nov 2025 5 min de leitura Lideran\u00e7a Voc\u00ea \u00e9 empres\u00e1rio ou empreendedor? A diferen\u00e7a entre os dois pode explicar por que tantos neg\u00f3cios promissores nunca passam dos primeiros anos. Ago 2025 4 min de leitura Carregar mais Nenhum artigo nessa categoria por enquanto. Em breve. Podcast Conversas longas com quem realmente constr\u00f3i. Entrevistas com empres\u00e1rios brasileiros que est\u00e3o operando no Reino Unido e na Europa. Sem palco motivacional. Os erros, os n\u00fameros, as decis\u00f5es que ningu\u00e9m conta nas redes sociais. 0 Epis\u00f3dios 0 Temporadas 0 Horas de Conte\u00fado Ouvir todos os epis\u00f3dios no Spotify \u2192 Epis\u00f3dios em destaque Drops O dia a dia, em tempo real. @basilio.rodolfo A carregar os \u00faltimos drops&#8230; Seguir no Instagram \u2192 Newsletter Receba as pr\u00f3ximas an\u00e1lises antes de todo mundo. Uma vez por m\u00eas, no e-mail. Os artigos novos, os bastidores das empresas que estou acompanhando e algumas observa\u00e7\u00f5es que ainda n\u00e3o est\u00e3o prontas para publica\u00e7\u00e3o. Nome E-mail Quero receber Sem spam. Cancelar com um clique. Pronto para o pr\u00f3ximo passo? Aplique tudo isso ao seu neg\u00f3cio. Ver as op\u00e7\u00f5es de consultoria \u2191 \u00d7<\/p>","protected":false},"author":4,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"inline_featured_image":false,"footnotes":""},"class_list":["post-2979","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Recursos - Rodolfo Basilio<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/rodolfobasilio.com\/en\/recursos\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Recursos - Rodolfo Basilio\" \/>\n<meta property=\"og:description\" content=\"Conte\u00fados \u00b7 Aprenda com Rodolfo Basilio Artigos V\u00eddeos Podcast Drops Newsletter Bastidores An\u00e1lises Casos Reais Artigos V\u00eddeos Podcast Drops Newsletter Bastidores An\u00e1lises Casos Reais Artigos V\u00eddeos Podcast Drops Newsletter Bastidores An\u00e1lises Casos Reais Artigos V\u00eddeos Podcast Drops Newsletter Bastidores An\u00e1lises Casos Reais Biblioteca de Conte\u00fados O que separa as empresas que crescem das que estagnam. Vinte anos analisando empresas. Mais de 10 mil diagn\u00f3sticos. Tudo o que aprendi reunido aqui em artigos, v\u00eddeos, podcast e bastidores. Sem teoria de palco. Sem promessa f\u00e1cil. Em destaque V\u00eddeos Artigos Podcast Drops Newsletter Em destaque O que est\u00e1 rendendo conversa. Empreendedorismo e Lideran\u00e7a Quando voc\u00ea deve apertar as m\u00e3os com seu concorrente? Voc\u00ea j\u00e1 pensou em fundir seu neg\u00f3cio com o de seu concorrente? Em alguns mercados, essa \u00e9 a \u00fanica jogada que faz sentido. Em outros, \u00e9 o caminho mais r\u00e1pido para destruir tudo o que voc\u00ea construiu. Depois de duas d\u00e9cadas vendo fus\u00f5es darem certo e erradas, o que realmente diferencia uma decis\u00e3o acertada de um erro caro. Rodolfo Basilio 04 dez 2025 6 min Ler artigo V\u00eddeos Aulas curtas, ideias diretas \u2192 Podcast Conversas com quem constr\u00f3i \u2192 Estrat\u00e9gia Qual deveria ser o ponto ideal de foco no seu neg\u00f3cio? Vinte anos vendo empres\u00e1rios bem-sucedidos em mais de um neg\u00f3cio. E ainda mais vendo bons neg\u00f3cios morrerem por falta de foco. 27 nov 2025 5 min Lideran\u00e7a Voc\u00ea \u00e9 empres\u00e1rio ou empreendedor? A diferen\u00e7a entre os dois pode explicar por que tantos neg\u00f3cios promissores nunca passam dos primeiros anos. N\u00e3o \u00e9 sem\u00e2ntica. 05 ago 2025 4 min V\u00eddeos Aulas curtas, ideias diretas. V\u00eddeo em destaque An\u00e1lises diretas sobre o que realmente funciona para crescer sua empresa no Reino Unido. Estrat\u00e9gia An\u00e1lise direta \u00b7 Rodolfo Basilio YouTube Financeiro An\u00e1lise direta \u00b7 Rodolfo Basilio YouTube Lideran\u00e7a An\u00e1lise direta \u00b7 Rodolfo Basilio YouTube Ver canal no YouTube \u2192 Artigos Tudo o que escrevi at\u00e9 aqui. Todos Estrat\u00e9gia Empreendedorismo &amp; Lideran\u00e7a Financiamento Finan\u00e7as Estrat\u00e9gia Quais li\u00e7\u00f5es de neg\u00f3cios aprendi jogando Damas? Como os relacionamentos com bancos se alteram em cada fase do crescimento de uma empresa. Out 2025 7 min de leitura Estrat\u00e9gia Um neg\u00f3cio sem uma receita \u00e9 uma receita para o desastre O n\u00famero de funcion\u00e1rios cresce. As noites sem dormir come\u00e7am. O que est\u00e1 realmente faltando. Out 2025 6 min de leitura Estrat\u00e9gia Quais fases voc\u00ea deve esperar no crescimento de uma pequena empresa? Desde 2007 acompanhando de perto o sucesso e o fracasso de centenas de empresas. Os padr\u00f5es existem. Out 2025 8 min de leitura Estrat\u00e9gia Como conseguir alcan\u00e7ar as metas do seu neg\u00f3cio? A maioria das pessoas n\u00e3o escreve seus objetivos. Quem escreve, raramente os revisa. Como sair do ciclo. Mar 2025 5 min de leitura Estrat\u00e9gia O seu neg\u00f3cio sofre com a sazonalidade? Vendas que sobem e caem em ciclos previs\u00edveis. Boa not\u00edcia: voc\u00ea n\u00e3o est\u00e1 sozinho. Melhor not\u00edcia: d\u00e1 para resolver. Mar 2025 5 min de leitura Financiamento 9 \u00f3timas maneiras de arrecadar dinheiro para abrir o pr\u00f3prio neg\u00f3cio Voc\u00ea tem o plano. Sabe quanto precisa investir. Falta a parte mais dif\u00edcil: encontrar o capital. Mar 2025 7 min de leitura Lideran\u00e7a Quando voc\u00ea deve apertar as m\u00e3os com seu concorrente? Fundir o seu neg\u00f3cio com o de um concorrente pode ser o melhor movimento ou o pior erro. Como decidir. Dez 2025 6 min de leitura Estrat\u00e9gia Qual deveria ser o ponto ideal de foco no seu neg\u00f3cio? Empreendedores que sustentam mais de um neg\u00f3cio fazem uma coisa diferente. N\u00e3o \u00e9 talento. Nov 2025 5 min de leitura Lideran\u00e7a Voc\u00ea \u00e9 empres\u00e1rio ou empreendedor? A diferen\u00e7a entre os dois pode explicar por que tantos neg\u00f3cios promissores nunca passam dos primeiros anos. Ago 2025 4 min de leitura Carregar mais Nenhum artigo nessa categoria por enquanto. Em breve. Podcast Conversas longas com quem realmente constr\u00f3i. Entrevistas com empres\u00e1rios brasileiros que est\u00e3o operando no Reino Unido e na Europa. Sem palco motivacional. Os erros, os n\u00fameros, as decis\u00f5es que ningu\u00e9m conta nas redes sociais. 0 Epis\u00f3dios 0 Temporadas 0 Horas de Conte\u00fado Ouvir todos os epis\u00f3dios no Spotify \u2192 Epis\u00f3dios em destaque Drops O dia a dia, em tempo real. @basilio.rodolfo A carregar os \u00faltimos drops&#8230; Seguir no Instagram \u2192 Newsletter Receba as pr\u00f3ximas an\u00e1lises antes de todo mundo. Uma vez por m\u00eas, no e-mail. Os artigos novos, os bastidores das empresas que estou acompanhando e algumas observa\u00e7\u00f5es que ainda n\u00e3o est\u00e3o prontas para publica\u00e7\u00e3o. Nome E-mail Quero receber Sem spam. Cancelar com um clique. Pronto para o pr\u00f3ximo passo? Aplique tudo isso ao seu neg\u00f3cio. Ver as op\u00e7\u00f5es de consultoria \u2191 \u00d7\" \/>\n<meta property=\"og:url\" content=\"https:\/\/rodolfobasilio.com\/en\/recursos\/\" \/>\n<meta property=\"og:site_name\" content=\"Rodolfo Basilio\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-13T12:32:50+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/i.ytimg.com\/vi\/XNopMGiQ8lI\/maxresdefault.jpg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/rodolfobasilio.com\\\/recursos\\\/\",\"url\":\"https:\\\/\\\/rodolfobasilio.com\\\/recursos\\\/\",\"name\":\"Recursos - Rodolfo Basilio\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/rodolfobasilio.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/rodolfobasilio.com\\\/recursos\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/rodolfobasilio.com\\\/recursos\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i.ytimg.com\\\/vi\\\/XNopMGiQ8lI\\\/maxresdefault.jpg\",\"datePublished\":\"2026-04-12T11:50:25+00:00\",\"dateModified\":\"2026-04-13T12:32:50+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/rodolfobasilio.com\\\/recursos\\\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/rodolfobasilio.com\\\/recursos\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/rodolfobasilio.com\\\/recursos\\\/#primaryimage\",\"url\":\"https:\\\/\\\/i.ytimg.com\\\/vi\\\/XNopMGiQ8lI\\\/maxresdefault.jpg\",\"contentUrl\":\"https:\\\/\\\/i.ytimg.com\\\/vi\\\/XNopMGiQ8lI\\\/maxresdefault.jpg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/rodolfobasilio.com\\\/recursos\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"In\u00edcio\",\"item\":\"https:\\\/\\\/rodolfobasilio.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Recursos\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/rodolfobasilio.com\\\/#website\",\"url\":\"https:\\\/\\\/rodolfobasilio.com\\\/\",\"name\":\"Rodolfo Basilio\",\"description\":\"Consultoria Empresarial e Financeira\",\"publisher\":{\"@id\":\"https:\\\/\\\/rodolfobasilio.com\\\/#\\\/schema\\\/person\\\/5bd0a41175af44c72e1143a143f68ec9\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/rodolfobasilio.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/rodolfobasilio.com\\\/#\\\/schema\\\/person\\\/5bd0a41175af44c72e1143a143f68ec9\",\"name\":\"administrador\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/rodolfobasilio.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/rb-Logo.svg\",\"url\":\"https:\\\/\\\/rodolfobasilio.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/rb-Logo.svg\",\"contentUrl\":\"https:\\\/\\\/rodolfobasilio.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/rb-Logo.svg\",\"width\":49,\"height\":45,\"caption\":\"administrador\"},\"logo\":{\"@id\":\"https:\\\/\\\/rodolfobasilio.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/rb-Logo.svg\"},\"sameAs\":[\"http:\\\/\\\/50v.cb3.mytemp.website\",\"https:\\\/\\\/www.instagram.com\\\/basilio.rodolfo\\\/\",\"https:\\\/\\\/uk.linkedin.com\\\/in\\\/rodolfo-basilio?trk=people-guest_people_search-card\",\"https:\\\/\\\/www.youtube.com\\\/@RodolfoBasilioOficial\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Recursos - Rodolfo Basilio","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/rodolfobasilio.com\/en\/recursos\/","og_locale":"en_GB","og_type":"article","og_title":"Recursos - Rodolfo Basilio","og_description":"Conte\u00fados \u00b7 Aprenda com Rodolfo Basilio Artigos V\u00eddeos Podcast Drops Newsletter Bastidores An\u00e1lises Casos Reais Artigos V\u00eddeos Podcast Drops Newsletter Bastidores An\u00e1lises Casos Reais Artigos V\u00eddeos Podcast Drops Newsletter Bastidores An\u00e1lises Casos Reais Artigos V\u00eddeos Podcast Drops Newsletter Bastidores An\u00e1lises Casos Reais Biblioteca de Conte\u00fados O que separa as empresas que crescem das que estagnam. Vinte anos analisando empresas. Mais de 10 mil diagn\u00f3sticos. Tudo o que aprendi reunido aqui em artigos, v\u00eddeos, podcast e bastidores. Sem teoria de palco. Sem promessa f\u00e1cil. Em destaque V\u00eddeos Artigos Podcast Drops Newsletter Em destaque O que est\u00e1 rendendo conversa. Empreendedorismo e Lideran\u00e7a Quando voc\u00ea deve apertar as m\u00e3os com seu concorrente? Voc\u00ea j\u00e1 pensou em fundir seu neg\u00f3cio com o de seu concorrente? Em alguns mercados, essa \u00e9 a \u00fanica jogada que faz sentido. Em outros, \u00e9 o caminho mais r\u00e1pido para destruir tudo o que voc\u00ea construiu. Depois de duas d\u00e9cadas vendo fus\u00f5es darem certo e erradas, o que realmente diferencia uma decis\u00e3o acertada de um erro caro. Rodolfo Basilio 04 dez 2025 6 min Ler artigo V\u00eddeos Aulas curtas, ideias diretas \u2192 Podcast Conversas com quem constr\u00f3i \u2192 Estrat\u00e9gia Qual deveria ser o ponto ideal de foco no seu neg\u00f3cio? Vinte anos vendo empres\u00e1rios bem-sucedidos em mais de um neg\u00f3cio. E ainda mais vendo bons neg\u00f3cios morrerem por falta de foco. 27 nov 2025 5 min Lideran\u00e7a Voc\u00ea \u00e9 empres\u00e1rio ou empreendedor? A diferen\u00e7a entre os dois pode explicar por que tantos neg\u00f3cios promissores nunca passam dos primeiros anos. N\u00e3o \u00e9 sem\u00e2ntica. 05 ago 2025 4 min V\u00eddeos Aulas curtas, ideias diretas. V\u00eddeo em destaque An\u00e1lises diretas sobre o que realmente funciona para crescer sua empresa no Reino Unido. Estrat\u00e9gia An\u00e1lise direta \u00b7 Rodolfo Basilio YouTube Financeiro An\u00e1lise direta \u00b7 Rodolfo Basilio YouTube Lideran\u00e7a An\u00e1lise direta \u00b7 Rodolfo Basilio YouTube Ver canal no YouTube \u2192 Artigos Tudo o que escrevi at\u00e9 aqui. Todos Estrat\u00e9gia Empreendedorismo &amp; Lideran\u00e7a Financiamento Finan\u00e7as Estrat\u00e9gia Quais li\u00e7\u00f5es de neg\u00f3cios aprendi jogando Damas? Como os relacionamentos com bancos se alteram em cada fase do crescimento de uma empresa. Out 2025 7 min de leitura Estrat\u00e9gia Um neg\u00f3cio sem uma receita \u00e9 uma receita para o desastre O n\u00famero de funcion\u00e1rios cresce. As noites sem dormir come\u00e7am. O que est\u00e1 realmente faltando. Out 2025 6 min de leitura Estrat\u00e9gia Quais fases voc\u00ea deve esperar no crescimento de uma pequena empresa? Desde 2007 acompanhando de perto o sucesso e o fracasso de centenas de empresas. Os padr\u00f5es existem. Out 2025 8 min de leitura Estrat\u00e9gia Como conseguir alcan\u00e7ar as metas do seu neg\u00f3cio? A maioria das pessoas n\u00e3o escreve seus objetivos. Quem escreve, raramente os revisa. Como sair do ciclo. Mar 2025 5 min de leitura Estrat\u00e9gia O seu neg\u00f3cio sofre com a sazonalidade? Vendas que sobem e caem em ciclos previs\u00edveis. Boa not\u00edcia: voc\u00ea n\u00e3o est\u00e1 sozinho. Melhor not\u00edcia: d\u00e1 para resolver. Mar 2025 5 min de leitura Financiamento 9 \u00f3timas maneiras de arrecadar dinheiro para abrir o pr\u00f3prio neg\u00f3cio Voc\u00ea tem o plano. Sabe quanto precisa investir. Falta a parte mais dif\u00edcil: encontrar o capital. Mar 2025 7 min de leitura Lideran\u00e7a Quando voc\u00ea deve apertar as m\u00e3os com seu concorrente? Fundir o seu neg\u00f3cio com o de um concorrente pode ser o melhor movimento ou o pior erro. Como decidir. Dez 2025 6 min de leitura Estrat\u00e9gia Qual deveria ser o ponto ideal de foco no seu neg\u00f3cio? Empreendedores que sustentam mais de um neg\u00f3cio fazem uma coisa diferente. N\u00e3o \u00e9 talento. Nov 2025 5 min de leitura Lideran\u00e7a Voc\u00ea \u00e9 empres\u00e1rio ou empreendedor? A diferen\u00e7a entre os dois pode explicar por que tantos neg\u00f3cios promissores nunca passam dos primeiros anos. Ago 2025 4 min de leitura Carregar mais Nenhum artigo nessa categoria por enquanto. Em breve. Podcast Conversas longas com quem realmente constr\u00f3i. Entrevistas com empres\u00e1rios brasileiros que est\u00e3o operando no Reino Unido e na Europa. Sem palco motivacional. Os erros, os n\u00fameros, as decis\u00f5es que ningu\u00e9m conta nas redes sociais. 0 Epis\u00f3dios 0 Temporadas 0 Horas de Conte\u00fado Ouvir todos os epis\u00f3dios no Spotify \u2192 Epis\u00f3dios em destaque Drops O dia a dia, em tempo real. @basilio.rodolfo A carregar os \u00faltimos drops&#8230; Seguir no Instagram \u2192 Newsletter Receba as pr\u00f3ximas an\u00e1lises antes de todo mundo. Uma vez por m\u00eas, no e-mail. Os artigos novos, os bastidores das empresas que estou acompanhando e algumas observa\u00e7\u00f5es que ainda n\u00e3o est\u00e3o prontas para publica\u00e7\u00e3o. Nome E-mail Quero receber Sem spam. Cancelar com um clique. Pronto para o pr\u00f3ximo passo? Aplique tudo isso ao seu neg\u00f3cio. Ver as op\u00e7\u00f5es de consultoria \u2191 \u00d7","og_url":"https:\/\/rodolfobasilio.com\/en\/recursos\/","og_site_name":"Rodolfo Basilio","article_modified_time":"2026-04-13T12:32:50+00:00","og_image":[{"url":"https:\/\/i.ytimg.com\/vi\/XNopMGiQ8lI\/maxresdefault.jpg","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/rodolfobasilio.com\/recursos\/","url":"https:\/\/rodolfobasilio.com\/recursos\/","name":"Recursos - Rodolfo Basilio","isPartOf":{"@id":"https:\/\/rodolfobasilio.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/rodolfobasilio.com\/recursos\/#primaryimage"},"image":{"@id":"https:\/\/rodolfobasilio.com\/recursos\/#primaryimage"},"thumbnailUrl":"https:\/\/i.ytimg.com\/vi\/XNopMGiQ8lI\/maxresdefault.jpg","datePublished":"2026-04-12T11:50:25+00:00","dateModified":"2026-04-13T12:32:50+00:00","breadcrumb":{"@id":"https:\/\/rodolfobasilio.com\/recursos\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/rodolfobasilio.com\/recursos\/"]}]},{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/rodolfobasilio.com\/recursos\/#primaryimage","url":"https:\/\/i.ytimg.com\/vi\/XNopMGiQ8lI\/maxresdefault.jpg","contentUrl":"https:\/\/i.ytimg.com\/vi\/XNopMGiQ8lI\/maxresdefault.jpg"},{"@type":"BreadcrumbList","@id":"https:\/\/rodolfobasilio.com\/recursos\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"In\u00edcio","item":"https:\/\/rodolfobasilio.com\/"},{"@type":"ListItem","position":2,"name":"Recursos"}]},{"@type":"WebSite","@id":"https:\/\/rodolfobasilio.com\/#website","url":"https:\/\/rodolfobasilio.com\/","name":"Rodolfo Basilio","description":"Business and Financial Consultancy","publisher":{"@id":"https:\/\/rodolfobasilio.com\/#\/schema\/person\/5bd0a41175af44c72e1143a143f68ec9"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/rodolfobasilio.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":["Person","Organization"],"@id":"https:\/\/rodolfobasilio.com\/#\/schema\/person\/5bd0a41175af44c72e1143a143f68ec9","name":"admin","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/rodolfobasilio.com\/wp-content\/uploads\/2025\/03\/rb-Logo.svg","url":"https:\/\/rodolfobasilio.com\/wp-content\/uploads\/2025\/03\/rb-Logo.svg","contentUrl":"https:\/\/rodolfobasilio.com\/wp-content\/uploads\/2025\/03\/rb-Logo.svg","width":49,"height":45,"caption":"administrador"},"logo":{"@id":"https:\/\/rodolfobasilio.com\/wp-content\/uploads\/2025\/03\/rb-Logo.svg"},"sameAs":["http:\/\/50v.cb3.mytemp.website","https:\/\/www.instagram.com\/basilio.rodolfo\/","https:\/\/uk.linkedin.com\/in\/rodolfo-basilio?trk=people-guest_people_search-card","https:\/\/www.youtube.com\/@RodolfoBasilioOficial"]}]}},"_links":{"self":[{"href":"https:\/\/rodolfobasilio.com\/en\/wp-json\/wp\/v2\/pages\/2979","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rodolfobasilio.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/rodolfobasilio.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/rodolfobasilio.com\/en\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/rodolfobasilio.com\/en\/wp-json\/wp\/v2\/comments?post=2979"}],"version-history":[{"count":10,"href":"https:\/\/rodolfobasilio.com\/en\/wp-json\/wp\/v2\/pages\/2979\/revisions"}],"predecessor-version":[{"id":2991,"href":"https:\/\/rodolfobasilio.com\/en\/wp-json\/wp\/v2\/pages\/2979\/revisions\/2991"}],"wp:attachment":[{"href":"https:\/\/rodolfobasilio.com\/en\/wp-json\/wp\/v2\/media?parent=2979"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}