/* Dublin Duels (was Dublin Joust): same board as Primetime Joust (shared joust-board / chip-stack / live-game styles), plus taps. */
#dublinJoustPanel { display: grid; gap: 12px; }
#dublinJoustPanel[hidden] { display: none; }
#dublinJoustPanel .dublin-head { display: flex; flex-wrap: wrap; align-items: baseline; gap: 8px 12px; }
#dublinJoustPanel .dublin-head .eyebrow { flex-basis: 100%; margin: 0; }
#dublinJoustPanel .dublin-head h3 { margin: 0; font-family: var(--heading); font-size: 1.6rem; text-transform: uppercase; }
#dublinJoustPanel .dublin-cost { border-color: rgba(255, 189, 74, .6); color: var(--amber); }
#dublinJoustPanel .microcopy { margin: 0; }
#dublinJoustPanel .dublin-summary { display: grid; gap: 4px; padding: 10px 12px; border: 1px solid rgba(255, 189, 74, .35); border-radius: 12px; background: rgba(255, 189, 74, .06); }
#dublinJoustPanel .dublin-mine { margin: 0; font-weight: 700; color: #ffdc92; }
#dublinJoustPanel .joust-board-cell .dublin-line { display: grid; gap: 1px; margin-bottom: 6px; min-width: 0; }
#dublinJoustPanel .joust-board-cell .dublin-line small { color: var(--muted); font-size: .72rem; }
#dublinJoustPanel .dublin-badge { justify-self: start; margin-top: 2px; padding: 1px 7px; border-radius: 999px; background: rgba(97, 255, 137, .16); color: var(--green);
  font-size: .62rem; text-transform: uppercase; letter-spacing: .03em; }
#dublinJoustPanel .dublin-badge.is-td { background: var(--amber); color: #1a1205; }
#dublinJoustPanel .joust-board-cell.is-pickable { cursor: pointer; }
#dublinJoustPanel .joust-board-cell.is-pickable:hover, #dublinJoustPanel .joust-board-cell.is-pickable:focus-visible { background: rgba(255, 189, 74, .1); box-shadow: inset 0 0 0 2px rgba(255, 189, 74, .55); outline: none; }
#dublinJoustPanel .joust-board-cell.is-mine { box-shadow: inset 0 0 0 2px var(--amber); background: rgba(255, 189, 74, .08); }
#dublinJoustPanel .dublin-mine-tag { display: block; margin-top: 4px; color: var(--amber); font-weight: 700; font-size: .7rem; text-transform: uppercase; }
#dublinJoustPanel .dublin-note { color: var(--muted); }
#dublinJoustPanel .dublin-message { margin: 0; color: #ffdc92; font-weight: 700; }
#dublinJoustPanel .joust-board-cell.is-leading { background: rgba(97, 255, 137, .06); box-shadow: inset 3px 0 0 rgba(97, 255, 137, .7); }
#dublinJoustPanel .joust-board-cell.is-leading .joust-board-points { color: var(--green); }

