<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <meta name="description" content="Senior Benefit Assistance helps you shop, compare, and enroll in Medicare Advantage plans. Speak with a licensed agent or check your 2026 plan options online — free service for Medicare beneficiaries." />
  <meta name="keywords" content="Medicare Advantage, Medicare Advantage plans 2026, Senior Benefit Assistance, Medicare plan comparison, $0 premium Medicare, Medicare Advantage enrollment" />
  <title>Senior Benefit Assistance | Medicare Advantage Plans 2026</title>

  <!-- Open Graph -->
  <meta property="og:title" content="Senior Benefit Assistance | Medicare Advantage Plans 2026" />
  <meta property="og:description" content="Find and compare 2026 Medicare Advantage plans in your area. Free service. Licensed agents available." />
  <meta property="og:type" content="website" />
  <meta property="og:url" content="https://www.seniorbenefitassistance.com" />

  <!-- Favicon placeholder -->
  <link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'><rect width='32' height='32' rx='4' fill='%230a2558'/><text x='6' y='24' font-size='22' fill='%23c0c0c0'>S</text></svg>" />

  <style>
    /* ============================================
       RESET & BASE
    ============================================ */
    *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
    html { scroll-behavior: smooth; }
    body {
      font-family: 'Segoe UI', Arial, Helvetica, sans-serif;
      font-size: 16px;
      color: #1a1a2e;
      background: #fff;
    }
    a { color: inherit; text-decoration: none; }
    img { max-width: 100%; display: block; }

    /* ============================================
       COLORS
    ============================================ */
    :root {
      --navy:       #0a2558;
      --navy-mid:   #1a3a7c;
      --navy-light: #2a52a0;
      --silver:     #c0c0c0;
      --silver-bg:  #e8e8f0;
      --silver-light: #f5f5fa;
      --silver-dark: #9090a8;
      --white:      #ffffff;
      --text-dark:  #0d1b40;
      --text-mid:   #333352;
      --text-light: #6b6b8a;
      --gold:       #d4a017;
      --green:      #1a8c3e;
      --radius:     8px;
    }

    /* ============================================
       UTILITY
    ============================================ */
    .container { max-width: 1160px; margin: 0 auto; padding: 0 20px; }
    .btn-primary {
      display: inline-block;
      background: var(--navy);
      color: var(--white);
      padding: 14px 28px;
      border-radius: var(--radius);
      font-weight: 700;
      font-size: 1rem;
      border: 2px solid var(--navy);
      cursor: pointer;
      transition: background .2s, color .2s;
    }
    .btn-primary:hover { background: var(--navy-mid); border-color: var(--navy-mid); }
    .btn-secondary {
      display: inline-block;
      background: var(--white);
      color: var(--navy);
      padding: 14px 28px;
      border-radius: var(--radius);
      font-weight: 700;
      font-size: 1rem;
      border: 2px solid var(--navy);
      cursor: pointer;
      transition: background .2s, color .2s;
    }
    .btn-secondary:hover { background: var(--silver-bg); }
    .section-title {
      font-size: 2rem;
      font-weight: 800;
      color: var(--navy);
      margin-bottom: 12px;
    }
    .section-sub {
      font-size: 1.1rem;
      color: var(--text-mid);
      margin-bottom: 36px;
      max-width: 620px;
    }
    .sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0,0,0,0); }

    /* ============================================
       TOP BAR (phone)
    ============================================ */
    .top-bar {
      background: var(--navy);
      color: var(--silver);
      text-align: center;
      padding: 10px 20px;
      font-size: .92rem;
      font-weight: 600;
      letter-spacing: .3px;
    }
    .top-bar a {
      color: var(--silver);
      font-weight: 800;
      font-size: 1.05rem;
      white-space: nowrap;
    }
    .top-bar a:hover { color: var(--white); }

    /* ============================================
       NAVBAR
    ============================================ */
    .navbar {
      background: var(--white);
      border-bottom: 2px solid var(--silver-bg);
      position: sticky;
      top: 0;
      z-index: 100;
      box-shadow: 0 2px 8px rgba(10,37,88,.08);
    }
    .navbar-inner {
      display: flex;
      align-items: center;
      justify-content: space-between;
      padding: 14px 20px;
      max-width: 1160px;
      margin: 0 auto;
    }
    .brand { display: flex; flex-direction: column; }
    .brand-name {
      font-size: 1.25rem;
      font-weight: 900;
      color: var(--navy);
      line-height: 1.1;
      letter-spacing: -.3px;
    }
    .brand-tag {
      font-size: .72rem;
      color: var(--silver-dark);
      font-weight: 600;
      letter-spacing: .8px;
      text-transform: uppercase;
    }
    .nav-links { display: flex; align-items: center; gap: 28px; list-style: none; }
    .nav-links a {
      font-size: .93rem;
      font-weight: 600;
      color: var(--text-mid);
      transition: color .2s;
    }
    .nav-links a:hover { color: var(--navy); }
    .nav-cta {
      background: var(--navy);
      color: var(--white) !important;
      padding: 10px 20px;
      border-radius: var(--radius);
      font-weight: 700 !important;
    }
    .nav-cta:hover { background: var(--navy-mid); color: var(--white) !important; }
    .hamburger { display: none; background: none; border: none; cursor: pointer; padding: 4px; }
    .hamburger span {
      display: block; width: 24px; height: 2px; background: var(--navy);
      margin: 5px 0; border-radius: 2px; transition: .3s;
    }

    /* ============================================
       COUNTDOWN BANNER
    ============================================ */
    .countdown-banner {
      background: linear-gradient(90deg, var(--navy-mid), var(--navy-light));
      color: var(--white);
      text-align: center;
      padding: 14px 20px;
      font-size: .98rem;
    }
    .countdown-banner strong { color: var(--silver); }
    #countdown-timer {
      display: inline-flex;
      gap: 16px;
      margin-top: 8px;
    }
    .timer-unit {
      display: flex;
      flex-direction: column;
      align-items: center;
    }
    .timer-num {
      font-size: 1.5rem;
      font-weight: 800;
      color: var(--white);
      line-height: 1;
    }
    .timer-label {
      font-size: .65rem;
      color: var(--silver);
      text-transform: uppercase;
      letter-spacing: 1px;
    }

    /* ============================================
       HERO
    ============================================ */
    .hero {
      background: linear-gradient(135deg, var(--navy) 0%, var(--navy-mid) 60%, var(--navy-light) 100%);
      color: var(--white);
      padding: 72px 20px 80px;
      position: relative;
      overflow: hidden;
    }
    .hero::before {
      content: '';
      position: absolute;
      top: -60px; right: -60px;
      width: 400px; height: 400px;
      background: radial-gradient(circle, rgba(192,192,192,.08) 0%, transparent 70%);
      border-radius: 50%;
    }
    .hero-inner {
      max-width: 1160px;
      margin: 0 auto;
      display: flex;
      flex-direction: column;
      align-items: center;
      text-align: center;
      gap: 32px;
    }
    .hero-badge {
      display: inline-block;
      background: rgba(192,192,192,.18);
      border: 1px solid rgba(192,192,192,.4);
      color: var(--silver);
      font-size: .82rem;
      font-weight: 700;
      letter-spacing: 1.2px;
      text-transform: uppercase;
      padding: 6px 18px;
      border-radius: 100px;
    }
    .hero h1 {
      font-size: clamp(1.8rem, 4vw, 2.9rem);
      font-weight: 900;
      line-height: 1.18;
      max-width: 720px;
      letter-spacing: -.5px;
    }
    .hero h1 em {
      font-style: normal;
      color: var(--silver);
    }
    .hero-sub {
      font-size: 1.1rem;
      color: rgba(255,255,255,.82);
      max-width: 580px;
      line-height: 1.6;
    }
    .hero-actions {
      display: flex;
      flex-wrap: wrap;
      gap: 16px;
      justify-content: center;
      align-items: center;
    }
    .hero-phone-btn {
      display: inline-flex;
      align-items: center;
      gap: 10px;
      background: var(--white);
      color: var(--navy);
      padding: 16px 32px;
      border-radius: var(--radius);
      font-weight: 800;
      font-size: 1.1rem;
      box-shadow: 0 4px 20px rgba(0,0,0,.15);
      transition: transform .2s, box-shadow .2s;
    }
    .hero-phone-btn:hover { transform: translateY(-2px); box-shadow: 0 6px 28px rgba(0,0,0,.2); }
    .hero-phone-btn .icon { font-size: 1.25rem; }
    .hero-divider {
      color: rgba(255,255,255,.5);
      font-size: .9rem;
      font-weight: 600;
    }
    .hero-zip-form {
      display: flex;
      gap: 0;
      border-radius: var(--radius);
      overflow: hidden;
      box-shadow: 0 4px 20px rgba(0,0,0,.15);
    }
    .hero-zip-form input {
      border: none;
      padding: 16px 20px;
      font-size: 1rem;
      width: 180px;
      outline: none;
      font-weight: 600;
      color: var(--navy);
    }
    .hero-zip-form input::placeholder { color: var(--silver-dark); font-weight: 400; }
    .hero-zip-form button {
      background: var(--gold);
      color: var(--navy);
      border: none;
      padding: 16px 24px;
      font-size: 1rem;
      font-weight: 800;
      cursor: pointer;
      transition: background .2s;
    }
    .hero-zip-form button:hover { background: #e8b520; }
    .hero-trust {
      display: flex;
      gap: 28px;
      flex-wrap: wrap;
      justify-content: center;
    }
    .hero-trust-item {
      display: flex;
      align-items: center;
      gap: 8px;
      font-size: .88rem;
      color: rgba(255,255,255,.8);
    }
    .hero-trust-item .check { color: #7dda9e; font-size: 1rem; }

    /* ============================================
       INSURANCE LOGOS
    ============================================ */
    .logos-section {
      background: var(--silver-light);
      padding: 32px 20px;
      border-bottom: 1px solid var(--silver-bg);
    }
    .logos-label {
      text-align: center;
      font-size: .82rem;
      font-weight: 700;
      color: var(--silver-dark);
      text-transform: uppercase;
      letter-spacing: 1.4px;
      margin-bottom: 20px;
    }
    .logos-row {
      display: flex;
      align-items: center;
      justify-content: center;
      flex-wrap: wrap;
      gap: 36px;
    }
    .logo-pill {
      background: var(--white);
      border: 1px solid var(--silver-bg);
      border-radius: 10px;
      padding: 14px 28px;
      font-weight: 900;
      font-size: 1.05rem;
      color: var(--text-mid);
      box-shadow: 0 1px 4px rgba(0,0,0,.06);
      letter-spacing: -.3px;
    }
    .logo-uhc         { color: #00558b; }
    .logo-humana      { color: #008000; }
    .logo-anthem      { color: #003087; }
    .logo-aetna       { color: #7b0d7a; }
    .logo-devoted     { color: #0057a8; }
    .logo-gold        { color: #b8860b; }
    .logo-healthspring{ color: #3d0a50; }
    .logo-wellcare    { color: #e8331c; }

    /* ============================================
       BENEFITS SECTION
    ============================================ */
    .benefits-section {
      padding: 72px 20px;
      background: var(--white);
    }
    .benefits-grid {
      display: grid;
      grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
      gap: 24px;
    }
    .benefit-card {
      background: var(--silver-light);
      border: 1px solid var(--silver-bg);
      border-radius: 12px;
      padding: 32px 28px;
      transition: box-shadow .2s, transform .2s;
    }
    .benefit-card:hover { box-shadow: 0 6px 24px rgba(10,37,88,.1); transform: translateY(-3px); }
    .benefit-icon {
      width: 52px; height: 52px;
      background: var(--navy);
      border-radius: 12px;
      display: flex;
      align-items: center;
      justify-content: center;
      font-size: 1.5rem;
      margin-bottom: 18px;
    }
    .benefit-card h3 {
      font-size: 1.15rem;
      font-weight: 800;
      color: var(--navy);
      margin-bottom: 10px;
    }
    .benefit-card p {
      font-size: .93rem;
      color: var(--text-mid);
      line-height: 1.65;
    }
    .benefit-highlight {
      display: inline-block;
      font-size: 1.55rem;
      font-weight: 900;
      color: var(--green);
      margin-bottom: 4px;
    }

    /* ============================================
       ELIGIBILITY SECTION
    ============================================ */
    .eligibility-section {
      background: linear-gradient(135deg, var(--navy) 0%, var(--navy-mid) 100%);
      padding: 72px 20px;
      color: var(--white);
      text-align: center;
    }
    .eligibility-section .section-title { color: var(--white); }
    .eligibility-section .section-sub { color: rgba(255,255,255,.8); margin: 0 auto 36px; }
    .eligibility-steps {
      display: flex;
      flex-wrap: wrap;
      gap: 24px;
      justify-content: center;
      margin-bottom: 40px;
    }
    .eligibility-step {
      background: rgba(255,255,255,.1);
      border: 1px solid rgba(255,255,255,.15);
      border-radius: 12px;
      padding: 28px 24px;
      flex: 1;
      min-width: 180px;
      max-width: 220px;
      text-align: center;
    }
    .step-num {
      width: 40px; height: 40px;
      background: var(--silver);
      color: var(--navy);
      border-radius: 50%;
      font-weight: 900;
      font-size: 1.1rem;
      display: flex;
      align-items: center;
      justify-content: center;
      margin: 0 auto 14px;
    }
    .eligibility-step h4 {
      font-size: 1rem;
      font-weight: 700;
      margin-bottom: 6px;
    }
    .eligibility-step p { font-size: .88rem; color: rgba(255,255,255,.75); }

    /* ============================================
       REVIEWS
    ============================================ */
    .reviews-section {
      background: var(--silver-light);
      padding: 72px 20px;
    }
    .reviews-header { text-align: center; margin-bottom: 48px; }
    .star-row { color: var(--gold); font-size: 1.4rem; margin-bottom: 6px; }
    .tp-badge {
      display: inline-flex;
      align-items: center;
      gap: 8px;
      background: #00b67a;
      color: var(--white);
      padding: 8px 20px;
      border-radius: 100px;
      font-size: .88rem;
      font-weight: 700;
      margin-top: 10px;
    }
    .reviews-grid {
      display: grid;
      grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
      gap: 24px;
    }
    .review-card {
      background: var(--white);
      border: 1px solid var(--silver-bg);
      border-radius: 12px;
      padding: 28px;
      box-shadow: 0 2px 8px rgba(0,0,0,.05);
    }
    .review-stars { color: var(--gold); font-size: 1rem; margin-bottom: 12px; }
    .review-text {
      font-size: .95rem;
      color: var(--text-mid);
      line-height: 1.65;
      margin-bottom: 16px;
      font-style: italic;
    }
    .reviewer {
      display: flex;
      align-items: center;
      gap: 12px;
    }
    .reviewer-avatar {
      width: 40px; height: 40px;
      border-radius: 50%;
      background: var(--navy);
      color: var(--white);
      display: flex;
      align-items: center;
      justify-content: center;
      font-weight: 700;
      font-size: .95rem;
      flex-shrink: 0;
    }
    .reviewer-name { font-weight: 700; font-size: .9rem; color: var(--navy); }
    .reviewer-date { font-size: .78rem; color: var(--text-light); }

    /* ============================================
       PHONE BANNER
    ============================================ */
    .phone-banner {
      background: var(--navy);
      color: var(--white);
      padding: 56px 20px;
      text-align: center;
    }
    .phone-banner h2 {
      font-size: clamp(1.5rem, 3.5vw, 2.2rem);
      font-weight: 900;
      margin-bottom: 12px;
    }
    .phone-banner p { color: rgba(255,255,255,.75); margin-bottom: 28px; font-size: 1.05rem; }
    .phone-big {
      display: inline-flex;
      align-items: center;
      gap: 14px;
      background: var(--white);
      color: var(--navy);
      padding: 18px 40px;
      border-radius: var(--radius);
      font-size: clamp(1.5rem, 4vw, 2rem);
      font-weight: 900;
      box-shadow: 0 6px 24px rgba(0,0,0,.15);
      transition: transform .2s;
    }
    .phone-big:hover { transform: scale(1.03); }
    .phone-big .ph-icon { font-size: 1.4rem; }
    .hours-note { margin-top: 18px; font-size: .85rem; color: rgba(255,255,255,.6); }

    /* ============================================
       BLOG SECTION
    ============================================ */
    .blog-section {
      padding: 72px 20px;
      background: var(--white);
    }
    .blog-header {
      display: flex;
      align-items: flex-end;
      justify-content: space-between;
      flex-wrap: wrap;
      gap: 16px;
      margin-bottom: 40px;
    }
    .blog-header .section-title { margin-bottom: 6px; }
    .blog-header .section-sub { margin-bottom: 0; }
    .view-all-link {
      font-size: .93rem;
      font-weight: 700;
      color: var(--navy);
      border-bottom: 2px solid var(--silver);
      padding-bottom: 2px;
      white-space: nowrap;
      transition: border-color .2s;
    }
    .view-all-link:hover { border-color: var(--navy); }
    .blog-grid {
      display: grid;
      grid-template-columns: repeat(auto-fit, minmax(270px, 1fr));
      gap: 28px;
    }
    .blog-card {
      border: 1px solid var(--silver-bg);
      border-radius: 12px;
      overflow: hidden;
      transition: box-shadow .2s, transform .2s;
    }
    .blog-card:hover { box-shadow: 0 8px 28px rgba(10,37,88,.1); transform: translateY(-4px); }
    .blog-img {
      height: 170px;
      display: flex;
      align-items: center;
      justify-content: center;
      font-size: 3rem;
    }
    .blog-body { padding: 24px; }
    .blog-tag {
      display: inline-block;
      background: var(--silver-bg);
      color: var(--navy);
      font-size: .72rem;
      font-weight: 700;
      letter-spacing: 1px;
      text-transform: uppercase;
      padding: 4px 12px;
      border-radius: 100px;
      margin-bottom: 12px;
    }
    .blog-card h3 {
      font-size: 1.05rem;
      font-weight: 800;
      color: var(--navy);
      margin-bottom: 10px;
      line-height: 1.4;
    }
    .blog-card p {
      font-size: .88rem;
      color: var(--text-light);
      line-height: 1.6;
      margin-bottom: 16px;
    }
    .blog-meta {
      display: flex;
      align-items: center;
      gap: 10px;
      font-size: .8rem;
      color: var(--text-light);
    }
    .blog-meta .dot { color: var(--silver); }
    .read-more {
      font-size: .88rem;
      font-weight: 700;
      color: var(--navy);
      display: inline-flex;
      align-items: center;
      gap: 4px;
      margin-top: 4px;
    }
    .read-more:hover { color: var(--navy-light); }

    /* ============================================
       FOOTER
    ============================================ */
    footer {
      background: var(--navy);
      color: rgba(255,255,255,.75);
      padding: 56px 20px 32px;
    }
    .footer-grid {
      display: grid;
      grid-template-columns: 2fr 1fr 1fr 1fr;
      gap: 40px;
      max-width: 1160px;
      margin: 0 auto 40px;
    }
    .footer-brand .brand-name { color: var(--white); font-size: 1.2rem; margin-bottom: 10px; }
    .footer-brand p { font-size: .88rem; line-height: 1.65; color: rgba(255,255,255,.6); max-width: 280px; }
    .footer-phone-link {
      display: inline-block;
      margin-top: 16px;
      color: var(--silver);
      font-weight: 700;
      font-size: 1.1rem;
    }
    .footer-col h4 {
      color: var(--white);
      font-size: .92rem;
      font-weight: 700;
      text-transform: uppercase;
      letter-spacing: 1px;
      margin-bottom: 16px;
    }
    .footer-col ul { list-style: none; display: flex; flex-direction: column; gap: 10px; }
    .footer-col a { font-size: .88rem; color: rgba(255,255,255,.6); transition: color .2s; }
    .footer-col a:hover { color: var(--silver); }
    .footer-divider {
      border: none;
      border-top: 1px solid rgba(255,255,255,.1);
      max-width: 1160px;
      margin: 0 auto 28px;
    }
    .footer-bottom {
      max-width: 1160px;
      margin: 0 auto;
    }
    .footer-legal {
      font-size: .75rem;
      color: rgba(255,255,255,.45);
      line-height: 1.75;
      margin-bottom: 20px;
    }
    .footer-legal strong { color: rgba(255,255,255,.65); }
    .footer-copy {
      font-size: .78rem;
      color: rgba(255,255,255,.4);
      display: flex;
      flex-wrap: wrap;
      gap: 16px;
      align-items: center;
      justify-content: space-between;
    }
    .footer-copy a { color: rgba(255,255,255,.5); }
    .footer-copy a:hover { color: var(--silver); }

    /* ============================================
       STICKY MOBILE CTA
    ============================================ */
    .mobile-cta {
      display: none;
      position: fixed;
      bottom: 0; left: 0; right: 0;
      background: var(--navy);
      padding: 14px 20px;
      z-index: 200;
      text-align: center;
      box-shadow: 0 -4px 16px rgba(0,0,0,.2);
    }
    .mobile-cta a {
      display: inline-flex;
      align-items: center;
      gap: 10px;
      color: var(--white);
      font-weight: 800;
      font-size: 1.1rem;
    }
    .pulse-dot {
      width: 10px; height: 10px;
      border-radius: 50%;
      background: #7dda9e;
      animation: pulse 1.6s ease-in-out infinite;
    }
    @keyframes pulse {
      0%,100% { transform: scale(1); opacity: 1; }
      50% { transform: scale(1.4); opacity: .7; }
    }

    /* ============================================
       RESPONSIVE
    ============================================ */
    @media (max-width: 768px) {
      .nav-links { display: none; }
      .hamburger { display: block; }
      .hero { padding: 48px 20px 56px; }
      .hero h1 { font-size: 1.7rem; }
      .hero-zip-form input { width: 130px; }
      .footer-grid { grid-template-columns: 1fr 1fr; gap: 28px; }
      .footer-brand { grid-column: 1 / -1; }
      .mobile-cta { display: block; }
      body { padding-bottom: 60px; }
    }
    @media (max-width: 480px) {
      .hero-actions { flex-direction: column; }
      .hero-zip-form { flex-direction: column; border-radius: var(--radius); }
      .hero-zip-form input { width: 100%; }
      .hero-zip-form button { border-radius: 0 0 var(--radius) var(--radius); }
      .footer-grid { grid-template-columns: 1fr; }
    }
  /* STICKY PHONE */
.sticky-phone{position:fixed;bottom:24px;right:24px;background:var(--navy);color:#fff!important;display:inline-flex;align-items:center;gap:8px;padding:11px 20px;border-radius:40px;font-weight:800;font-size:.9rem;box-shadow:0 4px 18px rgba(10,37,88,.35);z-index:300;transition:transform .2s,box-shadow .2s;white-space:nowrap}
.sticky-phone:hover{transform:translateY(-2px);box-shadow:0 8px 24px rgba(10,37,88,.45);color:#fff!important}
@media(max-width:800px){.sticky-phone{bottom:74px;font-size:.82rem;padding:9px 14px}}
</style>
</head>
<body>

  <!-- TOP BAR -->
  <div class="top-bar">
    Licensed Medicare Advisors — Free Service for Beneficiaries &nbsp;|&nbsp;
    Call Now: <a href="tel:18663403441">1-866-340-3441</a>
    &nbsp;|&nbsp; TTY: 711
  </div>

  <!-- NAVBAR -->
  <nav class="navbar" aria-label="Main navigation">
    <div class="navbar-inner">
      <a href="/" class="brand">
        <span class="brand-name">Senior Benefit Assistance</span>
        <span class="brand-tag">Licensed Medicare Advisors</span>
      </a>
      <ul class="nav-links">
        <li><a href="plans.html">Plan Options</a></li>
        <li><a href="learn.html">Learn About Medicare</a></li>
        <li><a href="#blog">Blog</a></li>
        <li><a href="about.html">About Us</a></li>
        <li><a href="tel:18663403441" class="nav-cta">Check Eligibility</a></li>
      </ul>
      <button class="hamburger" aria-label="Open menu">
        <span></span><span></span><span></span>
      </button>
    </div>
  </nav>

  <!-- COUNTDOWN BANNER -->
  <div class="countdown-banner">
    <div>Annual Enrollment Period opens <strong>Oct 15, 2026</strong> — Start comparing 2027 Medicare Advantage plans</div>
    <div id="countdown-timer">
      <div class="timer-unit"><span class="timer-num" id="t-days">--</span><span class="timer-label">Days</span></div>
      <div class="timer-unit"><span class="timer-num" id="t-hours">--</span><span class="timer-label">Hours</span></div>
      <div class="timer-unit"><span class="timer-num" id="t-min">--</span><span class="timer-label">Mins</span></div>
      <div class="timer-unit"><span class="timer-num" id="t-sec">--</span><span class="timer-label">Secs</span></div>
    </div>
  </div>

  <!-- HERO -->
  <section class="hero" aria-labelledby="hero-heading">
    <div class="hero-inner">
      <span class="hero-badge">&#10003; 2026 Plans Now Available</span>
      <h1 id="hero-heading">
        Shop for a <em>2026 Medicare Advantage</em> plan, your way.
      </h1>
      <p class="hero-sub">
        You may save on out-of-pocket expenses. Our licensed agents will help you find the right coverage — dental, vision, and more — at no cost to you.
      </p>
      <div class="hero-actions">
        <a href="tel:18663403441" class="hero-phone-btn">
          <span class="icon">&#128222;</span>
          Talk to a Licensed Agent<br /><small style="font-weight:400;font-size:.8rem;">1-866-340-3441</small>
        </a>
        <span class="hero-divider">— or —</span>
        <form class="hero-zip-form" action="#" method="get" onsubmit="handleZip(event)">
          <input type="text" name="zip" placeholder="Enter ZIP Code" maxlength="5" pattern="[0-9]{5}" aria-label="ZIP Code" required />
          <button type="submit">Shop Plans &rarr;</button>
        </form>
      </div>
      <div class="hero-trust">
        <span class="hero-trust-item"><span class="check">&#10003;</span> No-cost service</span>
        <span class="hero-trust-item"><span class="check">&#10003;</span> Licensed agents</span>
        <span class="hero-trust-item"><span class="check">&#10003;</span> No obligation to enroll</span>
        <span class="hero-trust-item"><span class="check">&#10003;</span> Local plan experts</span>
      </div>
    </div>
  </section>

  <!-- INSURANCE LOGOS -->
  <section class="logos-section" aria-label="Insurance carriers we work with">
    <p class="logos-label">Carriers We Work With</p>
    <div class="logos-row">
      <div class="logo-pill logo-aetna">Aetna</div>
      <div class="logo-pill logo-anthem">Anthem / BCBS</div>
      <div class="logo-pill logo-devoted">Devoted</div>
      <div class="logo-pill logo-gold">Gold</div>
      <div class="logo-pill logo-healthspring">HealthSpring</div>
      <div class="logo-pill logo-humana">Humana</div>
      <div class="logo-pill logo-uhc">UnitedHealthcare</div>
      <div class="logo-pill logo-wellcare">WellCare</div>
    </div>
  </section>

  <!-- BENEFITS -->
  <section class="benefits-section" id="plans" aria-labelledby="benefits-heading">
    <div class="container">
      <h2 class="section-title" id="benefits-heading">Why Choose Medicare Advantage?</h2>
      <p class="section-sub">Many plans go well beyond Original Medicare — with $0 premiums and extra benefits you won't find anywhere else.</p>
      <div class="benefits-grid">

        <div class="benefit-card">
          <div class="benefit-icon">&#128181;</div>
          <span class="benefit-highlight">$0</span>
          <h3>$0 Premium Plans</h3>
          <p>Many 2026 Medicare Advantage plans carry a $0 monthly premium. You could get more coverage while paying less than you do now.</p>
        </div>

        <div class="benefit-card">
          <div class="benefit-icon">&#129463;</div>
          <h3>Dental &amp; Vision Included</h3>
          <p>Original Medicare doesn't cover most dental or vision care. Medicare Advantage plans often bundle these benefits at little or no extra cost.</p>
        </div>

        <div class="benefit-card">
          <div class="benefit-icon">&#128138;</div>
          <h3>Prescription Drug Coverage</h3>
          <p>Most Medicare Advantage plans include Part D drug coverage, helping you manage the cost of your prescriptions with predictable copays.</p>
        </div>

        <div class="benefit-card">
          <div class="benefit-icon">&#128661;</div>
          <h3>Transportation Benefits</h3>
          <p>Select plans include transportation to medical appointments — so getting to your doctor is one less thing to worry about.</p>
        </div>

        <div class="benefit-card">
          <div class="benefit-icon">&#127968;</div>
          <h3>OTC &amp; Spending Cards</h3>
          <p>Certain plans provide over-the-counter benefit cards, flex spending cards, or grocery allowances for qualifying members.</p>
        </div>

        <div class="benefit-card">
          <div class="benefit-icon">&#128197;</div>
          <h3>Annual Out-of-Pocket Maximum</h3>
          <p>Unlike Original Medicare, Medicare Advantage plans cap your yearly out-of-pocket spending — protecting you from catastrophic costs.</p>
        </div>

      </div>
    </div>
  </section>

  <!-- ELIGIBILITY STEPS -->
  <section class="eligibility-section" id="learn" aria-labelledby="elig-heading">
    <h2 class="section-title" id="elig-heading">How to Get Started</h2>
    <p class="section-sub">It takes just a few minutes to see which plans are available in your area.</p>
    <div class="eligibility-steps">
      <div class="eligibility-step">
        <div class="step-num">1</div>
        <h4>Check Eligibility</h4>
        <p>You must be enrolled in Medicare Part A &amp; B to qualify for a Medicare Advantage plan.</p>
      </div>
      <div class="eligibility-step">
        <div class="step-num">2</div>
        <h4>Compare Plans</h4>
        <p>Enter your ZIP code or speak with an agent to see plans available in your county.</p>
      </div>
      <div class="eligibility-step">
        <div class="step-num">3</div>
        <h4>Review Benefits</h4>
        <p>Our agents walk you through coverage details, network doctors, and extra benefits side by side.</p>
      </div>
      <div class="eligibility-step">
        <div class="step-num">4</div>
        <h4>Enroll</h4>
        <p>Once you've chosen a plan, your agent handles the enrollment paperwork — free of charge.</p>
      </div>
    </div>
    <a href="tel:18663403441" class="btn-secondary" style="background:transparent;color:#fff;border-color:rgba(255,255,255,.5);">
      &#128222; Speak With an Agent — 1-866-340-3441
    </a>
  </section>

  <!-- REVIEWS -->
  <section class="reviews-section" aria-labelledby="reviews-heading">
    <div class="container">
      <div class="reviews-header">
        <div class="star-row">&#9733;&#9733;&#9733;&#9733;&#9733;</div>
        <h2 class="section-title" id="reviews-heading">What Our Clients Are Saying</h2>
        <span class="tp-badge">&#10003; Verified Reviews &nbsp; 4.9 / 5.0</span>
      </div>
      <div class="reviews-grid">

        <div class="review-card">
          <div class="review-stars">&#9733;&#9733;&#9733;&#9733;&#9733;</div>
          <p class="review-text">"The agent was incredibly patient and explained everything clearly. I switched plans and now I pay $0 per month. I couldn't believe how easy it was!"</p>
          <div class="reviewer">
            <div class="reviewer-avatar">MR</div>
            <div>
              <div class="reviewer-name">Margaret R.</div>
              <div class="reviewer-date">Verified Customer &middot; February 2026</div>
            </div>
          </div>
        </div>

        <div class="review-card">
          <div class="review-stars">&#9733;&#9733;&#9733;&#9733;&#9733;</div>
          <p class="review-text">"I called not knowing anything about Medicare Advantage. By the end of the call I had a new plan with dental and vision included. Absolutely wonderful service."</p>
          <div class="reviewer">
            <div class="reviewer-avatar">DT</div>
            <div>
              <div class="reviewer-name">David T.</div>
              <div class="reviewer-date">Verified Customer &middot; January 2026</div>
            </div>
          </div>
        </div>

        <div class="review-card">
          <div class="review-stars">&#9733;&#9733;&#9733;&#9733;&#9733;</div>
          <p class="review-text">"My agent found me a plan with a $250 OTC card and transportation benefits. I never knew these existed. Senior Benefit Assistance changed my life."</p>
          <div class="reviewer">
            <div class="reviewer-avatar">LG</div>
            <div>
              <div class="reviewer-name">Linda G.</div>
              <div class="reviewer-date">Verified Customer &middot; March 2026</div>
            </div>
          </div>
        </div>

      </div>
    </div>
  </section>

  <!-- PHONE BANNER -->
  <section class="phone-banner" aria-labelledby="phone-heading">
    <h2 id="phone-heading">Ready to Find Your 2026 Plan?</h2>
    <p>Our licensed agents are standing by. Call now — it's free, it's fast, and there's no obligation.</p>
    <a href="tel:18663403441" class="phone-big">
      <span class="ph-icon">&#128222;</span>
      1-866-340-3441
    </a>
    <p class="hours-note">Available Monday–Friday 8 AM – 8 PM &nbsp;|&nbsp; Saturday 9 AM – 5 PM &nbsp;|&nbsp; TTY: 711</p>
  </section>

  <!-- BLOG SECTION -->
  <section class="blog-section" id="blog" aria-labelledby="blog-heading">
    <div class="container">
      <div class="blog-header">
        <div>
          <h2 class="section-title" id="blog-heading">Medicare Resources &amp; Blog</h2>
          <p class="section-sub">Stay informed with guides, news, and tips from our licensed Medicare advisors.</p>
        </div>
        <a href="blog.html" class="view-all-link">View All Articles &rarr;</a>
      </div>
      <div class="blog-grid">

        <article class="blog-card">
          <div class="blog-img" style="background: linear-gradient(135deg, #e8e8f0, #c0c8d8);">📋</div>
          <div class="blog-body">
            <span class="blog-tag">Basics</span>
            <h3>What Is Medicare Advantage? A Complete 2026 Guide</h3>
            <p>Learn how Medicare Advantage (Part C) works, what it covers, and how it compares to Original Medicare — in plain language.</p>
            <div class="blog-meta">
              <span>June 12, 2026</span>
              <span class="dot">&middot;</span>
              <span>7 min read</span>
            </div>
            <a href="what-is-medicare-advantage.html" class="read-more">Read Article &#8594;</a>
          </div>
        </article>

        <article class="blog-card">
          <div class="blog-img" style="background: linear-gradient(135deg, #d8e8f0, #a0b8d0);">📅</div>
          <div class="blog-body">
            <span class="blog-tag">2026 Updates</span>
            <h3>2026 Medicare Advantage Plans: What's New This Year</h3>
            <p>Changes to premiums, out-of-pocket caps, extra benefits, and new drug pricing rules that could impact your 2026 coverage.</p>
            <div class="blog-meta">
              <span>May 28, 2026</span>
              <span class="dot">&middot;</span>
              <span>5 min read</span>
            </div>
            <a href="2027-medicare-advantage-changes.html" class="read-more">Read Article &#8594;</a>
          </div>
        </article>

        <article class="blog-card">
          <div class="blog-img" style="background: linear-gradient(135deg, #e0e8d8, #b0c8a0);">⚖️</div>
          <div class="blog-body">
            <span class="blog-tag">Comparison</span>
            <h3>Medicare Advantage vs. Original Medicare: Which Is Right for You?</h3>
            <p>A side-by-side breakdown of costs, coverage, flexibility, and extra benefits to help you make the right decision.</p>
            <div class="blog-meta">
              <span>April 15, 2026</span>
              <span class="dot">&middot;</span>
              <span>6 min read</span>
            </div>
            <a href="medicare-advantage-vs-original-medicare.html" class="read-more">Read Article &#8594;</a>
          </div>
        </article>

        <article class="blog-card">
          <div class="blog-img" style="background: linear-gradient(135deg, #f0e8d8, #d0b888);">💳</div>
          <div class="blog-body">
            <span class="blog-tag">Extra Benefits</span>
            <h3>How to Get an OTC Benefit Card with Your Medicare Plan</h3>
            <p>Many Medicare Advantage plans now include over-the-counter spending cards. Here's how to qualify and what you can buy.</p>
            <div class="blog-meta">
              <span>March 3, 2026</span>
              <span class="dot">&middot;</span>
              <span>4 min read</span>
            </div>
            <a href="otc-benefit-card-medicare.html" class="read-more">Read Article &#8594;</a>
          </div>
        </article>

      </div>
    </div>
  </section>

  <!-- ABOUT SECTION -->
  <section style="background:var(--silver-light); padding:72px 20px;" id="about" aria-labelledby="about-heading">
    <div class="container" style="display:grid;grid-template-columns:1fr 1fr;gap:56px;align-items:center;">
      <div>
        <h2 class="section-title" id="about-heading">About Senior Benefit Assistance</h2>
        <p style="color:var(--text-mid);line-height:1.75;margin-bottom:20px;">
          Senior Benefit Assistance LLC is a licensed Medicare brokerage. We work for you — not the insurance companies — to find the plan that fits your health needs and budget.
        </p>
        <p style="color:var(--text-mid);line-height:1.75;margin-bottom:28px;">
          Our agents are certified, independent Medicare advisors who compare plans across multiple top-rated carriers. We never charge a fee for our service; we're compensated by the carriers when you enroll.
        </p>
        <a href="tel:18663403441" class="btn-primary">&#128222; Talk to an Agent</a>
      </div>
      <div style="background:var(--navy);border-radius:16px;padding:40px;color:#fff;">
        <div style="font-size:2.5rem;font-weight:900;color:var(--silver);margin-bottom:4px;">500+</div>
        <div style="font-size:.95rem;color:rgba(255,255,255,.7);margin-bottom:28px;">Clients helped in the last 12 months</div>
        <div style="font-size:2.5rem;font-weight:900;color:var(--silver);margin-bottom:4px;">10+</div>
        <div style="font-size:.95rem;color:rgba(255,255,255,.7);margin-bottom:28px;">Top-rated carriers compared</div>
        <div style="font-size:2.5rem;font-weight:900;color:var(--silver);margin-bottom:4px;">$0</div>
        <div style="font-size:.95rem;color:rgba(255,255,255,.7);">Cost to use our service — always</div>
      </div>
    </div>
  </section>

  <!-- FOOTER -->
  <footer>
    <div class="footer-grid">
      <div class="footer-brand">
        <div class="brand-name">Senior Benefit Assistance</div>
        <p>A licensed Medicare brokerage helping seniors find the right Medicare Advantage plan.</p>
        <a href="tel:18663403441" class="footer-phone-link">&#128222; 1-866-340-3441</a>
      </div>
      <div class="footer-col">
        <h4>Plans</h4>
        <ul>
          <li><a href="#">Medicare Advantage</a></li>
          <li><a href="#">Dual Eligible (D-SNP)</a></li>
          <li><a href="#">Chronic Care (C-SNP)</a></li>
          <li><a href="#">Medicare Supplement</a></li>
          <li><a href="#">Part D Drug Plans</a></li>
        </ul>
      </div>
      <div class="footer-col">
        <h4>Learn</h4>
        <ul>
          <li><a href="#">What is Medicare?</a></li>
          <li><a href="#">Enrollment Periods</a></li>
          <li><a href="#">Medicare FAQs</a></li>
          <li><a href="blog.html">Blog</a></li>
        </ul>
      </div>
      <div class="footer-col">
        <h4>Company</h4>
        <ul>
          <li><a href="about.html">About Us</a></li>
          <li><a href="#">Contact</a></li>
          <li><a href="#">Privacy Policy</a></li>
          <li><a href="#">Terms of Use</a></li>
          <li><a href="#">Accessibility</a></li>
        </ul>
      </div>
    </div>
    <hr class="footer-divider" />
    <div class="footer-bottom">
    <p class="footer-legal">
      <strong style="color:rgba(255,255,255,.6)">We Do Not Offer Every Plan Available in Your Area.</strong> Currently We Represent 19 Organizations Which offer 193 Products in Your Area. Please Contact <a href="https://www.medicare.gov" target="_blank" rel="noopener">Medicare.gov</a> or 1-800-MEDICARE to get information on all of your options.
    </p>
      <p class="footer-legal">
        <strong>Disclaimer:</strong> Senior Benefit Assistance LLC is a licensed and certified independent Medicare insurance brokerage. We are licensed to sell Medicare Advantage, Medicare Supplement, and Part D Prescription Drug Plans in North Carolina and other licensed states. We are not affiliated with or endorsed by the U.S. Government, Medicare, or any federal or state agency. Enrollment in any Medicare Advantage plan is subject to plan availability in your area and eligibility requirements. Plans are insured through Medicare-contracted insurance companies. Benefits and plan details vary by carrier and service area. Not all plans are available in all areas. This is an advertisement for insurance.
        <br /><br />
        By calling the number above or submitting a form, you agree to be contacted by a licensed insurance agent who may provide information about Medicare Advantage plans. TTY: 711. To learn more about Medicare, visit <a href="https://www.medicare.gov" target="_blank" rel="noopener" style="color:rgba(255,255,255,.5);">Medicare.gov</a>.
      </p>
      <div class="footer-copy">
        <span>&copy; 2026 Senior Benefit Assistance LLC. All rights reserved.</span>
        <span>
          <a href="#">Privacy</a> &nbsp;|&nbsp;
          <a href="#">Terms</a> &nbsp;|&nbsp;
          <a href="#">Accessibility</a>
        </span>
      </div>
    </div>
  </footer>

  <!-- MOBILE STICKY CTA -->
  <div class="mobile-cta" aria-label="Call to action">
    <a href="tel:18663403441">
      <span class="pulse-dot"></span>
      Call Now: 1-866-340-3441
    </a>
  </div>

  <script>
    /* ---------- COUNTDOWN TIMER ---------- */
    (function () {
      // Next AEP: Oct 15, 2026
      var target = new Date('2026-10-15T00:00:00');
      function updateTimer() {
        var now = new Date();
        var diff = target - now;
        if (diff <= 0) {
          document.getElementById('countdown-timer').textContent = 'Open Enrollment Is Live!';
          return;
        }
        var d = Math.floor(diff / 86400000);
        var h = Math.floor((diff % 86400000) / 3600000);
        var m = Math.floor((diff % 3600000) / 60000);
        var s = Math.floor((diff % 60000) / 1000);
        document.getElementById('t-days').textContent  = d;
        document.getElementById('t-hours').textContent = String(h).padStart(2, '0');
        document.getElementById('t-min').textContent   = String(m).padStart(2, '0');
        document.getElementById('t-sec').textContent   = String(s).padStart(2, '0');
      }
      updateTimer();
      setInterval(updateTimer, 1000);
    })();

    /* ---------- ZIP FORM ---------- */
    function handleZip(e) {
      e.preventDefault();
      var zip = e.target.querySelector('input[name="zip"]').value.trim();
      if (/^\d{5}$/.test(zip)) {
        window.location.href = 'tel:18663403441'; // redirect to call for now
      }
    }

    /* ---------- HAMBURGER MENU ---------- */
    document.querySelector('.hamburger').addEventListener('click', function () {
      var nav = document.querySelector('.nav-links');
      if (nav.style.display === 'flex') {
        nav.style.display = 'none';
        nav.style.flexDirection = '';
        nav.style.position = '';
        nav.style.top = '';
        nav.style.left = '';
        nav.style.right = '';
        nav.style.background = '';
        nav.style.padding = '';
        nav.style.boxShadow = '';
        nav.style.flexDirection = '';
      } else {
        nav.style.display = 'flex';
        nav.style.flexDirection = 'column';
        nav.style.position = 'absolute';
        nav.style.top = '100%';
        nav.style.left = '0              