/* Same reading hierarchy as the Swiss board; no opponent or result inference. */
.schedule-page .tournament-graph.playoff-presentation{--graph-card-height:76px;--graph-name-size:16px;--playoff-card-height:76px;--playoff-column:252px;--playoff-podium-width:184px;--graph-column:252px;--graph-gap:40px;--graph-board-width:calc(3 * var(--graph-column) + 2 * var(--graph-gap));--graph-playoff-height:500px;--graph-win:#ce283e;--graph-loss:#92969d}
.schedule-page .tournament-graph.playoff-presentation:has(.champion-panel){--graph-board-width:calc(3 * var(--graph-column) + 3 * var(--graph-gap) + var(--playoff-podium-width))}
.playoff-meaning{display:flex;justify-content:flex-end;gap:16px;padding:8px 14px 0;font-size:12px;color:var(--muted)}
.playoff-meaning>span{display:inline-flex;align-items:center;gap:6px}.playoff-meaning>span:before{content:"";width:8px;height:8px;border-radius:2px;background:var(--graph-win)}.playoff-meaning>.playoff-eliminated:before{background:var(--graph-loss)}
.schedule-page .playoff-presentation .playoff-board{gap:var(--graph-gap);min-height:var(--graph-playoff-height);min-width:0;width:var(--graph-board-width);align-items:stretch}
.schedule-page .playoff-presentation .playoff-round{flex:1 1 0;min-width:0;container:playoff-stage / inline-size}
.schedule-page .tournament-graph.playoff-presentation .playoff-round>.playoff-round-heading{display:grid;grid-template-columns:minmax(0,1fr) auto auto;grid-template-rows:28px 22px 32px;gap:6px 10px;min-height:106px;height:106px;margin-bottom:14px;padding:0 0 10px}
.schedule-page .playoff-presentation .playoff-round-heading>.playoff-round-title{grid-column:1;grid-row:1;font-size:17px;font-weight:650}
.schedule-page .playoff-presentation .playoff-round-format{grid-column:2;grid-row:1;font-size:12px;color:var(--muted)}
.schedule-page .playoff-presentation .playoff-round-heading>.round-state{grid-column:3;grid-row:1;font-size:11px}
.schedule-page .playoff-presentation .playoff-round-time{grid-column:1/-1;grid-row:2;text-align:left}
.schedule-page .playoff-presentation .playoff-round-time>.schedule-time{font-size:12px;text-align:left}
.schedule-page .playoff-presentation .playoff-round-time .schedule-time-text,.schedule-page .playoff-presentation .playoff-round-time [data-schedule-time-input]{text-align:left}
.schedule-page .playoff-presentation .playoff-round-actions{grid-column:1/-1;grid-row:3}
.schedule-page .tournament-graph.playoff-presentation .playoff-board:not(:has(.schedule-plan-link)) .playoff-round>.playoff-round-heading{grid-template-rows:28px 22px;min-height:68px;height:68px}
.schedule-page .tournament-graph.playoff-presentation .playoff-round>.playoff-slots{min-height:calc(4 * var(--playoff-card-height) + 96px);gap:16px;padding-block:4px;justify-content:space-between}
.schedule-page .playoff-presentation .playoff-slot{flex:none;min-width:0;background:transparent}
.schedule-page .playoff-presentation .graph-match{height:var(--playoff-card-height);min-height:var(--playoff-card-height);border-radius:6px;border-color:color-mix(in srgb,var(--line) 90%,var(--text));box-shadow:0 2px 7px #00000008}
.schedule-page .playoff-presentation .graph-match .fixture-card{padding:4px 6px;gap:3px;border-radius:6px}
.schedule-page .playoff-presentation .graph-match .fixture-card .match-teams{grid-template-columns:minmax(0,1fr) 44px minmax(0,1fr);gap:3px;min-height:32px;padding:0}
.schedule-page .playoff-presentation .graph-match .fixture-card .match-team{gap:4px;min-height:32px}
.schedule-page .playoff-presentation .graph-match .fixture-card .match-team-b .team-mark{order:1}
.schedule-page .playoff-presentation .graph-match .fixture-card .team-mark{width:var(--graph-team-mark);height:var(--graph-team-mark);flex-basis:var(--graph-team-mark);background:transparent}
.schedule-page .playoff-presentation .graph-match .fixture-card .team-mark img{padding:0}
.schedule-page .playoff-presentation .graph-match .fixture-card .match-team-name{font-size:var(--graph-team-name-size);font-weight:650;letter-spacing:.02em}
.schedule-page .playoff-presentation .graph-match .fixture-card .match-result{font-size:24px;line-height:32px;gap:3px;color:var(--text)}
.schedule-page .playoff-presentation .graph-match .fixture-card .match-result-pending{font-size:14px;color:var(--muted)}
.schedule-page .playoff-presentation .graph-match .fixture-card .score-separator{font-size:16px}
.schedule-page .playoff-presentation .graph-match .fixture-card .fixture-support-label{font-size:11px;line-height:14px}
.schedule-page .playoff-presentation .graph-match .fixture-card .fixture-support{gap:4px}.schedule-page .playoff-presentation .graph-match .fixture-support .support-track{height:4px}
.schedule-page .playoff-presentation .graph-match .match-completed :is(.match-team:not(.is-winner) .match-team-name,.score-value:not(.is-winner)){color:color-mix(in srgb,var(--graph-loss) 70%,var(--text))}
.schedule-page .playoff-presentation .graph-match .match-completed :is(.match-team.is-winner .match-team-name,.score-value.is-winner){color:var(--graph-win-text,var(--graph-win));font-weight:750}
.schedule-page .playoff-presentation .graph-pending-teams{min-height:42px}.schedule-page .playoff-presentation .graph-pending-mark{width:var(--graph-team-mark);height:var(--graph-team-mark);flex-basis:var(--graph-team-mark)}.schedule-page .playoff-presentation .graph-pending-name{font-size:var(--graph-team-name-size)}
.schedule-page .playoff-presentation .playoff-flow{stroke:var(--graph-win);stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;opacity:.72}
.schedule-page .playoff-presentation .playoff-flow.is-pending{stroke:var(--graph-loss);stroke-dasharray:4 5;opacity:.65}
.schedule-page .playoff-presentation .is-journey-focus{outline:2px solid var(--graph-win);outline-offset:2px;box-shadow:none}
.schedule-page .tournament-graph.playoff-presentation .champion-panel{width:var(--playoff-podium-width);flex:0 0 var(--playoff-podium-width);align-self:center;padding:0;border:1px solid var(--line);border-radius:7px;overflow:hidden;background:var(--surface);box-shadow:0 3px 12px #0000000d}
.schedule-page .playoff-presentation .champion-panel>h2{font-size:16px;font-weight:700;padding:8px;background:var(--graph-win);color:#fff}
.playoff-podium{display:flex;gap:0;align-items:stretch}.playoff-podium-team{display:flex;flex:1 1 0;min-width:0;flex-direction:column;align-items:center;gap:7px;padding:12px 5px;color:var(--text)}.playoff-podium-team+.playoff-podium-team{border-left:1px solid var(--line)}
.playoff-podium-team>strong{font-size:12px;color:var(--graph-win-text,var(--graph-win))}.playoff-podium-team.is-runner-up>strong{color:var(--muted)}
.schedule-page .playoff-presentation .playoff-podium-team .team-mark{width:var(--graph-team-mark);height:var(--graph-team-mark);flex-basis:var(--graph-team-mark);margin:0;background:transparent}
.schedule-page .playoff-presentation .playoff-podium-team .team-mark img{padding:0;background:transparent}
.playoff-podium-team>span:not(.team-mark){font-size:var(--graph-team-name-size);font-weight:700;line-height:1.35;max-width:100%;overflow-wrap:anywhere;text-align:center}.playoff-podium-team:focus-visible{outline:2px solid var(--graph-win);outline-offset:-3px}
/* A compact three-column bracket stays centred; wide monitors do not stretch cards. */
:root[data-theme=dark] .schedule-page .tournament-graph.playoff-presentation{--graph-win-text:#ff8795}
@media(prefers-color-scheme:dark){:root[data-theme=auto] .schedule-page .tournament-graph.playoff-presentation{--graph-win-text:#ff8795}}
@media(min-width:901px){
/* Match the Swiss card proportions while using the space saved by three rounds.
   Keep a ceiling on wide screens and reserve a smaller podium on narrow desktops. */
.schedule-page .tournament-graph.playoff-presentation{--playoff-column:clamp(220px,var(--graph-column),344px);--playoff-podium-width:clamp(160px,calc((100vw - 950px) * .2 + 184px),224px);--playoff-card-height:var(--graph-card-height)}
.schedule-page .tournament-graph.playoff-presentation .playoff-board{width:min(100%,calc(3 * var(--playoff-column) + 2 * var(--graph-gap)));min-height:var(--graph-playoff-height);margin-inline:auto}
.schedule-page .tournament-graph.playoff-presentation:has(.champion-panel) .playoff-board{width:min(100%,calc(3 * var(--playoff-column) + 3 * var(--graph-gap) + var(--playoff-podium-width)))}
.schedule-page .tournament-graph.playoff-presentation .playoff-round>.playoff-round-heading{grid-template-rows:26px 18px 32px;gap:4px 8px;min-height:92px;height:92px;margin-bottom:8px;padding-bottom:6px;flex:none}
.schedule-page .tournament-graph.playoff-presentation .playoff-board:not(:has(.schedule-plan-link)) .playoff-round>.playoff-round-heading{grid-template-rows:26px 18px;min-height:56px;height:56px}
.schedule-page .tournament-graph.playoff-presentation .playoff-board:not(:has(.playoff-round-time :is(.schedule-time-text,[data-schedule-time-form]))) .playoff-round>.playoff-round-heading{grid-template-rows:26px 32px;min-height:70px;height:70px}
.schedule-page .tournament-graph.playoff-presentation .playoff-board:not(:has(.playoff-round-time :is(.schedule-time-text,[data-schedule-time-form]))) .playoff-round-time{display:none}
.schedule-page .tournament-graph.playoff-presentation .playoff-board:not(:has(.playoff-round-time :is(.schedule-time-text,[data-schedule-time-form]))) .playoff-round-actions{grid-row:2}
.schedule-page .tournament-graph.playoff-presentation .playoff-board:not(:has(.schedule-plan-link)):not(:has(.playoff-round-time :is(.schedule-time-text,[data-schedule-time-form]))) .playoff-round>.playoff-round-heading{grid-template-rows:26px;min-height:34px;height:34px}
.schedule-page .tournament-graph.playoff-presentation .playoff-round>.playoff-slots{min-height:calc(4 * (var(--playoff-card-height) + var(--playoff-note-height,12px)) + 44px);gap:12px}
}
.schedule-page .playoff-presentation .draw-bracket-seat .team-mark{width:var(--graph-team-mark);height:var(--graph-team-mark);flex-basis:var(--graph-team-mark)}
.schedule-page .playoff-presentation .draw-bracket-seat>strong{font-size:var(--graph-team-name-size);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media(max-width:900px){.schedule-page .tournament-graph.playoff-presentation{--graph-gap:36px;--graph-column:252px;--playoff-column:252px;--playoff-podium-width:184px;--graph-card-height:76px;--graph-name-size:17px;--graph-playoff-height:500px;--playoff-card-height:76px}.schedule-page .playoff-presentation [data-graph-viewport]{padding:12px 12px 18px}}
/* Only genuinely narrow desktop columns adjust; normal and mobile cards stay large. */
@container playoff-stage (max-width:225px){
.schedule-page .playoff-presentation .graph-match .fixture-card{padding-inline:4px}
.schedule-page .playoff-presentation .graph-match .fixture-card .match-teams{grid-template-columns:minmax(0,1fr) 38px minmax(0,1fr)}
.schedule-page .playoff-presentation .graph-match .fixture-card .match-result{font-size:22px}
}
@media(forced-colors:active){.schedule-page .playoff-presentation .playoff-flow{stroke:CanvasText}.schedule-page .playoff-presentation .champion-panel>h2{background:Canvas;color:CanvasText;border-bottom:2px solid CanvasText}.schedule-page .playoff-presentation .graph-match .match-completed :is(.match-team.is-winner .match-team-name,.score-value.is-winner){color:CanvasText;text-decoration:underline}}

/* Match slots share four tracks. Later rounds sit at their default source-pair
   midpoint; actual reseeded relationships still come from the winner links.
   Independent waiting rosters keep their own natural-height flex layout. */
.schedule-page .tournament-graph.playoff-presentation .playoff-round>.playoff-slots:has(>.playoff-slot){display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:repeat(4,minmax(0,1fr));align-items:center;justify-content:stretch}
.schedule-page .tournament-graph.playoff-presentation .playoff-slots>.playoff-slot{grid-column:1;align-self:center}
.schedule-page .playoff-presentation .playoff-slot[data-round="1"][data-position="1"]{grid-row:1}
.schedule-page .playoff-presentation .playoff-slot[data-round="1"][data-position="2"]{grid-row:2}
.schedule-page .playoff-presentation .playoff-slot[data-round="1"][data-position="3"]{grid-row:3}
.schedule-page .playoff-presentation .playoff-slot[data-round="1"][data-position="4"]{grid-row:4}
.schedule-page .playoff-presentation .playoff-slot[data-round="2"][data-position="1"]{grid-row:1/3}
.schedule-page .playoff-presentation .playoff-slot[data-round="2"][data-position="2"]{grid-row:3/5}
.schedule-page .playoff-presentation .playoff-slot[data-round="3"][data-position="1"]{grid-row:1/5}
