:root {
    --color-up: #B8F2B8;
    --grid-row-height: 1fr;
    --interface-border: var(--glow-color);
    --adjust: 1;
}

#main {
    text-align: left;
}

.frontpage-content {
    --grid-row-height: calc(1em + 1px);
}

.bracket-grid {
    display: grid;
    grid-auto-flow: column;
    max-width: 100%;
    padding: 10px;
}

.bracket-line,
.bracket-spacer {
    text-align: center;
    height: 100%;
}

.bracket-line {
    white-space: nowrap;
}

.bracket-grid-header,
.bracket-team {
    grid-row: span 2;
    display: table;
    border: 1px solid var(--interface-border);
    border-radius: 2px;
    height: 100%;
    width: 100%;
    box-sizing: border-box;
}

.bracket-team {
    transition: all var(--transition-time) ease-in;
}

.bracket-grid-header {
    border: 1px solid var(--interface-border);
    background: var(--interface-background);
    text-align: center;
}

.bracket-header-content,
.bracket-team-name,
.bracket-team-points {
    display: table-cell;
    vertical-align: middle;
}

.bracket-header-content {
    position: relative;
}

.bracket-toggler {
    position: absolute;
    right: 5px;
    top: 50%;
    margin-top: -0.5em;
}

.bracket-team-name {
    padding: 3px;
    min-width: 4em;
    max-width: 0;
    word-wrap: break-word;
}

.fl-section .bracket-team-name {
    word-wrap: normal;
}

.bracket-team-points {
    background: var(--interface-background);
    width: 2em;
    min-width: 2em;
    text-align: center;
    border-left: 1px solid var(--interface-border);
    padding-left: 0;
    padding-right: 0;
}

.bracket-line.reseed {
    position: relative;
}

.bracket-line::after,
.bracket-line::before,
.bracket-spacer.horizontal::before {
    width: calc(50% + 2px);
    height: calc(100% + 2px);
    box-sizing: border-box;
    display: inline-block;
    margin: -1px;
    border: 0 solid var(--bracket-line-color);
}

.bracket-line,
.bracket-spacer {
    --bracket-line-color: var(--text-color);
}

.bracket-line.loser-advance {
    --bracket-line-color: #f00;
}

.bracket-line.reseed {
    --bracket-line-color: var(--interface-border);
}

.bracket-line.horizontal::before,
.bracket-spacer.horizontal::before {
    content: "";
    border-width: 2px 0 0 0;
    width: calc(100% + 2px);
}

.bracket-line.t-down::after {
    content: "";
    border-width: 2px 0 2px 2px;
    border-radius: 0 0 0 2px;
    border-color: var(--bracket-line-color) #f00 #f00;
}

.bracket-line.t-down::before {
    content: "";
    border-width: 2px 2px 0 0;
    border-bottom: 2px solid transparent;
    border-color: var(--bracket-line-color) #f00 transparent;
}

.bracket-line.t-up::after {
    content: "";
    border-width: 0 0 2px 2px;
    border-radius: 2px 0 0 0;
}

.bracket-line.t-up::before {
    content: "";
    border-width: 2px 2px 2px 0;
    border-top: 2px solid transparent;
}

.bracket-line.z-down::after {
    content: "";
    border-width: 0 0 2px 2px;
    border-top: 2px solid transparent;
    border-radius: 0 0 0 2px;
}

.bracket-line.z-down::before {
    content: "";
    border-width: 2px 2px 0 0;
    border-bottom: 2px solid transparent;
    border-radius: 0 2px 0 0;
}

.bracket-line.z-up::after {
    content: "";
    border-width: 2px 0 0 2px;
    border-bottom: 2px solid transparent;
    border-radius: 2px 0 0 0;
}

.bracket-line.z-up::before {
    content: "";
    border-width: 0 2px 2px 0;
    border-top: 2px solid transparent;
    border-radius: 0 0 2px 0;
}

.bracket-line.reseed::after {
    border-width: 2px 0 2px 2px;
    writing-mode: vertical-lr;
    position: absolute;
    right: 0;
    top: 0;
    font-size: 90%;
    text-align: center;
}

.bracket-line.reseed::before {
    content: "";
    float: left;
    border-width: 2px 1px 2px 0;
}

.bracket-line.reseed-reseeding::after {
    content: "Reseeding";
}

.bracket-line.reseed-selection::after {
    content: "Selection";
}

.bracket-line.l-down::after {
    content: "";
    border-width: 0 0 2px 2px;
    border-radius: 0 0 0 2px;
    float: right;
}

.bracket-line.l-up::after {
    content: "";
    border-width: 2px 0 0 2px;
    border-radius: 2px 0 0 0;
    float: right;
}

.round1 {
    grid-column: 2;
}

.round2 {
    grid-column: 4;
}

