/* Sweeney's Predictions: a feed of dated posts */
.phero { padding: 28px 0 22px; max-width: 760px; margin: 0 auto; }
.phero h1 { font-size: var(--step-4); margin-bottom: 6px; }
.phero p { color: var(--ink-soft); }

.feed { max-width: 760px; margin: 0 auto 56px; display: grid; gap: 28px; }

/* the post card */
.post { background: var(--paper); border: var(--outline); border-radius: var(--radius-card); box-shadow: 5px 5px 0 var(--ink);
        padding: 26px 30px 30px; min-width: 0; }
.post-head { display: flex; align-items: center; gap: 12px; margin-bottom: 14px; }
.avatar { width: 42px; height: 42px; flex: none; border-radius: 50%; border: var(--outline); background: var(--sun);
          display: grid; place-items: center; font-family: var(--display); font-weight: 900; font-size: 0.9rem; }
.post-head .byline { display: block; font-weight: 700; line-height: 1.2; }
.post-head time { display: block; color: var(--ink-soft); font-size: var(--step--1); }
.post-title { font-family: var(--display); font-stretch: 112%; font-weight: 900; font-size: var(--step-3); line-height: 1.1;
              margin: 0 0 18px; }
.post-body > p { font-size: 1.05rem; line-height: 1.7; margin: 0 0 16px; max-width: 68ch; }

/* inline race labels instead of headings */
.post-body .kicker { font-family: var(--display); font-stretch: 112%; font-weight: 900; font-size: var(--step-2); line-height: 1.15;
                     color: var(--ink); margin: 34px 0 10px; }
.post-body .kicker.rule { border-top: 2px solid var(--line); padding-top: 26px; margin-top: 40px; }
.post-body .kicker.rule + .kicker { margin-top: 18px; }      /* "Notes" followed directly by the first race */
.post-body .note { font-size: var(--step--1); line-height: 1.6; color: var(--ink-soft); border-left: 3px solid var(--line);
                   padding: 2px 0 2px 12px; margin: -4px 0 18px; max-width: 68ch; }
.post-body .watch b { font-family: var(--display); font-weight: 900; letter-spacing: 0.02em; }

/* map */
.pmap { margin: 22px 0 26px; }
.pmap figcaption { font-family: var(--display); font-weight: 900; font-size: var(--step-1); text-align: center; margin-bottom: 8px; }
.pmap-svg svg { width: 100%; height: auto; display: block; }
.pmap .state { stroke: none; }
.pmap .pk-d { fill: var(--sky-deep); cursor: pointer; }
.pmap .pk-r { fill: var(--red-deep); cursor: pointer; }
.pmap .pk-n { fill: #EEF1F5; }
.pmap .pk-d:hover, .pmap .pk-r:hover, .pmap .pk-d:focus, .pmap .pk-r:focus { filter: brightness(1.18); outline: none; }
.pmap-legend { display: flex; flex-wrap: wrap; justify-content: center; gap: 6px 18px; margin-top: 10px; font-size: var(--step--1); }
.pmap-legend i { display: inline-block; width: 12px; height: 12px; border-radius: 3px; margin-right: 6px; vertical-align: -1px; }
.pmap-legend i.d { background: var(--sky-deep); } .pmap-legend i.r { background: var(--red-deep); } .pmap-legend i.n { background: #EEF1F5; border: 1px solid var(--line); }
.pmap-legend .muted { flex-basis: 100%; text-align: center; }

/* hover card additions */
.minicard .pickline { margin-bottom: 8px; }
.minicard .pickline b { display: block; font-size: var(--step-0); }

/* status tags */
.ptag { display: inline-block; font-family: var(--display); font-weight: 800; font-size: 0.72rem; letter-spacing: 0.04em;
        text-transform: uppercase; padding: 3px 9px; border-radius: 999px; border: 2px solid var(--ink); white-space: nowrap; }
.ptag.d { background: var(--sky-pale); } .ptag.r { background: var(--red-pale); }

/* scoreboards */
.tallies { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin: 6px 0 22px; }
.tally { border: var(--outline); border-radius: var(--radius-card); padding: 16px 18px 14px; background: var(--paper); min-width: 0; }
.tally-top { display: flex; justify-content: space-between; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 8px; }
.tally-name { font-family: var(--display); font-weight: 900; font-size: var(--step--1); letter-spacing: 0.06em; text-transform: uppercase; }
.score { display: flex; justify-content: space-between; align-items: flex-end; gap: 10px; }
.score .side b { display: block; font-family: var(--display); font-stretch: 125%; font-weight: 900; font-size: clamp(2.2rem, 6vw, 3.1rem);
                 line-height: 1; font-variant-numeric: tabular-nums; }
.score .side span { font-size: var(--step--1); color: var(--ink-soft); }
.score .side.d b { color: var(--sky-deep); } .score .side.r { text-align: right; } .score .side.r b { color: var(--red-deep); }

.seats { position: relative; display: grid; grid-template-rows: repeat(5, 1fr); grid-auto-flow: column; grid-auto-columns: 1fr;
         gap: 3px; margin: 14px 0 24px; }      /* 5 x 20: Democrats fill from the left, Republicans from the right */
.seats i { aspect-ratio: 1; border-radius: 2px; background: var(--line); transition: background-color .25s ease; transition-delay: calc(var(--i) * 12ms); }
.tally.go .seats i.d { background: var(--sky-deep); }
.tally.go .seats i.r { background: var(--red-deep); }
.seats .line, .hbar .line { position: absolute; top: -5px; bottom: -5px; width: 0; border-left: 2px dashed var(--ink); }
.seats .line { left: calc(50% - 1px) !important; }   /* between seat 50 and seat 51 */
.seats .line em, .hbar .line em { position: absolute; top: 100%; transform: translateX(-50%); font-style: normal; font-size: 0.7rem;
                                  white-space: nowrap; color: var(--ink-soft); margin-top: 3px; }

.hbar { position: relative; display: flex; justify-content: space-between; height: 22px; border-radius: 999px; background: var(--line);
        margin: 18px 0 26px; }
.hbar .d, .hbar .r { height: 100%; width: 0; transition: width 1.1s cubic-bezier(.2,.7,.2,1); }
.hbar .d { background: var(--sky-deep); border-radius: 999px 0 0 999px; }
.hbar .r { background: var(--red-deep); border-radius: 0 999px 999px 0; }
.tally.go .hbar .d, .tally.go .hbar .r { width: var(--w); }
.tally-foot { font-size: var(--step--1); color: var(--ink-soft); margin: 0; }

@media (max-width: 640px) {
  .post { padding: 20px 18px 22px; box-shadow: 4px 4px 0 var(--ink); }
  .tallies { grid-template-columns: 1fr; }
  .post-title { font-size: var(--step-2); }
}
@media (prefers-reduced-motion: reduce) {
  .seats i, .hbar .d, .hbar .r { transition: none; }
}
