.fj-timeline-wrap { max-width: 920px; margin: 0 auto; padding: 24px 16px; font-family: -apple-system, BlinkMacSystemFont, “Segoe UI”, Roboto, Arial, sans-serif; color: #1f2937; } .fj-timeline-header h2 { margin: 0 0 8px; font-size: clamp(1.5rem, 2.5vw, 2rem); color: #0b4f6c; } .fj-timeline-header p { margin: 0 0 24px; color: #4b5563; line-height: 1.5; } .fj-timeline { list-style: none; margin: 0; padding: 0; position: relative; } .fj-timeline::before { content: “”; position: absolute; left: 20px; top: 6px; bottom: 6px; width: 3px; background: linear-gradient(180deg, #0b4f6c, #f28c28); border-radius: 3px; } .fj-item { position: relative; padding: 0 0 28px 60px; } .fj-item:last-child { padding-bottom: 0; } .fj-item::before { content: “”; position: absolute; left: 10px; top: 6px; width: 22px; height: 22px; border-radius: 50%; background: #fff; border: 4px solid #0b4f6c; box-shadow: 0 0 0 4px #fff; z-index: 1; } .fj-item.fj-highlight::before { border-color: #f28c28; background: #fff7ed; } .fj-date { font-size: .82rem; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; color: #0b4f6c; margin: 0 0 6px; } .fj-card { background: #fff; border: 1px solid #e5e7eb; border-left: 5px solid #f28c28; border-radius: 10px; padding: 14px 16px; box-shadow: 0 2px 8px rgba(15, 23, 42, 0.06); } .fj-card h3 { margin: 6px 0 6px; font-size: 1.05rem; line-height: 1.3; color: #111827; } .fj-card p { margin: 0 0 12px; color: #4b5563; line-height: 1.5; } .fj-tag { display: inline-block; font-size: .7rem; font-weight: 700; letter-spacing: .03em; text-transform: uppercase; color: #0b4f6c; background: #e0f2fe; border-radius: 999px; padding: 3px 8px; } .fj-item.fj-highlight .fj-tag { color: #9a3412; background: #ffedd5; } .fj-btn { display: inline-block; background-color: #0b4f6c; color: #fff !important; text-decoration: none !important; font-weight: 700; font-size: .85rem; padding: 8px 16px; border-radius: 6px; transition: background-color 0.2s ease; border: none; cursor: pointer; } .fj-btn:hover { background-color: #083b52; color: #fff !important; } .fj-btn-secondary { background-color: #f28c28; } .fj-btn-secondary:hover { background-color: #d97706; } .fj-notes { margin-top: 28px; padding: 16px; border-radius: 10px; background: #f8fafc; border: 1px solid #e2e8f0; font-size: .88rem; color: #475569; } .fj-notes p { margin: 0 0 8px; } .fj-notes p:last-child { margin-bottom: 0; } @media (max-width: 600px) { .fj-timeline::before { left: 12px; } .fj-item { padding-left: 44px; } .fj-item::before { left: 2px; top: 4px; width: 20px; height: 20px; } .fj-card { padding: 12px; } }
.fj-timeline-wrap { max-width: 920px; margin: 0 auto; padding: 24px 16px; font-family: -apple-system, BlinkMacSystemFont, “Segoe UI”, Roboto, Arial, sans-serif; color: #1f2937; } .fj-timeline-header h2 { margin: 0 0 8px; font-size: clamp(1.5rem, 2.5vw, 2rem); color: #0b4f6c; } .fj-timeline-header p { margin: 0 0 24px; color: #4b5563; line-height: 1.5; } .fj-timeline { list-style: none; margin: 0; padding: 0; position: relative; } .fj-timeline::before { content: “”; position: absolute; left: 20px; top: 6px; bottom: 6px; width: 3px; background: linear-gradient(180deg, #0b4f6c, #f28c28); border-radius: 3px; } .fj-item { position: relative; padding: 0 0 28px 60px; list-style: none; } .fj-item:last-child { padding-bottom: 0; } .fj-item::before { content: “”; position: absolute; left: 10px; top: 6px; width: 22px; height: 22px; border-radius: 50%; background: #fff; border: 4px solid #0b4f6c; box-shadow: 0 0 0 4px #fff; z-index: 1; } .fj-item.fj-highlight::before { border-color: #f28c28; background: #fff7ed; } .fj-date { font-size: .82rem; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; color: #0b4f6c; margin: 0 0 6px; } .fj-card { background: #fff; border: 1px solid #e5e7eb; border-left: 5px solid #f28c28; border-radius: 10px; padding: 14px 16px; box-shadow: 0 2px 8px rgba(15, 23, 42, 0.06); } .fj-card h3 { margin: 6px 0 10px; font-size: 1.05rem; line-height: 1.3; color: #111827; } .fj-card p { margin: 0 0 12px; color: #4b5563; line-height: 1.5; } .fj-tag { display: inline-block; font-size: .7rem; font-weight: 700; letter-spacing: .03em; text-transform: uppercase; color: #0b4f6c; background: #e0f2fe; border-radius: 999px; padding: 3px 8px; } .fj-item.fj-highlight .fj-tag { color: #9a3412; background: #ffedd5; } .fj-btn { display: inline-block; background-color: #0b4f6c; color: #fff !important; text-decoration: none !important; font-weight: 700; font-size: .85rem; padding: 8px 16px; border-radius: 6px; transition: background-color 0.2s ease; } .fj-btn:hover { background-color: #083b52; color: #fff !important; } .fj-btn-secondary { background-color: #f28c28; } .fj-btn-secondary:hover { background-color: #d97706; } @media (max-width: 600px) { .fj-timeline::before { left: 12px; } .fj-item { padding-left: 44px; } .fj-item::before { left: 2px; top: 4px; width: 20px; height: 20px; } .fj-card { padding: 12px; } }

Florida Election Timeline

Upcoming civic and election milestones from October 2026 forward.

  1. Oct. 5, 2026
    2026 General Election

    Voter registration deadline

    Final registration.

    Register to Vote
  2. Oct. 24, 2026
    2026 General Election

    Vote-by-Mail request deadline

    Confirm requests and ballot status.

    Request to Vote by Mail
  3. Oct. 24–Nov. 1, 2026
    2026 General Election

    Early voting window

    Early-vote education and outreach.

    Find Where to Vote
  4. Nov. 3, 2026
    2026 General Election

    GENERAL ELECTION DAY

    Election-day information and monitoring.

    Find Where to Vote

* Vote-by-Mail request deadlines are generally 5 p.m. on the 10th day before Election Day; verify with the relevant Supervisor of Elections.

** Early-voting dates and locations can be established/published locally. Confirm the final Duval County schedule before publishing.

2027 Jacksonville dates shown as expected planning periods are not substitutes for official election notices. Verify with the Florida Division of Elections (dos.fl.gov/elections) and Duval County Supervisor of Elections (duvalelections.gov).