Outiref
<!DOCTYPE html>
<html lang=fr-FR>
<head>
<meta charset=UTF-8 />
<meta name=viewport content="width=device-width, initial-scale=1"/>
<meta name=robots content='index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1'/>
<link rel=preload href="https://vibrez-rugby.com/wp-content/uploads/fonts/Poppins-Regular.woff2" as=font type="font/woff2" crossorigin>
<link rel=preload href="https://vibrez-rugby.com/wp-content/uploads/fonts/Poppins-SemiBold.woff2" as=font type="font/woff2" crossorigin>
<meta name=description content="Résultats TOP 14 : retrouvez tous les scores et résultats du championnat Top 14, le championnat de rugby professionnel français, sur Vibrez Rugby.">
<style id=vr-barlow-woff2>
@font-face{font-family:"Barlow Semi Condensed";font-style:normal;font-weight:400;font-display:optional;src:url('https://vibrez-rugby.com/wp-content/uploads/fonts/BarlowSemiCondensed-Regular.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:"Barlow Semi Condensed";font-style:normal;font-weight:600;font-display:optional;src:url('https://vibrez-rugby.com/wp-content/uploads/fonts/BarlowSemiCondensed-SemiBold.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:"Barlow Semi Condensed";font-style:normal;font-weight:700;font-display:optional;src:url('https://vibrez-rugby.com/wp-content/uploads/fonts/BarlowSemiCondensed-Bold.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
</style><style id=wp-img-auto-sizes-contain-inline-css>
img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px}
/*# sourceURL=wp-img-auto-sizes-contain-inline-css */
</style><style id=wp-block-site-logo-inline-css>
.wp-block-site-logo{box-sizing:border-box;line-height:0}.wp-block-site-logo a{display:inline-block;line-height:0}.wp-block-site-logo.is-default-size img{height:auto;width:120px}.wp-block-site-logo img{height:auto;max-width:100%}.wp-block-site-logo a,.wp-block-site-logo img{border-radius:inherit}.wp-block-site-logo.aligncenter{margin-left:auto;margin-right:auto;text-align:center}:root :where(.wp-block-site-logo.is-style-rounded){border-radius:9999px}
/*# sourceURL=https://vibrez-rugby.com/wp-includes/blocks/site-logo/style.min.css */
</style><style id=wp-block-group-inline-css>
.wp-block-group{box-sizing:border-box}:where(.wp-block-group.wp-block-group-is-layout-constrained){position:relative}
/*# sourceURL=https://vibrez-rugby.com/wp-includes/blocks/group/style.min.css */
</style><style id=wp-block-navigation-link-inline-css>
.wp-block-navigation .wp-block-navigation-item__label{overflow-wrap:break-word}.wp-block-navigation .wp-block-navigation-item__description{display:none}.link-ui-tools{outline:1px solid #f0f0f0;padding:8px}.link-ui-block-inserter{padding-top:8px}.link-ui-block-inserter__back{margin-left:8px;text-transform:uppercase}

				.is-style-arrow-link .wp-block-navigation-item__label:after {
					content: "\2197";
					padding-inline-start: 0.25rem;
					vertical-align: middle;
					text-decoration: none;
					display: inline-block;
				}
/*# sourceURL=wp-block-navigation-link-inline-css */
</style><style id=wp-block-navigation-inline-css>
.wp-block-navigation{position:relative}.wp-block-navigation ul{margin-bottom:0;margin-left:0;margin-top:0;padding-left:0}.wp-block-navigation ul,.wp-block-navigation ul li{list-style:none;padding:0}.wp-block-navigation .wp-block-navigation-item{align-items:center;background-color:inherit;display:flex;position:relative}.wp-block-navigation .wp-block-navigation-item .wp-block-navigation__submenu-container:empty{display:none}.wp-block-navigation .wp-block-navigation-item__content{display:block;z-index:1}.wp-block-navigation .wp-block-navigation-item__content.wp-block-navigation-item__content{color:inherit}.wp-block-navigation.has-text-decoration-underline .wp-block-navigation-item__content,.wp-block-navigation.has-text-decoration-underline .wp-block-navigation-item__content:active,.wp-block-navigation.has-text-decoration-underline .wp-block-navigation-item__content:focus{text-decoration:underline}.wp-block-navigation.has-text-decoration-line-through .wp-block-navigation-item__content,.wp-block-navigation.has-text-decoration-line-through .wp-block-navigation-item__content:active,.wp-block-navigation.has-text-decoration-line-through .wp-block-navigation-item__content:focus{text-decoration:line-through}.wp-block-navigation :where(a),.wp-block-navigation :where(a:active),.wp-block-navigation :where(a:focus){text-decoration:none}.wp-block-navigation .wp-block-navigation__submenu-icon{align-self:center;background-color:inherit;border:none;color:currentColor;display:inline-block;font-size:inherit;height:.6em;line-height:0;margin-left:.25em;padding:0;width:.6em}.wp-block-navigation .wp-block-navigation__submenu-icon svg{display:inline-block;stroke:currentColor;height:inherit;margin-top:.075em;width:inherit}.wp-block-navigation{--navigation-layout-justification-setting:flex-start;--navigation-layout-direction:row;--navigation-layout-wrap:wrap;--navigation-layout-justify:flex-start;--navigation-layout-align:center}.wp-block-navigation.is-vertical{--navigation-layout-direction:column;--navigation-layout-justify:initial;--navigation-layout-align:flex-start}.wp-block-navigation.no-wrap{--navigation-layout-wrap:nowrap}.wp-block-navigation.items-justified-center{--navigation-layout-justification-setting:center;--navigation-layout-justify:center}.wp-block-navigation.items-justified-center.is-vertical{--navigation-layout-align:center}.wp-block-navigation.items-justified-right{--navigation-layout-justification-setting:flex-end;--navigation-layout-justify:flex-end}.wp-block-navigation.items-justified-right.is-vertical{--navigation-layout-align:flex-end}.wp-block-navigation.items-justified-space-between{--navigation-layout-justification-setting:space-between;--navigation-layout-justify:space-between}.wp-block-navigation .has-child .wp-block-navigation__submenu-container{align-items:normal;background-color:inherit;color:inherit;display:flex;flex-direction:column;opacity:0;position:absolute;z-index:2}@media not (prefers-reduced-motion){.wp-block-navigation .has-child .wp-block-navigation__submenu-container{transition:opacity .1s linear}}.wp-block-navigation .has-child .wp-block-navigation__submenu-container{height:0;overflow:hidden;visibility:hidden;width:0}.wp-block-navigation .has-child .wp-block-navigation__submenu-container>.wp-block-navigation-item>.wp-block-navigation-item__content{display:flex;flex-grow:1;padding:.5em 1em}.wp-block-navigation .has-child .wp-block-navigation__submenu-container>.wp-block-navigation-item>.wp-block-navigation-item__content .wp-block-navigation__submenu-icon{margin-left:auto;margin-right:0}.wp-block-navigation .has-child .wp-block-navigation__submenu-container .wp-block-navigation-item__content{margin:0}.wp-block-navigation .has-child .wp-block-navigation__submenu-container{left:-1px;top:100%}@media (min-width:782px){.wp-block-navigation .has-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container{left:100%;top:-1px}.wp-block-navigation .has-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container:before{background:#0000;content:"";display:block;height:100%;position:absolute;right:100%;width:.5em}.wp-block-navigation .has-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-icon{margin-right:.25em}.wp-block-navigation .has-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-icon svg{transform:rotate(-90deg)}}.wp-block-navigation .has-child .wp-block-navigation-submenu__toggle[aria-expanded=true]~.wp-block-navigation__submenu-container,.wp-block-navigation .has-child:not(.open-on-click):hover>.wp-block-navigation__submenu-container,.wp-block-navigation .has-child:not(.open-on-click):not(.open-on-hover-click):focus-within>.wp-block-navigation__submenu-container{height:auto;min-width:200px;opacity:1;overflow:visible;visibility:visible;width:auto}.wp-block-navigation.has-background .has-child .wp-block-navigation__submenu-container{left:0;top:100%}@media (min-width:782px){.wp-block-navigation.has-background .has-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container{left:100%;top:0}}.wp-block-navigation-submenu{display:flex;position:relative}.wp-block-navigation-submenu .wp-block-navigation__submenu-icon svg{stroke:currentColor}button.wp-block-navigation-item__content{background-color:initial;border:none;color:currentColor;font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;text-align:left;text-transform:inherit}.wp-block-navigation-submenu__toggle{cursor:pointer}.wp-block-navigation-submenu__toggle[aria-expanded=true]+.wp-block-navigation__submenu-icon>svg,.wp-block-navigation-submenu__toggle[aria-expanded=true]>svg{transform:rotate(180deg)}.wp-block-navigation-item.open-on-click .wp-block-navigation-submenu__toggle{padding-left:0;padding-right:.85em}.wp-block-navigation-item.open-on-click .wp-block-navigation-submenu__toggle+.wp-block-navigation__submenu-icon{margin-left:-.6em;pointer-events:none}.wp-block-navigation-item.open-on-click button.wp-block-navigation-item__content:not(.wp-block-navigation-submenu__toggle){padding:0}.wp-block-navigation .wp-block-page-list,.wp-block-navigation__container,.wp-block-navigation__responsive-close,.wp-block-navigation__responsive-container,.wp-block-navigation__responsive-container-content,.wp-block-navigation__responsive-dialog{gap:inherit}:where(.wp-block-navigation.has-background .wp-block-navigation-item a:not(.wp-element-button)),:where(.wp-block-navigation.has-background .wp-block-navigation-submenu a:not(.wp-element-button)){padding:.5em 1em}:where(.wp-block-navigation .wp-block-navigation__submenu-container .wp-block-navigation-item a:not(.wp-element-button)),:where(.wp-block-navigation .wp-block-navigation__submenu-container .wp-block-navigation-submenu a:not(.wp-element-button)),:where(.wp-block-navigation .wp-block-navigation__submenu-container .wp-block-navigation-submenu button.wp-block-navigation-item__content),:where(.wp-block-navigation .wp-block-navigation__submenu-container .wp-block-pages-list__item button.wp-block-navigation-item__content){padding:.5em 1em}.wp-block-navigation.items-justified-right .wp-block-navigation__container .has-child .wp-block-navigation__submenu-container,.wp-block-navigation.items-justified-right .wp-block-page-list>.has-child .wp-block-navigation__submenu-container,.wp-block-navigation.items-justified-space-between .wp-block-page-list>.has-child:last-child .wp-block-navigation__submenu-container,.wp-block-navigation.items-justified-space-between>.wp-block-navigation__container>.has-child:last-child .wp-block-navigation__submenu-container{left:auto;right:0}.wp-block-navigation.items-justified-right .wp-block-navigation__container .has-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container,.wp-block-navigation.items-justified-right .wp-block-page-list>.has-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container,.wp-block-navigation.items-justified-space-between .wp-block-page-list>.has-child:last-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container,.wp-block-navigation.items-justified-space-between>.wp-block-navigation__container>.has-child:last-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container{left:-1px;right:-1px}@media (min-width:782px){.wp-block-navigation.items-justified-right .wp-block-navigation__container .has-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container,.wp-block-navigation.items-justified-right .wp-block-page-list>.has-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container,.wp-block-navigation.items-justified-space-between .wp-block-page-list>.has-child:last-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container,.wp-block-navigation.items-justified-space-between>.wp-block-navigation__container>.has-child:last-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container{left:auto;right:100%}}.wp-block-navigation:not(.has-background) .wp-block-navigation__submenu-container{background-color:#fff;border:1px solid #00000026}.wp-block-navigation.has-background .wp-block-navigation__submenu-container{background-color:inherit}.wp-block-navigation:not(.has-text-color) .wp-block-navigation__submenu-container{color:#000}.wp-block-navigation__container{align-items:var(--navigation-layout-align,initial);display:flex;flex-direction:var(--navigation-layout-direction,initial);flex-wrap:var(--navigation-layout-wrap,wrap);justify-content:var(--navigation-layout-justify,initial);list-style:none;margin:0;padding-left:0}.wp-block-navigation__container .is-responsive{display:none}.wp-block-navigation__container:only-child,.wp-block-page-list:only-child{flex-grow:1}@keyframes overlay-menu__fade-in-animation{0%{opacity:0;transform:translateY(.5em)}to{opacity:1;transform:translateY(0)}}.wp-block-navigation__responsive-container{bottom:0;display:none;left:0;position:fixed;right:0;top:0}.wp-block-navigation__responsive-container :where(.wp-block-navigation-item a){color:inherit}.wp-block-navigation__responsive-container .wp-block-navigation__responsive-container-content{align-items:var(--navigation-layout-align,initial);display:flex;flex-direction:var(--navigation-layout-direction,initial);flex-wrap:var(--navigation-layout-wrap,wrap);justify-content:var(--navigation-layout-justify,initial)}.wp-block-navigation__responsive-container:not(.is-menu-open.is-menu-open){background-color:inherit!important;color:inherit!important}.wp-block-navigation__responsive-container.is-menu-open{background-color:inherit;display:flex;flex-direction:column}@media not (prefers-reduced-motion){.wp-block-navigation__responsive-container.is-menu-open{animation:overlay-menu__fade-in-animation .1s ease-out;animation-fill-mode:forwards}}.wp-block-navigation__responsive-container.is-menu-open{overflow:auto;padding:clamp(1rem,var(--wp--style--root--padding-top),20rem) clamp(1rem,var(--wp--style--root--padding-right),20rem) clamp(1rem,var(--wp--style--root--padding-bottom),20rem) clamp(1rem,var(--wp--style--root--padding-left),20rem);z-index:100000}.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content{align-items:var(--navigation-layout-justification-setting,inherit);display:flex;flex-direction:column;flex-wrap:nowrap;overflow:visible;padding-top:calc(2rem + 24px)}.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content,.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__container,.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-page-list{justify-content:flex-start}.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__submenu-icon{display:none}.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .has-child .wp-block-navigation__submenu-container{border:none;height:auto;min-width:200px;opacity:1;overflow:initial;padding-left:2rem;padding-right:2rem;position:static;visibility:visible;width:auto}.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__container,.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__submenu-container{gap:inherit}.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__submenu-container{padding-top:var(--wp--style--block-gap,2em)}.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation-item__content{padding:0}.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation-item,.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__container,.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-page-list{align-items:var(--navigation-layout-justification-setting,initial);display:flex;flex-direction:column}.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item,.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item .wp-block-navigation__submenu-container,.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container,.wp-block-navigation__responsive-container.is-menu-open .wp-block-page-list{background:#0000!important;color:inherit!important}.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container.wp-block-navigation__submenu-container.wp-block-navigation__submenu-container.wp-block-navigation__submenu-container{left:auto;right:auto}@media (min-width:600px){.wp-block-navigation__responsive-container:not(.hidden-by-default):not(.is-menu-open){background-color:inherit;display:block;position:relative;width:100%;z-index:auto}.wp-block-navigation__responsive-container:not(.hidden-by-default):not(.is-menu-open) .wp-block-navigation__responsive-container-close{display:none}.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container.wp-block-navigation__submenu-container.wp-block-navigation__submenu-container.wp-block-navigation__submenu-container{left:0}}.wp-block-navigation:not(.has-background) .wp-block-navigation__responsive-container.is-menu-open{background-color:#fff}.wp-block-navigation:not(.has-text-color) .wp-block-navigation__responsive-container.is-menu-open{color:#000}.wp-block-navigation__toggle_button_label{font-size:1rem;font-weight:700}.wp-block-navigation__responsive-container-close,.wp-block-navigation__responsive-container-open{background:#0000;border:none;color:currentColor;cursor:pointer;margin:0;padding:0;text-transform:inherit;vertical-align:middle}.wp-block-navigation__responsive-container-close svg,.wp-block-navigation__responsive-container-open svg{fill:currentColor;display:block;height:24px;pointer-events:none;width:24px}.wp-block-navigation__responsive-container-open{display:flex}.wp-block-navigation__responsive-container-open.wp-block-navigation__responsive-container-open.wp-block-navigation__responsive-container-open{font-family:inherit;font-size:inherit;font-weight:inherit}@media (min-width:600px){.wp-block-navigation__responsive-container-open:not(.always-shown){display:none}}.wp-block-navigation__responsive-container-close{position:absolute;right:0;top:0;z-index:2}.wp-block-navigation__responsive-container-close.wp-block-navigation__responsive-container-close.wp-block-navigation__responsive-container-close{font-family:inherit;font-size:inherit;font-weight:inherit}.wp-block-navigation__responsive-close{width:100%}.has-modal-open .wp-block-navigation__responsive-close{margin-left:auto;margin-right:auto;max-width:var(--wp--style--global--wide-size,100%)}.wp-block-navigation__responsive-close:focus{outline:none}.is-menu-open .wp-block-navigation__responsive-close,.is-menu-open .wp-block-navigation__responsive-container-content,.is-menu-open .wp-block-navigation__responsive-dialog{box-sizing:border-box}.wp-block-navigation__responsive-dialog{position:relative}.has-modal-open .admin-bar .is-menu-open .wp-block-navigation__responsive-dialog{margin-top:46px}@media (min-width:782px){.has-modal-open .admin-bar .is-menu-open .wp-block-navigation__responsive-dialog{margin-top:32px}}html.has-modal-open{overflow:hidden}
/*# sourceURL=https://vibrez-rugby.com/wp-includes/blocks/navigation/style.min.css */
</style><style id=wp-block-spacer-inline-css>
.wp-block-spacer{clear:both}
/*# sourceURL=https://vibrez-rugby.com/wp-includes/blocks/spacer/style.min.css */
</style><style id=wp-block-columns-inline-css>
.wp-block-columns{box-sizing:border-box;display:flex;flex-wrap:wrap!important}@media (min-width:782px){.wp-block-columns{flex-wrap:nowrap!important}}.wp-block-columns{align-items:normal!important}.wp-block-columns.are-vertically-aligned-top{align-items:flex-start}.wp-block-columns.are-vertically-aligned-center{align-items:center}.wp-block-columns.are-vertically-aligned-bottom{align-items:flex-end}@media (max-width:781px){.wp-block-columns:not(.is-not-stacked-on-mobile)>.wp-block-column{flex-basis:100%!important}}@media (min-width:782px){.wp-block-columns:not(.is-not-stacked-on-mobile)>.wp-block-column{flex-basis:0;flex-grow:1}.wp-block-columns:not(.is-not-stacked-on-mobile)>.wp-block-column[style*=flex-basis]{flex-grow:0}}.wp-block-columns.is-not-stacked-on-mobile{flex-wrap:nowrap!important}.wp-block-columns.is-not-stacked-on-mobile>.wp-block-column{flex-basis:0;flex-grow:1}.wp-block-columns.is-not-stacked-on-mobile>.wp-block-column[style*=flex-basis]{flex-grow:0}:where(.wp-block-columns){margin-bottom:1.75em}:where(.wp-block-columns.has-background){padding:1.25em 2.375em}.wp-block-column{flex-grow:1;min-width:0;overflow-wrap:break-word;word-break:break-word}.wp-block-column.is-vertically-aligned-top{align-self:flex-start}.wp-block-column.is-vertically-aligned-center{align-self:center}.wp-block-column.is-vertically-aligned-bottom{align-self:flex-end}.wp-block-column.is-vertically-aligned-stretch{align-self:stretch}.wp-block-column.is-vertically-aligned-bottom,.wp-block-column.is-vertically-aligned-center,.wp-block-column.is-vertically-aligned-top{width:100%}
/*# sourceURL=https://vibrez-rugby.com/wp-includes/blocks/columns/style.min.css */
</style><style id=wp-block-heading-inline-css>
h1:where(.wp-block-heading).has-background,h2:where(.wp-block-heading).has-background,h3:where(.wp-block-heading).has-background,h4:where(.wp-block-heading).has-background,h5:where(.wp-block-heading).has-background,h6:where(.wp-block-heading).has-background{padding:1.25em 2.375em}h1.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h1.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h2.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h2.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h3.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h3.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h4.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h4.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h5.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h5.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h6.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h6.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]){rotate:180deg}

				.is-style-asterisk:before {
					content: '';
					width: 1.5rem;
					height: 3rem;
					background: var(--wp--preset--color--contrast-2, currentColor);
					clip-path: path('M11.93.684v8.039l5.633-5.633 1.216 1.23-5.66 5.66h8.04v1.737H13.2l5.701 5.701-1.23 1.23-5.742-5.742V21h-1.737v-8.094l-5.77 5.77-1.23-1.217 5.743-5.742H.842V9.98h8.162l-5.701-5.7 1.23-1.231 5.66 5.66V.684h1.737Z');
					display: block;
				}

				/* Hide the asterisk if the heading has no content, to avoid using empty headings to display the asterisk only, which is an A11Y issue */
				.is-style-asterisk:empty:before {
					content: none;
				}

				.is-style-asterisk:-moz-only-whitespace:before {
					content: none;
				}

				.is-style-asterisk.has-text-align-center:before {
					margin: 0 auto;
				}

				.is-style-asterisk.has-text-align-right:before {
					margin-left: auto;
				}

				.rtl .is-style-asterisk.has-text-align-left:before {
					margin-right: auto;
				}
/*# sourceURL=wp-block-heading-inline-css */
</style><style id=wp-block-paragraph-inline-css>
.is-small-text{font-size:.875em}.is-regular-text{font-size:1em}.is-large-text{font-size:2.25em}.is-larger-text{font-size:3em}.has-drop-cap:not(:focus):first-letter{float:left;font-size:8.4em;font-style:normal;font-weight:100;line-height:.68;margin:.05em .1em 0 0;text-transform:uppercase}body.rtl .has-drop-cap:not(:focus):first-letter{float:none;margin-left:.1em}p.has-drop-cap.has-background{overflow:hidden}:root :where(p.has-background){padding:1.25em 2.375em}:where(p.has-text-color:not(.has-link-color)) a{color:inherit}p.has-text-align-left[style*="writing-mode:vertical-lr"],p.has-text-align-right[style*="writing-mode:vertical-rl"]{rotate:180deg}
/*# sourceURL=https://vibrez-rugby.com/wp-includes/blocks/paragraph/style.min.css */
</style><style id=wp-block-post-content-inline-css>
.wp-block-post-content{display:flow-root}
/*# sourceURL=https://vibrez-rugby.com/wp-includes/blocks/post-content/style.min.css */
</style><style id=wp-block-image-inline-css>
.wp-block-image>a,.wp-block-image>figure>a{display:inline-block}.wp-block-image img{box-sizing:border-box;height:auto;max-width:100%;vertical-align:bottom}@media not (prefers-reduced-motion){.wp-block-image img.hide{visibility:hidden}.wp-block-image img.show{animation:show-content-image .4s}}.wp-block-image[style*=border-radius] img,.wp-block-image[style*=border-radius]>a{border-radius:inherit}.wp-block-image.has-custom-border img{box-sizing:border-box}.wp-block-image.aligncenter{text-align:center}.wp-block-image.alignfull>a,.wp-block-image.alignwide>a{width:100%}.wp-block-image.alignfull img,.wp-block-image.alignwide img{height:auto;width:100%}.wp-block-image .aligncenter,.wp-block-image .alignleft,.wp-block-image .alignright,.wp-block-image.aligncenter,.wp-block-image.alignleft,.wp-block-image.alignright{display:table}.wp-block-image .aligncenter>figcaption,.wp-block-image .alignleft>figcaption,.wp-block-image .alignright>figcaption,.wp-block-image.aligncenter>figcaption,.wp-block-image.alignleft>figcaption,.wp-block-image.alignright>figcaption{caption-side:bottom;display:table-caption}.wp-block-image .alignleft{float:left;margin:.5em 1em .5em 0}.wp-block-image .alignright{float:right;margin:.5em 0 .5em 1em}.wp-block-image .aligncenter{margin-left:auto;margin-right:auto}.wp-block-image :where(figcaption){margin-bottom:1em;margin-top:.5em}.wp-block-image.is-style-circle-mask img{border-radius:9999px}@supports ((-webkit-mask-image:none) or (mask-image:none)) or (-webkit-mask-image:none){.wp-block-image.is-style-circle-mask img{border-radius:0;-webkit-mask-image:url('data:image/svg+xml;utf8,<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg"><circle cx="50" cy="50" r="50"/></svg>');mask-image:url('data:image/svg+xml;utf8,<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg"><circle cx="50" cy="50" r="50"/></svg>');mask-mode:alpha;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}}:root :where(.wp-block-image.is-style-rounded img,.wp-block-image .is-style-rounded img){border-radius:9999px}.wp-block-image figure{margin:0}.wp-lightbox-container{display:flex;flex-direction:column;position:relative}.wp-lightbox-container img{cursor:zoom-in}.wp-lightbox-container img:hover+button{opacity:1}.wp-lightbox-container button{align-items:center;backdrop-filter:blur(16px) saturate(180%);background-color:#5a5a5a40;border:none;border-radius:4px;cursor:zoom-in;display:flex;height:20px;justify-content:center;opacity:0;padding:0;position:absolute;right:16px;text-align:center;top:16px;width:20px;z-index:100}@media not (prefers-reduced-motion){.wp-lightbox-container button{transition:opacity .2s ease}}.wp-lightbox-container button:focus-visible{outline:3px auto #5a5a5a40;outline:3px auto -webkit-focus-ring-color;outline-offset:3px}.wp-lightbox-container button:hover{cursor:pointer;opacity:1}.wp-lightbox-container button:focus{opacity:1}.wp-lightbox-container button:focus,.wp-lightbox-container button:hover,.wp-lightbox-container button:not(:hover):not(:active):not(.has-background){background-color:#5a5a5a40;border:none}.wp-lightbox-overlay{box-sizing:border-box;cursor:zoom-out;height:100vh;left:0;overflow:hidden;position:fixed;top:0;visibility:hidden;width:100%;z-index:100000}.wp-lightbox-overlay .close-button{align-items:center;cursor:pointer;display:flex;justify-content:center;min-height:40px;min-width:40px;padding:0;position:absolute;right:calc(env(safe-area-inset-right) + 16px);top:calc(env(safe-area-inset-top) + 16px);z-index:5000000}.wp-lightbox-overlay .close-button:focus,.wp-lightbox-overlay .close-button:hover,.wp-lightbox-overlay .close-button:not(:hover):not(:active):not(.has-background){background:none;border:none}.wp-lightbox-overlay .lightbox-image-container{height:var(--wp--lightbox-container-height);left:50%;overflow:hidden;position:absolute;top:50%;transform:translate(-50%,-50%);transform-origin:top left;width:var(--wp--lightbox-container-width);z-index:9999999999}.wp-lightbox-overlay .wp-block-image{align-items:center;box-sizing:border-box;display:flex;height:100%;justify-content:center;margin:0;position:relative;transform-origin:0 0;width:100%;z-index:3000000}.wp-lightbox-overlay .wp-block-image img{height:var(--wp--lightbox-image-height);min-height:var(--wp--lightbox-image-height);min-width:var(--wp--lightbox-image-width);width:var(--wp--lightbox-image-width)}.wp-lightbox-overlay .wp-block-image figcaption{display:none}.wp-lightbox-overlay button{background:none;border:none}.wp-lightbox-overlay .scrim{background-color:#fff;height:100%;opacity:.9;position:absolute;width:100%;z-index:2000000}.wp-lightbox-overlay.active{visibility:visible}@media not (prefers-reduced-motion){.wp-lightbox-overlay.active{animation:turn-on-visibility .25s both}.wp-lightbox-overlay.active img{animation:turn-on-visibility .35s both}.wp-lightbox-overlay.show-closing-animation:not(.active){animation:turn-off-visibility .35s both}.wp-lightbox-overlay.show-closing-animation:not(.active) img{animation:turn-off-visibility .25s both}.wp-lightbox-overlay.zoom.active{animation:none;opacity:1;visibility:visible}.wp-lightbox-overlay.zoom.active .lightbox-image-container{animation:lightbox-zoom-in .4s}.wp-lightbox-overlay.zoom.active .lightbox-image-container img{animation:none}.wp-lightbox-overlay.zoom.active .scrim{animation:turn-on-visibility .4s forwards}.wp-lightbox-overlay.zoom.show-closing-animation:not(.active){animation:none}.wp-lightbox-overlay.zoom.show-closing-animation:not(.active) .lightbox-image-container{animation:lightbox-zoom-out .4s}.wp-lightbox-overlay.zoom.show-closing-animation:not(.active) .lightbox-image-container img{animation:none}.wp-lightbox-overlay.zoom.show-closing-animation:not(.active) .scrim{animation:turn-off-visibility .4s forwards}}@keyframes show-content-image{0%{visibility:hidden}99%{visibility:hidden}to{visibility:visible}}@keyframes turn-on-visibility{0%{opacity:0}to{opacity:1}}@keyframes turn-off-visibility{0%{opacity:1;visibility:visible}99%{opacity:0;visibility:visible}to{opacity:0;visibility:hidden}}@keyframes lightbox-zoom-in{0%{transform:translate(calc((-100vw + var(--wp--lightbox-scrollbar-width))/2 + var(--wp--lightbox-initial-left-position)),calc(-50vh + var(--wp--lightbox-initial-top-position))) scale(var(--wp--lightbox-scale))}to{transform:translate(-50%,-50%) scale(1)}}@keyframes lightbox-zoom-out{0%{transform:translate(-50%,-50%) scale(1);visibility:visible}99%{visibility:visible}to{transform:translate(calc((-100vw + var(--wp--lightbox-scrollbar-width))/2 + var(--wp--lightbox-initial-left-position)),calc(-50vh + var(--wp--lightbox-initial-top-position))) scale(var(--wp--lightbox-scale));visibility:hidden}}
/*# sourceURL=https://vibrez-rugby.com/wp-includes/blocks/image/style.min.css */
</style><style id=wp-block-site-title-inline-css>
.wp-block-site-title{box-sizing:border-box}.wp-block-site-title :where(a){color:inherit;font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;text-decoration:inherit}
/*# sourceURL=https://vibrez-rugby.com/wp-includes/blocks/site-title/style.min.css */
</style><style id=wp-emoji-styles-inline-css>

	img.wp-smiley, img.emoji {
		display: inline !important;
		border: none !important;
		box-shadow: none !important;
		height: 1em !important;
		width: 1em !important;
		margin: 0 0.07em !important;
		vertical-align: -0.1em !important;
		background: none !important;
		padding: 0 !important;
	}
/*# sourceURL=wp-emoji-styles-inline-css */
</style><style id=wp-block-library-inline-css>
:root{--wp-block-synced-color:#7a00df;--wp-block-synced-color--rgb:122,0,223;--wp-bound-block-color:var(--wp-block-synced-color);--wp-editor-canvas-background:#ddd;--wp-admin-theme-color:#007cba;--wp-admin-theme-color--rgb:0,124,186;--wp-admin-theme-color-darker-10:#006ba1;--wp-admin-theme-color-darker-10--rgb:0,107,160.5;--wp-admin-theme-color-darker-20:#005a87;--wp-admin-theme-color-darker-20--rgb:0,90,135;--wp-admin-border-width-focus:2px}@media (min-resolution:192dpi){:root{--wp-admin-border-width-focus:1.5px}}.wp-element-button{cursor:pointer}:root .has-very-light-gray-background-color{background-color:#eee}:root .has-very-dark-gray-background-color{background-color:#313131}:root .has-very-light-gray-color{color:#eee}:root .has-very-dark-gray-color{color:#313131}:root .has-vivid-green-cyan-to-vivid-cyan-blue-gradient-background{background:linear-gradient(135deg,#00d084,#0693e3)}:root .has-purple-crush-gradient-background{background:linear-gradient(135deg,#34e2e4,#4721fb 50%,#ab1dfe)}:root .has-hazy-dawn-gradient-background{background:linear-gradient(135deg,#faaca8,#dad0ec)}:root .has-subdued-olive-gradient-background{background:linear-gradient(135deg,#fafae1,#67a671)}:root .has-atomic-cream-gradient-background{background:linear-gradient(135deg,#fdd79a,#004a59)}:root .has-nightshade-gradient-background{background:linear-gradient(135deg,#330968,#31cdcf)}:root .has-midnight-gradient-background{background:linear-gradient(135deg,#020381,#2874fc)}:root{--wp--preset--font-size--normal:16px;--wp--preset--font-size--huge:42px}.has-regular-font-size{font-size:1em}.has-larger-font-size{font-size:2.625em}.has-normal-font-size{font-size:var(--wp--preset--font-size--normal)}.has-huge-font-size{font-size:var(--wp--preset--font-size--huge)}.has-text-align-center{text-align:center}.has-text-align-left{text-align:left}.has-text-align-right{text-align:right}.has-fit-text{white-space:nowrap!important}#end-resizable-editor-section{display:none}.aligncenter{clear:both}.items-justified-left{justify-content:flex-start}.items-justified-center{justify-content:center}.items-justified-right{justify-content:flex-end}.items-justified-space-between{justify-content:space-between}.screen-reader-text{border:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-wrap:normal!important}.screen-reader-text:focus{background-color:#ddd;clip-path:none;color:#444;display:block;font-size:1em;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}html :where(.has-border-color){border-style:solid}html :where([style*=border-top-color]){border-top-style:solid}html :where([style*=border-right-color]){border-right-style:solid}html :where([style*=border-bottom-color]){border-bottom-style:solid}html :where([style*=border-left-color]){border-left-style:solid}html :where([style*=border-width]){border-style:solid}html :where([style*=border-top-width]){border-top-style:solid}html :where([style*=border-right-width]){border-right-style:solid}html :where([style*=border-bottom-width]){border-bottom-style:solid}html :where([style*=border-left-width]){border-left-style:solid}html :where(img[class*=wp-image-]){height:auto;max-width:100%}:where(figure){margin:0 0 1em}html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:var(--wp-admin--admin-bar--height,0px)}@media screen and (max-width:600px){html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:0px}}
/*# sourceURL=/wp-includes/css/dist/block-library/common.min.css */
</style><style id=global-styles-inline-css>
:root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--color--primary-blue: #004D90;--wp--preset--color--dark-blue: #002759;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgb(6,147,227) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgb(252,185,0) 0%,rgb(255,105,0) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgb(255,105,0) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--gradient--gradient-home: linear-gradient(to bottom, #004D90 0%, #002759 100%);--wp--preset--font-size--small: 0.9rem;--wp--preset--font-size--medium: 1.05rem;--wp--preset--font-size--large: clamp(1.39rem, 1.39rem + ((1vw - 0.2rem) * 0.698), 1.8rem);--wp--preset--font-size--x-large: clamp(1.85rem, 1.85rem + ((1vw - 0.2rem) * 1.106), 2.5rem);--wp--preset--font-size--xx-large: clamp(2.5rem, 2.5rem + ((1vw - 0.2rem) * 1.311), 3.27rem);--wp--preset--font-family--body: "Inter", sans-serif;--wp--preset--font-family--heading: Cardo;--wp--preset--font-family--system-sans-serif: -apple-system, BlinkMacSystemFont, avenir next, avenir, segoe ui, helvetica neue, helvetica, Cantarell, Ubuntu, roboto, noto, arial, sans-serif;--wp--preset--font-family--system-serif: Iowan Old Style, Apple Garamond, Baskerville, Times New Roman, Droid Serif, Times, Source Serif Pro, serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;--wp--preset--font-family--poppins: Poppins;--wp--preset--spacing--20: min(1.5rem, 2vw);--wp--preset--spacing--30: min(2.5rem, 3vw);--wp--preset--spacing--40: min(4rem, 5vw);--wp--preset--spacing--50: min(6.5rem, 8vw);--wp--preset--spacing--60: min(10.5rem, 13vw);--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--spacing--10: 1rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgb(255, 255, 255), 6px 6px rgb(0, 0, 0);--wp--preset--shadow--crisp: 6px 6px 0px rgb(0, 0, 0);--wp--preset--shadow--shadow-1: 6px 6px 10px 0px #00000017;}:root { --wp--style--global--content-size: 1000px;--wp--style--global--wide-size: 1260px; }:where(body) { margin: 0; }.wp-site-blocks { padding-top: var(--wp--style--root--padding-top); padding-bottom: var(--wp--style--root--padding-bottom); }.has-global-padding { padding-right: var(--wp--style--root--padding-right); padding-left: var(--wp--style--root--padding-left); }.has-global-padding > .alignfull { margin-right: calc(var(--wp--style--root--padding-right) * -1); margin-left: calc(var(--wp--style--root--padding-left) * -1); }.has-global-padding :where(:not(.alignfull.is-layout-flow) > .has-global-padding:not(.wp-block-block, .alignfull)) { padding-right: 0; padding-left: 0; }.has-global-padding :where(:not(.alignfull.is-layout-flow) > .has-global-padding:not(.wp-block-block, .alignfull)) > .alignfull { margin-left: 0; margin-right: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.wp-site-blocks) > * { margin-block-start: 1.2rem; margin-block-end: 0; }:where(.wp-site-blocks) > :first-child { margin-block-start: 0; }:where(.wp-site-blocks) > :last-child { margin-block-end: 0; }:root { --wp--style--block-gap: 1.2rem; }:root :where(.is-layout-flow) > :first-child{margin-block-start: 0;}:root :where(.is-layout-flow) > :last-child{margin-block-end: 0;}:root :where(.is-layout-flow) > *{margin-block-start: 1.2rem;margin-block-end: 0;}:root :where(.is-layout-constrained) > :first-child{margin-block-start: 0;}:root :where(.is-layout-constrained) > :last-child{margin-block-end: 0;}:root :where(.is-layout-constrained) > *{margin-block-start: 1.2rem;margin-block-end: 0;}:root :where(.is-layout-flex){gap: 1.2rem;}:root :where(.is-layout-grid){gap: 1.2rem;}.is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}.is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}.is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}.is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}.is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}.is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}.is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}.is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}body{background-color: var(--wp--preset--color--base);color: var(--wp--preset--color--contrast);font-family: var(--wp--preset--font-family--poppins);font-size: var(--wp--preset--font-size--medium);font-style: normal;font-weight: 400;line-height: 1.55;--wp--style--root--padding-top: 0px;--wp--style--root--padding-right: var(--wp--preset--spacing--50);--wp--style--root--padding-bottom: 0px;--wp--style--root--padding-left: var(--wp--preset--spacing--50);}a:where(:not(.wp-element-button)){color: var(--wp--preset--color--contrast);font-family: var(--wp--preset--font-family--poppins);text-decoration: underline;}:root :where(a:where(:not(.wp-element-button)):hover){text-decoration: none;}h1, h2, h3, h4, h5, h6{color: var(--wp--preset--color--contrast);font-family: var(--wp--preset--font-family--poppins);font-style: normal;font-weight: 600;line-height: 1.2;}h1{font-size: clamp(1.837rem, 1.837rem + ((1vw - 0.2rem) * 2.32), 3.2rem);line-height: 1.15;}h2{font-family: var(--wp--preset--font-family--poppins);font-size: clamp(1.25rem, 1.25rem + ((1vw - 0.2rem) * 1.277), 2rem);}h3{font-size: var(--wp--preset--font-size--large);}h4{font-size: clamp(1.1rem, 1.1rem + ((1vw - 0.2rem) * 0.767), 1.5rem);}h5{font-size: var(--wp--preset--font-size--medium);}h6{font-size: var(--wp--preset--font-size--small);}:root :where(.wp-element-button, .wp-block-button__link){background-color: var(--wp--preset--color--contrast);border-radius: .33rem;border-color: var(--wp--preset--color--contrast);border-width: 0;color: var(--wp--preset--color--base);font-family: inherit;font-size: var(--wp--preset--font-size--small);font-style: normal;font-weight: 500;letter-spacing: inherit;line-height: inherit;padding-top: 0.6rem;padding-right: 1rem;padding-bottom: 0.6rem;padding-left: 1rem;text-decoration: none;text-transform: inherit;}:root :where(.wp-element-button:hover, .wp-block-button__link:hover){background-color: var(--wp--preset--color--contrast-2);border-color: var(--wp--preset--color--contrast-2);color: var(--wp--preset--color--base);}:root :where(.wp-element-button:focus, .wp-block-button__link:focus){background-color: var(--wp--preset--color--contrast-2);border-color: var(--wp--preset--color--contrast-2);color: var(--wp--preset--color--base);outline-color: var(--wp--preset--color--contrast);outline-offset: 2px;}:root :where(.wp-element-button:active, .wp-block-button__link:active){background-color: var(--wp--preset--color--contrast);color: var(--wp--preset--color--base);}:root :where(.wp-element-caption, .wp-block-audio figcaption, .wp-block-embed figcaption, .wp-block-gallery figcaption, .wp-block-image figcaption, .wp-block-table figcaption, .wp-block-video figcaption){color: var(--wp--preset--color--contrast-2);font-family: var(--wp--preset--font-family--body);font-size: 0.8rem;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-primary-blue-color{color: var(--wp--preset--color--primary-blue) !important;}.has-dark-blue-color{color: var(--wp--preset--color--dark-blue) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-primary-blue-background-color{background-color: var(--wp--preset--color--primary-blue) !important;}.has-dark-blue-background-color{background-color: var(--wp--preset--color--dark-blue) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-primary-blue-border-color{border-color: var(--wp--preset--color--primary-blue) !important;}.has-dark-blue-border-color{border-color: var(--wp--preset--color--dark-blue) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-gradient-home-gradient-background{background: var(--wp--preset--gradient--gradient-home) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}.has-xx-large-font-size{font-size: var(--wp--preset--font-size--xx-large) !important;}.has-body-font-family{font-family: var(--wp--preset--font-family--body) !important;}.has-heading-font-family{font-family: var(--wp--preset--font-family--heading) !important;}.has-system-sans-serif-font-family{font-family: var(--wp--preset--font-family--system-sans-serif) !important;}.has-system-serif-font-family{font-family: var(--wp--preset--font-family--system-serif) !important;}.has-poppins-font-family{font-family: var(--wp--preset--font-family--poppins) !important;}:where(.wp-site-blocks *:focus){outline-width:2px;outline-style:solid}
:root :where(.wp-block-navigation){font-style: normal;font-weight: 500;}:root :where(.wp-block-navigation-is-layout-flow) > :first-child{margin-block-start: 0;}:root :where(.wp-block-navigation-is-layout-flow) > :last-child{margin-block-end: 0;}:root :where(.wp-block-navigation-is-layout-flow) > *{margin-block-start: var(--wp--preset--spacing--20);margin-block-end: 0;}:root :where(.wp-block-navigation-is-layout-constrained) > :first-child{margin-block-start: 0;}:root :where(.wp-block-navigation-is-layout-constrained) > :last-child{margin-block-end: 0;}:root :where(.wp-block-navigation-is-layout-constrained) > *{margin-block-start: var(--wp--preset--spacing--20);margin-block-end: 0;}:root :where(.wp-block-navigation-is-layout-flex){gap: var(--wp--preset--spacing--20);}:root :where(.wp-block-navigation-is-layout-grid){gap: var(--wp--preset--spacing--20);}
:root :where(.wp-block-navigation a:where(:not(.wp-element-button))){text-decoration: none;}
:root :where(.wp-block-navigation a:where(:not(.wp-element-button)):hover){text-decoration: underline;}
:root :where(.wp-block-site-title){font-family: var(--wp--preset--font-family--body);font-size: clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.553), 1.2rem);font-style: normal;font-weight: 600;}
:root :where(.wp-block-site-title a:where(:not(.wp-element-button))){text-decoration: none;}
:root :where(.wp-block-site-title a:where(:not(.wp-element-button)):hover){text-decoration: none;}
:root :where(.wp-block-heading){color: #000000d1;}
:root :where(.wp-block-heading a:where(:not(.wp-element-button))){color: #000000d1;}
:root :where(.wp-block-navigation-link){line-height: 2;}
/*# sourceURL=global-styles-inline-css */
</style><style id=core-block-supports-inline-css>
.wp-elements-6146203af19bfda12a9ab29b4e724286 a:where(:not(.wp-element-button)){color:var(--wp--preset--color--base-2);}.wp-container-core-group-is-layout-fbcf6490{gap:var(--wp--preset--spacing--20);}.wp-container-core-navigation-is-layout-cca85a86{gap:var(--wp--preset--spacing--20);justify-content:flex-end;}.wp-container-core-group-is-layout-ddb18375{flex-wrap:nowrap;gap:2px;flex-direction:column;align-items:flex-end;}.wp-container-core-group-is-layout-b585a4aa{justify-content:space-between;}.wp-container-core-columns-is-layout-28f84493{flex-wrap:nowrap;}.wp-elements-3e535bf712491d7d1d8928bc5ea2012b a:where(:not(.wp-element-button)){color:var(--wp--preset--color--white);}.wp-elements-b3754538f5af5b5de66588e167706ee8 a:where(:not(.wp-element-button)){color:var(--wp--preset--color--white);}.wp-container-core-group-is-layout-e1300cac{flex-direction:column;align-items:flex-start;}.wp-elements-2af5028b41dc23a949f6cbeaf779a97c a:where(:not(.wp-element-button)){color:var(--wp--preset--color--white);}.wp-container-core-group-is-layout-76562e96{flex-wrap:nowrap;justify-content:center;}.wp-container-2{top:calc(0px + var(--wp-admin--admin-bar--position-offset, 0px));position:sticky;z-index:10;}.wp-elements-d4454b952841c8e643d52c251a890d6e a:where(:not(.wp-element-button)){color:var(--wp--preset--color--white);}.wp-container-core-group-is-layout-fe9cc265{flex-direction:column;align-items:flex-start;}.wp-elements-b62d7bb6dc6265e50c21b08085a06860 a:where(:not(.wp-element-button)){color:var(--wp--preset--color--white);}.wp-container-core-navigation-is-layout-6329a8f3{gap:var(--wp--preset--spacing--10);flex-direction:column;align-items:center;}.wp-container-core-group-is-layout-ce155fab{flex-direction:column;align-items:center;}.wp-container-core-column-is-layout-520232fb > .alignfull{margin-right:calc(0px * -1);margin-left:calc(0px * -1);}.wp-container-core-column-is-layout-520232fb > *{margin-block-start:0;margin-block-end:0;}.wp-container-core-column-is-layout-520232fb > * + *{margin-block-start:0;margin-block-end:0;}
/*# sourceURL=core-block-supports-inline-css */
</style><style id=wp-block-template-skip-link-inline-css>

		.skip-link.screen-reader-text {
			border: 0;
			clip-path: inset(50%);
			height: 1px;
			margin: -1px;
			overflow: hidden;
			padding: 0;
			position: absolute !important;
			width: 1px;
			word-wrap: normal !important;
		}

		.skip-link.screen-reader-text:focus {
			background-color: #eee;
			clip-path: none;
			color: #444;
			display: block;
			font-size: 1em;
			height: auto;
			left: 5px;
			line-height: normal;
			padding: 15px 23px 14px;
			text-decoration: none;
			top: 5px;
			width: auto;
			z-index: 100000;
		}
/*# sourceURL=wp-block-template-skip-link-inline-css */
</style><style id=parent-style-css media=all>/*
Theme Name: Twenty Twenty-Four
Theme URI: https://wordpress.org/themes/twentytwentyfour/
Author: the WordPress team
Author URI: https://wordpress.org
Description: Twenty Twenty-Four is designed to be flexible, versatile and applicable to any website. Its collection of templates and patterns tailor to different needs, such as presenting a business, blogging and writing or showcasing work. A multitude of possibilities open up with just a few adjustments to color and typography. Twenty Twenty-Four comes with style variations and full page designs to help speed up the site building process, is fully compatible with the site editor, and takes advantage of new design tools introduced in WordPress 6.4.
Requires at least: 6.4
Tested up to: 6.9
Requires PHP: 7.0
Version: 1.4
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: twentytwentyfour
Tags: one-column, custom-colors, custom-menu, custom-logo, editor-style, featured-images, full-site-editing, block-patterns, rtl-language-support, sticky-post, threaded-comments, translation-ready, wide-blocks, block-styles, style-variations, accessibility-ready, blog, portfolio, news
*/
</style><link rel=stylesheet id=child-style-css href='https://vibrez-rugby.com/wp-content/themes/twentytwentyfour-child/style.css,qver=9.3.pagespeed.ce.xkQVOV2_4Z.css' media=all /><style class=wp-fonts-local>
@font-face{font-family:Inter;font-style:normal;font-weight:300 900;font-display:optional;src:local('Inter');}
@font-face{font-family:Cardo;font-style:normal;font-weight:400;font-display:fallback;src:url('https://vibrez-rugby.com/wp-content/themes/twentytwentyfour/assets/fonts/cardo/cardo_normal_400.woff2') format('woff2');}
@font-face{font-family:Cardo;font-style:normal;font-weight:700;font-display:fallback;src:url('https://vibrez-rugby.com/wp-content/themes/twentytwentyfour/assets/fonts/cardo/cardo_normal_700.woff2') format('woff2');}
@font-face{font-family:Cardo;font-style:italic;font-weight:400;font-display:fallback;src:url('https://vibrez-rugby.com/wp-content/themes/twentytwentyfour/assets/fonts/cardo/cardo_italic_400.woff2') format('woff2');}



</style><style id=vr-fonts-woff2-optional>
@font-face{font-family:Poppins;font-style:normal;font-weight:400;font-display:optional;src:url('https://vibrez-rugby.com/wp-content/uploads/fonts/Poppins-Regular.woff2') format('woff2');}
@font-face{font-family:Poppins;font-style:normal;font-weight:600;font-display:optional;src:url('https://vibrez-rugby.com/wp-content/uploads/fonts/Poppins-SemiBold.woff2') format('woff2');}
@font-face{font-family:Poppins;font-style:normal;font-weight:300;font-display:optional;src:url('https://vibrez-rugby.com/wp-content/uploads/fonts/Poppins-Light.woff2') format('woff2');}
@font-face{font-family:Inter;font-style:normal;font-weight:300 900;font-display:optional;src:local('Inter');}
</style><style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }

        body {
            font-family: 'Poppins', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
            background-color: #f8fafc;
        }

        .competition-container {
            max-width: 1000px;
            margin: 0 auto;
            padding: 20px;
        }

        .loader {
            display: none;
            position: fixed;
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%);
            background: white;
            padding: 20px;
            border-radius: 8px;
            box-shadow: 0 2px 10px rgba(0,0,0,0.1);
            z-index: 1000;
        }

        .loader.active {
            display: block;
        }

        /* Styles communs avec nouveau thème */
        .competition-header {
            background: linear-gradient(135deg, #374151 0%, #1f2937 100%);
            color: white;
            padding: 15px 20px;
            border-radius: 8px;
            margin-bottom: 20px;
            text-align: center;
            box-shadow: 0 4px 16px rgba(31, 41, 55, 0.3);
        }

        .competition-header h1 {
            font-size: 1.5rem;
            margin: 0;
            font-weight: 600;
        }

        .view-toggle {
            display: flex;
            justify-content: center;
            gap: 10px;
            margin-bottom: 20px;
        }

        .toggle-btn {
            padding: 10px 20px;
            background: white;
            border: 2px solid #e5e7eb;
            border-radius: 25px;
            cursor: pointer;
            transition: all 0.3s ease;
            font-weight: 500;
            color: #374151;
        }

        .toggle-btn:hover {
            transform: translateY(-2px);
            box-shadow: 0 4px 12px rgba(0,0,0,0.1);
        }

        .toggle-btn.active {
            background: #475569;
            color: white;
            border-color: #475569;
            box-shadow: 0 2px 8px rgba(71, 85, 105, 0.3);
        }

        .navigation-tabs {
            display: flex;
            gap: 10px;
            margin-bottom: 20px;
            overflow-x: auto;
            padding: 10px 0;
        }

        .tab {
            padding: 10px 20px;
            background: white;
            border: 2px solid #e5e7eb;
            border-radius: 5px;
            cursor: pointer;
            transition: all 0.3s ease;
            white-space: nowrap;
            color: #374151;
        }

        .tab:hover {
            transform: translateY(-1px);
            box-shadow: 0 2px 8px rgba(0,0,0,0.1);
        }

        .tab.active {
            background: #475569;
            color: white;
            border-color: #475569;
            box-shadow: 0 2px 8px rgba(71, 85, 105, 0.2);
        }

        /* Cup/Tournament Styles */
        .cup-view .phase-container {
            margin-bottom: 40px;
        }
        
        .championship-view .phase-container,
        .tournament-view .phase-container {
            margin-bottom: 40px;
        }

        .phase-header {
            background: linear-gradient(135deg, #374151 0%, #1f2937 100%);
            color: white;
            padding: 15px;
            border-radius: 5px 5px 0 0;
            font-weight: bold;
            display: flex;
            justify-content: space-between;
            align-items: center;
        }

        .phase-type-badge {
            background: rgba(255,255,255,0.2);
            padding: 4px 12px;
            border-radius: 12px;
            font-size: 12px;
            text-transform: uppercase;
        }

        /* Header tab buttons */
        .header-tab-btn {
            padding: 8px 16px !important;
            font-size: 13px !important;
            font-weight: 500;
            transition: all 0.3s ease !important;
        }
        
        .header-tab-btn:hover {
            background: rgba(255,255,255,0.3) !important;
            color: white !important;
            transform: translateY(-1px);
        }

        .header-tab-btn.active:hover {
            background: rgba(255,255,255,0.25) !important;
        }

        /* Match Cards - Simplified */
        .match-card {
            background: white;
            border: 2px solid #e5e7eb;
            border-radius: 10px;
            margin-bottom: 12px;
            overflow: hidden;
            cursor: pointer;
            transition: all 0.3s ease;
            box-shadow: 0 1px 3px rgba(0,0,0,0.1);
            position: relative;
        }

        .match-card:hover {
            transform: translateY(-2px) scale(1.02);
            box-shadow: 0 4px 12px rgba(0,0,0,0.15);
            border-color: #475569;
        }

        .match-card.finished {
            border-color: #1e40af;
        }

        .match-card.finished::before {
            content: '✓';
            position: absolute;
            top: 8px;
            right: 8px;
            color: #1e40af;
            font-weight: bold;
            font-size: 14px;
        }

        .match-card.live {
            border-color: #d62243;
            animation: pulse-border 2s infinite;
        }

        .match-card.live::before {
            content: '● LIVE';
            position: absolute;
            top: 8px;
            right: 8px;
            color: #d62243;
            font-weight: bold;
            font-size: 11px;
            animation: pulse 2s infinite;
        }

        @keyframes pulse-border {
            0% { border-color: #d62243; }
            50% { border-color: #e85a75; }
            100% { border-color: #d62243; }
        }

        /* Desktop layout */
        @media (min-width: 769px) {
            .match-team {
                display: flex;
                align-items: center;
                padding: 12px 15px;
                border-bottom: 1px solid #f3f4f6;
                transition: all 0.2s;
                position: relative;
            }

            .match-team:last-child {
                border-bottom: none;
            }

            .match-team.winner {
                background: linear-gradient(to right, #dbeafe 0%, #eff6ff 100%);
                font-weight: 600;
            }

            .match-team.winner::before {
                content: '';
                position: absolute;
                left: 0;
                top: 0;
                bottom: 0;
                width: 4px;
                background: #1e40af;
            }

            .match-team.loser {
                opacity: 0.7;
            }

            .match-team-logo {
                width: 32px;
                height: 32px;
                object-fit: contain;
                margin-right: 12px;
                border-radius: 4px;
                background: #f9fafb;
                padding: 2px;
            }

            .match-team-name {
                flex: 1;
                font-size: 14px;
                font-weight: 500;
                white-space: nowrap;
                overflow: hidden;
                text-overflow: ellipsis;
                color: #374151;
                font-family: 'Poppins', sans-serif;
            }

            .match-team-score {
                font-size: 18px;
                font-weight: bold;
                color: #475569;
                min-width: 30px;
                text-align: center;
                background: #f1f5f9;
                padding: 4px 10px;
                border-radius: 6px;
            }
        }

        /* Mobile layout - simplified */
        @media (max-width: 768px) {
            .match-card {
                padding: 15px;
                display: flex;
                align-items: center;
                justify-content: space-between;
                gap: 15px;
                position: relative;
            }

            .match-team {
                display: flex;
                flex-direction: column;
                align-items: center;
                text-align: center;
                flex: 1;
                padding: 0;
                border: none;
                background: none !important;
            }

            .match-team::before {
                display: none;
            }

            .match-team-logo {
                width: 40px;
                height: 40px;
                margin-bottom: 6px;
                border-radius: 4px;
            }

            .match-team-name {
                font-size: 11px;
                font-weight: 600;
                max-width: 80px;
                line-height: 1.2;
                overflow: hidden;
                text-overflow: ellipsis;
                white-space: nowrap;
                color: #374151;
                font-family: 'Poppins', sans-serif;
            }

            /* Center content (score or date) */
            .match-center-score {
                font-size: 20px;
                font-weight: bold;
                color: #475569;
                background: #f1f5f9;
                padding: 10px 15px;
                border-radius: 8px;
                text-align: center;
                min-width: 70px;
            }

            .match-center-score.live {
                background: #d62243;
                color: white;
                animation: pulse 2s infinite;
            }

            .match-center-date {
                text-align: center;
                padding: 5px 10px;
            }

            .match-date-day {
                font-size: 12px;
                font-weight: 600;
                color: #475569;
                margin-bottom: 2px;
            }

            .match-date-time {
                font-size: 11px;
                color: #6b7280;
                font-weight: 500;
            }

            .match-info {
                display: none;
            }

            .match-status {
                position: absolute;
                top: 0;
                left: 0;
                right: 0;
                height: 4px;
                border-radius: 4px 4px 0 0;
            }

            .match-card.finished .match-status {
                background: #1e40af;
            }

            .match-card.live .match-status {
                background: #d62243;
                animation: pulse 2s infinite;
            }
        }

        .bracket-match-info {
            background: #f9fafb;
            padding: 6px 12px;
            text-align: center;
            font-size: 11px;
            color: #6b7280;
            border-top: 1px solid #e5e7eb;
        }

        .bracket-match-date {
            font-weight: 500;
            color: #374151;
        }

        .bracket-match-location {
            margin-top: 1px;
            font-size: 10px;
        }

        /* Match Status Indicator */
        .match-status {
            position: absolute;
            top: 0;
            left: 0;
            right: 0;
            height: 3px;
            background: #e5e7eb;
        }

        .bracket-match.finished .match-status {
            background: #1e40af;
        }

        .bracket-match.live .match-status {
            background: #d62243;
            animation: pulse 2s infinite;
        }

        /* Bracket Navigation for Mobile */
        .bracket-navigation {
            display: none;
            position: sticky;
            top: 0;
            background: white;
            padding: 10px;
            border-bottom: 2px solid #e5e7eb;
            margin-bottom: 15px;
            z-index: 100;
        }

        @media (max-width: 768px) {
            .bracket-navigation {
                display: flex;
                gap: 10px;
                overflow-x: auto;
                -webkit-overflow-scrolling: touch;
            }

            .bracket-nav-btn {
                padding: 8px 16px;
                background: #f1f5f9;
                border: 2px solid #475569;
                border-radius: 20px;
                color: #475569;
                font-size: 12px;
                font-weight: 600;
                white-space: nowrap;
                cursor: pointer;
                transition: all 0.3s ease;
            }

            .bracket-nav-btn:hover {
                transform: translateY(-1px);
                box-shadow: 0 2px 8px rgba(71, 85, 105, 0.2);
            }

            .bracket-nav-btn.active {
                background: #475569;
                color: white;
            }
        }

        /* List View for Groups */
        .matches-list {
            background: white;
            border-radius: 0 0 5px 5px;
            padding: 20px;
        }

        .match-row {
            display: grid;
            grid-template-columns: 1fr auto 1fr;
            gap: 15px;
            padding: 15px;
            background: #f9fafb;
            border-radius: 8px;
            margin-bottom: 10px;
            cursor: pointer;
            transition: all 0.3s ease;
            align-items: center;
            border: 2px solid transparent;
        }

        .match-row:hover {
            transform: translateY(-2px);
            box-shadow: 0 4px 12px rgba(0,0,0,0.1);
            border-color: #475569;
        }

        .team-info {
            display: flex;
            align-items: center;
            gap: 10px;
        }

        .team-info.away {
            flex-direction: row-reverse;
            text-align: right;
        }

        .team-logo {
            width: 40px;
            height: 40px;
            object-fit: contain;
        }

        .match-center {
            text-align: center;
            min-width: 120px;
        }

        .score-box {
            background: #374151;
            color: white;
            padding: 8px 16px;
            border-radius: 5px;
            font-weight: bold;
            display: inline-block;
        }

        .score-box.live {
            background: #d62243;
            animation: pulse 2s infinite;
        }

        @keyframes pulse {
            0% { opacity: 1; }
            50% { opacity: 0.8; }
            100% { opacity: 1; }
        }

        .match-datetime {
            font-size: 14px;
            color: #6b7280;
            line-height: 1.4;
        }

        .match-time {
            display: block;
            font-weight: bold;
            color: #374151;
            margin-top: 4px;
        }

        /* Enhanced Responsive Design */
        @media (max-width: 1200px) {
            .bracket-container {
                grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
                gap: 20px;
            }
        }

        @media (max-width: 768px) {
            .competition-container {
                padding: 10px;
            }

            .tournament-bracket {
                padding: 0;
            }

            .match-row {
                grid-template-columns: 1fr;
                gap: 8px;
                padding: 12px;
            }

            .team-info {
                justify-content: center;
            }

            .team-info.away {
                flex-direction: row;
                text-align: left;
            }

            .view-toggle {
                width: 100%;
                justify-content: stretch;
            }

            .toggle-btn {
                flex: 1;
                padding: 12px 10px;
                font-size: 14px;
            }

            .competition-header {
                padding: 15px;
            }

            .competition-header h1 {
                font-size: 20px;
            }

            .phase-header {
                padding: 12px;
                font-size: 14px;
            }

            .match-center {
                min-width: 80px;
            }

            .score-box {
                padding: 6px 12px;
                font-size: 14px;
            }
        }

        /* Ultra small devices */
        @media (max-width: 480px) {
            .bracket-match {
                margin-bottom: 8px;
            }

            .team-logo {
                width: 30px;
                height: 30px;
            }

            .rounds-dropdown-btn {
                padding: 10px 15px;
                font-size: 14px;
            }
        }

        /* Phase type specific styling */
        .phase-container.knockout .phase-header {
            background: linear-gradient(135deg, #ea580c 0%, #dc2626 100%);
        }

        .phase-container.group .phase-header {
            background: linear-gradient(135deg, #004382 0%, #003770 100%);
        }

        /* Dropdown selector styles */
        .rounds-dropdown-btn:hover {
            background: #1f2937 !important;
            transform: translateY(-2px);
            box-shadow: 0 6px 16px rgba(31, 41, 55, 0.3);
        }

        .rounds-dropdown-option:hover {
            background-color: #f9fafb !important;
        }

        .rounds-dropdown-option:first-child {
            border-radius: 6px 6px 0 0;
        }

        .rounds-dropdown-option:last-child {
            border-radius: 0 0 6px 6px;
            border-bottom: none !important;
        }

        /* Responsive dropdown */
        @media (max-width: 768px) {
            .rounds-dropdown-btn {
                min-width: 100% !important;
                justify-content: center !important;
            }
            
            .rounds-dropdown-menu {
                left: 0 !important;
                right: 0 !important;
            }
        }

        /* Bracket Card View for Complex Brackets on Mobile */
        .bracket-cards-view {
            display: none;
        }

        @media (max-width: 768px) {
            .bracket-cards-view {
                display: block;
                padding: 15px;
            }

            .bracket-phase-card {
                background: white;
                border-radius: 12px;
                margin-bottom: 20px;
                box-shadow: 0 2px 8px rgba(0,0,0,0.1);
                overflow: hidden;
            }

            .bracket-phase-card-header {
                background: linear-gradient(135deg, #374151 0%, #1f2937 100%);
                color: white;
                padding: 15px;
                font-weight: 600;
                font-size: 16px;
                text-align: center;
            }

            .bracket-phase-card-content {
                padding: 15px;
            }

            .bracket-phase-card.final .bracket-phase-card-header {
                background: linear-gradient(135deg, #d97706 0%, #f59e0b 100%);
            }

            .bracket-phase-card.semifinal .bracket-phase-card-header {
                background: linear-gradient(135deg, #ea580c 0%, #dc2626 100%);
            }
        }
    </style><script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "WebSite",
  "@id": "https://vibrez-rugby.com/#website",
  "name": "Vibrez Rugby",
  "url": "https://vibrez-rugby.com/",
  "alternateName": "Rugby en direct",
  "about": {
    "@type": "Thing",
    "name": "rugby",
    "sameAs": "https://fr.wikipedia.org/wiki/Rugby_%C3%A0_XV"
  },
  "publisher": {
    "@type": "Organization",
    "@id": "https://vibrez-rugby.com/#organization",
    "name": "Vibrez Rugby",
    "url": "https://vibrez-rugby.com/",
    "logo": {
      "@type": "ImageObject",
      "inLanguage": "fr-FR",
      "url": "https://vibrez-rugby.com/wp-content/uploads/2020/08/cropped-android-chrome-512x512-1-1.webp",
      "contentUrl": "https://vibrez-rugby.com/wp-content/uploads/2020/08/cropped-android-chrome-512x512-1-1.webp",
      "width": 512,
      "height": 512,
      "caption": "Vibrez Rugby"
    }
  },
  "sameAs": [
    "https://www.facebook.com/vibrezrugby/",
    "https://x.com/vibrezrugbyd2",
    "https://mastodon.social/@vibrezrugby",
    "https://www.youtube.com/@VibrezRugby/",
    "http://linkedin.com/in/vibrez-rugby"
  ],
  "potentialAction": {
    "@type": "SearchAction",
    "target": "https://vibrez-rugby.com/?s={search_term_string}",
    "query-input": "required name=search_term_string"
  }
}
</script>
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "ItemList",
  "name": "Navigation principale et entités clés",
  "itemListElement": [
    {
      "@type": "SiteNavigationElement",
      "name": "Rugby en direct",
      "url": "https://vibrez-rugby.com/"
    },
    {
      "@type": "SiteNavigationElement",
      "name": "Top 14",
      "url": "https://vibrez-rugby.com/rugby/top-14/"
    },
    {
      "@type": "SiteNavigationElement",
      "name": "Pro D2",
      "url": "https://vibrez-rugby.com/rugby/pro-d2/"
    },
    {
      "@type": "SiteNavigationElement",
      "name": "Nationale",
      "url": "https://vibrez-rugby.com/rugby/rugby-nationale/"
    },
    {
      "@type": "SiteNavigationElement",
      "name": "XV de France",
      "url": "https://vibrez-rugby.com/rugby/xv-de-france/"
    },
    {
      "@type": "Person",
      "name": "Antoine Dupont",
      "sameAs": "https://vibrez-rugby.com/tag/antoine-dupont/"
    },
    {
      "@type": "Person",
      "name": "Grégory Alldritt",
      "sameAs": "https://vibrez-rugby.com/tag/gregory-alldritt/"
    },
    {
      "@type": "Person",
      "name": "Louis Bielle-Biarrey",
      "sameAs": "https://vibrez-rugby.com/tag/louis-bielle-biarrey/"
    },
    {
      "@type": "Person",
      "name": "Damian Penaud",
      "sameAs": "https://vibrez-rugby.com/tag/damian-penaud/"
    },
    {
      "@type": "Person",
      "name": "Thomas Ramos",
      "sameAs": "https://vibrez-rugby.com/tag/thomas-ramos/"
    },
    {
      "@type": "SiteNavigationElement",
      "name": "Tournoi des Six Nations",
      "url": "https://vibrez-rugby.com/rugby/six-nations/"
    }
  ]
}
</script>
<script type="application/ld+json">{"@context":"https://schema.org","@graph":[{"@type":"ItemList","name":"Calendrier et Résultats - Résultats TOP 14","description":"Consultez le calendrier des matchs à venir et les derniers résultats pour Résultats TOP 14","numberOfItems":14,"itemListElement":[{"@type":"ListItem","position":1,"item":{"@type":"SportsEvent","name":"Pau vs Clermont","startDate":"2026-05-16T14:30:00.000+02:00","eventStatus":"http://schema.org/EventScheduled","url":"https://vibrez-rugby.com/live-en-direct/?id=5614","competitor":[{"@type":"SportsTeam","name":"Pau","image":"https://vibrez-rugby.com/wp-content/uploads/2024/08/big_pau.png"},{"@type":"SportsTeam","name":"Clermont","image":"https://vibrez-rugby.com/wp-content/uploads/2024/08/big_clermont.png"}],"location":{"@type":"Place","name":"Top 14","address":{"addressCountry":"FR"}},"organizer":{"@type":"Organization","name":"Ligue Nationale de Rugby","url":"https://www.lnr.fr"},"offers":{"@type":"Offer","availability":"http://schema.org/InStock","url":"https://vibrez-rugby.com/live-en-direct/?id=5614"},"description":"Match de rugby entre Pau et Clermont.","endDate":"2026-05-16T16:30:00+02:00","image":["https://vibrez-rugby.com/wp-content/uploads/2024/08/big_pau.png","https://vibrez-rugby.com/wp-content/uploads/2024/08/big_clermont.png"]}},{"@type":"ListItem","position":2,"item":{"@type":"SportsEvent","name":"Lyon vs Bayonne","startDate":"2026-05-16T16:35:00.000+02:00","eventStatus":"http://schema.org/EventScheduled","url":"https://vibrez-rugby.com/live-en-direct/?id=5612","competitor":[{"@type":"SportsTeam","name":"Lyon","image":"https://vibrez-rugby.com/wp-content/uploads/2024/08/big_lyon.png"},{"@type":"SportsTeam","name":"Bayonne","image":"https://vibrez-rugby.com/wp-content/uploads/2024/08/big_bayonne.png"}],"location":{"@type":"Place","name":"Top 14","address":{"addressCountry":"FR"}},"organizer":{"@type":"Organization","name":"Ligue Nationale de Rugby","url":"https://www.lnr.fr"},"offers":{"@type":"Offer","availability":"http://schema.org/InStock","url":"https://vibrez-rugby.com/live-en-direct/?id=5612"},"description":"Match de rugby entre Lyon et Bayonne.","endDate":"2026-05-16T18:35:00+02:00","image":["https://vibrez-rugby.com/wp-content/uploads/2024/08/big_lyon.png","https://vibrez-rugby.com/wp-content/uploads/2024/08/big_bayonne.png"]}},{"@type":"ListItem","position":3,"item":{"@type":"SportsEvent","name":"Castres vs Montpellier","startDate":"2026-05-16T16:35:00.000+02:00","eventStatus":"http://schema.org/EventScheduled","url":"https://vibrez-rugby.com/live-en-direct/?id=5611","competitor":[{"@type":"SportsTeam","name":"Castres","image":"https://vibrez-rugby.com/wp-content/uploads/2024/08/big_castres.png"},{"@type":"SportsTeam","name":"Montpellier","image":"https://vibrez-rugby.com/wp-content/uploads/2024/08/big_montpellier.png"}],"location":{"@type":"Place","name":"Top 14","address":{"addressCountry":"FR"}},"organizer":{"@type":"Organization","name":"Ligue Nationale de Rugby","url":"https://www.lnr.fr"},"offers":{"@type":"Offer","availability":"http://schema.org/InStock","url":"https://vibrez-rugby.com/live-en-direct/?id=5611"},"description":"Match de rugby entre Castres et Montpellier.","endDate":"2026-05-16T18:35:00+02:00","image":["https://vibrez-rugby.com/wp-content/uploads/2024/08/big_castres.png","https://vibrez-rugby.com/wp-content/uploads/2024/08/big_montpellier.png"]}},{"@type":"ListItem","position":4,"item":{"@type":"SportsEvent","name":"Bordeaux-Bègles vs Perpignan","startDate":"2026-05-16T16:35:00.000+02:00","eventStatus":"http://schema.org/EventScheduled","url":"https://vibrez-rugby.com/live-en-direct/?id=5616","competitor":[{"@type":"SportsTeam","name":"Bordeaux-Bègles","image":"https://vibrez-rugby.com/wp-content/uploads/2024/08/big_bordeaux-begles.png"},{"@type":"SportsTeam","name":"Perpignan","image":"https://vibrez-rugby.com/wp-content/uploads/2024/08/big_perpignan.png"}],"location":{"@type":"Place","name":"Top 14","address":{"addressCountry":"FR"}},"organizer":{"@type":"Organization","name":"Ligue Nationale de Rugby","url":"https://www.lnr.fr"},"offers":{"@type":"Offer","availability":"http://schema.org/InStock","url":"https://vibrez-rugby.com/live-en-direct/?id=5616"},"description":"Match de rugby entre Bordeaux-Bègles et Perpignan.","endDate":"2026-05-16T18:35:00+02:00","image":["https://vibrez-rugby.com/wp-content/uploads/2024/08/big_bordeaux-begles.png","https://vibrez-rugby.com/wp-content/uploads/2024/08/big_perpignan.png"]}},{"@type":"ListItem","position":5,"item":{"@type":"SportsEvent","name":"Montauban vs Stade Français","startDate":"2026-05-16T16:35:00.000+02:00","eventStatus":"http://schema.org/EventScheduled","url":"https://vibrez-rugby.com/live-en-direct/?id=5617","competitor":[{"@type":"SportsTeam","name":"Montauban","image":"https://vibrez-rugby.com/wp-content/uploads/2024/09/big_montauban.png"},{"@type":"SportsTeam","name":"Stade Français","image":"https://vibrez-rugby.com/wp-content/uploads/2024/08/big_stade-francais.png"}],"location":{"@type":"Place","name":"Top 14","address":{"addressCountry":"FR"}},"organizer":{"@type":"Organization","name":"Ligue Nationale de Rugby","url":"https://www.lnr.fr"},"offers":{"@type":"Offer","availability":"http://schema.org/InStock","url":"https://vibrez-rugby.com/live-en-direct/?id=5617"},"description":"Match de rugby entre Montauban et Stade Français.","endDate":"2026-05-16T18:35:00+02:00","image":["https://vibrez-rugby.com/wp-content/uploads/2024/09/big_montauban.png","https://vibrez-rugby.com/wp-content/uploads/2024/08/big_stade-francais.png"]}},{"@type":"ListItem","position":6,"item":{"@type":"SportsEvent","name":"Racing 92 vs Toulon","startDate":"2026-05-16T21:00:00.000+02:00","eventStatus":"http://schema.org/EventScheduled","url":"https://vibrez-rugby.com/live-en-direct/?id=9524","competitor":[{"@type":"SportsTeam","name":"Racing 92","image":"https://vibrez-rugby.com/wp-content/uploads/2024/08/big_racing-92.png"},{"@type":"SportsTeam","name":"Toulon","image":"https://medias.lequipe.fr/logo-rugby/23/280"}],"location":{"@type":"Place","name":"Top 14","address":{"addressCountry":"FR"}},"organizer":{"@type":"Organization","name":"Ligue Nationale de Rugby","url":"https://www.lnr.fr"},"offers":{"@type":"Offer","availability":"http://schema.org/InStock","url":"https://vibrez-rugby.com/live-en-direct/?id=9524"},"description":"Match de rugby entre Racing 92 et Toulon.","endDate":"2026-05-16T23:00:00+02:00","image":["https://vibrez-rugby.com/wp-content/uploads/2024/08/big_racing-92.png","https://medias.lequipe.fr/logo-rugby/23/280"]}},{"@type":"ListItem","position":7,"item":{"@type":"SportsEvent","name":"La Rochelle vs Toulouse","startDate":"2026-05-17T21:05:00.000+02:00","eventStatus":"http://schema.org/EventScheduled","url":"https://vibrez-rugby.com/live-en-direct/?id=5615","competitor":[{"@type":"SportsTeam","name":"La Rochelle","image":"https://vibrez-rugby.com/wp-content/uploads/2024/08/big_la-rochelle.png"},{"@type":"SportsTeam","name":"Toulouse","image":"https://vibrez-rugby.com/wp-content/uploads/2024/08/big_toulouse.png"}],"location":{"@type":"Place","name":"Top 14","address":{"addressCountry":"FR"}},"organizer":{"@type":"Organization","name":"Ligue Nationale de Rugby","url":"https://www.lnr.fr"},"offers":{"@type":"Offer","availability":"http://schema.org/InStock","url":"https://vibrez-rugby.com/live-en-direct/?id=5615"},"description":"Match de rugby entre La Rochelle et Toulouse.","endDate":"2026-05-17T23:05:00+02:00","image":["https://vibrez-rugby.com/wp-content/uploads/2024/08/big_la-rochelle.png","https://vibrez-rugby.com/wp-content/uploads/2024/08/big_toulouse.png"]}},{"@type":"ListItem","position":8,"item":{"@type":"SportsEvent","name":"Racing 92 vs La Rochelle","startDate":"2026-05-10T21:05:00.000+02:00","eventStatus":"http://schema.org/EventCompleted","url":"https://vibrez-rugby.com/live-en-direct/?id=5607","competitor":[{"@type":"SportsTeam","name":"Racing 92","image":"https://vibrez-rugby.com/wp-content/uploads/2024/08/big_racing-92.png","additionalProperty":{"@type":"PropertyValue","name":"score","value":"24"}},{"@type":"SportsTeam","name":"La Rochelle","image":"https://vibrez-rugby.com/wp-content/uploads/2024/08/big_la-rochelle.png","additionalProperty":{"@type":"PropertyValue","name":"score","value":"26"}}],"location":{"@type":"Place","name":"Top 14","address":{"addressCountry":"FR"}},"organizer":{"@type":"Organization","name":"Ligue Nationale de Rugby","url":"https://www.lnr.fr"},"offers":{"@type":"Offer","availability":"http://schema.org/InStock","url":"https://vibrez-rugby.com/live-en-direct/?id=5607"},"description":"Match de rugby entre Racing 92 et La Rochelle.","endDate":"2026-05-10T23:05:00+02:00","image":["https://vibrez-rugby.com/wp-content/uploads/2024/08/big_racing-92.png","https://vibrez-rugby.com/wp-content/uploads/2024/08/big_la-rochelle.png"]}},{"@type":"ListItem","position":9,"item":{"@type":"SportsEvent","name":"Toulon vs Toulouse","startDate":"2026-05-09T21:00:00.000+02:00","eventStatus":"http://schema.org/EventCompleted","url":"https://vibrez-rugby.com/live-en-direct/?id=9523","competitor":[{"@type":"SportsTeam","name":"Toulon","image":"https://medias.lequipe.fr/logo-rugby/23/280","additionalProperty":{"@type":"PropertyValue","name":"score","value":"27"}},{"@type":"SportsTeam","name":"Toulouse","image":"https://vibrez-rugby.com/wp-content/uploads/2024/08/big_toulouse.png","additionalProperty":{"@type":"PropertyValue","name":"score","value":"51"}}],"location":{"@type":"Place","name":"Top 14","address":{"addressCountry":"FR"}},"organizer":{"@type":"Organization","name":"Ligue Nationale de Rugby","url":"https://www.lnr.fr"},"offers":{"@type":"Offer","availability":"http://schema.org/InStock","url":"https://vibrez-rugby.com/live-en-direct/?id=9523"},"description":"Match de rugby entre Toulon et Toulouse.","endDate":"2026-05-09T23:00:00+02:00","image":["https://medias.lequipe.fr/logo-rugby/23/280","https://vibrez-rugby.com/wp-content/uploads/2024/08/big_toulouse.png"]}},{"@type":"ListItem","position":10,"item":{"@type":"SportsEvent","name":"Stade Français vs Lyon","startDate":"2026-05-09T16:35:00.000+02:00","eventStatus":"http://schema.org/EventCompleted","url":"https://vibrez-rugby.com/live-en-direct/?id=5610","competitor":[{"@type":"SportsTeam","name":"Stade Français","image":"https://vibrez-rugby.com/wp-content/uploads/2024/08/big_stade-francais.png","additionalProperty":{"@type":"PropertyValue","name":"score","value":"59"}},{"@type":"SportsTeam","name":"Lyon","image":"https://vibrez-rugby.com/wp-content/uploads/2024/08/big_lyon.png","additionalProperty":{"@type":"PropertyValue","name":"score","value":"17"}}],"location":{"@type":"Place","name":"Top 14","address":{"addressCountry":"FR"}},"organizer":{"@type":"Organization","name":"Ligue Nationale de Rugby","url":"https://www.lnr.fr"},"offers":{"@type":"Offer","availability":"http://schema.org/InStock","url":"https://vibrez-rugby.com/live-en-direct/?id=5610"},"description":"Match de rugby entre Stade Français et Lyon.","endDate":"2026-05-09T18:35:00+02:00","image":["https://vibrez-rugby.com/wp-content/uploads/2024/08/big_stade-francais.png","https://vibrez-rugby.com/wp-content/uploads/2024/08/big_lyon.png"]}},{"@type":"ListItem","position":11,"item":{"@type":"SportsEvent","name":"Bayonne vs Bordeaux-Bègles","startDate":"2026-05-09T16:35:00.000+02:00","eventStatus":"http://schema.org/EventCompleted","url":"https://vibrez-rugby.com/live-en-direct/?id=5605","competitor":[{"@type":"SportsTeam","name":"Bayonne","image":"https://vibrez-rugby.com/wp-content/uploads/2024/08/big_bayonne.png","additionalProperty":{"@type":"PropertyValue","name":"score","value":"38"}},{"@type":"SportsTeam","name":"Bordeaux-Bègles","image":"https://vibrez-rugby.com/wp-content/uploads/2024/08/big_bordeaux-begles.png","additionalProperty":{"@type":"PropertyValue","name":"score","value":"40"}}],"location":{"@type":"Place","name":"Top 14","address":{"addressCountry":"FR"}},"organizer":{"@type":"Organization","name":"Ligue Nationale de Rugby","url":"https://www.lnr.fr"},"offers":{"@type":"Offer","availability":"http://schema.org/InStock","url":"https://vibrez-rugby.com/live-en-direct/?id=5605"},"description":"Match de rugby entre Bayonne et Bordeaux-Bègles.","endDate":"2026-05-09T18:35:00+02:00","image":["https://vibrez-rugby.com/wp-content/uploads/2024/08/big_bayonne.png","https://vibrez-rugby.com/wp-content/uploads/2024/08/big_bordeaux-begles.png"]}},{"@type":"ListItem","position":12,"item":{"@type":"SportsEvent","name":"Clermont vs Perpignan","startDate":"2026-05-09T16:35:00.000+02:00","eventStatus":"http://schema.org/EventCompleted","url":"https://vibrez-rugby.com/live-en-direct/?id=5604","competitor":[{"@type":"SportsTeam","name":"Clermont","image":"https://vibrez-rugby.com/wp-content/uploads/2024/08/big_clermont.png","additionalProperty":{"@type":"PropertyValue","name":"score","value":"45"}},{"@type":"SportsTeam","name":"Perpignan","image":"https://vibrez-rugby.com/wp-content/uploads/2024/08/big_perpignan.png","additionalProperty":{"@type":"PropertyValue","name":"score","value":"14"}}],"location":{"@type":"Place","name":"Top 14","address":{"addressCountry":"FR"}},"organizer":{"@type":"Organization","name":"Ligue Nationale de Rugby","url":"https://www.lnr.fr"},"offers":{"@type":"Offer","availability":"http://schema.org/InStock","url":"https://vibrez-rugby.com/live-en-direct/?id=5604"},"description":"Match de rugby entre Clermont et Perpignan.","endDate":"2026-05-09T18:35:00+02:00","image":["https://vibrez-rugby.com/wp-content/uploads/2024/08/big_clermont.png","https://vibrez-rugby.com/wp-content/uploads/2024/08/big_perpignan.png"]}},{"@type":"ListItem","position":13,"item":{"@type":"SportsEvent","name":"Montpellier vs Montauban","startDate":"2026-05-09T16:35:00.000+02:00","eventStatus":"http://schema.org/EventCompleted","url":"https://vibrez-rugby.com/live-en-direct/?id=5606","competitor":[{"@type":"SportsTeam","name":"Montpellier","image":"https://vibrez-rugby.com/wp-content/uploads/2024/08/big_montpellier.png","additionalProperty":{"@type":"PropertyValue","name":"score","value":"59"}},{"@type":"SportsTeam","name":"Montauban","image":"https://vibrez-rugby.com/wp-content/uploads/2024/09/big_montauban.png","additionalProperty":{"@type":"PropertyValue","name":"score","value":"7"}}],"location":{"@type":"Place","name":"Top 14","address":{"addressCountry":"FR"}},"organizer":{"@type":"Organization","name":"Ligue Nationale de Rugby","url":"https://www.lnr.fr"},"offers":{"@type":"Offer","availability":"http://schema.org/InStock","url":"https://vibrez-rugby.com/live-en-direct/?id=5606"},"description":"Match de rugby entre Montpellier et Montauban.","endDate":"2026-05-09T18:35:00+02:00","image":["https://vibrez-rugby.com/wp-content/uploads/2024/08/big_montpellier.png","https://vibrez-rugby.com/wp-content/uploads/2024/09/big_montauban.png"]}},{"@type":"ListItem","position":14,"item":{"@type":"SportsEvent","name":"Pau vs Castres","startDate":"2026-05-09T14:30:00.000+02:00","eventStatus":"http://schema.org/EventCompleted","url":"https://vibrez-rugby.com/live-en-direct/?id=5609","competitor":[{"@type":"SportsTeam","name":"Pau","image":"https://vibrez-rugby.com/wp-content/uploads/2024/08/big_pau.png","additionalProperty":{"@type":"PropertyValue","name":"score","value":"27"}},{"@type":"SportsTeam","name":"Castres","image":"https://vibrez-rugby.com/wp-content/uploads/2024/08/big_castres.png","additionalProperty":{"@type":"PropertyValue","name":"score","value":"15"}}],"location":{"@type":"Place","name":"Top 14","address":{"addressCountry":"FR"}},"organizer":{"@type":"Organization","name":"Ligue Nationale de Rugby","url":"https://www.lnr.fr"},"offers":{"@type":"Offer","availability":"http://schema.org/InStock","url":"https://vibrez-rugby.com/live-en-direct/?id=5609"},"description":"Match de rugby entre Pau et Castres.","endDate":"2026-05-09T16:30:00+02:00","image":["https://vibrez-rugby.com/wp-content/uploads/2024/08/big_pau.png","https://vibrez-rugby.com/wp-content/uploads/2024/08/big_castres.png"]}}]},{"@type":"FAQPage","mainEntity":[{"@type":"Question","name":"Les dates et heures des matchs pour Résultats TOP 14 sont-elles définitives ?","acceptedAnswer":{"@type":"Answer","text":"Les dates des journées sont généralement fixées en début de saison, mais les horaires précis des matchs sont confirmés par l'organisateur (LNR, FFR, EPCR...) quelques semaines à l'avance, notamment en fonction des choix des diffuseurs TV. Consultez régulièrement cette page pour les informations les plus à jour."}},{"@type":"Question","name":"Où puis-je voir les résumés vidéo des matchs terminés ?","acceptedAnswer":{"@type":"Answer","text":"Pour la plupart des rencontres, un résumé vidéo incluant les essais et les meilleures actions est disponible peu de temps après le coup de sifflet final. Vous pouvez retrouver ces résumés dans notre section dédiée aux vidéos de rugby."}},{"@type":"Question","name":"Comment suivre les scores en direct des matchs ?","acceptedAnswer":{"@type":"Answer","text":"Vous pouvez suivre l'évolution des scores en temps réel, les compositions d'équipes et les statistiques détaillées de chaque match sur notre section dédiée aux matchs de rugby en direct."}}]},{"@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https://vibrez-rugby.com/"},{"@type":"ListItem","position":2,"name":"Résultats TOP 14","item":"https://vibrez-rugby.com/resultats-top-14/"}]}]}</script>
<meta name=description content="Résultats TOP 14 : retrouvez tous les scores et résultats du championnat Top 14, le championnat de rugby professionnel français, sur Vibrez Rugby."/>
<link rel=canonical href="https://vibrez-rugby.com/resultats-top-14/"/>
<meta property=og:locale content=fr_FR />
<meta property=og:type content=article />
<meta property=og:title content="Résultats TOP 14 - Vibrez Rugby"/>
<meta property=og:description content="Résultats TOP 14 : retrouvez tous les scores et résultats du championnat Top 14, le championnat de rugby professionnel français, sur Vibrez Rugby."/>
<meta property=og:url content="https://vibrez-rugby.com/resultats-top-14/"/>
<meta property=og:site_name content="Rugby en direct - Vibrez Rugby"/>
<meta property=article:publisher content="https://www.facebook.com/vibrezrugby/"/>
<meta property=article:modified_time content="2026-04-18T14:26:55+00:00"/>
<meta property=og:image content="https://vibrez-rugby.com/wp-content/uploads/2022/01/Resultats-multiplex-Top-14.jpg"/>
<meta property=og:image:width content=470 />
<meta property=og:image:height content=264 />
<meta property=og:image:type content="image/jpeg"/>
<meta name=twitter:card content=summary_large_image />
<meta name=twitter:site content="@vibrezrugbyd2"/>
<meta name=twitter:label1 content="Durée de lecture estimée"/>
<meta name=twitter:data1 content="3 minutes"/>
<title>Résultats Top 14 2025-2026 — Scores et historique des matchs | Vibrez Rugby</title>
<link rel=alternate type="application/rss+xml" title="Rugby en direct - Vibrez Rugby &raquo; Flux" href="https://vibrez-rugby.com/feed/"/>
<link rel=alternate type="application/rss+xml" title="Rugby en direct - Vibrez Rugby &raquo; Flux des commentaires" href="https://vibrez-rugby.com/comments/feed/"/>
<link rel=alternate title="oEmbed (JSON)" type="application/json+oembed" href="https://vibrez-rugby.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fvibrez-rugby.com%2Fresultats-top-14%2F"/>
<link rel=alternate title="oEmbed (XML)" type="text/xml+oembed" href="https://vibrez-rugby.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fvibrez-rugby.com%2Fresultats-top-14%2F&#038;format=xml"/>
<script id=breeze-prefetch-js-extra>var breeze_prefetch={"local_url":"https://vibrez-rugby.com","ignore_remote_prefetch":"1","ignore_list":["/","/feed/sitemap-news/","/sitemap_index.xml","/rugby/","/actualite-rugby/","/feed/","/sitemap-lives.xml","/club/","/rugby/","/competition/","/staff/","wp-admin","wp-login.php"]};</script>
<script id=breeze-prefetch-js>//<![CDATA[
var timer,ready=e=>{"loading"!=document.readyState?e():document.addEventListener("DOMContentLoaded",e)};function get_prefetch_key(e){return(-1!==e.indexOf("#")?e.substring(0,e.indexOf("#")):e).replace(/\/+$/,"")}function search_for_banned_links(e,r){if(!e.length)return!1;for(var t=-1!==(r=(r=r.startsWith("/")?r.substring(1):r).replace(/\/+$/,"")).indexOf("/")?r.indexOf("/"):r.indexOf("?"),n=-1!==t?r.substring(0,t):r,i=0;i<e.length;i++){var a=e[i].replace(/\/+$/,"");if("wp-admin"===a||"wp-login.php"===a){if(n===a)return!0}else if(r.includes(a)||a.includes(r))return!0}return!1}function breeze_ignore_special_links(e,r){var t=!0;if(-1!==r.indexOf("#")){var n=r.substring(0,r.indexOf("#")).replace(breeze_prefetch.local_url,"");if(search_for_banned_links(breeze_prefetch.ignore_list,n))return!1}return-1===r.indexOf("add-to-cart=")&&-1===r.indexOf("?remove_item=")||(t=!1),t=void 0!==e.dataset.product_id&&void 0!==e.dataset.quantity&&void 0!==e.dataset.product_sku?!1:t}ready(()=>{var c=[];addEventListener("mouseover",function(e){var i,a,l=e.target&&e.target.closest?e.target.closest("a"):null;l instanceof HTMLAnchorElement&&(i=new URL(breeze_prefetch.local_url).host,(a=l.attributes.href?l.attributes.href.value:null)&&(-1===a.indexOf(i)&&(a=l.href),timer=setTimeout(function(){var e,r,t,n;"#"!==a&&(n=(e=get_prefetch_key(a)).replace(breeze_prefetch.local_url,""),t=new URL(a).host,""!==a.trim()&&!1===c.includes(e)&&i===t&&!1===search_for_banned_links(breeze_prefetch.ignore_list,n)&&!0===breeze_ignore_special_links(l,a)&&(c.push(e),r=document.createElement("link"),t=get_prefetch_key(breeze_prefetch.local_url),n=-1!==a.indexOf("#")?a.substring(0,a.indexOf("#")):a,n=e===t?breeze_prefetch.local_url:n,e!==t&&"/"!==n.slice(-1)&&(n+="/"),r.href=n,r.rel="prefetch",document.head.appendChild(r)))},150)))}),addEventListener("mouseout",function(e){clearTimeout(timer)})});
//]]></script>
<link rel="https://api.w.org/" href="https://vibrez-rugby.com/wp-json/"/><link rel=alternate title=JSON type="application/json" href="https://vibrez-rugby.com/wp-json/wp/v2/pages/80454"/><link rel=EditURI type="application/rsd+xml" title=RSD href="https://vibrez-rugby.com/xmlrpc.php?rsd"/>
<meta name=generator content="WordPress 6.9.4"/>
<link rel=shortlink href='https://vibrez-rugby.com/?p=80454'/>
<meta name=onesignal-plugin content=wordpress-3.8.1>
<script src="https://cdn.onesignal.com/sdks/web/v16/OneSignalSDK.page.js" defer></script>
<script>
          window.OneSignalDeferred = window.OneSignalDeferred || [];
          OneSignalDeferred.push(async function(OneSignal) {
            await OneSignal.init({
              appId: "1c06a74d-b0b8-4a67-ab8e-9fdee9ba212c",
              serviceWorkerOverrideForTypical: true,
              path: "https://vibrez-rugby.com/wp-content/plugins/onesignal-free-web-push-notifications/sdk_files/",
              serviceWorkerParam: { scope: "/wp-content/plugins/onesignal-free-web-push-notifications/sdk_files/push/onesignal/" },
              serviceWorkerPath: "OneSignalSDKWorker.js",
            });
          });

          // Unregister the legacy OneSignal service worker to prevent scope conflicts
          if (navigator.serviceWorker) {
            navigator.serviceWorker.getRegistrations().then((registrations) => {
              // Iterate through all registered service workers
              registrations.forEach((registration) => {
                // Check the script URL to identify the specific service worker
                if (registration.active && registration.active.scriptURL.includes('OneSignalSDKWorker.js.php')) {
                  // Unregister the service worker
                  registration.unregister().then((success) => {
                    if (success) {
                      console.log('OneSignalSW: Successfully unregistered:', registration.active.scriptURL);
                    } else {
                      console.log('OneSignalSW: Failed to unregister:', registration.active.scriptURL);
                    }
                  });
                }
              });
            }).catch((error) => {
              console.error('Error fetching service worker registrations:', error);
            });
        }
        </script>
<script async src="https://www.googletagmanager.com/gtag/js?id=G-XMJEYXZ5FC"></script>
<script>window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments);}gtag('js',new Date());gtag('config','G-XMJEYXZ5FC');</script>
<script type=importmap id=wp-importmap>
{"imports":{"@wordpress/interactivity":"https://vibrez-rugby.com/wp-includes/js/dist/script-modules/interactivity/index.min.js?ver=66c613f68580994bb00a"}}
</script>
<link rel=modulepreload href="https://vibrez-rugby.com/wp-includes/js/dist/script-modules/interactivity/index.min.js?ver=66c613f68580994bb00a" id="@wordpress/interactivity-js-modulepreload" fetchpriority=low>
<link rel=icon href="https://vibrez-rugby.com/wp-content/uploads/2020/08/xcropped-android-chrome-512x512-1-1-150x150.webp.pagespeed.ic.2HG4NE3yOM.webp" sizes=32x32 />
<link rel=icon href="https://vibrez-rugby.com/wp-content/uploads/2020/08/xcropped-android-chrome-512x512-1-1-300x300.webp.pagespeed.ic.EXEXnOAYO-.webp" sizes=192x192 />
<link rel=apple-touch-icon href="https://vibrez-rugby.com/wp-content/uploads/2020/08/xcropped-android-chrome-512x512-1-1-300x300.webp.pagespeed.ic.EXEXnOAYO-.webp"/>
<meta name=msapplication-TileImage content="https://vibrez-rugby.com/wp-content/uploads/2020/08/cropped-android-chrome-512x512-1-1-300x300.webp"/>
<script data-pagespeed-no-defer>//<![CDATA[
(function(){function f(a,b,d){if(a.addEventListener)a.addEventListener(b,d,!1);else if(a.attachEvent)a.attachEvent("on"+b,d);else{var c=a["on"+b];a["on"+b]=function(){d.call(this);c&&c.call(this)}}};window.pagespeed=window.pagespeed||{};var g=window.pagespeed;function k(a){this.g=[];this.f=0;this.h=!1;this.j=a;this.i=null;this.l=0;this.b=!1;this.a=0}function l(a,b){var d=b.getAttribute("data-pagespeed-lazy-position");if(d)return parseInt(d,0);var d=b.offsetTop,c=b.offsetParent;c&&(d+=l(a,c));d=Math.max(d,0);b.setAttribute("data-pagespeed-lazy-position",d);return d}
function m(a,b){var d,c,e;if(!a.b&&(0==b.offsetHeight||0==b.offsetWidth))return!1;a:if(b.currentStyle)c=b.currentStyle.position;else{if(document.defaultView&&document.defaultView.getComputedStyle&&(c=document.defaultView.getComputedStyle(b,null))){c=c.getPropertyValue("position");break a}c=b.style&&b.style.position?b.style.position:""}if("relative"==c)return!0;e=0;"number"==typeof window.pageYOffset?e=window.pageYOffset:document.body&&document.body.scrollTop?e=document.body.scrollTop:document.documentElement&&
document.documentElement.scrollTop&&(e=document.documentElement.scrollTop);d=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight;c=e;e+=d;var h=b.getBoundingClientRect();h?(e=h.top-d,c=h.bottom):(h=l(a,b),d=h+b.offsetHeight,e=h-e,c=d-c);return e<=a.f&&0<=c+a.f}
k.prototype.m=function(a){p(a);var b=this;window.setTimeout(function(){var d=a.getAttribute("data-pagespeed-lazy-src");if(d)if((b.h||m(b,a))&&-1!=a.src.indexOf(b.j)){var c=a.parentNode,e=a.nextSibling;c&&c.removeChild(a);a.c&&(a.getAttribute=a.c);a.removeAttribute("onload");a.tagName&&"IMG"==a.tagName&&g.CriticalImages&&f(a,"load",function(){g.CriticalImages.checkImageForCriticality(this);b.b&&(b.a--,b.a||g.CriticalImages.checkCriticalImages())});a.removeAttribute("data-pagespeed-lazy-src");a.removeAttribute("data-pagespeed-lazy-replaced-functions");
c&&c.insertBefore(a,e);if(c=a.getAttribute("data-pagespeed-lazy-srcset"))a.srcset=c,a.removeAttribute("data-pagespeed-lazy-srcset");a.src=d}else b.g.push(a)},0)};k.prototype.loadIfVisibleAndMaybeBeacon=k.prototype.m;k.prototype.s=function(){this.h=!0;q(this)};k.prototype.loadAllImages=k.prototype.s;function q(a){var b=a.g,d=b.length;a.g=[];for(var c=0;c<d;++c)a.m(b[c])}function t(a,b){return a.a?null!=a.a(b):null!=a.getAttribute(b)}
k.prototype.u=function(){for(var a=document.getElementsByTagName("img"),b=0,d;d=a[b];b++)t(d,"data-pagespeed-lazy-src")&&p(d)};k.prototype.overrideAttributeFunctions=k.prototype.u;function p(a){t(a,"data-pagespeed-lazy-replaced-functions")||(a.c=a.getAttribute,a.getAttribute=function(a){"src"==a.toLowerCase()&&t(this,"data-pagespeed-lazy-src")&&(a="data-pagespeed-lazy-src");return this.c(a)},a.setAttribute("data-pagespeed-lazy-replaced-functions","1"))}
g.o=function(a,b){function d(){if(!(c.b&&a||c.i)){var b=200;200<(new Date).getTime()-c.l&&(b=0);c.i=window.setTimeout(function(){c.l=(new Date).getTime();q(c);c.i=null},b)}}var c=new k(b);g.lazyLoadImages=c;f(window,"load",function(){c.b=!0;c.h=a;c.f=200;if(g.CriticalImages){for(var b=0,d=document.getElementsByTagName("img"),r=0,n;n=d[r];r++)-1!=n.src.indexOf(c.j)&&t(n,"data-pagespeed-lazy-src")&&b++;c.a=b;c.a||g.CriticalImages.checkCriticalImages()}q(c)});b.indexOf("data")&&((new Image).src=b);f(window,
"scroll",d);f(window,"resize",d)};g.lazyLoadInit=g.o;})();

pagespeed.lazyLoadInit(true, "/pagespeed_static/1.JiBnMqyl6S.gif");

//]]></script></head>
<body class="wp-singular page-template-default page page-id-80454 wp-custom-logo wp-embed-responsive wp-theme-twentytwentyfour wp-child-theme-twentytwentyfour-child"><noscript><meta http-equiv="refresh" content="0;url='https://vibrez-rugby.com/resultats-top-14/?PageSpeed=noscript'" /><style><!--table,div,span,font,p{display:none} --></style><div style="display:block">Please click <a href="https://vibrez-rugby.com/resultats-top-14/?PageSpeed=noscript">here</a> if you are not redirected within a few seconds.</div></noscript>
<div class=wp-site-blocks><header class=wp-block-template-part>
<div class="wp-block-group alignwide rugby-header has-base-2-color has-text-color has-background has-link-color wp-elements-6146203af19bfda12a9ab29b4e724286 has-global-padding is-layout-constrained wp-block-group-is-layout-constrained" style="background:linear-gradient(90deg,#004D90 0%,#002759 100%);padding-top:20px;padding-bottom:20px">
<div class="wp-block-group alignwide is-content-justification-space-between is-layout-flex wp-container-core-group-is-layout-b585a4aa wp-block-group-is-layout-flex">
<div class="wp-block-group is-layout-flex wp-container-core-group-is-layout-fbcf6490 wp-block-group-is-layout-flex"><div class=wp-block-site-logo><a href="https://vibrez-rugby.com/" class=custom-logo-link rel=home><script data-pagespeed-no-defer>//<![CDATA[
(function(){for(var g="function"==typeof Object.defineProperties?Object.defineProperty:function(b,c,a){if(a.get||a.set)throw new TypeError("ES3 does not support getters and setters.");b!=Array.prototype&&b!=Object.prototype&&(b[c]=a.value)},h="undefined"!=typeof window&&window===this?this:"undefined"!=typeof global&&null!=global?global:this,k=["String","prototype","repeat"],l=0;l<k.length-1;l++){var m=k[l];m in h||(h[m]={});h=h[m]}var n=k[k.length-1],p=h[n],q=p?p:function(b){var c;if(null==this)throw new TypeError("The 'this' value for String.prototype.repeat must not be null or undefined");c=this+"";if(0>b||1342177279<b)throw new RangeError("Invalid count value");b|=0;for(var a="";b;)if(b&1&&(a+=c),b>>>=1)c+=c;return a};q!=p&&null!=q&&g(h,n,{configurable:!0,writable:!0,value:q});var t=this;function u(b,c){var a=b.split("."),d=t;a[0]in d||!d.execScript||d.execScript("var "+a[0]);for(var e;a.length&&(e=a.shift());)a.length||void 0===c?d[e]?d=d[e]:d=d[e]={}:d[e]=c};function v(b){var c=b.length;if(0<c){for(var a=Array(c),d=0;d<c;d++)a[d]=b[d];return a}return[]};function w(b){var c=window;if(c.addEventListener)c.addEventListener("load",b,!1);else if(c.attachEvent)c.attachEvent("onload",b);else{var a=c.onload;c.onload=function(){b.call(this);a&&a.call(this)}}};var x;function y(b,c,a,d,e){this.h=b;this.j=c;this.l=a;this.f=e;this.g={height:window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight,width:window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth};this.i=d;this.b={};this.a=[];this.c={}}function z(b,c){var a,d,e=c.getAttribute("data-pagespeed-url-hash");if(a=e&&!(e in b.c))if(0>=c.offsetWidth&&0>=c.offsetHeight)a=!1;else{d=c.getBoundingClientRect();var f=document.body;a=d.top+("pageYOffset"in window?window.pageYOffset:(document.documentElement||f.parentNode||f).scrollTop);d=d.left+("pageXOffset"in window?window.pageXOffset:(document.documentElement||f.parentNode||f).scrollLeft);f=a.toString()+","+d;b.b.hasOwnProperty(f)?a=!1:(b.b[f]=!0,a=a<=b.g.height&&d<=b.g.width)}a&&(b.a.push(e),b.c[e]=!0)}y.prototype.checkImageForCriticality=function(b){b.getBoundingClientRect&&z(this,b)};u("pagespeed.CriticalImages.checkImageForCriticality",function(b){x.checkImageForCriticality(b)});u("pagespeed.CriticalImages.checkCriticalImages",function(){A(x)});function A(b){b.b={};for(var c=["IMG","INPUT"],a=[],d=0;d<c.length;++d)a=a.concat(v(document.getElementsByTagName(c[d])));if(a.length&&a[0].getBoundingClientRect){for(d=0;c=a[d];++d)z(b,c);a="oh="+b.l;b.f&&(a+="&n="+b.f);if(c=!!b.a.length)for(a+="&ci="+encodeURIComponent(b.a[0]),d=1;d<b.a.length;++d){var e=","+encodeURIComponent(b.a[d]);131072>=a.length+e.length&&(a+=e)}b.i&&(e="&rd="+encodeURIComponent(JSON.stringify(B())),131072>=a.length+e.length&&(a+=e),c=!0);C=a;if(c){d=b.h;b=b.j;var f;if(window.XMLHttpRequest)f=new XMLHttpRequest;else if(window.ActiveXObject)try{f=new ActiveXObject("Msxml2.XMLHTTP")}catch(r){try{f=new ActiveXObject("Microsoft.XMLHTTP")}catch(D){}}f&&(f.open("POST",d+(-1==d.indexOf("?")?"?":"&")+"url="+encodeURIComponent(b)),f.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),f.send(a))}}}function B(){var b={},c;c=document.getElementsByTagName("IMG");if(!c.length)return{};var a=c[0];if(!("naturalWidth"in a&&"naturalHeight"in a))return{};for(var d=0;a=c[d];++d){var e=a.getAttribute("data-pagespeed-url-hash");e&&(!(e in b)&&0<a.width&&0<a.height&&0<a.naturalWidth&&0<a.naturalHeight||e in b&&a.width>=b[e].o&&a.height>=b[e].m)&&(b[e]={rw:a.width,rh:a.height,ow:a.naturalWidth,oh:a.naturalHeight})}return b}var C="";u("pagespeed.CriticalImages.getBeaconData",function(){return C});u("pagespeed.CriticalImages.Run",function(b,c,a,d,e,f){var r=new y(b,c,a,e,f);x=r;d&&w(function(){window.setTimeout(function(){A(r)},0)})});})();pagespeed.CriticalImages.Run('/mod_pagespeed_beacon','https://vibrez-rugby.com/resultats-top-14/','MMVvyUVY8Q',false,false,'pvnWvzuHUg4');
//]]></script><img width=60 height=60 src="https://vibrez-rugby.com/wp-content/uploads/2020/08/cropped-android-chrome-512x512-1-1.webp" class=custom-logo alt="rugby pro d2 - logo vibrez rugby" decoding=async srcset="https://vibrez-rugby.com/wp-content/uploads/2020/08/cropped-android-chrome-512x512-1-1.webp 512w, https://vibrez-rugby.com/wp-content/uploads/2020/08/xcropped-android-chrome-512x512-1-1-300x300.webp.pagespeed.ic.EXEXnOAYO-.webp 300w, https://vibrez-rugby.com/wp-content/uploads/2020/08/xcropped-android-chrome-512x512-1-1-150x150.webp.pagespeed.ic.2HG4NE3yOM.webp 150w" sizes="(max-width: 60px) 100vw, 60px" data-pagespeed-url-hash=1935545481 onload="pagespeed.CriticalImages.checkImageForCriticality(this);"/></a></div></div>
<div class="wp-block-group is-vertical is-content-justification-right is-nowrap is-layout-flex wp-container-core-group-is-layout-ddb18375 wp-block-group-is-layout-flex" style="padding-top:0;padding-right:0;padding-bottom:0;padding-left:0"><nav class="has-text-color has-white-color is-responsive items-justified-right rugby-home-nav wp-block-navigation is-horizontal is-content-justification-right is-layout-flex wp-container-core-navigation-is-layout-cca85a86 wp-block-navigation-is-layout-flex" aria-label="Primary Menu" data-wp-interactive="core/navigation" data-wp-context='{"overlayOpenedBy":{"click":false,"hover":false,"focus":false},"type":"overlay","roleAttribute":"","ariaLabel":"Menu"}'><button aria-haspopup=dialog aria-label="Ouvrir le menu" class=wp-block-navigation__responsive-container-open data-wp-on--click=actions.openMenuOnClick data-wp-on--keydown=actions.handleMenuKeydown><svg width=24 height=24 xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24" aria-hidden=true focusable=false><path d="M4 7.5h16v1.5H4z"></path><path d="M4 15h16v1.5H4z"></path></svg></button>
<div class="wp-block-navigation__responsive-container  has-text-color has-white-color has-background has-primary-blue-background-color" id=modal-1 data-wp-class--has-modal-open=state.isMenuOpen data-wp-class--is-menu-open=state.isMenuOpen data-wp-watch=callbacks.initMenu data-wp-on--keydown=actions.handleMenuKeydown data-wp-on--focusout=actions.handleMenuFocusout tabindex=-1>
<div class=wp-block-navigation__responsive-close tabindex=-1>
<div class=wp-block-navigation__responsive-dialog data-wp-bind--aria-modal=state.ariaModal data-wp-bind--aria-label=state.ariaLabel data-wp-bind--role=state.roleAttribute>
<button aria-label="Fermer le menu" class=wp-block-navigation__responsive-container-close data-wp-on--click=actions.closeMenuOnClick><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24" width=24 height=24 aria-hidden=true focusable=false><path d="m13.06 12 6.47-6.47-1.06-1.06L12 10.94 5.53 4.47 4.47 5.53 10.94 12l-6.47 6.47 1.06 1.06L12 13.06l6.47 6.47 1.06-1.06L13.06 12Z"></path></svg></button>
<div class=wp-block-navigation__responsive-container-content data-wp-watch=callbacks.focusFirstElement id=modal-1-content>
<ul class="wp-block-navigation__container has-text-color has-white-color is-responsive items-justified-right rugby-home-nav wp-block-navigation"><li class="wp-block-navigation-item wp-block-navigation-link"><a class=wp-block-navigation-item__content href="https://vibrez-rugby.com"><span class=wp-block-navigation-item__label>Accueil</span></a></li><li class="wp-block-navigation-item wp-block-navigation-link"><a class=wp-block-navigation-item__content href="/matchs-de-rugby-en-direct/"><span class=wp-block-navigation-item__label>🔴 En direct</span></a></li><li class="wp-block-navigation-item wp-block-navigation-link"><a class=wp-block-navigation-item__content href="/radio-rugby/"><span class=wp-block-navigation-item__label>Radios</span></a></li><li class="wp-block-navigation-item wp-block-navigation-link"><a class=wp-block-navigation-item__content href="https://vibrez-rugby.com/resultats/"><span class=wp-block-navigation-item__label>Résultats</span></a></li><li class="wp-block-navigation-item wp-block-navigation-link"><a class=wp-block-navigation-item__content href="https://vibrez-rugby.com/classement"><span class=wp-block-navigation-item__label>classement</span></a></li><li class="wp-block-navigation-item wp-block-navigation-link"><a class=wp-block-navigation-item__content href="https://vibrez-rugby.com/club/france/"><span class=wp-block-navigation-item__label>XV de France</span></a></li><li class="wp-block-navigation-item wp-block-navigation-link"><a class=wp-block-navigation-item__content href="https://vibrez-rugby.com/competition/top-14/"><span class=wp-block-navigation-item__label>Top 14</span></a></li><li class="wp-block-navigation-item wp-block-navigation-link"><a class=wp-block-navigation-item__content href="https://vibrez-rugby.com/competition/pro-d2/"><span class=wp-block-navigation-item__label>Pro D2</span></a></li><li class="wp-block-navigation-item wp-block-navigation-link"><a class=wp-block-navigation-item__content href="https://vibrez-rugby.com/rugby/pronostic-rugby/"><span class=wp-block-navigation-item__label>Pronostics</span></a></li><li class="wp-block-navigation-item wp-block-navigation-link"><a class=wp-block-navigation-item__content href="https://vibrez-rugby.com/programme-tv-rugby/"><span class=wp-block-navigation-item__label>Programme TV</span></a></li><li data-wp-context="{ &quot;submenuOpenedBy&quot;: { &quot;click&quot;: false, &quot;hover&quot;: false, &quot;focus&quot;: false }, &quot;type&quot;: &quot;submenu&quot;, &quot;modal&quot;: null, &quot;previousFocus&quot;: null }" data-wp-interactive="core/navigation" data-wp-on--focusout=actions.handleMenuFocusout data-wp-on--keydown=actions.handleMenuKeydown data-wp-watch=callbacks.initMenu tabindex=-1 class="wp-block-navigation-item has-child open-on-click wp-block-navigation-submenu"><button data-wp-bind--aria-expanded=state.isMenuOpen data-wp-on--click=actions.toggleMenuOnClick aria-label="Sous-menu &#8230;" class="wp-block-navigation-item__content wp-block-navigation-submenu__toggle"><span class=wp-block-navigation-item__label>&#8230;</span></button><span class=wp-block-navigation__submenu-icon><svg xmlns="http://www.w3.org/2000/svg" width=12 height=12 viewbox="0 0 12 12" fill=none aria-hidden=true focusable=false><path d="M1.50002 4L6.00002 8L10.5 4" stroke-width=1.5></path></svg></span><ul data-wp-on--focus=actions.openMenuOnFocus class="wp-block-navigation__submenu-container has-text-color has-white-color has-background has-primary-blue-background-color wp-block-navigation-submenu"><li class="wp-block-navigation-item wp-block-navigation-link"><a class=wp-block-navigation-item__content href="https://vibrez-rugby.com/application-rugby/"><span class=wp-block-navigation-item__label>APPLICATION RUGBY</span></a></li><li class="wp-block-navigation-item wp-block-navigation-link"><a class=wp-block-navigation-item__content href="https://vibrez-rugby.com/mentions-legales-et-politique-de-confidentialite/"><span class=wp-block-navigation-item__label>Mentions légales et politique de confidentialité</span></a></li><li class="wp-block-navigation-item wp-block-navigation-link"><a class=wp-block-navigation-item__content href="https://vibrez-rugby.com/rugby/coupe-deurope-de-rugby/"><span class=wp-block-navigation-item__label>Coupe d&rsquo;Europe</span></a></li></ul></li></ul>
</div>
</div>
</div>
</div></nav></div>
</div>
</div>
</script> <script async src="https://platform.twitter.com/widgets.js" charset=utf-8></script>
<script>gtag('event','conversion',{'send_to':'AW-882060157/waagCNj7ockDEP3WzKQD'});</script>
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-4334035645452469" crossorigin=anonymous></script></header>
<main class="wp-block-group is-layout-flow wp-block-group-is-layout-flow">
<div class="wp-block-group has-global-padding is-layout-constrained wp-block-group-is-layout-constrained">
<div style="margin-top:0;margin-bottom:0;height:var(--wp--preset--spacing--30)" aria-hidden=true class=wp-block-spacer></div>
</div>
<div class="entry-content wp-block-post-content has-global-padding is-layout-constrained wp-block-post-content-is-layout-constrained"> <nav style="display:flex;gap:10px;margin-bottom:20px;flex-wrap:wrap;">
<a href="https://vibrez-rugby.com/resultats-top-14/" style="padding:7px 16px;background:#1a1a2e;color:#fff;border-radius:20px;text-decoration:none;font-size:13px;font-weight:500;">Résultats</a>
<a href="https://vibrez-rugby.com/classement-top-14/" style="padding:7px 16px;background:#f3f4f6;border-radius:20px;text-decoration:none;color:#333;font-size:13px;font-weight:500;">Classement</a>
<a href="https://vibrez-rugby.com/calendrier-top-14/" style="padding:7px 16px;background:#f3f4f6;border-radius:20px;text-decoration:none;color:#333;font-size:13px;font-weight:500;">Calendrier</a>
<a href="https://vibrez-rugby.com/statistiques-top-14/" style="padding:7px 16px;background:#f3f4f6;border-radius:20px;text-decoration:none;color:#333;font-size:13px;font-weight:500;">Statistiques</a>
</nav>
<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<br>
<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow"></div>
</div>
<head>
</head>
<body>
<div class=competition-container>
<div class=loader id=loader>
<div>Chargement&#8230;</div>
</div>
<div class=competition-header>
<h1 id=competitionTitle>Chargement de la compétition&#8230;</h1>
<p id=competitionInfo></p>
</div>
<div id=mainContent></div>
</div>
<script>
        class CompetitionManager {
            constructor() {
                this.competitionId = this.getCompetitionIdFromUrl();
                this.apiBase = 'https://rugby-app-4ebacff10fda.herokuapp.com';
                this.currentData = null;
                this.updateInterval = null;
                this.cable = null;
                this.competitionChannel = null;
            }

            getCompetitionIdFromUrl() {
                const urlParams = new URLSearchParams(window.location.search);
                return urlParams.get('competition') || 'top-14';
            }

            async init() {
                await this.loadCompetitionData();
                this.setupResponsiveHandler();
                this.setupWebSocket();
                this.startAutoUpdate();
            }

            setupResponsiveHandler() {
                let resizeTimeout;
                window.addEventListener('resize', () => {
                    clearTimeout(resizeTimeout);
                    resizeTimeout = setTimeout(() => {
                        this.render();
                    }, 250);
                });
            }

            setupWebSocket() {
                try {
                    // Configuration basique du WebSocket
                    const wsUrl = this.apiBase.replace('http://', 'ws://').replace('https://', 'wss://') + '/cable';
                    console.log('Tentative de connexion WebSocket à:', wsUrl);
                    
                    this.cable = new WebSocket(wsUrl);
                    
                    this.cable.onopen = () => {
                        console.log('WebSocket connecté avec succès');
                        this.subscribeToCompetition();
                    };

                    this.cable.onmessage = (event) => {
                        try {
                            const data = JSON.parse(event.data);
                            this.handleWebSocketMessage(data);
                        } catch (parseError) {
                            console.warn('Erreur parsing message WebSocket:', parseError);
                        }
                    };

                    this.cable.onclose = (event) => {
                        console.log('WebSocket fermé:', event.code, event.reason);
                        console.log('Tentative de reconnexion dans 5 secondes...');
                        setTimeout(() => this.setupWebSocket(), 5000);
                    };

                    this.cable.onerror = (error) => {
                        console.error('Erreur WebSocket:', error);
                    };
                } catch (error) {
                    console.warn('WebSocket non disponible, utilisation du polling seulement:', error);
                    // Fallback: augmenter la fréquence du polling si WebSocket échoue
                    this.startAutoUpdate(10000); // Polling toutes les 10 secondes
                }
            }

            subscribeToCompetition() {
                if (this.cable && this.cable.readyState === WebSocket.OPEN) {
                    const subscription = {
                        command: 'subscribe',
                        identifier: JSON.stringify({
                            channel: 'CompetitionChannel',
                            competition_id: this.competitionId
                        })
                    };
                    this.cable.send(JSON.stringify(subscription));
                }
            }

            handleWebSocketMessage(data) {
                if (data.type === 'ping') return;
                
                console.log('Message WebSocket reçu:', data);
                
                if (data.message) {
                    const message = data.message;
                    
                    switch (message.type) {
                        case 'score_update':
                        case 'live_score_update':
                            this.updateMatchInUI(message.rencontre);
                            this.showNotification(`Score mis à jour: ${message.rencontre.local_team.name} vs ${message.rencontre.visitor_team.name}`);
                            break;
                        case 'state_change':
                            this.updateMatchStateInUI(message.rencontre_id, message.state);
                            this.showNotification(`État du match changé: ${message.state}`);
                            break;
                    }
                }
            }

            updateMatchInUI(rencontreData) {
                console.log('Updating match UI for:', rencontreData);
                
                // Trouver et mettre à jour les éléments de match dans l'interface
                const matchElements = document.querySelectorAll(`[data-match-id="${rencontreData.id}"]`);
                console.log('Found match elements:', matchElements.length);
                
                matchElements.forEach(element => {
                    const homeScore = rencontreData.score_locale || 0;
                    const awayScore = rencontreData.score_visiteuse || 0;
                    const isLive = rencontreData.etat === 'endirect' || rencontreData.etat === 'mi-temps';
                    const isFinished = rencontreData.etat === 'termine';
                    
                    console.log('Updating element with scores:', homeScore, awayScore, 'state:', rencontreData.etat);
                    
                    // Mobile layout
                    if (window.innerWidth <= 768) {
                        let centerElement = element.querySelector('.match-center-score, .match-center-date');
                        
                        if (isLive || isFinished) {
                            // Si le match est live ou terminé, on doit afficher le score
                            if (!element.querySelector('.match-center-score')) {
                                // Remplacer le container de date par le container de score
                                const dateElement = element.querySelector('.match-center-date');
                                if (dateElement) {
                                    const scoreElement = document.createElement('div');
                                    scoreElement.className = `match-center-score ${isLive ? 'live' : ''}`;
                                    scoreElement.textContent = `${homeScore} - ${awayScore}`;
                                    dateElement.parentNode.replaceChild(scoreElement, dateElement);
                                }
                            } else {
                                // Mettre à jour le score existant
                                const centerScore = element.querySelector('.match-center-score');
                                if (centerScore) {
                                    centerScore.textContent = `${homeScore} - ${awayScore}`;
                                    if (isLive) {
                                        centerScore.classList.add('live');
                                    } else {
                                        centerScore.classList.remove('live');
                                    }
                                }
                            }
                        }
                    } else {
                        // Desktop layout
                        const matchCenter = element.querySelector('.match-center');
                        if (matchCenter) {
                            if (isLive || isFinished) {
                                // Si le match est live ou terminé, remplacer par score-box
                                if (!element.querySelector('.score-box')) {
                                    matchCenter.innerHTML = `<div class="score-box ${isLive ? 'live' : ''}">${homeScore} - ${awayScore}</div>`;
                                } else {
                                    // Mettre à jour le score existant
                                    const scoreBox = element.querySelector('.score-box');
                                    if (scoreBox) {
                                        scoreBox.textContent = `${homeScore} - ${awayScore}`;
                                        if (isLive) {
                                            scoreBox.classList.add('live');
                                        } else {
                                            scoreBox.classList.remove('live');
                                        }
                                    }
                                }
                            }
                        }
                    }
                    
                    // Mettre à jour l'état visuel de la card
                    element.classList.remove('finished', 'live');
                    if (isFinished) {
                        element.classList.add('finished');
                    } else if (isLive) {
                        element.classList.add('live');
                    }
                    
                    console.log('Updated match state classes');
                });
            }

            updateMatchStateInUI(rencontreId, newState) {
                const matchElements = document.querySelectorAll(`[data-match-id="${rencontreId}"]`);
                
                matchElements.forEach(element => {
                    // Réinitialiser les classes d'état
                    element.className = element.className.replace(/\b(finished|live|scheduled)\b/g, '');
                    
                    // Ajouter la nouvelle classe selon l'état
                    switch (newState) {
                        case 'termine':
                            element.classList.add('finished');
                            break;
                        case 'endirect':
                        case 'mi-temps':
                            element.classList.add('live');
                            break;
                        case 'programme':
                            element.classList.add('scheduled');
                            break;
                    }
                });
            }

            showNotification(message) {
                // Créer une notification simple
                const notification = document.createElement('div');
                notification.style.cssText = `
                    position: fixed;
                    top: 20px;
                    right: 20px;
                    background: #374151;
                    color: white;
                    padding: 15px 20px;
                    border-radius: 8px;
                    box-shadow: 0 4px 12px rgba(0,0,0,0.3);
                    z-index: 10000;
                    font-size: 14px;
                    max-width: 300px;
                    transition: all 0.3s ease;
                `;
                notification.textContent = message;
                
                document.body.appendChild(notification);
                
                // Animation d'apparition
                setTimeout(() => {
                    notification.style.transform = 'translateX(0)';
                    notification.style.opacity = '1';
                }, 100);
                
                // Supprimer après 5 secondes
                setTimeout(() => {
                    notification.style.transform = 'translateX(100%)';
                    notification.style.opacity = '0';
                    setTimeout(() => {
                        if (notification.parentNode) {
                            notification.parentNode.removeChild(notification);
                        }
                    }, 300);
                }, 5000);
            }


            showLoader() {
                document.getElementById('loader').classList.add('active');
            }

            hideLoader() {
                document.getElementById('loader').classList.remove('active');
            }

            async loadCompetitionData() {
                this.showLoader();
                try {
                    const response = await fetch(`${this.apiBase}/competitions/${this.competitionId}/adaptive`);
                    this.currentData = await response.json();
                    this.render();
                } catch (error) {
                    console.error('Erreur lors du chargement:', error);
                    this.showError('Erreur lors du chargement des données');
                } finally {
                    this.hideLoader();
                }
            }

            render() {
                if (!this.currentData) return;

                // Update header (only title, no date)
                document.getElementById('competitionTitle').textContent = this.currentData.competition.display_name;
                document.getElementById('competitionInfo').textContent = '';

                // Store competition date for inline display
                this.competitionDate = this.currentData.competition.years || '';

                // Render based on competition type
                const mainContent = document.getElementById('mainContent');
                mainContent.innerHTML = '';

                switch (this.currentData.type) {
                    case 'championship':
                        this.renderChampionship(mainContent);
                        break;
                    case 'cup':
                        this.renderCup(mainContent);
                        break;
                    case 'tournament':
                        this.renderTournament(mainContent);
                        break;
                    default:
                        this.renderDefault(mainContent);
                }

                // Update inline competition dates after rendering
                this.updateInlineCompetitionDates();
            }

            updateInlineCompetitionDates() {
                // Update all inline competition date elements
                const inlineDateElements = document.querySelectorAll('.competition-date-inline');
                inlineDateElements.forEach(element => {
                    element.textContent = this.competitionDate;
                });
            }

            renderCup(container) {
                const view = document.createElement('div');
                view.className = 'cup-view';

                // Render all phases as list
                this.renderListView(view, this.currentData.phases);

                container.appendChild(view);
            }

            groupPhasesByType(phases) {
                const grouped = {
                    group: [],
                    knockout: []
                };

                phases.forEach(phase => {
                    if (phase.type === 'knockout') {
                        grouped.knockout.push(phase);
                    } else {
                        grouped.group.push(phase);
                    }
                });

                return grouped;
            }


            renderListView(container, phases) {
                phases.forEach(phase => {
                    const phaseContainer = this.createPhaseContainer(phase, false);
                    container.appendChild(phaseContainer);
                });
            }

            createPhaseContainer(phase) {
                const phaseContainer = document.createElement('div');
                phaseContainer.className = `phase-container ${phase.type}`;

                const phaseHeader = document.createElement('div');
                phaseHeader.className = 'phase-header';
                phaseHeader.innerHTML = `
                    <div style="display: flex; align-items: center; gap: 12px; flex: 1;">
                        <span>${phase.name}</span>
                        <select class="journee-selector-header" style="padding: 6px 12px; background: rgba(255,255,255,0.15); color: white; border: 1px solid rgba(255,255,255,0.3); border-radius: 4px; cursor: pointer; font-size: 12px; font-weight: 500; min-width: 140px; outline: none;">
                            <option value="">Choisir une journée...</option>
                        </select>
                    </div>
                    <div style="display: flex; gap: 8px; align-items: center;">
                        ${phase.type === 'group' ? '<button class="header-tab-btn active" data-tab="rounds" style="padding: 6px 12px; background: rgba(255,255,255,0.2); border: 1px solid rgba(255,255,255,0.3); border-radius: 4px; color: white; font-size: 12px; cursor: pointer; transition: all 0.2s; font-weight: 500;">Journées</button>' : ''}
                        ${phase.type === 'group' ? '<button class="header-tab-btn" data-tab="standings" style="padding: 6px 12px; background: transparent; border: 1px solid rgba(255,255,255,0.3); border-radius: 4px; color: rgba(255,255,255,0.7); font-size: 12px; cursor: pointer; transition: all 0.2s; font-weight: 500;">Classement</button>' : ''}
                    </div>
                `;
                phaseContainer.appendChild(phaseHeader);

                // Add event listeners to header buttons
                const headerBtns = phaseHeader.querySelectorAll('.header-tab-btn');
                headerBtns.forEach(btn => {
                    btn.addEventListener('click', (e) => {
                        e.stopPropagation();
                        const tabType = btn.dataset.tab;
                        
                        // Update button styles for all tabs
                        headerBtns.forEach(b => {
                            b.classList.remove('active');
                            b.style.background = 'transparent';
                            b.style.color = 'rgba(255,255,255,0.7)';
                        });
                        btn.classList.add('active');
                        btn.style.background = 'rgba(255,255,255,0.2)';
                        btn.style.color = 'white';
                        
                        this.showPhaseTab(phaseContainer, phase, tabType);
                    });
                });

                // Initial content
                const contentContainer = document.createElement('div');
                contentContainer.className = 'phase-content';
                phaseContainer.appendChild(contentContainer);
                
                // Show rounds by default (matches)
                this.showPhaseTab(phaseContainer, phase, 'rounds');

                return phaseContainer;
            }

            showPhaseTab(container, phase, tab) {
                // Update content
                const contentArea = container.querySelector('.phase-content');
                contentArea.innerHTML = '';
                
                if (tab === 'rounds') {
                    const matchesContainer = this.createMatchesListGrouped(phase.matches);
                    contentArea.appendChild(matchesContainer);
                    
                    // Initialize header selector with journée data
                    const headerSelector = container.querySelector('.journee-selector-header');
                    if (headerSelector && matchesContainer.journeeData) {
                        const { sortedJournees, defaultJournee } = matchesContainer.journeeData;
                        
                        // Clear existing options
                        headerSelector.innerHTML = '';
                        
                        // Add journée options
                        console.log('Initializing selector with default journée:', defaultJournee);
                        sortedJournees.forEach(journee => {
                            const option = document.createElement('option');
                            option.value = journee;
                            option.textContent = journee;
                            if (journee === defaultJournee) {
                                option.selected = true;
                                console.log('Selected option:', journee);
                            }
                            headerSelector.appendChild(option);
                        });
                        
                        // Set the selected value explicitly
                        headerSelector.value = defaultJournee;
                        console.log('Set selector value to:', headerSelector.value);
                        
                        // Remove existing event listeners and add new one
                        const newHeaderSelector = headerSelector.cloneNode(true);
                        newHeaderSelector.value = defaultJournee; // Ensure value is maintained after cloning
                        headerSelector.parentNode.replaceChild(newHeaderSelector, headerSelector);
                        
                        newHeaderSelector.addEventListener('change', (e) => {
                            if (matchesContainer.showJourneeMatches) {
                                matchesContainer.showJourneeMatches(e.target.value);
                            }
                        });
                        
                        // Show the selector
                        newHeaderSelector.style.display = 'block';
                        console.log('Final selector value:', newHeaderSelector.value);
                    }
                } else if (tab === 'standings') {
                    // Keep header selector visible
                    const headerSelector = container.querySelector('.journee-selector-header');
                    if (headerSelector) {
                        headerSelector.style.display = 'block';
                    }
                    
                    this.renderPhaseStandings(contentArea, phase);
                }
            }

            renderPhaseStandings(container, phase) {
                const standingsContainer = document.createElement('div');
                standingsContainer.className = 'standings-table';
                standingsContainer.style.cssText = 'background: white; border-radius: 5px; overflow: hidden; margin-top: 20px;';
                
                if (phase.standings && phase.standings.length > 0) {
                    const table = document.createElement('table');
                    table.style.cssText = 'width: 100%; border-collapse: collapse;';
                    
                    // Header
                    const thead = document.createElement('thead');
                    const headerRow = document.createElement('tr');
                    headerRow.style.cssText = 'background: #f3f4f6; border-bottom: 2px solid #e5e7eb;';
                    headerRow.innerHTML = `
                        <th style="padding: 12px; text-align: left; font-weight: 600; color: #374151;">Équipe</th>
                        <th style="padding: 12px; text-align: center; font-weight: 600; color: #374151; width: 50px;">J</th>
                        <th style="padding: 12px; text-align: center; font-weight: 600; color: #374151; width: 50px;">V</th>
                        <th style="padding: 12px; text-align: center; font-weight: 600; color: #374151; width: 50px;">D</th>
                        <th style="padding: 12px; text-align: center; font-weight: 600; color: #374151; width: 60px;">+/-</th>
                        <th style="padding: 12px; text-align: center; font-weight: 600; color: #374151; width: 60px;">Pts</th>
                    `;
                    thead.appendChild(headerRow);
                    table.appendChild(thead);
                    
                    // Body
                    const tbody = document.createElement('tbody');
                    phase.standings.forEach((team, index) => {
                        const row = document.createElement('tr');
                        row.style.cssText = `border-bottom: 1px solid #e5e7eb; ${index % 2 === 0 ? 'background: #f9fafb;' : ''} transition: background-color 0.2s ease;`;
                        row.innerHTML = `
                            <td style="padding: 12px;">
                                <div style="display: flex; align-items: center; gap: 8px;">
                                    <span style="color: #6b7280; font-weight: 500; min-width: 20px;">${team.rank || index + 1}.</span>
                                    <img decoding="async" src="${team.team_img_url || '/default-team.png'}" alt="${team.team_name}" style="width: 24px; height: 24px; object-fit: cover; border-radius: 3px;" onerror="this.style.display='none'">
                                    <span style="font-weight: 500; color: #111827;">${team.team_name}</span>
                                </div>
                            </td>
                            <td style="padding: 12px; text-align: center; color: #6b7280;">${team.matchs_joues}</td>
                            <td style="padding: 12px; text-align: center; color: #059669; font-weight: 500;">${team.matchs_gagnes}</td>
                            <td style="padding: 12px; text-align: center; color: #dc2626; font-weight: 500;">${team.matchs_perdus}</td>
                            <td style="padding: 12px; text-align: center; color: ${team.diff_buts >= 0 ? '#059669' : '#dc2626'}; font-weight: 500;">${team.diff_buts >= 0 ? '+' : ''}${team.diff_buts}</td>
                            <td style="padding: 12px; text-align: center;">
                                <span style="background: #3b82f6; color: white; padding: 4px 8px; border-radius: 4px; font-weight: 600; font-size: 13px;">${team.points}</span>
                            </td>
                        `;
                        tbody.appendChild(row);
                    });
                    table.appendChild(tbody);
                    standingsContainer.appendChild(table);
                } else {
                    const noStandings = document.createElement('p');
                    noStandings.textContent = 'Aucun classement disponible';
                    noStandings.style.cssText = 'color: #6b7280; text-align: center; padding: 40px;';
                    standingsContainer.appendChild(noStandings);
                }
                
                container.appendChild(standingsContainer);
            }

            renderChampionship(container) {
                const view = document.createElement('div');
                view.className = 'championship-view';

                // Render each group
                this.currentData.groups.forEach(group => {
                    const groupContainer = this.createGroupContainer(group);
                    view.appendChild(groupContainer);
                });

                container.appendChild(view);
            }

            createGroupContainer(group) {
                const groupContainer = document.createElement('div');
                groupContainer.className = 'phase-container group';

                const groupHeader = document.createElement('div');
                groupHeader.className = 'phase-header';
                groupHeader.innerHTML = `
                    <div style="display: flex; align-items: center; gap: 12px;">
                        <span>${group.name === '1' ? 'Top 14' : `Groupe ${group.name}`}</span>
                        <span style="font-size: 0.85rem; opacity: 0.7; font-weight: 400;" class="competition-date-inline"></span>
                    </div>
                    <div style="display: flex; gap: 8px; align-items: center;">
                        <button class="header-tab-btn active" data-tab="rounds" style="padding: 6px 12px; background: rgba(255,255,255,0.2); border: 1px solid rgba(255,255,255,0.3); border-radius: 4px; color: white; font-size: 12px; cursor: pointer; transition: all 0.2s; font-weight: 500;">Journées</button>
                        <button class="header-tab-btn" data-tab="standings" style="padding: 6px 12px; background: transparent; border: 1px solid rgba(255,255,255,0.3); border-radius: 4px; color: rgba(255,255,255,0.7); font-size: 12px; cursor: pointer; transition: all 0.2s; font-weight: 500;">Classement</button>
                    </div>
                `;
                groupContainer.appendChild(groupHeader);

                // Add event listeners to header buttons
                const headerBtns = groupHeader.querySelectorAll('.header-tab-btn');
                headerBtns.forEach(btn => {
                    btn.addEventListener('click', (e) => {
                        e.stopPropagation();
                        const tabType = btn.dataset.tab;
                        
                        // Update button styles with smooth transition
                        headerBtns.forEach(b => {
                            b.classList.remove('active');
                            b.style.transition = 'all 0.3s ease';
                            b.style.background = 'transparent';
                            b.style.color = 'rgba(255,255,255,0.7)';
                        });
                        btn.classList.add('active');
                        btn.style.transition = 'all 0.3s ease';
                        btn.style.background = 'rgba(255,255,255,0.2)';
                        btn.style.color = 'white';
                        
                        this.switchGroupTab(groupContainer, tabType, group);
                        // Update inline dates after tab switch
                        setTimeout(() => this.updateInlineCompetitionDates(), 50);
                    });
                });

                // Content area
                const contentArea = document.createElement('div');
                contentArea.className = 'group-content';
                groupContainer.appendChild(contentArea);

                // Initially show rounds
                this.renderGroupRounds(contentArea, group);

                return groupContainer;
            }

            switchGroupTab(container, tab, group) {
                // Update tab styles
                const tabs = container.querySelectorAll('.tab');
                tabs.forEach(t => t.classList.remove('active'));
                const activeTab = Array.from(tabs).find(t => 
                    (tab === 'rounds' && t.textContent === 'Journées') ||
                    (tab === 'standings' && t.textContent === 'Classement')
                );
                if (activeTab) activeTab.classList.add('active');

                // Update content
                const contentArea = container.querySelector('.group-content');
                contentArea.innerHTML = '';
                
                if (tab === 'rounds') {
                    this.renderGroupRounds(contentArea, group);
                } else {
                    this.renderGroupStandings(contentArea, group);
                }
            }

            renderGroupRounds(container, group) {
                const roundsContainer = document.createElement('div');
                roundsContainer.className = 'matches-list';
                
                if (group.rounds && group.rounds.length > 0) {
                    group.rounds.forEach(round => {
                        const roundHeader = document.createElement('h3');
                        roundHeader.textContent = round.name;
                        roundHeader.style.cssText = 'margin: 20px 0 10px 0; color: #475569;';
                        roundsContainer.appendChild(roundHeader);
                        
                        if (round.matches && round.matches.length > 0) {
                            round.matches.forEach(match => {
                                const matchCard = this.createMatchCard(match);
                                roundsContainer.appendChild(matchCard);
                            });
                        } else {
                            const noMatches = document.createElement('p');
                            noMatches.textContent = 'Aucun match programmé';
                            noMatches.style.cssText = 'color: #6b7280; font-style: italic; margin-bottom: 20px; padding-left: 20px;';
                            roundsContainer.appendChild(noMatches);
                        }
                    });
                } else {
                    const noRounds = document.createElement('p');
                    noRounds.textContent = 'Aucune journée disponible';
                    noRounds.style.cssText = 'color: #6b7280; text-align: center; padding: 40px;';
                    roundsContainer.appendChild(noRounds);
                }
                
                container.appendChild(roundsContainer);
            }

            renderGroupStandings(container, group) {
                const standingsContainer = document.createElement('div');
                standingsContainer.className = 'standings-table';
                standingsContainer.style.cssText = 'background: white; border-radius: 5px; overflow: hidden; margin-top: 20px;';
                
                if (group.standings && group.standings.length > 0) {
                    const table = document.createElement('table');
                    table.style.cssText = 'width: 100%; border-collapse: collapse;';
                    
                    // Header
                    const header = document.createElement('thead');
                    header.innerHTML = `
                        <tr style="background: #374151; color: white;">
                            <th style="padding: 12px; text-align: left;">Pos</th>
                            <th style="padding: 12px; text-align: left;">Équipe</th>
                            <th style="padding: 12px; text-align: center;">J</th>
                            <th style="padding: 12px; text-align: center;">G</th>
                            <th style="padding: 12px; text-align: center;">N</th>
                            <th style="padding: 12px; text-align: center;">P</th>
                            <th style="padding: 12px; text-align: center;">+/-</th>
                            <th style="padding: 12px; text-align: center;">Pts</th>
                        </tr>
                    `;
                    table.appendChild(header);
                    
                    // Body
                    const tbody = document.createElement('tbody');
                    group.standings.forEach((team, index) => {
                        const row = document.createElement('tr');
                        row.style.cssText = `border-bottom: 1px solid #e5e7eb; ${index % 2 === 0 ? 'background: #f9fafb;' : ''} transition: background-color 0.2s ease;`;
                        row.innerHTML = `
                            <td style="padding: 12px; font-weight: bold;">${index + 1}</td>
                            <td style="padding: 12px;">
                                <div style="display: flex; align-items: center; gap: 10px;">
                                    <img decoding="async" src="${team.team_img_url}" alt="${team.team_name}" style="width: 24px; height: 24px; object-fit: contain;">
                                    <span style="font-family: 'Poppins', sans-serif;">${team.team_name}</span>
                                </div>
                            </td>
                            <td style="padding: 12px; text-align: center;">${team.matchs_joues || 0}</td>
                            <td style="padding: 12px; text-align: center;">${team.matchs_gagnes || 0}</td>
                            <td style="padding: 12px; text-align: center;">${team.matchs_nuls || 0}</td>
                            <td style="padding: 12px; text-align: center;">${team.matchs_perdus || 0}</td>
                            <td style="padding: 12px; text-align: center;">${team.diff_buts || 0}</td>
                            <td style="padding: 12px; text-align: center; font-weight: bold;">${team.points || 0}</td>
                        `;
                        tbody.appendChild(row);
                    });
                    table.appendChild(tbody);
                    standingsContainer.appendChild(table);
                } else {
                    const noStandings = document.createElement('p');
                    noStandings.textContent = 'Aucun classement disponible';
                    noStandings.style.cssText = 'color: #6b7280; text-align: center; padding: 40px;';
                    standingsContainer.appendChild(noStandings);
                }
                
                container.appendChild(standingsContainer);
            }

            renderTournament(container) {
                const view = document.createElement('div');
                view.className = 'tournament-view';

                // Group phases by type for better organization
                const groupedPhases = this.groupPhasesByType(this.currentData.phases);

                // Render championship phase with rounds navigation
                if (groupedPhases.group.length > 0) {
                    const championshipPhase = groupedPhases.group[0];
                    this.renderChampionshipPhase(view, championshipPhase);
                }

                // Render knockout phases as list
                if (groupedPhases.knockout.length > 0) {
                    this.renderListView(view, groupedPhases.knockout);
                }

                container.appendChild(view);
            }

            renderChampionshipPhase(container, phase) {
                const phaseContainer = document.createElement('div');
                phaseContainer.className = 'phase-container group';

                const phaseHeader = document.createElement('div');
                phaseHeader.className = 'phase-header';
                phaseHeader.innerHTML = `
                    <div style="display: flex; align-items: center; gap: 12px;">
                        <span>${phase.name}</span>
                        <span style="font-size: 0.85rem; opacity: 0.7; font-weight: 400;" class="competition-date-inline"></span>
                        <div class="rounds-selector-header" style="position: relative; display: inline-block; margin-left: 12px;">
                            <button class="rounds-dropdown-btn-header" style="padding: 6px 12px; background: rgba(255,255,255,0.15); color: white; border: 1px solid rgba(255,255,255,0.3); border-radius: 4px; cursor: pointer; font-size: 12px; font-weight: 500; display: flex; align-items: center; gap: 6px; min-width: 120px; justify-content: space-between; transition: all 0.3s;">
                                <span>${phase.rounds && phase.rounds.length > 0 ? phase.rounds[0].name : 'Journée'}</span>
                                <span style="font-size: 10px;">▼</span>
                            </button>
                            <div class="rounds-dropdown-menu-header" style="position: absolute; top: 100%; left: 0; right: 0; background: white; border: 2px solid #374151; border-radius: 6px; box-shadow: 0 4px 12px rgba(0,0,0,0.15); z-index: 1000; margin-top: 4px; max-height: 250px; overflow-y: auto; display: none;"></div>
                        </div>
                    </div>
                    <div style="display: flex; gap: 8px; align-items: center;">
                        <button class="header-tab-btn active" data-tab="rounds" style="padding: 6px 12px; background: rgba(255,255,255,0.2); border: 1px solid rgba(255,255,255,0.3); border-radius: 4px; color: white; font-size: 12px; cursor: pointer; transition: all 0.2s; font-weight: 500;">Journées</button>
                        <button class="header-tab-btn" data-tab="standings" style="padding: 6px 12px; background: transparent; border: 1px solid rgba(255,255,255,0.3); border-radius: 4px; color: rgba(255,255,255,0.7); font-size: 12px; cursor: pointer; transition: all 0.2s; font-weight: 500;">Classement</button>
                    </div>
                `;
                phaseContainer.appendChild(phaseHeader);

                // Add event listeners to header buttons
                const headerBtns = phaseHeader.querySelectorAll('.header-tab-btn');
                headerBtns.forEach(btn => {
                    btn.addEventListener('click', (e) => {
                        e.stopPropagation();
                        const tabType = btn.dataset.tab;
                        
                        // Update button styles with smooth transition
                        headerBtns.forEach(b => {
                            b.classList.remove('active');
                            b.style.transition = 'all 0.3s ease';
                            b.style.background = 'transparent';
                            b.style.color = 'rgba(255,255,255,0.7)';
                        });
                        btn.classList.add('active');
                        btn.style.transition = 'all 0.3s ease';
                        btn.style.background = 'rgba(255,255,255,0.2)';
                        btn.style.color = 'white';
                        
                        this.switchChampionshipTab(phaseContainer, tabType, phase);
                        // Update inline dates after tab switch
                        setTimeout(() => this.updateInlineCompetitionDates(), 50);
                    });
                });

                // Setup rounds dropdown in header
                this.setupHeaderRoundsDropdown(phaseHeader, phase, phaseContainer);

                // Content area
                const contentArea = document.createElement('div');
                contentArea.className = 'championship-content';
                phaseContainer.appendChild(contentArea);

                // Initially show rounds with navigation
                this.renderChampionshipRounds(contentArea, phase);

                container.appendChild(phaseContainer);
            }

            switchChampionshipTab(container, tab, phase) {
                // Update tab styles
                const tabs = container.querySelectorAll('.tab');
                tabs.forEach(t => t.classList.remove('active'));
                const activeTab = Array.from(tabs).find(t => 
                    (tab === 'rounds' && t.textContent === 'Journées') ||
                    (tab === 'standings' && t.textContent === 'Classement')
                );
                if (activeTab) activeTab.classList.add('active');

                // Update content
                const contentArea = container.querySelector('.championship-content');
                contentArea.innerHTML = '';
                
                if (tab === 'rounds') {
                    this.renderChampionshipRounds(contentArea, phase);
                } else {
                    this.renderChampionshipStandings(contentArea, phase);
                }
            }

            renderChampionshipRounds(container, phase) {
                // Matches container only - selector is now in header
                const matchesContainer = document.createElement('div');
                matchesContainer.className = 'round-matches';
                container.appendChild(matchesContainer);

                // Show first round by default
                if (phase.rounds && phase.rounds.length > 0) {
                    this.loadRoundMatches(matchesContainer, phase.rounds[0]);
                }
            }

            setupHeaderRoundsDropdown(phaseHeader, phase, phaseContainer) {
                const dropdownBtn = phaseHeader.querySelector('.rounds-dropdown-btn-header');
                const dropdownMenu = phaseHeader.querySelector('.rounds-dropdown-menu-header');
                
                if (!dropdownBtn || !dropdownMenu) return;

                // Populate dropdown menu with rounds
                if (phase.rounds && phase.rounds.length > 0) {
                    phase.rounds.forEach((round, index) => {
                        const option = document.createElement('div');
                        option.className = 'rounds-dropdown-option-header';
                        option.style.cssText = `
                            padding: 8px 12px;
                            cursor: pointer;
                            border-bottom: 1px solid #e5e7eb;
                            transition: all 0.3s ease;
                            font-size: 12px;
                            color: #374151;
                        `;
                        option.textContent = round.name;

                        // Hover effects
                        option.onmouseenter = () => {
                            option.style.backgroundColor = '#f9fafb';
                        };
                        option.onmouseleave = () => {
                            option.style.backgroundColor = 'transparent';
                        };

                        // Click handler
                        option.onclick = () => {
                            // Update button text
                            dropdownBtn.querySelector('span:first-child').textContent = round.name;
                            
                            // Hide dropdown
                            dropdownMenu.style.display = 'none';
                            dropdownBtn.querySelector('span:last-child').textContent = '▼';
                            
                            // Load round matches
                            const matchesContainer = phaseContainer.querySelector('.round-matches');
                            if (matchesContainer) {
                                this.loadRoundMatches(matchesContainer, round);
                            }
                        };

                        if (index === phase.rounds.length - 1) {
                            option.style.borderBottom = 'none';
                        }

                        dropdownMenu.appendChild(option);
                    });
                }

                // Toggle dropdown on button click
                dropdownBtn.onclick = (e) => {
                    e.stopPropagation();
                    const isVisible = dropdownMenu.style.display === 'block';
                    dropdownMenu.style.display = isVisible ? 'none' : 'block';
                    dropdownBtn.querySelector('span:last-child').textContent = isVisible ? '▼' : '▲';
                };

                // Close dropdown when clicking outside
                document.addEventListener('click', (e) => {
                    if (!phaseHeader.querySelector('.rounds-selector-header').contains(e.target)) {
                        dropdownMenu.style.display = 'none';
                        dropdownBtn.querySelector('span:last-child').textContent = '▼';
                    }
                });
            }

            async selectRoundById(container, round, selectedOption) {
                // Display matches for selected round
                const matchesContainer = container.querySelector('.round-matches');
                this.loadRoundMatches(matchesContainer, round);
            }

            async loadRoundMatches(container, round) {
                // Show loading
                container.innerHTML = '<div style="text-align: center; padding: 40px; color: #6b7280;">Chargement...</div>';

                try {
                    const response = await fetch(`${this.apiBase}/competitions/${this.competitionId}/rounds/${round.id}`);
                    const data = await response.json();
                    
                    this.displayRoundMatches(container, data.matches);
                } catch (error) {
                    console.error('Error loading round matches:', error);
                    container.innerHTML = '<div style="text-align: center; padding: 40px; color: #d62243;">Erreur lors du chargement des matches</div>';
                }
            }

            groupMatchesByRound(matches) {
                const grouped = {};
                matches.forEach(match => {
                    const roundName = this.extractRoundName(match);
                    if (!grouped[roundName]) {
                        grouped[roundName] = [];
                    }
                    grouped[roundName].push(match);
                });
                return grouped;
            }

            extractRoundName(match) {
                // Try to extract round name from match data
                if (match.phase_name) {
                    return match.phase_name;
                }
                // Fallback to date-based grouping
                const date = new Date(match.date);
                return `Journée du ${date.toLocaleDateString('fr-FR', { day: 'numeric', month: 'short' })}`;
            }

            selectRound(container, roundName, matchesByRound, selectedBtn) {
                // Update button styles
                const buttons = container.querySelectorAll('.round-btn');
                buttons.forEach(btn => {
                    btn.style.background = 'white';
                    btn.style.color = '#374151';
                    btn.style.borderColor = '#e5e7eb';
                    btn.classList.remove('active');
                });
                
                selectedBtn.style.background = '#475569';
                selectedBtn.style.color = 'white';
                selectedBtn.style.borderColor = '#475569';
                selectedBtn.classList.add('active');

                // Display matches for selected round
                const matchesContainer = container.querySelector('.round-matches');
                this.displayRoundMatches(matchesContainer, matchesByRound[roundName]);
            }

            displayRoundMatches(container, matches) {
                container.innerHTML = '';
                
                const matchesList = document.createElement('div');
                matchesList.className = 'matches-list';
                
                matches.forEach(match => {
                    const matchCard = this.createMatchCard(match);
                    matchesList.appendChild(matchCard);
                });
                
                container.appendChild(matchesList);
            }

            renderChampionshipStandings(container, phase) {
                const standingsContainer = document.createElement('div');
                standingsContainer.className = 'standings-table';
                standingsContainer.style.cssText = 'background: white; border-radius: 5px; overflow: hidden; margin-top: 20px;';
                
                if (phase.standings && phase.standings.length > 0) {
                    const table = document.createElement('table');
                    table.style.cssText = 'width: 100%; border-collapse: collapse;';
                    
                    // Header
                    const header = document.createElement('thead');
                    header.innerHTML = `
                        <tr style="background: #374151; color: white;">
                            <th style="padding: 12px; text-align: left;">Pos</th>
                            <th style="padding: 12px; text-align: left;">Équipe</th>
                            <th style="padding: 12px; text-align: center;">J</th>
                            <th style="padding: 12px; text-align: center;">G</th>
                            <th style="padding: 12px; text-align: center;">N</th>
                            <th style="padding: 12px; text-align: center;">P</th>
                            <th style="padding: 12px; text-align: center;">+/-</th>
                            <th style="padding: 12px; text-align: center;">Pts</th>
                        </tr>
                    `;
                    table.appendChild(header);
                    
                    // Body
                    const tbody = document.createElement('tbody');
                    phase.standings.forEach((team, index) => {
                        const row = document.createElement('tr');
                        row.style.cssText = `border-bottom: 1px solid #e5e7eb; ${index % 2 === 0 ? 'background: #f9fafb;' : ''} transition: background-color 0.2s ease;`;
                        row.innerHTML = `
                            <td style="padding: 12px; font-weight: bold;">${index + 1}</td>
                            <td style="padding: 12px;">
                                <div style="display: flex; align-items: center; gap: 10px;">
                                    <img decoding="async" src="${team.team_img_url}" alt="${team.team_name}" style="width: 24px; height: 24px; object-fit: contain;">
                                    <span style="font-family: 'Poppins', sans-serif;">${team.team_name}</span>
                                </div>
                            </td>
                            <td style="padding: 12px; text-align: center;">${team.matchs_joues || 0}</td>
                            <td style="padding: 12px; text-align: center;">${team.matchs_gagnes || 0}</td>
                            <td style="padding: 12px; text-align: center;">${team.matchs_nuls || 0}</td>
                            <td style="padding: 12px; text-align: center;">${team.matchs_perdus || 0}</td>
                            <td style="padding: 12px; text-align: center;">${team.diff_buts || 0}</td>
                            <td style="padding: 12px; text-align: center; font-weight: bold;">${team.points || 0}</td>
                        `;
                        tbody.appendChild(row);
                    });
                    table.appendChild(tbody);
                    standingsContainer.appendChild(table);
                } else {
                    const noStandings = document.createElement('p');
                    noStandings.textContent = 'Aucun classement disponible';
                    noStandings.style.cssText = 'color: #6b7280; text-align: center; padding: 40px;';
                    standingsContainer.appendChild(noStandings);
                }
                
                container.appendChild(standingsContainer);
            }

            renderDefault(container) {
                // Fallback rendering
                const matchesList = this.createMatchesList(this.currentData.matches || []);
                container.appendChild(matchesList);
            }

            createMatchesListGrouped(matches) {
                const container = document.createElement('div');
                container.className = 'matches-list-grouped';

                // Group matches by journée (phase_name)
                const matchesByJournee = {};
                matches.forEach(match => {
                    const journee = match.phase_name || 'Matches';
                    if (!matchesByJournee[journee]) {
                        matchesByJournee[journee] = [];
                    }
                    matchesByJournee[journee].push(match);
                });

                // Sort journées chronologically
                const sortedJournees = Object.keys(matchesByJournee).sort((a, b) => {
                    // Extract number from "1re journée", "2e journée", etc.
                    const getJourneeNumber = (str) => {
                        const match = str.match(/(\d+)[re]+\s+journ/i);
                        return match ? parseInt(match[1]) : 999;
                    };
                    return getJourneeNumber(a) - getJourneeNumber(b);
                });

                if (sortedJournees.length === 0) {
                    const noMatches = document.createElement('div');
                    noMatches.style.cssText = 'text-align: center; padding: 40px; color: #6b7280; background: white; border-radius: 8px;';
                    noMatches.innerHTML = `
                        <div style="font-size: 48px; opacity: 0.3; margin-bottom: 16px;">⚽</div>
                        <p style="font-size: 16px; margin: 0;">Aucun match disponible</p>
                    `;
                    container.appendChild(noMatches);
                    return container;
                }

                // Find the closest journée to current date
                const getCurrentClosestJournee = () => {
                    const today = new Date();
                    today.setHours(0, 0, 0, 0); // Reset time to compare only dates
                    let closestJournee = sortedJournees[0];
                    let minDiff = Infinity;

                    console.log('Looking for closest journée to today:', today.toDateString());

                    sortedJournees.forEach(journee => {
                        const journeeMatches = matchesByJournee[journee];
                        if (journeeMatches.length > 0) {
                            // Get the earliest match date in this journée
                            const earliestMatch = journeeMatches.reduce((earliest, match) => {
                                const matchDate = new Date(match.date);
                                const earliestDate = new Date(earliest.date);
                                return matchDate < earliestDate ? match : earliest;
                            });
                            
                            const matchDate = new Date(earliestMatch.date);
                            matchDate.setHours(0, 0, 0, 0); // Reset time to compare only dates
                            const diff = Math.abs(matchDate - today);
                            
                            console.log(`Journée "${journee}": earliest match ${matchDate.toDateString()}, diff: ${diff} days`);
                            
                            if (diff < minDiff) {
                                minDiff = diff;
                                closestJournee = journee;
                            }
                        }
                    });

                    console.log('Selected closest journée:', closestJournee);
                    return closestJournee;
                };

                const defaultJournee = getCurrentClosestJournee();

                // Store journée data for header selector
                container.journeeData = {
                    matchesByJournee,
                    sortedJournees,
                    defaultJournee
                };

                // Content area for matches
                const contentArea = document.createElement('div');
                contentArea.className = 'journee-content-area';
                container.appendChild(contentArea);

                // Function to show matches for selected journée
                const showJourneeMatches = (selectedJournee) => {
                    contentArea.innerHTML = '';
                    
                    if (!matchesByJournee[selectedJournee]) return;

                    const journeeSection = document.createElement('div');
                    journeeSection.className = 'journee-section';

                    // Matches container (sans header vert)
                    const matchesContainer = document.createElement('div');
                    matchesContainer.className = 'journee-matches';
                    matchesContainer.style.cssText = 'background: white; border-radius: 8px; overflow: hidden; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);';
                    
                    matchesByJournee[selectedJournee].forEach((match, index) => {
                        const matchCard = this.createMatchCard(match);
                        matchCard.style.borderRadius = '0';
                        matchCard.style.marginBottom = '0';
                        if (index < matchesByJournee[selectedJournee].length - 1) {
                            matchCard.style.borderBottom = '1px solid #e5e7eb';
                        }
                        matchesContainer.appendChild(matchCard);
                    });
                    
                    journeeSection.appendChild(matchesContainer);
                    contentArea.appendChild(journeeSection);
                };

                // Store function for header selector to use
                container.showJourneeMatches = showJourneeMatches;

                // Show default journée (closest to current date)
                showJourneeMatches(defaultJournee);

                return container;
            }

            createMatchesList(matches) {
                const container = document.createElement('div');
                container.className = 'matches-list';

                matches.forEach(match => {
                    const matchCard = this.createMatchCard(match);
                    container.appendChild(matchCard);
                });

                return container;
            }

            createMatchCard(match) {
                const isFinished = match.etat === 'termine';
                const isLive = match.etat === 'endirect';
                
                const card = document.createElement('div');
                card.className = `match-card ${isFinished ? 'finished' : ''} ${isLive ? 'live' : ''}`;
                card.setAttribute('data-match-id', match.id);
                card.onclick = () => window.location.href = `https://vibrez-rugby.com/live-en-direct/?id=${match.id}`;

                // Add status indicator
                const statusBar = document.createElement('div');
                statusBar.className = 'match-status';
                card.appendChild(statusBar);

                // Determine winner if match is finished
                let homeWinner = false, awayWinner = false;
                if (isFinished && match.score_locale !== null && match.score_visiteuse !== null) {
                    const homeScore = parseInt(match.score_locale) || 0;
                    const awayScore = parseInt(match.score_visiteuse) || 0;
                    if (homeScore > awayScore) {
                        homeWinner = true;
                    } else if (awayScore > homeScore) {
                        awayWinner = true;
                    }
                }

                // Mobile layout (default)
                if (window.innerWidth <= 768) {
                    // Determine what to show in center (score or date)
                    let centerContent;
                    if (isFinished || isLive) {
                        // Show score
                        const homeScore = match.score_locale || '0';
                        const awayScore = match.score_visiteuse || '0';
                        centerContent = `
                            <div class="match-center-score ${isLive ? 'live' : ''}">
                                ${homeScore} - ${awayScore}
                            </div>
                        `;
                    } else {
                        // Show date/time
                        const matchDate = new Date(match.date);
                        centerContent = `
                            <div class="match-center-date">
                                <div class="match-date-day">${matchDate.toLocaleDateString('fr-FR', { day: 'numeric', month: 'short' })}</div>
                                <div class="match-date-time">${matchDate.toLocaleTimeString('fr-FR', { hour: '2-digit', minute: '2-digit' })}</div>
                            </div>
                        `;
                    }

                    card.innerHTML += `
                        <div class="match-team ${homeWinner ? 'winner' : (awayWinner ? 'loser' : '')}">
                            <img decoding="async" class="match-team-logo" 
                                 src="${match.local_team.img_url}" 
                                 alt="${match.local_team.name}"
                                 onerror="this.src='data:image/svg+xml,%3Csvg xmlns=\'http://www.w3.org/2000/svg\' viewBox=\'0 0 100 100\'%3E%3Crect width=\'100\' height=\'100\' fill=\'%23e5e7eb\'/%3E%3Ctext x=\'50\' y=\'50\' text-anchor=\'middle\' dy=\'.3em\' fill=\'%236b7280\' font-family=\'Poppins\' font-size=\'20\'%3E${match.local_team.name.charAt(0).toUpperCase()}%3C/text%3E%3C/svg%3E'">
                            <span class="match-team-name" title="${match.local_team.name}">${match.local_team.name}</span>
                        </div>
                        ${centerContent}
                        <div class="match-team ${awayWinner ? 'winner' : (homeWinner ? 'loser' : '')}">
                            <img decoding="async" class="match-team-logo" 
                                 src="${match.visitor_team.img_url}" 
                                 alt="${match.visitor_team.name}"
                                 onerror="this.src='data:image/svg+xml,%3Csvg xmlns=\'http://www.w3.org/2000/svg\' viewBox=\'0 0 100 100\'%3E%3Crect width=\'100\' height=\'100\' fill=\'%23e5e7eb\'/%3E%3Ctext x=\'50\' y=\'50\' text-anchor=\'middle\' dy=\'.3em\' fill=\'%236b7280\' font-family=\'Poppins\' font-size=\'20\'%3E${match.visitor_team.name.charAt(0).toUpperCase()}%3C/text%3E%3C/svg%3E'">
                            <span class="match-team-name" title="${match.visitor_team.name}">${match.visitor_team.name}</span>
                        </div>
                    `;
                } else {
                    // Desktop layout - back to original row format
                    card.className = 'match-row';
                    card.setAttribute('data-match-id', match.id);
                    
                    card.innerHTML = `
                        <div class="team-info">
                            <img decoding="async" class="team-logo" src="${match.local_team.img_url}" alt="${match.local_team.name}">
                            <span style="font-family: 'Poppins', sans-serif;">${match.local_team.name}</span>
                        </div>
                        <div class="match-center">
                            ${(isFinished || isLive) ? 
                                `<div class="score-box ${isLive ? 'live' : ''}">${match.score_locale || 0} - ${match.score_visiteuse || 0}</div>` :
                                `<div class="match-datetime">
                                    ${new Date(match.date).toLocaleDateString('fr-FR', { day: 'numeric', month: 'long', year: 'numeric' })}
                                    <span class="match-time">${new Date(match.date).toLocaleTimeString('fr-FR', { hour: '2-digit', minute: '2-digit' })}</span>
                                </div>`
                            }
                        </div>
                        <div class="team-info away">
                            <img decoding="async" class="team-logo" src="${match.visitor_team.img_url}" alt="${match.visitor_team.name}">
                            <span style="font-family: 'Poppins', sans-serif;">${match.visitor_team.name}</span>
                        </div>
                    `;
                }

                return card;
            }

            createMatchRow(match) {
                const row = document.createElement('div');
                row.className = 'match-row';
                row.onclick = () => window.location.href = `https://vibrez-rugby.com/live-en-direct/?id=${match.id}`;

                // Home team
                const homeTeam = document.createElement('div');
                homeTeam.className = 'team-info';
                homeTeam.innerHTML = `
                    <img decoding="async" class="team-logo" src="${match.local_team.img_url}" alt="${match.local_team.display_name}">
                    <span style="font-family: 'Poppins', sans-serif;">${match.local_team.display_name}</span>
                `;
                row.appendChild(homeTeam);

                // Center (score or datetime)
                const center = document.createElement('div');
                center.className = 'match-center';
                
                if (match.etat === 'termine' || match.etat === 'endirect') {
                    const scoreBox = document.createElement('div');
                    scoreBox.className = 'score-box' + (match.etat === 'endirect' ? ' live' : '');
                    scoreBox.textContent = `${match.score_locale || 0} - ${match.score_visiteuse || 0}`;
                    center.appendChild(scoreBox);
                } else {
                    const datetime = new Date(match.date);
                    center.innerHTML = `
                        <div class="match-datetime">
                            ${datetime.toLocaleDateString('fr-FR', { day: 'numeric', month: 'long', year: 'numeric' })}
                            <span class="match-time">${datetime.toLocaleTimeString('fr-FR', { hour: '2-digit', minute: '2-digit' })}</span>
                        </div>
                    `;
                }
                row.appendChild(center);

                // Away team
                const awayTeam = document.createElement('div');
                awayTeam.className = 'team-info away';
                awayTeam.innerHTML = `
                    <img decoding="async" class="team-logo" src="${match.visitor_team.img_url}" alt="${match.visitor_team.display_name}">
                    <span style="font-family: 'Poppins', sans-serif;">${match.visitor_team.display_name}</span>
                `;
                row.appendChild(awayTeam);

                return row;
            }

            startAutoUpdate() {
                // Update scores every 30 seconds
                this.updateInterval = setInterval(() => {
                    this.updateLiveScores();
                }, 30000);
            }

            async updateLiveScores() {
                // Only update if there are live matches
                if (!this.hasLiveMatches()) return;

                try {
                    const response = await fetch(`${this.apiBase}/competitions/${this.competitionId}/live_scores`);
                    const liveData = await response.json();
                    
                    // Update UI with new scores
                    this.updateScoresInUI(liveData);
                } catch (error) {
                    console.error('Erreur lors de la mise à jour des scores:', error);
                }
            }

            hasLiveMatches() {
                // Check if any match is live
                return true; // Simplified
            }

            updateScoresInUI(liveData) {
                // Update scores without full re-render
                // Implementation depends on your needs
            }

            showError(message) {
                const mainContent = document.getElementById('mainContent');
                mainContent.innerHTML = `
                    <div style="text-align: center; padding: 40px; color: #d62243;">
                        <h2>Erreur</h2>
                        <p>${message}</p>
                    </div>
                `;
            }

            destroy() {
                if (this.updateInterval) {
                    clearInterval(this.updateInterval);
                }
                if (this.cable) {
                    this.cable.close();
                }
            }
        }

        // Initialize on page load
        document.addEventListener('DOMContentLoaded', () => {
            const manager = new CompetitionManager();
            manager.init();

            // Cleanup on page unload
            window.addEventListener('beforeunload', () => {
                manager.destroy();
            });
        });
    </script>
</body>
<br><br>
</div>
</div>
<h1 class=wp-block-heading id=h-resultats-top-14>Résultats TOP 14</h1>
<h2 class=wp-block-heading id=h-resultats-top-14-calendrier-et-enjeux-du-championnat>Résultats Top 14 : calendrier et enjeux du championnat</h2>
<p class=resume-h2>Découvrez tous les résultats du <a href="https://vibrez-rugby.com/competition/top-14/" title="Top 14">Top 14</a>, avec les scores mis à jour en temps réel.</p>
<p>Les <strong>résultats Top 14</strong> rythment chaque saison du rugby français. Chaque club cherche à obtenir les meilleurs classements afin d&rsquo;espérer décrocher le <strong>Bouclier de Brennus</strong>. Avec un format exigeant et des matchs intenses, le <strong>Top 14</strong> est un championnat où chaque point compte. Son <strong>calendrier</strong> s’étend sur plusieurs mois, offrant aux équipes de nombreuses opportunités de se démarquer.</p>
<h2 class=wp-block-heading id=h-resultats-top-14-un-impact-direct-sur-le-classement>Résultats Top 14 : un impact direct sur le classement</h2>
<p>Les <strong>résultats Top 14</strong> influencent directement le classement des équipes. Chaque victoire apporte des points essentiels afin d&rsquo;espérer atteindre les <strong>phases finales</strong>. À l’inverse, une série de défaites peut entraîner une chute au classement et rapprocher une formation de la relégation.</p>
<p>Le système de points dans les résultats favorise l’engagement total des joueurs. Une victoire rapporte <strong>quatre points</strong>, un match nul <strong>deux points</strong> et une défaite <strong>zéro point</strong>. Le <strong>bonus offensif</strong> s’obtient en marquant trois essais de plus que l’adversaire, tandis que le <strong>bonus défensif</strong> est attribué aux équipes perdant avec un écart de sept points ou moins.</p>
<h2 class=wp-block-heading id=h-un-calendrier-structure-pour-une-saison-intense>Un calendrier structuré pour une saison intense</h2>
<p>Le <strong><a href="https://vibrez-rugby.com/calendrier-top-14/" title="calendrier du Top 14">calendrier du Top 14</a></strong> est conçu à maintenir un haut niveau de compétitivité. Il se compose de <strong>26 journées</strong>, réparties sur plusieurs mois. Chaque équipe affronte ses adversaires en <strong>matchs aller-retour</strong>, ce qui permet d’équilibrer les confrontations.</p>
<p>Après la saison régulière, les six meilleures formations se qualifient pour les <strong>phases finales</strong>. Les deux premiers du classement accèdent directement aux <strong>demi-finales</strong>, tandis que les équipes classées de la troisième à la sixième place disputent des <strong>barrages</strong>. La finale, disputée sur terrain neutre, désigne le champion de France.</p>
<h2 class=wp-block-heading id=h-l-importance-des-resultats-top-14-pour-les-qualifications-europeennes>L’importance des résultats Top 14 pour les qualifications européennes</h2>
<p>Les <strong>classement du Top 14</strong> ne se limitent pas au titre national. Ils déterminent aussi les clubs qualifiés pour les compétitions européennes. Les formations les mieux classées décrochent une place en <strong><a href="https://vibrez-rugby.com/competition/champions-cup/" title="Champions Cup">Champions Cup</a></strong>, la compétition la plus prestigieuse du rugby européen. D’autres clubs se qualifient de la <strong><a href="https://vibrez-rugby.com/competition/challenge-cup/" title="Challenge Cup">Challenge Cup</a></strong>, qui regroupe des équipes ambitieuses.</p>
<h2 class=wp-block-heading id=h-un-enjeu-crucial-pour-la-relegation>Un enjeu crucial pour la relégation</h2>
<p>Chaque saison, le <strong>calendrier Top 14</strong> réserve des affrontements décisifs pour le maintien. L’équipe classée dernière est directement reléguée en <strong><a href="https://vibrez-rugby.com/competition/pro-d2/" title="Pro D2">Pro D2</a></strong>. L’avant-dernier affronte le finaliste de la <strong>Pro D2</strong> lors d’un <strong>match de barrage</strong>. Cette rencontre peut bouleverser le sort des clubs et créer des scénarios inattendus.</p>
<h3 class=wp-block-heading id=h-pour-resumer>Pour résumer</h3>
<p>Les <strong>résultats Top 14</strong> sont essentiels pour le classement, la qualification en <strong>Champions Cup</strong> et la lutte du maintien. Chaque match influence l’avenir des équipes et façonne le championnat. Avec un <strong>calendrier bien structuré</strong>, le <strong>Top 14</strong> garantit du suspense jusqu’à la dernière journée.</p>
<p></p>
</div></main>
<footer class=wp-block-template-part>
<div class="wp-block-group header-mobile has-white-color has-text-color has-background has-link-color wp-elements-3e535bf712491d7d1d8928bc5ea2012b is-content-justification-center is-nowrap is-layout-flex wp-container-core-group-is-layout-76562e96 wp-block-group-is-layout-flex wp-container-2 is-position-sticky" style="background-color:#e40f28;margin-top:0;margin-bottom:0;padding-top:0;padding-right:0;padding-bottom:0;padding-left:0">
<div class="wp-block-group has-white-color has-text-color has-link-color wp-elements-b3754538f5af5b5de66588e167706ee8 is-vertical is-layout-flex wp-container-core-group-is-layout-e1300cac wp-block-group-is-layout-flex">
<figure class="wp-block-image size-full is-resized mobile-img is-style-default"><a href="/"><img fetchpriority=high decoding=async width=500 height=500 src="https://vibrez-rugby.com/wp-content/uploads/2024/11/accueil.png" alt="" class=wp-image-302713 style=width:40px srcset="https://vibrez-rugby.com/wp-content/uploads/2024/11/accueil.png 500w, https://vibrez-rugby.com/wp-content/uploads/2024/11/xaccueil-300x300.png.pagespeed.ic.NrukIDHpe_.png 300w, https://vibrez-rugby.com/wp-content/uploads/2024/11/xaccueil-150x150.png.pagespeed.ic.P3l7zMib8D.png 150w" sizes="(max-width: 500px) 100vw, 500px" data-pagespeed-url-hash=138013547 onload="pagespeed.CriticalImages.checkImageForCriticality(this);"/></a><figcaption class=wp-element-caption><a href="/" data-type=category data-id=1081>Accueil</a></figcaption></figure>
</div>
<div class="wp-block-group has-white-color has-text-color has-link-color wp-elements-2af5028b41dc23a949f6cbeaf779a97c is-vertical is-layout-flex wp-container-core-group-is-layout-e1300cac wp-block-group-is-layout-flex">
<figure class="wp-block-image size-full is-resized mobile-img"><a href="/matchs-de-rugby-en-direct/"><img decoding=async width=500 height=500 src="https://vibrez-rugby.com/wp-content/uploads/2024/11/en-direct.png" alt="" class=wp-image-302714 style=width:40px srcset="https://vibrez-rugby.com/wp-content/uploads/2024/11/xen-direct.png.pagespeed.ic.h7axP4aqUx.png 500w, https://vibrez-rugby.com/wp-content/uploads/2024/11/en-direct-300x300.png 300w, https://vibrez-rugby.com/wp-content/uploads/2024/11/xen-direct-150x150.png.pagespeed.ic.wNFBtmjBQ7.webp 150w" sizes="(max-width: 500px) 100vw, 500px" data-pagespeed-url-hash=2076089316 onload="pagespeed.CriticalImages.checkImageForCriticality(this);"/></a><figcaption class=wp-element-caption><a href="/matchs-de-rugby-en-direct/" data-type=category data-id=1081>En Direct</a></figcaption></figure>
</div>
<div class="wp-block-group is-vertical is-layout-flex wp-container-core-group-is-layout-e1300cac wp-block-group-is-layout-flex">
<figure class="wp-block-image size-full is-resized mobile-img"><a href="/radio-rugby/"><img decoding=async width=500 height=500 src="https://vibrez-rugby.com/wp-content/uploads/2024/11/radios.png" alt="" class=wp-image-302715 style=width:40px srcset="https://vibrez-rugby.com/wp-content/uploads/2024/11/xradios.png.pagespeed.ic.lvro50HZqz.png 500w, https://vibrez-rugby.com/wp-content/uploads/2024/11/radios-300x300.png 300w, https://vibrez-rugby.com/wp-content/uploads/2024/11/xradios-150x150.png.pagespeed.ic.kPRjdYk493.png 150w" sizes="(max-width: 500px) 100vw, 500px" data-pagespeed-url-hash=2635128127 onload="pagespeed.CriticalImages.checkImageForCriticality(this);"/></a><figcaption class=wp-element-caption><a href="/radio-rugby/" data-type=category data-id=1081>Radios</a></figcaption></figure>
</div>
<div class="wp-block-group is-vertical is-layout-flex wp-container-core-group-is-layout-e1300cac wp-block-group-is-layout-flex">
<figure class="wp-block-image size-full is-resized mobile-img"><a href="/resultats/"><img loading=lazy decoding=async width=500 height=500 src="https://vibrez-rugby.com/wp-content/uploads/2024/11/40x500xresultat.png.pagespeed.ic.CYvUgFdaz1.png" alt="" class=wp-image-302716 style=width:40px srcset="https://vibrez-rugby.com/wp-content/uploads/2024/11/xresultat.png.pagespeed.ic.oOhJRqu65o.png 500w, https://vibrez-rugby.com/wp-content/uploads/2024/11/resultat-300x300.png 300w, https://vibrez-rugby.com/wp-content/uploads/2024/11/xresultat-150x150.png.pagespeed.ic.Iz0RKjYCs_.webp 150w" sizes="auto, (max-width: 500px) 100vw, 500px" data-pagespeed-url-hash=3367419227 onload="pagespeed.CriticalImages.checkImageForCriticality(this);"/></a><figcaption class=wp-element-caption><a href="/resultats/" data-type=category data-id=1081>Résultats</a></figcaption></figure>
</div>
<div class="wp-block-group is-vertical is-layout-flex wp-container-core-group-is-layout-e1300cac wp-block-group-is-layout-flex">
<figure class="wp-block-image size-full is-resized mobile-img  mobile-img-others"><img loading=lazy decoding=async src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAACXBIWXMAAAsTAAALEwEAmpwYAAABDklEQVR4nO3UoUoEURgF4FVR1rBgMKxNm81kUwSTKwarwSCmBbHrC/gCghgsFoNVsGkx+AYWQcyWbYLBTwZGHIZ72R2DGP4vHw6HO/dOqxVCCCGEEEIIIfwdzGETSxgbkp3GCtbRGaF7EVuY/+24I3z4cY/ZTHYZL5XsG3qZbBvXlewnTjHeZFxP2lXm5Krjvg3QTeRPMt39JgMvMiXvmKxlV+XtJrqfM9m7JgMvMyXFJ2/XssWdy9lPdL9msg9NBu5kSm4T2U5551KnvZDIn0k7HnlgWXReK3jKvbjyzg5q4/Yy2Rk81rpvMNVoYOV1HmC7eAxDst3izhWfddivAxPYwCHWGg8LIYTQ+pe+ACxqLfm8FEt5AAAAAElFTkSuQmCC" alt="" class=wp-image-300091 style=width:40px data-pagespeed-url-hash=1051913639 onload="pagespeed.CriticalImages.checkImageForCriticality(this);" id=pagespeed_img_r86c281uAB1 /><figcaption class=wp-element-caption>Autres</figcaption></figure>
</div>
</div>
<div class="wp-block-group header-desktop has-white-color has-gradient-home-gradient-background has-text-color has-background has-link-color wp-elements-d4454b952841c8e643d52c251a890d6e has-global-padding is-layout-constrained wp-block-group-is-layout-constrained" style="padding-top:var(--wp--preset--spacing--10);padding-bottom:var(--wp--preset--spacing--10)">
<div class="wp-block-columns alignwide is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:50%">
<div class="wp-block-group is-vertical is-layout-flex wp-container-core-group-is-layout-fe9cc265 wp-block-group-is-layout-flex"><p class="wp-block-site-title has-medium-font-size"><a href="https://vibrez-rugby.com" target=_self rel=home>Rugby en direct &#8211; Vibrez Rugby</a></p>
<p class=has-small-font-size><a href="https://vibrez-rugby.com/resultats-top-14/">Résultats Top 14</a>, <a href="https://vibrez-rugby.com/resultats-pro-d2/">résultats Pro D2</a>, <a href="https://vibrez-rugby.com/classement-top-14">classement Top 14</a>, <a href="https://vibrez-rugby.com/classement-pro-d2">classement Pro D2</a>, <a href="https://vibrez-rugby.com/matchs-de-rugby-en-direct/">Rugby en direct</a>, <a href="https://vibrez-rugby.com/live-en-direct/">score live</a> , <a href="https://vibrez-rugby.com/competition/xv-de-france/">XV de france</a>, <a href="https://vibrez-rugby.com/competition/six-nations/">6 nations</a>, <a href="https://vibrez-rugby.com/rsl/antoine-dupont/">Antoine Dupont,</a> <a href="https://vibrez-rugby.com/club/stade-toulousain/">Stade Toulousain</a>, <a href="https://vibrez-rugby.com/club/bordeaux-begles/" data-type=link data-id="https://vibrez-rugby.com/club/bordeaux-begles/">UBB</a>, <a href="https://vibrez-rugby.com/rugby/">rugby</a>, <a href="https://vibrez-rugby.com/rugby/pronostic-rugby/">Pronostics rugby</a>, <a href="https://www.liverugby.fr/" data-type=page data-id=330488>Live Rugby</a> , <a href="https://vibrez-rugby.com/programme-tv-rugby/" data-type=page data-id=330488>programme tv rugby</a> </p>
<p class=has-text-align-center>© CREATIF STUDIO Ltd</p>
</div>
</div>
<div class="wp-block-column has-global-padding is-layout-constrained wp-container-core-column-is-layout-520232fb wp-block-column-is-layout-constrained" style="padding-right:0;padding-left:0;flex-basis:50%">
<div class="wp-block-group is-vertical is-content-justification-center is-layout-flex wp-container-core-group-is-layout-ce155fab wp-block-group-is-layout-flex">
<h2 class="wp-block-heading has-medium-font-size has-white-color has-text-color has-link-color has-body-font-family wp-elements-b62d7bb6dc6265e50c21b08085a06860" id=h-reseaux-sociaux style="font-style:normal;font-weight:600">Réseaux sociaux</h2>
<nav style="font-style:normal;font-weight:400;" class="has-small-font-size items-justified-center is-vertical wp-block-navigation is-content-justification-center is-layout-flex wp-container-core-navigation-is-layout-6329a8f3 wp-block-navigation-is-layout-flex" aria-label="Navigation 5"><ul style="font-style:normal;font-weight:400;" class="wp-block-navigation__container has-small-font-size items-justified-center is-vertical wp-block-navigation has-small-font-size"><li class="has-small-font-size wp-block-navigation-item wp-block-navigation-link"><a class=wp-block-navigation-item__content href="https://facebook.com/vibrezrugby" rel=nofollow><span class=wp-block-navigation-item__label>Facebook</span></a></li><li class="has-small-font-size wp-block-navigation-item wp-block-navigation-link"><a class=wp-block-navigation-item__content href="https://linkedin.com/in/vibrez-rugby" rel=nofollow><span class=wp-block-navigation-item__label>Linkedin</span></a></li><li class="has-small-font-size wp-block-navigation-item wp-block-navigation-link"><a class=wp-block-navigation-item__content href="https://twitter.com/vibrezrugbyd2" rel=nofollow><span class=wp-block-navigation-item__label>Twitter/X</span></a></li></ul></nav></div>
</div>
</div>
<script>document.addEventListener('DOMContentLoaded',function(){const mobileImg=document.querySelector('.mobile-img-others');const menuContainer=document.querySelector('.wp-block-navigation__responsive-container');const closeMenuButton=document.querySelector('.wp-block-navigation__responsive-container-close');function toggleMenu(){const isOpen=menuContainer.classList.contains('is-menu-open');menuContainer.classList.toggle('is-menu-open',!isOpen);menuContainer.setAttribute('aria-hidden',isOpen?'true':'false');if(!isOpen){const firstFocusableElement=menuContainer.querySelector('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])');if(firstFocusableElement)firstFocusableElement.focus();}}function closeMenu(){menuContainer.classList.remove('is-menu-open');menuContainer.setAttribute('aria-hidden','true');}if(mobileImg&&menuContainer){mobileImg.addEventListener('click',toggleMenu);}if(closeMenuButton){closeMenuButton.addEventListener('click',closeMenu);}document.addEventListener('click',function(event){if(menuContainer.classList.contains('is-menu-open')&&!menuContainer.contains(event.target)&&!mobileImg.contains(event.target)){closeMenu();}});});</script> <script>
(function() {
  const updates = [
    "Grenoble pousse dans les 22 mètres adverses.",
    "Perpignan temporise avec du jeu au pied.",
    "Bonne défense de Grenoble sur la ligne.",
    "Pénalité obtenue par Perpignan au centre du terrain.",
    "Changement côté Grenoble : entrée de n°16."
  ];

  function ajouterMiseAJour() {
    const bloc = document.getElementById("match-live");
    if (!bloc) return;

    const texte = updates[Math.floor(Math.random() * updates.length)];
    const date = new Date();
    const heures = date.getHours().toString().padStart(2, '0');
    const minutes = date.getMinutes().toString().padStart(2, '0');
    const horodatage = `${heures}:${minutes}`;

    const ligne = document.createElement("p");
    ligne.innerHTML = `<strong>${horodatage}</strong> – ${texte}`;
    bloc.appendChild(ligne);
  }

  // Ajouter une mise à jour toutes les 5 minutes (300000 ms)
  ajouterMiseAJour(); // initiale
  setInterval(ajouterMiseAJour, 300000);
})();
</script>
</div>
</footer></div>
<script type=speculationrules>
{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/twentytwentyfour-child/*","/wp-content/themes/twentytwentyfour/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]}
</script>
<script id=hamburger-fallback-fix>(function(){'use strict';document.addEventListener('click',function(e){if(!e.target.closest)return;if(e.target.closest('.wp-block-navigation__responsive-container-open')){var c=document.querySelector('.wp-block-navigation__responsive-container');if(!c)return;setTimeout(function(){if(!c.classList.contains('is-menu-open')){c.classList.add('is-menu-open','has-modal-open');document.documentElement.style.overflow='hidden';}},80);return;}if(e.target.closest('.wp-block-navigation__responsive-container-close')){var c=document.querySelector('.wp-block-navigation__responsive-container');if(!c)return;setTimeout(function(){c.classList.remove('is-menu-open','has-modal-open');document.documentElement.style.overflow='';},80);return;}},false);document.addEventListener('DOMContentLoaded',function(){var c=document.querySelector('.wp-block-navigation__responsive-container');if(c&&c.classList.contains('is-menu-open')){c.classList.remove('is-menu-open','has-modal-open');document.documentElement.style.overflow='';}});})();</script>
<script type=module src="https://vibrez-rugby.com/wp-includes/js/dist/script-modules/block-library/navigation/view.min.js,qver=b0f909c3ec791c383210.pagespeed.ce.gfSRrczahq.js" id="@wordpress/block-library/navigation/view-js-module" fetchpriority=low data-wp-router-options="{&quot;loadOnClientNavigation&quot;:true}"></script>
<script id=wp-block-template-skip-link-js-after>(function(){var skipLinkTarget=document.querySelector('main'),sibling,skipLinkTargetID,skipLink;if(!skipLinkTarget){return;}sibling=document.querySelector('.wp-site-blocks');if(!sibling){return;}skipLinkTargetID=skipLinkTarget.id;if(!skipLinkTargetID){skipLinkTargetID='wp--skip-link--target';skipLinkTarget.id=skipLinkTargetID;}skipLink=document.createElement('a');skipLink.classList.add('skip-link','screen-reader-text');skipLink.id='wp-skip-link';skipLink.href='#'+skipLinkTargetID;skipLink.innerText='Aller au contenu';sibling.parentElement.insertBefore(skipLink,sibling);}());</script>
<script id=vsc-inline-js-after>document.addEventListener('DOMContentLoaded',function(){function getOgTitle(){var og=document.querySelector('meta[property="og:title"],meta[name="og:title"]');return og?og.getAttribute('content'):''}function getH1(){var el=document.querySelector('h1.entry-title')||document.querySelector('h1');return el?el.textContent.trim():''}function getBestTitle(){var t=getOgTitle();if(!t)t=getH1();if(!t)t=document.title||'';return(t||'').trim()}var objectUrl=window.location.href,sent=false;function sendView(){if(sent)return;sent=true;var finalTitle=getBestTitle()||'Page';var isNewSession=!sessionStorage.getItem('vsc_session_recorded');if(isNewSession){sessionStorage.setItem('vsc_session_recorded','1');}var isNewDailyUser=document.cookie.indexOf('vsc_daily_user=1')===-1;if(isNewDailyUser){const now=new Date();const midnight=new Date(now.getFullYear(),now.getMonth(),now.getDate()+1,0,0,0);document.cookie='vsc_daily_user=1; expires='+midnight.toUTCString()+'; path=/';}if(!isNewSession){return;}var body='action=vsc_record_view&object_id=80454&object_title='+encodeURIComponent(finalTitle)+'&object_url='+encodeURIComponent(objectUrl)+'&nonce=f17070b33b';if(isNewSession){body+='&is_new_session=1';}if(isNewDailyUser){body+='&is_new_daily_user=1';}fetch('https://vibrez-rugby.com/wp-admin/admin-ajax.php',{method:'POST',headers:{'Content-Type':'application/x-www-form-urlencoded'},body:body}).catch(function(){});}['scroll','mousemove','touchstart','keydown'].forEach(function(e){document.addEventListener(e,sendView,{once:true,passive:true});});setTimeout(sendView,6000);});</script>
<script id=wp-consent-api-js-extra>var consent_api={"consent_type":"","waitfor_consent_hook":"","cookie_expiration":"30","cookie_prefix":"wp_consent","services":[]};</script>
<script src="https://vibrez-rugby.com/wp-content/plugins/wp-consent-api/assets/js/wp-consent-api.min.js,qver=2.0.1.pagespeed.ce.gI0FZvklrD.js" id=wp-consent-api-js></script>
<script id=wp-emoji-settings type="application/json">
{"baseUrl":"https://s.w.org/images/core/emoji/17.0.2/72x72/","ext":".png","svgUrl":"https://s.w.org/images/core/emoji/17.0.2/svg/","svgExt":".svg","source":{"concatemoji":"https://vibrez-rugby.com/wp-includes/js/wp-emoji-release.min.js?ver=6.9.4"}}
</script>
<script type=module>
/*! This file is auto-generated */
const a=JSON.parse(document.getElementById("wp-emoji-settings").textContent),o=(window._wpemojiSettings=a,"wpEmojiSettingsSupports"),s=["flag","emoji"];function i(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(o,JSON.stringify(t))}catch(e){}}function c(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0);const a=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);return t.every((e,t)=>e===a[t])}function p(e,t){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var n=e.getImageData(16,16,1,1);for(let e=0;e<n.data.length;e++)if(0!==n.data[e])return!1;return!0}function u(e,t,n,a){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\udde8\ud83c\uddf6","\ud83c\udde8\u200b\ud83c\uddf6")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!a(e,"\ud83e\u1fac8")}return!1}function f(e,t,n,a){let r;const o=(r="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):document.createElement("canvas")).getContext("2d",{willReadFrequently:!0}),s=(o.textBaseline="top",o.font="600 32px Arial",{});return e.forEach(e=>{s[e]=t(o,e,n,a)}),s}function r(e){var t=document.createElement("script");t.src=e,t.defer=!0,document.head.appendChild(t)}a.supports={everything:!0,everythingExceptFlag:!0},new Promise(t=>{let n=function(){try{var e=JSON.parse(sessionStorage.getItem(o));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(s),u.toString(),c.toString(),p.toString()].join(",")+"));",a=new Blob([e],{type:"text/javascript"});const r=new Worker(URL.createObjectURL(a),{name:"wpTestEmojiSupports"});return void(r.onmessage=e=>{i(n=e.data),r.terminate(),t(n)})}catch(e){}i(n=f(s,u,c,p))}t(n)}).then(e=>{for(const n in e)a.supports[n]=e[n],a.supports.everything=a.supports.everything&&a.supports[n],"flag"!==n&&(a.supports.everythingExceptFlag=a.supports.everythingExceptFlag&&a.supports[n]);var t;a.supports.everythingExceptFlag=a.supports.everythingExceptFlag&&!a.supports.flag,a.supports.everything||((t=a.source||{}).concatemoji?r(t.concatemoji):t.wpemoji&&t.twemoji&&(r(t.twemoji),r(t.wpemoji)))});
//# sourceURL=https://vibrez-rugby.com/wp-includes/js/wp-emoji-loader.min.js
</script>
</body>
</html>