.round3 {
    grid-column: 6;
}

.round4 {
    grid-column: 8;
}

.round5 {
    grid-column: 10;
}

.round6 {
    grid-column: 12;
}

.round7 {
    grid-column: 14;
}

.round8 {
    grid-column: 16;
}

.round9 {
    grid-column: 18;
}

.round10 {
    grid-column: 20;
}

.round11 {
    grid-column: 22;
}

.round12 {
    grid-column: 24;
}

.round13 {
    grid-column: 26;
}

.round14 {
    grid-column: 28;
}

.round15 {
    grid-column: 30;
}

.bracket-line.round0 {
    grid-column: 1;
}

.bracket-line.round1 {
    grid-column: 3;
}

.bracket-line.round2 {
    grid-column: 5;
}

.bracket-line.round3 {
    grid-column: 7;
}

.bracket-line.round4 {
    grid-column: 9;
}

.bracket-line.round5 {
    grid-column: 11;
}

.bracket-line.round6 {
    grid-column: 13;
}

.bracket-line.round7 {
    grid-column: 15;
}

.bracket-line.round8 {
    grid-column: 17;
}

.bracket-line.round9 {
    grid-column: 19;
}

.bracket-line.round10 {
    grid-column: 21;
}

.bracket-line.round11 {
    grid-column: 23;
}

.bracket-line.round12 {
    grid-column: 25;
}

.bracket-line.round13 {
    grid-column: 27;
}

.bracket-line.round14 {
    grid-column: 29;
}

.bracket-line.round15 {
    grid-column: 31;
}

.bracket-extrainfo {
    float: right;
}

.both-qualified,
.both-qualified .bracket-team-points {
    background-color: var(--color-up);
}

.bracket-hidden {
    display: none !important;
}

.bracket-bye .bracket-team-name {
    font-style: italic;
    background-color: var(--table-header-background);
}

.bracket-winner {
    font-weight: bold;
    --glow-color: #FFD700;
    --adjust: 1.5;
}

.bracket-loser {
    --glow-color: #696969;
    --adjust: 0.75;
}

.bracket-winner .bracket-team-name::before,
.bracket-loser .bracket-team-name::before {
    margin-right: 10px;
    display: inline-block;
    vertical-align: middle;
    width: 20px;
    height: 20px;
    content: "";
}

.bracket-winner .bracket-team-name::before {
    background: url('../../static/img/winner.png') 0 0 no-repeat;
    background-size: contain;
}

.bracket-loser .bracket-team-name::before {
    background: url('../../static/img/defeated.png') 0 0 no-repeat;
    background-size: contain;
}

.bracket-score-loser {
    background: linear-gradient(-45deg, rgba(2, 0, 36, 0) 0%, rgba(223, 21, 21, 1) 35%, rgba(221, 177, 177, 1) 100%)
}

.extended-series .bracket-team-points {
    background-color: var(--color-extended-series);
}

.bracket-team-points.bracket-team-bestof {
    width: 2.5em;
    color: var(--color-bracket-bestof);
}

.match {
    grid-row: span 4;
    position: relative;
}

.overview {
    display: grid;
    grid-template-columns: auto auto auto auto auto;
    position: absolute;
    left: 100%;
    top: 50%;
    width: fit-content;
    transform: translate(5px, -50%);
    background-color: var(--header-solid-color);
    color: var(--text-color);
    z-index: 2;
    border-radius: 20px;
    visibility: hidden;
    opacity: 0;
    transition: all var(--transition-time) ease-out;
}

.overview-title {
    text-align: center;
    grid-column: 1 / -1;
    display: grid;
    white-space: nowrap;
    backdrop-filter: brightness(1.5);
    padding-bottom: 10px;
    padding-top: 6px;
    padding-left: 15px;
    padding-right: 15px;
}

.overview>* {
    filter: drop-shadow(5px 5px 3px black);
}

.match:hover .overview {
    visibility: visible;
    opacity: 1;
    transition: all var(--transition-time) ease-in;
}

.match .overview:hover {
    visibility: visible;
    opacity: 1;
    transition: all var(--transition-time) ease-in;
}

.overview-win {
    width: 20px;
    height: 20px;
    content: "";
}

.overview-win.winner {
    background: url('../../static/img/winner.png') 0 0 no-repeat;
    background-size: contain;
}

.overview-win.loser {
    background: url('../../static/img/defeated.png') 0 0 no-repeat;
    background-size: contain;
}

.overview-civ {
    max-height: 20px;
    max-width: 20px;
    padding: 3px 10px;
    z-index: -1;
}

.overview-map {
    text-align: center;
    white-space: nowrap;
    padding: 5px 15px;
}

.bracket-highlight {
    filter: brightness(var(--adjust));
    background: gray;
    color: black;
    box-shadow: 0 0 3px 3px var(--glow-color);
}