:root{
  --navy:#0b1f3a;
  --navy2:#102b4f;
  --red:#b31942;
  --red2:#8f1231;
  --cream:#f7f7fb;
  --ink:#0f172a;
  --line: rgba(15,23,42,.14);
}

/* Page Background */
body{
  color: var(--ink);
  background:
    radial-gradient(circle at 12% 18%, rgba(11,31,58,.08), transparent 36%),
    radial-gradient(circle at 86% 10%, rgba(179,25,66,.10), transparent 40%),
    linear-gradient(180deg, #ffffff, var(--cream));
}

/* Top Flag Stripe */
.flagbar{
  height:10px;
  background:
    linear-gradient(90deg,
      var(--red) 0 20%,
      #fff 20% 40%,
      var(--red) 40% 60%,
      #fff 60% 80%,
      var(--red) 80% 100%);
}

/* Patriotic Header */
.patriot-header{
  position:relative;
  overflow:hidden;
  background:linear-gradient(135deg,var(--navy),var(--navy2));
  color:#fff;
  border-bottom:1px solid rgba(255,255,255,.12);
}

.patriot-header:before{
  content:"";
  position:absolute;
  inset:-50px;
  background-image:
    radial-gradient(circle, rgba(255,255,255,.35) 1px, transparent 1.6px),
    radial-gradient(circle, rgba(255,255,255,.20) 1px, transparent 1.6px);
  background-size:44px 44px, 70px 70px;
  background-position:0 0, 18px 26px;
  opacity:.55;
  transform:rotate(-8deg);
}

.patriot-header > *{
  position:relative;
  z-index:1;
}

.kicker{
  letter-spacing:.14em;
  text-transform:uppercase;
  font-weight:800;
  font-size:.78rem;
  opacity:.92;
}

.subtle{
  color:rgba(255,255,255,.75);
}

/* Cards */
.card{
  border:1px solid var(--line);
  border-radius:1rem;
  box-shadow:0 14px 34px rgba(2,6,23,.08);
  background:#fff;
}

/* Party Pills */
.party-pill{
  display:inline-flex;
  align-items:center;
  gap:.5rem;
  border-radius:999px;
  padding:.45rem .85rem;
  font-weight:800;
  letter-spacing:.02em;
  border:1px solid rgba(15,23,42,.15);
  background:rgba(255,255,255,.85);
}

.party-pill.dem{
  border-color:rgba(11,31,58,.35);
  background:rgba(11,31,58,.08);
  color:var(--navy);
}

.party-pill.rep{
  border-color:rgba(179,25,66,.35);
  background:rgba(179,25,66,.08);
  color:var(--red2);
}

.dot{
  width:.55rem;
  height:.55rem;
  border-radius:50%;
  display:inline-block;
}

.dot.dem{
  background:var(--navy);
}

.dot.rep{
  background:var(--red);
}

/* Tables */
.table thead th{
  font-size:.78rem;
  letter-spacing:.10em;
  text-transform:uppercase;
  color:rgba(15,23,42,.70);
  border-bottom:1px solid var(--line);
}

.table tbody td{
  border-top:1px solid rgba(15,23,42,.08);
}

.table tbody tr:hover{
  background:rgba(11,31,58,.04);
}

.totals-row{
  background:rgba(15,23,42,.04);
  font-weight:800;
}

/* Footer */
footer{
  border-top:1px solid rgba(15,23,42,.12);
  color:rgba(15,23,42,.72);
}

footer a{
  color:var(--navy);
  text-decoration:underline;
}