/* Shared by the full schedule and public embed; match data and pairing are unchanged. */
.schedule-page .tournament-graph.swiss-presentation{--graph-card-height:60px;--graph-name-size:16px;--graph-team-mark:27px;--graph-column:238px;--graph-outcome:224px;--graph-gap:36px;--graph-unit:38px;--graph-board-width:1594px;--swiss-match-gap:22px;--graph-win:#ce283e;--graph-loss:#92969d}
.schedule-page .swiss-presentation .swiss-layout{--flow-win:var(--graph-win);--flow-loss:var(--graph-loss)}
.schedule-page .tournament-graph.swiss-presentation .swiss-layout{grid-template-columns:repeat(5,var(--graph-column)) var(--graph-outcome);width:var(--graph-board-width);min-width:0;gap:var(--graph-gap)}
/* Three outcome rows must fit the heading, logo, abbreviation and a visible gap. */
.schedule-page .tournament-graph.swiss-presentation .swiss-layout .round-groups{grid-template-rows:repeat(24,max(38px,var(--graph-unit)))}
.schedule-page .swiss-presentation .round-heading{height:36px;min-height:36px;margin-bottom:12px}
.schedule-page .swiss-presentation .round-heading h2{font-size:16px;font-weight:650}
.schedule-page .swiss-presentation .record-group{margin:0;align-self:stretch;background:transparent;border-color:color-mix(in srgb,var(--line) 70%,transparent);border-radius:6px}
.schedule-page .swiss-presentation .record-heading{height:32px;min-height:32px;padding-inline:8px}
.schedule-page .swiss-presentation .record-heading h3{font-size:16px;font-weight:650}
.schedule-page .swiss-presentation .record-matches{justify-content:space-between;padding:8px 6px;gap:var(--swiss-match-gap)}
.schedule-page .swiss-presentation .graph-match{height:var(--graph-card-height);min-height:var(--graph-card-height);border-radius:5px;border-color:color-mix(in srgb,var(--line) 90%,var(--text));box-shadow:0 2px 7px #00000008}
.schedule-page .swiss-presentation .graph-match .fixture-card{padding:6px 7px;gap:5px;border-radius:5px}
.schedule-page .swiss-presentation .graph-match .fixture-card .match-teams{grid-template-columns:minmax(0,1fr) 44px minmax(0,1fr);gap:5px;min-height:28px;padding:0}
.schedule-page .swiss-presentation .graph-match .fixture-card .match-team{gap:5px;min-height:28px}
.schedule-page .swiss-presentation .graph-match .fixture-card .match-team-b .team-mark{order:1}
.schedule-page .swiss-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 .swiss-presentation .graph-match .fixture-card .match-team-name{font-size:var(--graph-name-size);font-weight:650;letter-spacing:.02em}
.schedule-page .swiss-presentation .graph-match .fixture-card .match-result{font-size:22px;line-height:28px;gap:3px;color:var(--text)}
.schedule-page .swiss-presentation .graph-match .fixture-card .match-result-pending{font-size:13px;color:var(--muted)}
.schedule-page .swiss-presentation .graph-match .fixture-card .score-separator{font-size:15px}
.schedule-page .swiss-presentation .graph-match .fixture-card .fixture-support-label{font-size:10px;line-height:12px}
.schedule-page .swiss-presentation .graph-match .fixture-card .fixture-support{gap:3px}
.schedule-page .swiss-presentation .graph-match .fixture-support .support-track{height:3px}
.schedule-page .swiss-presentation .record-outcome{--outcome-color:var(--graph-win);align-self:start;display:flex;flex-direction:column;justify-content:flex-start;padding:0;gap:0;border:1px solid color-mix(in srgb,var(--outcome-color) 50%,var(--line));border-radius:5px;background:var(--surface);overflow:hidden}
.schedule-page .swiss-presentation .outcome-eliminated{--outcome-color:var(--graph-loss)}
.schedule-page .swiss-presentation .record-outcome>strong{display:flex;justify-content:center;align-items:center;gap:12px;width:100%;box-sizing:border-box;min-height:31px;margin:0;padding:6px 8px;background:var(--outcome-color);color:white;font-size:16px;font-weight:700;line-height:20px}
.schedule-page .swiss-presentation .record-outcome>strong span{padding:0;background:none;color:inherit;font-size:inherit;font-weight:inherit;line-height:inherit}
.schedule-page .swiss-presentation .record-outcome>strong small{font-size:11px;font-weight:500;opacity:.9}
.schedule-page .swiss-presentation .outcome-teams{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-evenly;gap:4px;padding:6px;min-height:64px;box-sizing:border-box}
.schedule-page .swiss-presentation .outcome-entry{flex:1 1 0;min-width:0}
.schedule-page .swiss-presentation .outcome-team{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:3px;width:100%;max-width:100%;min-height:52px;padding:0;box-sizing:border-box}
.schedule-page .swiss-presentation .outcome-team .team-mark{width:var(--graph-team-mark);height:var(--graph-team-mark);flex-basis:var(--graph-team-mark)}
.schedule-page .swiss-presentation .outcome-team>span:not(.team-mark){max-width:100%;font-size:var(--graph-name-size);font-weight:650;line-height:20px;letter-spacing:.02em;color:var(--text)}
.schedule-page .swiss-presentation .outcome-team .outcome-placeholder-mark{background:var(--surface-3);color:var(--muted);clip-path:polygon(8% 4%,92% 4%,88% 65%,50% 98%,12% 65%);font:650 16px/1 Arial,sans-serif}
.schedule-page .swiss-presentation .outcome-team.is-pending{cursor:default}
.schedule-page .swiss-presentation .outcome-team.is-pending:hover{background:transparent}
.schedule-page .swiss-presentation .outcome-empty{display:flex;align-items:center;justify-content:center;font-size:12px;color:var(--muted)}
/* Every round starts at the same y coordinate. Bucket allocations stay 24 rows. */
.schedule-page .swiss-presentation .swiss-round[data-round="1"] .record-group{grid-row:1/25;align-self:stretch}
.schedule-page .swiss-presentation .swiss-round[data-round="2"] .record-group[data-wins="1"]{grid-row:1/13;margin:0 0 10px}
.schedule-page .swiss-presentation .swiss-round[data-round="2"] .record-group[data-losses="1"]{grid-row:13/25;margin:10px 0 0}
.schedule-page .swiss-presentation .swiss-round[data-round="3"] .record-group[data-wins="2"]{grid-row:1/7;margin:0}
.schedule-page .swiss-presentation .swiss-round[data-round="3"] .record-group[data-wins="1"]{grid-row:7/19;margin:10px 0}
.schedule-page .swiss-presentation .swiss-round[data-round="3"] .record-group[data-losses="2"]{grid-row:19/25;margin:0}
.schedule-page .swiss-presentation .swiss-round[data-round="4"] .outcome-qualified{grid-row:1/4}
.schedule-page .swiss-presentation .swiss-round[data-round="4"] .record-group[data-wins="2"]{grid-row:4/13;margin:0 0 10px}
.schedule-page .swiss-presentation .swiss-round[data-round="4"] .record-group[data-losses="2"]{grid-row:13/22;margin:10px 0 0}
.schedule-page .swiss-presentation .swiss-round[data-round="4"] .outcome-eliminated{grid-row:22/25;align-self:end}
.schedule-page .swiss-presentation .swiss-round[data-round="5"] .outcome-qualified{grid-row:3/7}
.schedule-page .swiss-presentation .swiss-round[data-round="5"] .record-group{grid-row:9/18;margin:0}
.schedule-page .swiss-presentation .swiss-round[data-round="5"] .outcome-eliminated{grid-row:20/24}
.schedule-page .swiss-presentation .swiss-final-outcomes .outcome-qualified{grid-row:9/13}
.schedule-page .swiss-presentation .swiss-final-outcomes .outcome-eliminated{grid-row:16/20}
.schedule-page .swiss-presentation .swiss-connections path{stroke-width:1.5;opacity:.68}
.schedule-page .swiss-presentation .flow-loss{stroke-dasharray:4 3}
/* Desktop content and row budgets change together; mobile has its own budget below. */
@media(min-width:901px){
.schedule-page .tournament-graph.swiss-presentation{--swiss-match-gap:4px;--graph-team-mark:24px}
.schedule-page .schedule-panel:has(.swiss-presentation) .schedule-statusbar{padding-block:5px}
.schedule-page .swiss-presentation .round-heading{height:24px;min-height:24px;margin-bottom:4px;padding-bottom:2px}
.schedule-page .swiss-presentation .swiss-layout:has(.schedule-plan-link) .round-heading{height:auto;min-height:60px;align-content:flex-start}
.schedule-page .tournament-graph.swiss-presentation .graph-match-note.is-empty:not(:has([data-schedule-time-input])){height:2px;min-height:2px;line-height:2px}
.schedule-page .swiss-presentation .swiss-round[data-round="2"] .record-group[data-wins="1"]{margin-bottom:2px}
.schedule-page .swiss-presentation .swiss-round[data-round="2"] .record-group[data-losses="1"]{margin-top:2px}
.schedule-page .swiss-presentation .swiss-round[data-round="3"] .record-group[data-wins="1"]{margin-block:2px}
.schedule-page .swiss-presentation .swiss-round[data-round="4"] .outcome-qualified{grid-row:1/5}
.schedule-page .swiss-presentation .swiss-round[data-round="4"] .record-group[data-wins="2"]{grid-row:5/13;margin-bottom:2px}
.schedule-page .swiss-presentation .swiss-round[data-round="4"] .record-group[data-losses="2"]{grid-row:13/21;margin-top:2px}
.schedule-page .swiss-presentation .swiss-round[data-round="4"] .outcome-eliminated{grid-row:21/25}
.schedule-page .tournament-graph.swiss-presentation .swiss-layout .round-groups{grid-template-rows:repeat(24,var(--graph-unit))}
.schedule-page .swiss-presentation .record-heading{height:20px;min-height:20px;padding-inline:6px}
.schedule-page .swiss-presentation .record-heading h3{font-size:14px}
.schedule-page .swiss-presentation .record-matches{padding:2px 4px}
.schedule-page .swiss-presentation .graph-match .fixture-card{padding:3px 4px;gap:2px}
.schedule-page .swiss-presentation .graph-match .fixture-card .match-teams{grid-template-columns:minmax(0,1fr) 36px minmax(0,1fr);gap:3px;min-height:24px}
.schedule-page .swiss-presentation .graph-match .fixture-card .match-team{gap:3px;min-height:24px}
.schedule-page .swiss-presentation .graph-match .fixture-card .team-mark{width:var(--graph-team-mark);height:var(--graph-team-mark);flex-basis:var(--graph-team-mark)}
.schedule-page .swiss-presentation .graph-match .fixture-card .match-result{font-size:20px;line-height:24px;gap:2px}
.schedule-page .swiss-presentation .graph-match .fixture-card .fixture-support{gap:2px}
.schedule-page .swiss-presentation .graph-match .fixture-card .match-team-name[data-tag-length="4"]{font-family:Arial,sans-serif;letter-spacing:0;font-size:clamp(12px,calc((var(--graph-column) - 210px) * .2 + 13px),var(--graph-name-size))}
.schedule-page .swiss-presentation .graph-match .fixture-card .match-team:has([data-tag-length="4"]){gap:2px}
.schedule-page .swiss-presentation .graph-match .fixture-card .match-team:has([data-tag-length="4"]) .team-mark{width:22px;height:22px;flex-basis:22px}
.schedule-page .swiss-presentation .record-outcome>strong{min-height:24px;padding:2px 6px;line-height:20px;font-size:14px;gap:6px}
/* Four rows reserve the complete 24px heading and 48px outcome body. */
.schedule-page .swiss-presentation .outcome-teams{min-height:48px;padding:2px 4px;gap:3px}
.schedule-page .swiss-presentation .outcome-team{flex-direction:column;flex-wrap:nowrap;gap:2px;min-height:44px}
.schedule-page .swiss-presentation .outcome-team>span:not(.team-mark){flex:none;line-height:18px}
.schedule-page .swiss-presentation .outcome-team>span.outcome-team-name[data-tag-length="4"]{font-family:Arial,sans-serif;letter-spacing:0;font-size:clamp(12px,calc((var(--graph-column) - 210px) * .2 + 13px),var(--graph-name-size))}
.schedule-page .swiss-presentation .outcome-team:has([data-tag-length="4"]) .team-mark{width:22px;height:22px;flex-basis:22px}
}
/* Phone diagrams keep readable crests and text, but remove surplus vertical space.
   Notes use a slightly taller shared grid, so the tight R3/R4 buckets still fit. */
@media(max-width:900px){
.schedule-page .tournament-graph.swiss-presentation{--graph-column:252px;--graph-outcome:232px;--graph-board-width:1672px;--graph-gap:36px;--graph-unit:26px;--graph-card-height:52px;--swiss-match-gap:4px}
.schedule-page .tournament-graph.swiss-presentation:has(.graph-match-note:not(.is-empty)){--graph-unit:27.5px}
.schedule-page .tournament-graph.swiss-presentation .swiss-layout .round-groups{grid-template-rows:repeat(24,var(--graph-unit))}
.schedule-page .swiss-presentation .round-heading{height:32px;min-height:32px;margin-bottom:8px}
.schedule-page .swiss-presentation .round-heading h2{font-size:15px}
.schedule-page .swiss-presentation .record-heading{height:24px;min-height:24px;padding:0 6px}
.schedule-page .swiss-presentation .record-matches{padding:2px 4px}
.schedule-page .swiss-presentation .graph-match .fixture-card{padding:2px 6px;gap:2px}
.schedule-page .swiss-presentation .graph-match .fixture-card .fixture-support{gap:1px}
.schedule-page .tournament-graph.swiss-presentation .graph-match-note{height:12px;min-height:12px;line-height:12px}
.schedule-page .tournament-graph.swiss-presentation .graph-match-note .schedule-time [data-schedule-time-input]{height:12px;line-height:12px}
.schedule-page .swiss-presentation .record-outcome>strong{min-height:24px;padding:2px 6px;gap:6px}
.schedule-page .swiss-presentation .outcome-teams{min-height:49px;padding:0 4px}
.schedule-page .swiss-presentation .outcome-team{min-height:49px;gap:2px}
}
@media(forced-colors:active){.schedule-page .swiss-presentation .record-outcome>strong{background:Canvas;color:CanvasText;border-bottom:2px solid CanvasText}.schedule-page .swiss-presentation .outcome-qualified{border-width:3px}}
