.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.
-
Oct. 5, 2026
-
Oct. 24, 20262026 General Election
Vote-by-Mail request deadline
Confirm requests and ballot status.
Request to Vote by Mail -
Oct. 24–Nov. 1, 2026
-
Nov. 3, 20262026 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).