/* Phone layout: Primetime Joust's rules, scoped to Dublin. */
@media (max-width: 700px) {
  #dublinJoustPanel { padding: 12px 10px 14px; }
  #dublinJoustPanel > .microcopy { margin: 4px 2px 10px; font-size: .78rem; }

  /* Scoreboard: one status line, then "KC 17 · 21 BUF" with the leader lit. */
  #dublinJoustPanel .primetime-game-grid .live-game { display: grid; grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
    grid-template-areas: "status status status" "away sep home"; align-items: center; gap: 8px 10px; padding: 12px 14px 14px; text-align: center; }
  #dublinJoustPanel .primetime-game-grid .live-game-status { grid-area: status; display: flex; justify-content: center; align-items: center;
    flex-wrap: wrap; gap: 4px 10px; margin: 0; }
  #dublinJoustPanel .primetime-game-grid .live-game-period { display: inline; grid-column: auto; color: var(--amber); font-family: var(--heading);
    font-size: .95rem; letter-spacing: .04em; text-transform: uppercase; white-space: nowrap; }
  #dublinJoustPanel .primetime-game-grid .live-game-clock { grid-column: auto; grid-row: auto; font-size: 1.35rem; line-height: 1; text-shadow: none; }
  #dublinJoustPanel .primetime-game-grid .live-game-status small { display: none; }
  #dublinJoustPanel .primetime-game-grid .live-game-team { display: flex; align-items: baseline; justify-content: flex-end; gap: 10px; min-width: 0; }
  #dublinJoustPanel .primetime-game-grid .live-game-team:nth-of-type(2) { grid-area: away; }
  #dublinJoustPanel .primetime-game-grid .live-game-team:nth-of-type(3) { grid-area: home; flex-direction: row-reverse; }
  #dublinJoustPanel .primetime-game-grid .live-game-team span { font-family: var(--heading); font-size: 1.6rem; line-height: 1; }
  #dublinJoustPanel .primetime-game-grid .live-game-team strong { font-family: var(--heading); font-size: 2rem; line-height: 1; color: #d9dcea; }
  #dublinJoustPanel .primetime-game-grid .live-game::after { content: "·"; grid-area: sep; color: var(--muted); font-size: 1.4rem; }
  #dublinJoustPanel .joust-matchup[data-leader="away"] .live-game-team:nth-of-type(2) strong,
  #dublinJoustPanel .joust-matchup[data-leader="home"] .live-game-team:nth-of-type(3) strong { color: var(--green); }

  /* Position board: full width, top-aligned, compact. */
  #dublinJoustPanel .joust-positions { padding: 10px 0 0; border: 0; background: none; }
  #dublinJoustPanel .joust-position-status { margin: 0 2px 6px; font-size: .72rem; }
  #dublinJoustPanel .joust-board { margin: 0; }
  #dublinJoustPanel .joust-board th, #dublinJoustPanel .joust-board td { padding: 8px 7px; vertical-align: top; }
  #dublinJoustPanel .joust-board thead th:first-child, #dublinJoustPanel .joust-board tbody th { width: 40px; }
  #dublinJoustPanel .joust-board thead th { font-size: .72rem; }
  #dublinJoustPanel .joust-board tbody th { padding-top: 10px; font-size: .82rem; }
  #dublinJoustPanel .joust-board-player { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: .82rem; }
  #dublinJoustPanel .joust-board-points { display: block; font-size: 1.1rem; line-height: 1.2; }

  /* Riders: compact pills (chip colour · Strikes · name) that wrap, instead of tall chip towers. */
  #dublinJoustPanel .joust-chip-stacks { gap: 4px; margin-top: 6px; }
  #dublinJoustPanel .joust-chip-stack { display: inline-flex; flex-direction: row; align-items: center; gap: 4px; min-width: 0; max-width: 100%;
    padding: 2px 8px 2px 4px; border-radius: 999px; background: hsl(var(--chip-hue) 40% 15%); border: 1px solid hsl(var(--chip-hue) 55% 36%); }
  #dublinJoustPanel .joust-chips { flex-direction: row; }
  #dublinJoustPanel .joust-chips i { display: none; }
  #dublinJoustPanel .joust-chips i.joust-chip-plate { display: block; width: 10px; height: 10px; margin: 0; border: 0; border-radius: 50%;
    background: hsl(var(--chip-hue) 70% 58%); }
  #dublinJoustPanel .joust-chip-stack > b { min-height: 0; font-size: .72rem; }
  #dublinJoustPanel .joust-chip-name { flex: 0 1 auto; min-width: 0; max-width: none; font-size: .68rem; }
}
/* Oct 27: entry payment choice (1 Joust Strike or 1,000 dGems). */
#dublinJoustPanel .dublin-pay-choice { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-top: 10px; padding: 10px 12px; border: 1px solid rgba(255, 189, 74, .45); border-radius: 10px; background: rgba(255, 189, 74, .06); }
#dublinJoustPanel .dublin-pay-choice > p { flex-basis: 100%; margin: 0 0 2px; }
/* Oct 28: Dublin Duels: several Duels at once (one tab each), who started the shown one, and starting a new one. */
#dublinJoustPanel .dublin-duel { display: grid; gap: 12px; }
#dublinJoustPanel .dublin-started { display: flex; justify-content: space-between; align-items: baseline; gap: 8px; margin: 0; color: var(--muted); font-size: .8rem; }
#dublinJoustPanel .dublin-riders { flex: 0 0 auto; padding: 2px 8px; border-radius: 999px; background: rgba(255, 189, 74, .14); color: #ffdc92; font-size: .75rem; font-weight: 600; white-space: nowrap; }
#dublinJoustPanel .dublin-duel-tabs { position: sticky; top: calc(env(safe-area-inset-top, 0px) + 4px); z-index: 2; display: flex; align-items: stretch; gap: 8px; margin: 0 -4px; padding: 6px 4px;
  overflow-x: auto; scrollbar-width: thin; background: var(--panel, #0b0b12); border-radius: 12px; }
#dublinJoustPanel .dublin-duel-count { align-self: center; flex: 0 0 auto; padding-right: 4px; color: var(--muted); font-size: .72rem; letter-spacing: .08em; text-transform: uppercase; white-space: nowrap; }
#dublinJoustPanel .dublin-duel-tab { display: grid; gap: 2px; flex: 0 0 auto; min-width: 118px; padding: 8px 12px; border: 1px solid rgba(255, 255, 255, .14);
  border-radius: 10px; background: rgba(255, 255, 255, .03); color: inherit; font: inherit; text-align: left; cursor: pointer; }
#dublinJoustPanel .dublin-duel-tab strong { font-family: var(--heading); font-size: 1rem; letter-spacing: .02em; }
#dublinJoustPanel .dublin-duel-tab small { color: var(--muted); font-size: .7rem; white-space: nowrap; }
#dublinJoustPanel .dublin-duel-tab.is-entered small { color: #ffdc92; }
#dublinJoustPanel .dublin-duel-tab.is-selected { border-color: var(--amber); background: rgba(255, 189, 74, .1); box-shadow: inset 0 -2px 0 var(--amber); }
#dublinJoustPanel .dublin-duel-tab:focus-visible { outline: 2px solid var(--amber); outline-offset: 2px; }
#dublinJoustPanel .dublin-start { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; padding: 10px 12px; border: 1px dashed rgba(255, 189, 74, .45); border-radius: 12px; }
#dublinJoustPanel .dublin-start .eyebrow, #dublinJoustPanel .dublin-start .microcopy { flex-basis: 100%; margin: 0; }
#dublinJoustPanel .dublin-start select { flex: 1 1 180px; min-width: 0; }
#realmDublinAdminPanel .dublin-admin-duels { display: grid; gap: 6px; margin: 8px 0 0; padding: 0; list-style: none; }
#realmDublinAdminPanel .dublin-admin-duels li { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
