// FIFA World Cup 2026 - Bracket Interactif // LESS Stylesheet // ===== Variables ===== @primary-color: #1538e7ff; @primary-dark: #0a25a0; @background-dark: #0E1720; @background-light: #1E293B; @text-light: #fff; @text-dark: #0E1720; @text-muted: #aaa; @border-color: rgb(229, 231, 235); @border-color-dark: rgb(136, 136, 136); // Round background colors @round-32-bg: rgba(149, 155, 182, 0.31); @round-16-bg: rgba(149, 155, 182, 0.51); @quarter-bg: rgba(149, 155, 182, 0.71); @semi-bg: rgba(149, 155, 182, 0.91); @third-bg: #b8b8b8; //@third-bg: linear-gradient(45deg, #b8b8b8 0%, #fcfcfc 50%, #707070 100%); @third-col:#999; //@final-bg: radial-gradient(ellipse farthest-corner at right bottom, #FEDB37 0%, #FDB931 8%, #9f7928 30%, #8A6E2F 40%, transparent 80%), //radial-gradient(ellipse farthest-corner at left top, #FFFFFF 0%, #FFFFAC 8%, #D1B464 25%, #5d4a1f 62.5%, #5d4a1f 100%); @final-bg:#f3d21f; @final-col: #f3d21f; // Font weights @font-weight-regular: 400; @font-weight-medium: 500; @font-weight-semibold: 600; @font-weight-bold: 900; // Spacing @spacing-xs: 4px; @spacing-sm: 8px; @spacing-md: 15px; @spacing-lg: 20px; @spacing-xl: 30px; // ===== Font Faces ===== @font-face { font-family: "graphik"; src: url(tvas-font/86a911bb12e58a0e-s.p.woff2) format("woff2"); font-display: swap; font-weight: 400; font-style: italic; } @font-face { font-family: "graphik"; src: url(tvas-font/861cf1ce717958e3-s.p.woff2) format("woff2"); font-display: swap; font-weight: 500; font-style: normal; } @font-face { font-family: "graphik"; src: url(tvas-font/2aa18aef2e30318a-s.p.woff2) format("woff2"); font-display: swap; font-weight: 600; font-style: normal; } @font-face { font-family: "graphik"; src: url(tvas-font/7f8333e599f9225a-s.p.woff2) format("woff2"); font-display: swap; font-weight: 900; font-style: normal; } @font-face { font-family: "graphik"; src: url(tvas-font/e1bd7e3916bff906-s.p.woff2) format("woff2"); font-display: swap; font-weight: 900; font-style: italic; } @font-face { font-family: "graphik Fallback"; src: local("Arial"); ascent-override: 92.25%; descent-override: 18.34%; line-gap-override: 0.00%; size-adjust: 106.34%; } // ===== Global Styles ===== * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: "graphik", "graphik Fallback", sans-serif; font-weight: @font-weight-regular; -webkit-font-smoothing: antialiased; color: @text-light; background-color: @background-dark; padding: @spacing-lg; min-height: 100vh; @media (max-width: 500px) { padding: @spacing-md; } } .container { max-width: 1400px; margin: 0 auto; @media (min-width: 200px) { margin-top: 80px; } @media (min-width: 1024px) { margin-top: 140px; } } .logos { display: flex; justify-content: center; align-items: center; margin-bottom: 20px; gap: 25px; } .vertical-line { width: 3px; height: 120px; background-color: #fff; } .logo { max-width: 200px; max-height: 130px; margin: 0; display: block; } // ===== Typography ===== h1 { text-align: center; margin-bottom: 10px; font-size: 2.5em; } h2 { margin-bottom: 20px; text-align: center; } .subtitle { text-align: center; color: #94a3b8ff; font-size: 1.1em; max-width: 780px; margin: 20px auto 30px; } // ===== Buttons ===== .dl-buttons { display: flex; align-items: center; justify-content: center; gap: 20px; flex-wrap: wrap; } .download-btn { display: flex; align-items: center; gap: 10px; margin: 20px 0; padding: 15px 20px; background: @primary-color; color: @text-light; border: none; border-radius: 50px; font-size: 1.2em; font-weight: bold; cursor: pointer; transition: all 0.3s; &:hover { background-color: rgba(21, 56, 231, 0.4); } } // ===== Instructions ===== .instructions { background-color: #f1f5f9ff; padding: @spacing-lg; max-width: 500px; margin: 0 auto 30px; h3 { color: @text-dark; margin-bottom: 10px; } ul { margin-left: 20px; } li { margin: 8px 0; color: #5c5c5c; } } // ===== Groups Section ===== .groups-section { margin-bottom: 40px; background-color: #fff; color: rgba(39, 47, 55, 1); padding: @spacing-lg; @media (max-width: 500px) { padding: @spacing-md; } } .groups-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(340px, 1fr)); gap: @spacing-lg; margin-bottom: 30px; @media (max-width: 500px) { grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); } } .group { background: rgba(149, 155, 182, 0.11); color: @text-dark; padding: @spacing-md; border: 1px solid @border-color; } .group-title { background: @background-light; color: @text-light; padding: @spacing-sm @spacing-md; font-weight: @font-weight-bold; text-transform: uppercase; margin-bottom: @spacing-md; text-align: center; } .team { display: flex; align-items: center; padding: 2px 0; margin: 5px 0; &-name { flex: 1; display: flex; align-items: center; font-weight: @font-weight-bold; text-transform: uppercase; white-space: nowrap; img { flex-shrink: 0; } } &-points { background: rgba(229, 231, 235, 0.1); padding: @spacing-xs; color: rgb(195, 195, 195); margin-left: auto; } } // ===== Input Styles ===== input[type="number"] { width: 50px; padding: @spacing-xs; text-align: center; border: 1px solid #ccc; background-color: #fff; color: @text-dark; font-weight: bold; border-radius: 4px; margin-top: @spacing-xs; } // ===== Bracket Section ===== .bracket-section { background: rgba(255, 255, 255, 1); border: 1px solid @border-color; padding: @spacing-xl; margin-bottom: @spacing-xl; } .bracket-title { text-align: center; color: @text-dark; margin-bottom: 25px; font-size: 1.8em; } .bracket { display: flex; justify-content: space-between; flex-direction: column; gap: @spacing-xl; overflow-x: auto; } // ===== Round Styles ===== .round { display: flex; flex-direction: row; flex-wrap: wrap; gap: 12px; justify-content: space-around; padding: @spacing-xl 10px; } .round-title { text-align: center; color: #0A1721; margin-bottom: @spacing-md; font-weight: @font-weight-bold; text-transform: uppercase; font-size: 1em; flex-basis: 100%; } // Round-specific backgrounds .ronde-des-32 { background: @round-32-bg; } .ronde-des-16 { background: @round-16-bg; .round-title { font-size: 1.2em; } } .Quarts-de-finale { background: @quarter-bg; .round-title { font-size: 1.4em; } } .Demi-finales { background: @semi-bg; .round-title { font-size: 1.6em; } } .Match-pour-la-3e-place { background: @third-bg; .round-title { font-size: 1.8em; color: @third-col; text-shadow: -1px -1px 1px rgba(0, 0, 0, 0.2), 1px 1px 1px rgba(255, 255, 255, 0.6); } } .Finale { background: @final-bg; .round-title { font-size: 2em; color:@final-col; text-shadow: -1px -1px 1px rgba(0, 0, 0, 0.2), 1px 1px 1px rgba(255, 255, 255, 0.6); } } // ===== Match Styles ===== .match { background: #fff; padding: 10px; margin: 10px 0; border: 1px solid @border-color; transition: all 0.3s; flex-basis: 49%; position: relative; &-team-container { display: flex; align-items: center; margin: 3px 0; } &-team { display: flex; .team-name { color: #0A1721; font-weight: bold; text-transform: uppercase; padding: 0 8px; background: rgba(235, 235, 235, 0.05); } .team-code { background: #0A1721; color: @text-light; font-weight: bold; float: left; margin-right: 3px; padding: 3px; width: 35px; text-align: center; } &.winner { .team-name { background: #0A1721; color: @text-light; } } &.empty { .team-code { background-color: @border-color; color: #0A1721; } .team-name { color: @border-color; } } } input:disabled { background-color: #f5f5f5; } &-info { font-size: 0.75em; color: @text-muted; text-align: center; margin-top: @spacing-sm; padding-top: @spacing-sm; .date, .location { color: @border-color-dark; } } } // ===== Group Matches ===== .group-matches { background: rgba(255, 255, 255, 0.05); border-radius: 10px; padding: @spacing-lg; margin-bottom: 20px; } .match-date { background: @primary-color; color: #1a1a2e; padding: 10px @spacing-md; border-radius: 5px; font-weight: bold; margin-bottom: @spacing-md; text-align: center; } .group-match { display: flex; justify-content: space-between; flex-direction: column; align-items: center; padding: 12px; margin: 8px 0; background: rgba(255, 255, 255, 1); border: 1px solid @border-color; transition: all 0.3s; .teams { flex: 1; } .team-name { padding: @spacing-xs 8px; border-radius: 3px; position: relative; text-align: center; transition: all 0.3s; font-size: 13px; @media (max-width: 500px) { font-size: 11px; } } .location { color: @text-muted; font-size: 0.9em; margin-left: @spacing-md; } .time { color: @primary-color; font-weight: bold; margin-left: @spacing-md; } } // ===== Responsive Design ===== @media (max-width: 768px) { .round { min-width: 100%; } h1 { font-size: 1.8em; } } // ===== Utility Classes for Dynamic Elements ===== .group-match-teams { display: flex; align-items: center; justify-content: space-between; width: 100%; } .group-match-team-names { display: flex; gap: 20px; align-items: center; justify-content: center; flex: 1; } .team-container { display: flex; flex-direction: column; align-items: center; flex: 1; .match-team { align-items:center; @media (max-width: 500px) { flex-direction: column; } } } .group-match-info { font-size: 0.75em; color: #888; margin-top: 4px; } .standings-separator { border-top: 1px solid #333; margin: 10px 0; }