/* Connected competition bracket: geometry comes from the route graph, not CSS adjacency. */
body[data-page="bracket"] .pmc-subpage-main { width:min(1440px,calc(100% - 2rem)); }
#knockoutBracket {
  --bracket-surface:#fff; --bracket-soft:#f2f5fc; --bracket-ink:#142343;
  --bracket-muted:#576880; --bracket-line:#afbbda; --bracket-border:#d8e0ef;
  --bracket-winner:#eef3ff; --bracket-focus:var(--cup-blue,#001e8e);
  width:100%; min-width:0; padding:clamp(12px,2vw,26px); overflow:hidden;
}
body.tpc-site-dark-mode #knockoutBracket {
  --bracket-surface:#14243b; --bracket-soft:#0d1b2f; --bracket-ink:#f4f7ff;
  --bracket-muted:#b7c6dd; --bracket-line:#6179ae; --bracket-border:#3a506e;
  --bracket-winner:#233967; --bracket-focus:var(--cup-yellow,#f1c30b);
}
#knockoutBracket .tpc-bracket-toolbar { display:flex; align-items:center; justify-content:space-between; gap:20px; margin-bottom:24px; }
#knockoutBracket .tpc-bracket-toolbar h2 { color:var(--bracket-ink); font-size:clamp(23px,3vw,32px); line-height:1.15; margin:6px 0; }
#knockoutBracket .tpc-bracket-toolbar p { color:var(--bracket-muted); max-width:620px; line-height:1.6; }
#knockoutBracket .tpc-bracket-toolbar > div > span { color:var(--cup-blue,#001e8e); }
body.tpc-site-dark-mode #knockoutBracket .tpc-bracket-toolbar > div > span { color:var(--cup-yellow,#f1c30b); }
#knockoutBracket .tpc-bracket-tree-section { min-width:0; margin-top:24px; }
#knockoutBracket .tpc-bracket-tree-section h3 { color:var(--bracket-ink); font-size:clamp(17px,2vw,23px); line-height:1.4; font-weight:800; margin:0 0 8px; }
#knockoutBracket .tpc-bracket-tree-heading { display:flex; justify-content:space-between; align-items:center; gap:16px; margin-bottom:16px; }
#knockoutBracket .tpc-bracket-tree-heading > div { min-width:0; }
#knockoutBracket .tpc-bracket-tree-heading p { color:var(--bracket-muted); font-size:13px; line-height:1.5; }
#knockoutBracket .tpc-bracket-round-nav { display:flex; align-items:center; flex-wrap:wrap; gap:8px; padding:14px 0; }
#knockoutBracket .tpc-bracket-round-nav button { border:1px solid var(--bracket-border); background:var(--bracket-surface); color:var(--bracket-ink); border-radius:12px; padding:10px 15px; min-height:44px; font-size:13px; font-weight:800; line-height:1.2; cursor:pointer; }
#knockoutBracket .tpc-bracket-round-nav button:hover,
#knockoutBracket .tpc-bracket-round-nav button[aria-pressed="true"] { background:var(--cup-blue,#001e8e); color:#fff; border-color:var(--cup-blue,#001e8e); }
#knockoutBracket :is(button,select,.tpc-bracket-tree-card):focus-visible { outline:3px solid var(--bracket-focus); outline-offset:3px; }
#knockoutBracket .tpc-bracket-tree-scroll { width:100%; max-width:100%; overflow:visible; border:1px solid var(--bracket-border); border-radius:16px; background:var(--bracket-soft); padding:12px; box-sizing:border-box; }
#knockoutBracket .tpc-bracket-tree { position:relative; margin:0 auto; isolation:isolate; }
#knockoutBracket .tpc-bracket-connectors { position:absolute; inset:0; z-index:0; pointer-events:none; overflow:visible; }
#knockoutBracket .tpc-bracket-connectors path { fill:none; stroke:var(--bracket-line); stroke-width:2; stroke-linejoin:round; }
#knockoutBracket .tpc-bracket-connectors path.is-highlighted { stroke:var(--bracket-focus); stroke-width:3; }
#knockoutBracket .tpc-bracket-round-label { position:absolute; top:0; z-index:2; display:flex; justify-content:space-between; align-items:center; min-height:28px; color:var(--bracket-ink); background:transparent; border:0; border-radius:6px; font-size:11px; font-weight:800; line-height:20px; letter-spacing:.04em; text-transform:uppercase; padding:0 4px; text-align:left; cursor:pointer; }
#knockoutBracket .tpc-bracket-round-label:hover { background:var(--bracket-border); }
#knockoutBracket .tpc-bracket-tree-card { position:absolute; z-index:1; display:flex; flex-direction:column; gap:0; padding:10px; border:1px solid var(--bracket-border); border-radius:14px; background:var(--bracket-surface); color:var(--bracket-ink); box-shadow:0 3px 9px #001e8e08; text-decoration:none; overflow:hidden; box-sizing:border-box; transition:border-color .15s,box-shadow .15s; }
#knockoutBracket .tpc-bracket-tree-card:hover { border-color:var(--bracket-focus); box-shadow:0 4px 16px #001e8e18; }
#knockoutBracket .tpc-bracket-card-meta { display:flex; justify-content:space-between; align-items:center; gap:6px; min-height:20px; margin-bottom:5px; font-size:10px; font-weight:800; letter-spacing:.03em; color:var(--bracket-muted); }
#knockoutBracket .tpc-bracket-card-status { white-space:nowrap; font-size:9px; letter-spacing:.06em; text-transform:uppercase; }
#knockoutBracket .tpc-bracket-card-team { display:grid; grid-template-columns:28px minmax(0,1fr) minmax(28px,max-content); align-items:center; gap:7px; min-height:37px; color:var(--bracket-ink); border-radius:7px; padding:2px 4px; }
#knockoutBracket .tpc-bracket-card-team + .tpc-bracket-card-team { border-top:1px solid var(--bracket-border); }
#knockoutBracket .tpc-bracket-card-team :is(img,.team-logo,.team-logo-shell) { width:26px; height:26px; max-width:26px; max-height:26px; object-fit:contain; border-radius:5px; flex:none; }
#knockoutBracket .tpc-bracket-team-copy { display:block; min-width:0; }
#knockoutBracket .tpc-bracket-team-name { min-width:0; font-size:12px; font-weight:800; line-height:1.25; overflow-wrap:anywhere; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
#knockoutBracket .tpc-bracket-team-score { text-align:center; font-size:17px; font-weight:800; font-variant-numeric:tabular-nums; line-height:1.2; }
#knockoutBracket .tpc-shootout-inline { font-size:.75em; font-weight:800; white-space:nowrap; color:var(--bracket-muted); }
#knockoutBracket :is(.tpc-bracket-team-emblem,.tpc-bracket-team-placeholder) { display:grid; place-items:center; width:26px; height:26px; font-size:10px; font-weight:800; border-radius:6px; color:var(--bracket-muted); background:var(--bracket-soft); overflow:hidden; }
#knockoutBracket .tpc-bracket-card-foot { margin-top:auto; padding-top:5px; color:var(--bracket-muted); font-size:10px; line-height:1.35; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; }
#knockoutBracket .tpc-bracket-card-foot span { display:block; overflow:hidden; text-overflow:ellipsis; }
#knockoutBracket .tpc-bracket-tree-card.is-final { border:2px solid var(--cup-yellow,#f1c30b); box-shadow:0 0 0 4px #f1c30b16; }
#knockoutBracket .tpc-bracket-card-team.is-winner { background:var(--bracket-winner); }
#knockoutBracket .tpc-bracket-tree-card.is-live .tpc-bracket-card-status { background:#dcfce7; color:#14532d; padding:3px 5px; border-radius:5px; }
#knockoutBracket .is-overview-card { padding:5px 7px; border-radius:9px; }
#knockoutBracket .is-overview-card .tpc-bracket-card-meta { min-height:12px; margin:0 0 1px; font-size:8px; line-height:12px; }
#knockoutBracket .is-overview-card .tpc-bracket-card-status { font-size:8px; line-height:11px; }
#knockoutBracket .is-overview-card.is-live .tpc-bracket-card-status { padding:0 3px; }
#knockoutBracket .is-overview-card .tpc-bracket-card-team { grid-template-columns:18px minmax(0,1fr) minmax(23px,max-content); min-height:21px; gap:5px; padding:1px 2px; border-radius:4px; }
#knockoutBracket .is-overview-card :is(.tpc-bracket-team-emblem,.tpc-bracket-team-placeholder,.tpc-bracket-card-team img,.team-logo,.team-logo-shell) { width:18px; height:18px; max-width:18px; max-height:18px; border-radius:3px; font-size:8px; }
#knockoutBracket .is-overview-card .tpc-bracket-team-name { display:block; white-space:nowrap; text-overflow:ellipsis; font-size:11px; line-height:18px; }
#knockoutBracket .is-overview-card .tpc-bracket-team-score { font-size:13px; }
#knockoutBracket .is-overview-card .tpc-bracket-card-foot { margin-top:1px; padding-top:0; font-size:8px; line-height:11px; }
#knockoutBracket .is-overview-card .tpc-bracket-card-foot span { display:none; }
#knockoutBracket .tpc-bracket-view-switch { display:flex; flex-shrink:0; gap:4px; padding:4px; border:1px solid var(--bracket-border); border-radius:13px; background:var(--bracket-soft); }
#knockoutBracket .tpc-bracket-view-switch button { padding:9px 12px; min-height:40px; border:0; border-radius:9px; background:transparent; color:var(--bracket-ink); font-size:12px; font-weight:800; cursor:pointer; }
#knockoutBracket .tpc-bracket-view-switch button[aria-pressed="true"] { background:var(--cup-blue,#001e8e); color:#fff; }
#knockoutBracket .tpc-bracket-round-controls { display:grid; grid-template-columns:auto minmax(0,1fr) auto; align-items:end; gap:10px; margin:0 0 18px; padding:12px; border:1px solid var(--bracket-border); border-radius:14px; background:var(--bracket-soft); }
#knockoutBracket .tpc-bracket-round-controls label { display:block; min-width:0; }
#knockoutBracket .tpc-bracket-round-controls label > span { display:block; margin-bottom:4px; font-size:10px; font-weight:700; color:var(--bracket-muted); }
#knockoutBracket .tpc-bracket-round-controls select { display:block; width:100%; min-width:0; height:44px; border:1px solid var(--bracket-border); border-radius:9px; padding:8px; background:var(--bracket-surface); color:var(--bracket-ink); font-size:16px; font-weight:800; }
#knockoutBracket .tpc-bracket-round-controls button { display:flex; justify-content:center; align-items:center; gap:8px; min-width:44px; min-height:44px; padding:10px; border:1px solid var(--bracket-border); border-radius:9px; background:var(--bracket-surface); color:var(--bracket-ink); font-size:12px; font-weight:800; cursor:pointer; }
#knockoutBracket .tpc-bracket-round-controls button:disabled { opacity:.4; cursor:default; }
#knockoutBracket .tpc-bracket-round-summary { display:flex; justify-content:space-between; align-items:center; gap:10px; margin:0 0 12px; color:var(--bracket-ink); }
#knockoutBracket .tpc-bracket-round-summary h4 { font-size:16px; font-weight:800; }
#knockoutBracket .tpc-bracket-round-summary > span { color:var(--bracket-muted); font-size:12px; white-space:nowrap; }
#knockoutBracket .tpc-bracket-round-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr)); align-items:start; gap:14px; }
#knockoutBracket .tpc-bracket-round-tie { min-width:0; }
#knockoutBracket .is-round-card { position:relative; width:100%; height:140px; padding:8px; }
#knockoutBracket .is-round-card .tpc-bracket-card-meta { min-height:17px; margin-bottom:2px; }
#knockoutBracket .is-round-card .tpc-bracket-card-team { min-height:33px; }
#knockoutBracket .tpc-bracket-round-sources { margin:6px 2px 0; font-size:10px; line-height:1.4; color:var(--bracket-muted); }
#knockoutBracket .tpc-bracket-next-link { display:inline-flex; align-items:center; min-height:36px; padding:6px 2px; border:0; border-radius:5px; background:transparent; color:var(--bracket-focus); font-size:11px; font-weight:800; text-align:left; cursor:pointer; }
#knockoutBracket .tpc-bracket-next-link:hover { text-decoration:underline; }
#knockoutBracket .tpc-bracket-round-footer { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-top:18px; padding-top:14px; border-top:1px solid var(--bracket-border); }
#knockoutBracket .tpc-bracket-round-footer button { min-height:44px; max-width:48%; padding:9px 12px; border:1px solid var(--bracket-border); border-radius:10px; background:var(--bracket-soft); color:var(--bracket-ink); font-size:12px; font-weight:800; cursor:pointer; }
#knockoutBracket .tpc-bracket-placement { margin-top:24px; padding-top:20px; border-top:1px solid var(--bracket-border); color:var(--bracket-ink); }
#knockoutBracket .tpc-bracket-placement .tpc-bracket-tree-card { position:relative; width:100%; height:140px; margin-top:12px; }
#knockoutBracket .tpc-bracket-placement p { color:var(--bracket-muted); font-size:13px; line-height:1.5; }
#knockoutBracket .tpc-bracket-placement h4 { font-size:16px; font-weight:800; margin-bottom:5px; }
#knockoutBracket .tpc-bracket-placement-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),320px)); gap:20px; }
#knockoutBracket .tpc-bracket-placement-tie { max-width:320px; }
#knockoutBracket .tpc-bracket-placement-sources { margin-top:10px; }
@media(max-width:600px) {
  body[data-page="bracket"] .pmc-subpage-main { width:calc(100% - 1rem); }
  #knockoutBracket { border-radius:22px; }
  #knockoutBracket .tpc-bracket-toolbar { align-items:flex-start; flex-direction:column; gap:12px; }
  #knockoutBracket .tpc-bracket-round-nav { gap:6px; }
  #knockoutBracket .tpc-bracket-round-nav button { font-size:11px; padding:10px; }
  #knockoutBracket .tpc-bracket-tree-heading { display:block; }
  #knockoutBracket .tpc-bracket-view-switch { margin-top:12px; width:fit-content; }
  #knockoutBracket .tpc-bracket-control-word { display:none; }
  #knockoutBracket .tpc-bracket-round-controls { gap:7px; padding:9px; }
  #knockoutBracket .tpc-bracket-round-controls select { padding:8px 4px; font-size:16px; }
  #knockoutBracket .tpc-bracket-round-grid { gap:10px; }
  #knockoutBracket .is-round-card { height:132px; padding:8px; }
  #knockoutBracket .is-round-card .tpc-bracket-card-meta { min-height:17px; margin-bottom:2px; }
  #knockoutBracket .is-round-card .tpc-bracket-card-team { min-height:33px; }
}
@media(prefers-reduced-motion:reduce) { #knockoutBracket .tpc-bracket-tree-card { transition:none; } }
@media(max-width:360px) {
  body[data-page="bracket"] .pmc-subpage-main { width:calc(100% - 8px); }
  #knockoutBracket { padding:6px; }
  #knockoutBracket .tpc-bracket-tree-scroll { padding:6px; }
}
/* Read-only qualification previews retain the same route graph and card links. */
#knockoutBracket .tpc-bracket-qualification-notice { margin:0 0 18px; padding:14px 16px; border:1px solid var(--bracket-border); border-left:4px solid var(--cup-yellow,#f1c30b); border-radius:12px; background:var(--bracket-soft); color:var(--bracket-ink); }
#knockoutBracket .tpc-bracket-qualification-heading { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:8px 16px; }
#knockoutBracket .tpc-bracket-qualification-heading > strong { font-size:16px; font-weight:800; }
#knockoutBracket .tpc-bracket-qualification-heading > a { color:var(--bracket-focus); font-size:12px; font-weight:800; padding:5px 0; }
#knockoutBracket .tpc-bracket-qualification-notice p { margin:5px 0 0; color:var(--bracket-muted); font-size:12px; line-height:1.5; }
#knockoutBracket .tpc-bracket-third-pool { padding-top:12px; margin-top:12px; border-top:1px solid var(--bracket-border); }
#knockoutBracket .tpc-bracket-third-pool > strong { font-size:12px; font-weight:800; }
#knockoutBracket .tpc-bracket-third-pool ul { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,170px),1fr)); gap:8px; padding:0; margin:10px 0 0; list-style:none; }
#knockoutBracket .tpc-bracket-third-pool li { min-width:0; padding:8px 10px; border:1px solid var(--bracket-border); border-radius:8px; background:var(--bracket-surface); font-size:11px; font-weight:800; overflow-wrap:anywhere; }
#knockoutBracket .tpc-bracket-third-pool li a { display:block; color:var(--bracket-ink); }
#knockoutBracket .tpc-bracket-third-pool li small { display:block; margin-top:2px; color:var(--bracket-muted); font-size:10px; font-weight:600; }
#knockoutBracket .tpc-bracket-qualification-source { display:block; margin-top:2px; color:var(--bracket-muted); font-size:10px; line-height:1.3; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
#knockoutBracket .tpc-bracket-qualification-source b { display:inline; color:var(--bracket-focus); font-size:inherit; font-weight:800; }
#knockoutBracket .tpc-bracket-card-team.is-projected .tpc-bracket-team-emblem { box-shadow:0 0 0 2px var(--cup-yellow,#f1c30b); }
#knockoutBracket .tpc-bracket-qualification-source.is-confirmed b { color:#12603c; background:#dcfce7; padding:1px 4px; border-radius:4px; }
#knockoutBracket .tpc-bracket-card-team.is-confirmed .tpc-bracket-team-emblem { box-shadow:0 0 0 2px #22a06b; }
body.tpc-site-dark-mode #knockoutBracket .tpc-bracket-qualification-source.is-confirmed b { color:#b5f5d2; background:#174330; }
#knockoutBracket .is-round-card.has-qualification-preview { height:auto; min-height:158px; }
#knockoutBracket .is-round-card.has-qualification-preview .tpc-bracket-card-team { min-height:43px; }
#knockoutBracket .is-overview-card.has-qualification-preview .tpc-bracket-card-team { min-height:34px; }
#knockoutBracket .is-overview-card .tpc-bracket-qualification-source { margin-top:0; font-size:8px; line-height:11px; }
#knockoutBracket .tpc-bracket-qualification-notice a:focus-visible { outline:3px solid var(--bracket-focus); outline-offset:3px; border-radius:3px; }
