Outiref
<!DOCTYPE html>
<html lang=fr-FR>
<head>
<meta charset=UTF-8 />
<meta name=vr-live-tick content=2026-04-21T11:43:00Z>
<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>
<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><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>
<meta name=description content="Résultat Castres – Toulouse : 25-42. Retrouvez le score, les essais et le fil du match  2025-2026 sur Vibrez Rugby."/>
<link rel=canonical href="https://vibrez-rugby.com/castres-toulouse-en-direct-2/"/>
<meta name=author content=T.Bernard />
<meta name=twitter:label1 content="Écrit par"/>
<meta name=twitter:data1 content=T.Bernard />
<meta name=twitter:label2 content="Durée de lecture estimée"/>
<meta name=twitter:data2 content="5 minutes"/>
<title>Résultat Castres – Toulouse : 25-42 (Saison 2025-2026)</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/"/>
<meta name=citation_title content="Castres &#8211; Toulouse en direct">
<meta name=citation_author content=T.Bernard>
<meta name=citation_publication_date content=2026-04-18>
<meta name=citation_online_date content=2026-04-18>
<meta name=citation_journal_title content="Vibrez Rugby">
<meta name=citation_publisher content="Vibrez Rugby">
<meta name=citation_language content=fr>
<meta name=citation_abstract content="Partager : Bienvenue dans ce live consacré à la compétition Top 14, rendez vous à partir de 21H00 pour suivre Castres &#8211; Toulouse en direct à la RADIO et/ou en score live. Retrouvez la composition des équipes du match Castres (8e, 47 pts) &#8211; Toulouse (1e, 71 pts) pour le compte de la 21e journéee [&hellip;]">
<meta name=citation_public_url content="https://vibrez-rugby.com/castres-toulouse-en-direct-2/">
<meta name=DC.title content="Castres &#8211; Toulouse en direct">
<meta name=DC.creator content=T.Bernard>
<meta name=DC.date content=2026-04-18>
<meta name=DC.description content="Partager : Bienvenue dans ce live consacré à la compétition Top 14, rendez vous à partir de 21H00 pour suivre Castres &#8211; Toulouse en direct à la RADIO et/ou en score live. Retrouvez la composition des équipes du match Castres (8e, 47 pts) &#8211; Toulouse (1e, 71 pts) pour le compte de la 21e journéee [&hellip;]">
<meta name=DC.publisher content="Vibrez Rugby">
<meta name=DC.language content=fr>
<meta name=DC.identifier content="https://vibrez-rugby.com/castres-toulouse-en-direct-2/">
<meta name=DC.type content=Text.Article>
<meta name=DC.format content="text/html">
<link rel=alternate type="application/rss+xml" title="Rugby en direct - Vibrez Rugby &raquo; Castres &#8211; Toulouse en direct Flux des commentaires" href="https://vibrez-rugby.com/castres-toulouse-en-direct-2/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%2Fcastres-toulouse-en-direct-2%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%2Fcastres-toulouse-en-direct-2%2F&#038;format=xml"/>
<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-post-featured-image-inline-css>
.wp-block-post-featured-image{margin-left:0;margin-right:0}.wp-block-post-featured-image a{display:block;height:100%}.wp-block-post-featured-image :where(img){box-sizing:border-box;height:auto;max-width:100%;vertical-align:bottom;width:100%}.wp-block-post-featured-image.alignfull img,.wp-block-post-featured-image.alignwide img{width:100%}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim{background-color:#000;inset:0;position:absolute}.wp-block-post-featured-image{position:relative}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-gradient{background-color:initial}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-0{opacity:0}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-10{opacity:.1}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-20{opacity:.2}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-30{opacity:.3}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-40{opacity:.4}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-50{opacity:.5}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-60{opacity:.6}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-70{opacity:.7}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-80{opacity:.8}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-90{opacity:.9}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-100{opacity:1}.wp-block-post-featured-image:where(.alignleft,.alignright){width:100%}
/*# sourceURL=https://vibrez-rugby.com/wp-includes/blocks/post-featured-image/style.min.css */
</style>
<style id=wp-block-post-title-inline-css>
.wp-block-post-title{box-sizing:border-box;word-break:break-word}.wp-block-post-title :where(a){display:inline-block;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/post-title/style.min.css */
</style>
<style id=wp-block-post-terms-inline-css>
.wp-block-post-terms{box-sizing:border-box}.wp-block-post-terms .wp-block-post-terms__separator{white-space:pre-wrap}

				.is-style-pill a,
				.is-style-pill span:not([class], [data-rich-text-placeholder]) {
					display: inline-block;
					background-color: var(--wp--preset--color--base-2);
					padding: 0.375rem 0.875rem;
					border-radius: var(--wp--preset--spacing--20);
				}

				.is-style-pill a:hover {
					background-color: var(--wp--preset--color--contrast-3);
				}
/*# sourceURL=wp-block-post-terms-inline-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-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-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-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-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-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-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-post-featured-image img, .wp-block-post-featured-image .block-editor-media-placeholder, .wp-block-post-featured-image .wp-block-post-featured-image__overlay){border-radius: var(--wp--preset--spacing--20);}
:root :where(.wp-block-post-terms){font-size: var(--wp--preset--font-size--small);}:root :where(.wp-block-post-terms .wp-block-post-terms__prefix){color: var(--wp--preset--color--contrast-2);}
:root :where(.wp-block-post-terms a:where(:not(.wp-element-button))){text-decoration: none;}
:root :where(.wp-block-post-terms a:where(:not(.wp-element-button)):hover){text-decoration: underline;}
:root :where(.wp-block-post-title){color: #000000d1;}
:root :where(.wp-block-post-title a:where(:not(.wp-element-button))){color: #000000d1;text-decoration: none;}
:root :where(.wp-block-post-title 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-elements-f31eb46ae56196ce7deb49fb8f0bc9da a:where(:not(.wp-element-button)){color:var(--wp--preset--color--primary-blue);}.wp-container-core-group-is-layout-dfe8e91f{gap:0.3em;justify-content:flex-start;}.wp-container-core-group-is-layout-6215b345{gap:var(--wp--preset--spacing--10);flex-direction:column;align-items:stretch;}.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-9ac7bc21f3946d079b8177ff2134f3ac 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?ver=9.3' media=all />
<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","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)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(i){var a,d;i.target instanceof HTMLAnchorElement&&(a=new URL(breeze_prefetch.local_url).host,d=i.target.attributes.href?i.target.attributes.href.value:null)&&(-1===d.indexOf(a)&&(d=i.target.href),timer=setTimeout(function(){var e,r,t,n;"#"!==d&&(t=(e=get_prefetch_key(d)).replace(breeze_prefetch.local_url,""),r=new URL(d).host,""!==d.trim())&&!1===c.includes(e)&&a===r&&!1===search_for_banned_links(breeze_prefetch.ignore_list,t)&&!0===breeze_ignore_special_links(i.target,d)&&(c.push(e),r=document.createElement("link"),t=get_prefetch_key(breeze_prefetch.local_url),n=-1!==d.indexOf("#")?d.substring(0,d.indexOf("#")):d,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/posts/349699"/><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=349699'/>
<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>
<style id=vibrez-promo-styles>.promo-match{background-color:#fdeeee!important;border-left-color:#d63638!important}.promo-match strong{color:#333!important}.promo-match a{color:#c02729!important}</style>
<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>
<meta name=genre content="Actualité sportive">
<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>
<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>
<meta name=robots content=max-image-preview:large />
<meta property=og:type content=article />
<meta property=og:title content="Résultat Castres – Toulouse : 25-42 (Saison 2025-2026)"/>
<meta property=og:description content="Résultat Castres – Toulouse : 25-42. Retrouvez le score, les essais et le résumé du match 2025-2026 sur Vibrez Rugby."/>
<meta property=og:url content="https://vibrez-rugby.com/castres-toulouse-en-direct-2/"/>
<meta property=og:image content="https://vibrez-rugby.com/wp-content/uploads/2026/04/Castres-Toulouse-en-direct.jpg"/>
<meta property=og:image:width content=1080 />
<meta property=og:image:height content=1080 />
<meta property=og:updated_time content="2026-04-21T11:43:04+00:00"/>
<meta name=twitter:card content=summary_large_image />
<meta name=twitter:title content="Résultat Castres – Toulouse : 25-42 (Saison 2025-2026)"/>
<meta name=twitter:description content="Résultat Castres – Toulouse : 25-42. Retrouvez le score, les essais et le résumé du match 2025-2026 sur Vibrez Rugby."/>
<meta name=twitter:image content="https://vibrez-rugby.com/wp-content/uploads/2026/04/Castres-Toulouse-en-direct.jpg"/>
<script type="application/ld+json" id=vr-live-schema>{"@context":"https://schema.org","@type":"LiveBlogPosting","@id":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#live","headline":"Résultat Castres – Toulouse : 25-42 (Saison 2025-2026)","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/","description":"Résultat Castres – Toulouse : 25-42. Retrouvez le score, les essais et le résumé du match 2025-2026 sur Vibrez Rugby.","image":{"@type":"ImageObject","url":"https://vibrez-rugby.com/wp-content/uploads/2026/04/Castres-Toulouse-en-direct.jpg","width":1080,"height":1080},"thumbnailUrl":"https://vibrez-rugby.com/wp-content/uploads/2026/04/Castres-Toulouse-en-direct.jpg","datePublished":"2026-04-18T20:45:38+02:00","dateModified":"2026-04-18T22:20:00+02:00","isAccessibleForFree":true,"genre":"LiveBlog","mainEntityOfPage":{"@type":"WebPage","@id":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/"},"author":{"@type":"Organization","name":"Vibrez Rugby","url":"https://vibrez-rugby.com/"},"publisher":{"@type":"NewsMediaOrganization","name":"Vibrez Rugby","url":"https://vibrez-rugby.com/","logo":{"@type":"ImageObject","url":"https://vibrez-rugby.com/wp-content/uploads/2020/08/cropped-android-chrome-512x512-1-1.webp","width":512,"height":512}},"about":{"@type":"SportsEvent","@id":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#sportsevent","name":"Castres – Toulouse","description":"Résultat Castres – Toulouse : 25-42. Retrouvez le score, les essais et le résumé du match 2025-2026 sur Vibrez Rugby.","image":[{"@type":"ImageObject","url":"https://vibrez-rugby.com/wp-content/uploads/2026/04/Castres-Toulouse-en-direct.jpg","width":1080,"height":1080},{"@type":"ImageObject","url":"https://vibrez-rugby.com/wp-content/uploads/2024/08/big_castres.png"},{"@type":"ImageObject","url":"https://vibrez-rugby.com/wp-content/uploads/2024/08/big_toulouse.png"}],"url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/","mainEntityOfPage":{"@type":"WebPage","@id":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/"},"eventStatus":"https://schema.org/EventScheduled","eventAttendanceMode":"https://schema.org/OnlineEventAttendanceMode","sport":"Rugby","offers":{"@type":"Offer","price":0,"priceCurrency":"EUR","availability":"https://schema.org/OnlineOnly","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/"},"startDate":"2026-04-18T21:00:00+02:00","endDate":"2026-04-19T21:00:00+02:00","location":{"@type":"Place","name":"Stade à confirmer"},"organizer":{"@type":"Organization","name":"Ligue Nationale de Rugby"},"homeTeam":{"@type":"SportsTeam","name":"Castres","logo":{"@type":"ImageObject","url":"https://vibrez-rugby.com/wp-content/uploads/2024/08/big_castres.png"},"athlete":[{"@type":"Person","name":"Geoffrey Palis","additionalProperty":{"@type":"PropertyValue","name":"jerseyNumber","value":"15"}},{"@type":"Person","name":"Christian Ambadiang","additionalProperty":{"@type":"PropertyValue","name":"jerseyNumber","value":"14"}},{"@type":"Person","name":"Vilimoni Botitu","additionalProperty":{"@type":"PropertyValue","name":"jerseyNumber","value":"13"}},{"@type":"Person","name":"Jack Goodhue","additionalProperty":{"@type":"PropertyValue","name":"jerseyNumber","value":"12"}},{"@type":"Person","name":"Adam Vargas","additionalProperty":{"@type":"PropertyValue","name":"jerseyNumber","value":"11"}},{"@type":"Person","name":"Enzo Hervé","additionalProperty":{"@type":"PropertyValue","name":"jerseyNumber","value":"10"}},{"@type":"Person","name":"Santiago Arata","additionalProperty":{"@type":"PropertyValue","name":"jerseyNumber","value":"9"}},{"@type":"Person","name":"Tyler Ardron","additionalProperty":{"@type":"PropertyValue","name":"jerseyNumber","value":"8"}},{"@type":"Person","name":"Veresa Tuqovu Ramototabua","additionalProperty":{"@type":"PropertyValue","name":"jerseyNumber","value":"7"}},{"@type":"Person","name":"Baptiste Delaporte","additionalProperty":{"@type":"PropertyValue","name":"jerseyNumber","value":"6"}},{"@type":"Person","name":"Florent Vanverberghe","additionalProperty":{"@type":"PropertyValue","name":"jerseyNumber","value":"5"}},{"@type":"Person","name":"Guillaume Ducat","additionalProperty":{"@type":"PropertyValue","name":"jerseyNumber","value":"4"}},{"@type":"Person","name":"Nicolas Corato","additionalProperty":{"@type":"PropertyValue","name":"jerseyNumber","value":"3"}},{"@type":"Person","name":"Teddy Durand","additionalProperty":{"@type":"PropertyValue","name":"jerseyNumber","value":"2"}},{"@type":"Person","name":"Quentin Walcker","additionalProperty":{"@type":"PropertyValue","name":"jerseyNumber","value":"1"}},{"@type":"Person","name":"Will Collier","additionalProperty":{"@type":"PropertyValue","name":"jerseyNumber","value":"23"}},{"@type":"Person","name":"Théo Chabouni","additionalProperty":{"@type":"PropertyValue","name":"jerseyNumber","value":"22"}},{"@type":"Person","name":"Adrea Cocagi","additionalProperty":{"@type":"PropertyValue","name":"jerseyNumber","value":"21"}},{"@type":"Person","name":"Jérémy Fernandez","additionalProperty":{"@type":"PropertyValue","name":"jerseyNumber","value":"20"}},{"@type":"Person","name":"Baptiste Cope","additionalProperty":{"@type":"PropertyValue","name":"jerseyNumber","value":"19"}},{"@type":"Person","name":"Gauthier Maravat","additionalProperty":{"@type":"PropertyValue","name":"jerseyNumber","value":"18"}},{"@type":"Person","name":"Loîs Guérois-Galisson","additionalProperty":{"@type":"PropertyValue","name":"jerseyNumber","value":"17"}},{"@type":"Person","name":"Pierre Colonna","additionalProperty":{"@type":"PropertyValue","name":"jerseyNumber","value":"16"}}]},"awayTeam":{"@type":"SportsTeam","name":"Toulouse","logo":{"@type":"ImageObject","url":"https://vibrez-rugby.com/wp-content/uploads/2024/08/big_toulouse.png"},"athlete":[{"@type":"Person","name":"Matias Remue","additionalProperty":{"@type":"PropertyValue","name":"jerseyNumber","value":"15"}},{"@type":"Person","name":"Blair Kinghorn","additionalProperty":{"@type":"PropertyValue","name":"jerseyNumber","value":"14"}},{"@type":"Person","name":"Paul Costes","additionalProperty":{"@type":"PropertyValue","name":"jerseyNumber","value":"13"}},{"@type":"Person","name":"Santiago Chocobares","additionalProperty":{"@type":"PropertyValue","name":"jerseyNumber","value":"12"}},{"@type":"Person","name":"Dimitri Delibes","additionalProperty":{"@type":"PropertyValue","name":"jerseyNumber","value":"11"}},{"@type":"Person","name":"Romain Ntamack","additionalProperty":{"@type":"PropertyValue","name":"jerseyNumber","value":"10"}},{"@type":"Person","name":"Paul Graou","additionalProperty":{"@type":"PropertyValue","name":"jerseyNumber","value":"9"}},{"@type":"Person","name":"Alexandre Roumat","additionalProperty":{"@type":"PropertyValue","name":"jerseyNumber","value":"8"}},{"@type":"Person","name":"Joshua Brennan","additionalProperty":{"@type":"PropertyValue","name":"jerseyNumber","value":"7"}},{"@type":"Person","name":"Léo Banos","additionalProperty":{"@type":"PropertyValue","name":"jerseyNumber","value":"6"}},{"@type":"Person","name":"Emmanuel Meafou","additionalProperty":{"@type":"PropertyValue","name":"jerseyNumber","value":"5"}},{"@type":"Person","name":"Efrain Elias","additionalProperty":{"@type":"PropertyValue","name":"jerseyNumber","value":"4"}},{"@type":"Person","name":"Paul Mallez","additionalProperty":{"@type":"PropertyValue","name":"jerseyNumber","value":"3"}},{"@type":"Person","name":"Julien Marchand","additionalProperty":{"@type":"PropertyValue","name":"jerseyNumber","value":"2"}},{"@type":"Person","name":"Cyril Baille","additionalProperty":{"@type":"PropertyValue","name":"jerseyNumber","value":"1"}},{"@type":"Person","name":"David Ainu'u","additionalProperty":{"@type":"PropertyValue","name":"jerseyNumber","value":"23"}},{"@type":"Person","name":"Célian Pouzelgues","additionalProperty":{"@type":"PropertyValue","name":"jerseyNumber","value":"22"}},{"@type":"Person","name":"Antoine Dupont","additionalProperty":{"@type":"PropertyValue","name":"jerseyNumber","value":"21"}},{"@type":"Person","name":"Théo Ntamack","additionalProperty":{"@type":"PropertyValue","name":"jerseyNumber","value":"20"}},{"@type":"Person","name":"Roméo Bonnard-Martin","additionalProperty":{"@type":"PropertyValue","name":"jerseyNumber","value":"19"}},{"@type":"Person","name":"Thibaud Flament","additionalProperty":{"@type":"PropertyValue","name":"jerseyNumber","value":"18"}},{"@type":"Person","name":"Benjamin Bertrand","additionalProperty":{"@type":"PropertyValue","name":"jerseyNumber","value":"17"}},{"@type":"Person","name":"Guillaume Cramont","additionalProperty":{"@type":"PropertyValue","name":"jerseyNumber","value":"16"}}]},"subEvent":[{"@type":"BroadcastEvent","isLiveBroadcast":true,"name":"CANAL+","broadcastOfEvent":{"@id":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#sportsevent"}}]},"coverageStartTime":"2026-04-18T20:30:00+02:00","coverageEndTime":"2026-04-19T21:00:00+02:00","liveBlogUpdate":[{"@type":"BlogPosting","headline":"Début de la rencontre (0e)","articleBody":"Début de la rencontre","datePublished":"2026-04-18T21:00:00+02:00","dateModified":"2026-04-18T21:00:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-0-cfc5ab"},{"@type":"BlogPosting","headline":"comment (1e)","articleBody":"comment — Bienvenue sur Vibrez Rugby pour suivre le match Castres - Toulouse commenté !<br>\n• Zappez entre les radios suggérées qui pourraient diffuser le match<br>\n• Consultez les stats dans l'onglet \"Face à face\"<br>\n• Découvrez les compos dans l'onglet \"Compositions\"<br>\nBon match à tous !","datePublished":"2026-04-18T21:01:00+02:00","dateModified":"2026-04-18T21:01:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-1-896d92"},{"@type":"BlogPosting","headline":"Transformation : Ntamack (2e)","articleBody":"Transformation : Ntamack","datePublished":"2026-04-18T21:02:00+02:00","dateModified":"2026-04-18T21:02:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-2-3c1079"},{"@type":"BlogPosting","headline":"Essai : Banos (2e)","articleBody":"Essai : Banos","datePublished":"2026-04-18T21:02:00+02:00","dateModified":"2026-04-18T21:02:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-2-721c08"},{"@type":"BlogPosting","headline":"comment (2e)","articleBody":"comment — Le duel s’engage au stade Pierre-Fabre entre Castres et Toulouse, et sur la remise en jeu initiale sanctionnée contre Corato, les visiteurs choisissent la touche pénale pour lancer une large séquence de passes que la défense tarnaise parvient néanmoins à contenir.","datePublished":"2026-04-18T21:02:00+02:00","dateModified":"2026-04-18T21:02:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-2-48dbce"},{"@type":"BlogPosting","headline":"Carton : Botitu (3e)","articleBody":"Carton : Botitu","datePublished":"2026-04-18T21:03:00+02:00","dateModified":"2026-04-18T21:03:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-3-d242ec"},{"@type":"BlogPosting","headline":"comment (4e)","articleBody":"comment — Au terme d’une longue séquence offensive où Delibes est finalement bloqué tout près de l’en-but, Ntamack ouvre parfaitement pour Banos qui aplatit, puis le demi d’ouverture transforme sans trembler plein axe.","datePublished":"2026-04-18T21:04:00+02:00","dateModified":"2026-04-18T21:04:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-4-6f4e45"},{"@type":"BlogPosting","headline":"comment (4e)","articleBody":"comment — Sur l’action qui conduit à l’essai, Jérémy Rozier sollicite l’assistance de la vidéo et, pour un geste jugé irrégulier, Botitu est finalement sanctionné d’un avertissement temporaire.","datePublished":"2026-04-18T21:04:00+02:00","dateModified":"2026-04-18T21:04:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-4-9ec188"},{"@type":"BlogPosting","headline":"Essai : Remue (5e)","articleBody":"Essai : Remue","datePublished":"2026-04-18T21:05:00+02:00","dateModified":"2026-04-18T21:05:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-5-39e049"},{"@type":"BlogPosting","headline":"Transformation : Ntamack (6e)","articleBody":"Transformation : Ntamack","datePublished":"2026-04-18T21:06:00+02:00","dateModified":"2026-04-18T21:06:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-6-3c1079"},{"@type":"BlogPosting","headline":"comment (6e)","articleBody":"comment — Sur un long coup de pied de Graou capté par Banos, le jeu toulousain se déploie immédiatement vers les ailes avec une succession de passes propres qui ouvre une brèche pour la course de Ntamack dans les 22 mètres, avant que le rythme imposé par les Haut-Garonnais ne soit interrompu lorsque la tentative de Delibes de trouver Costes à son niveau est annulée pour un en-avant commis par les locaux au départ de l’enchaînement.","datePublished":"2026-04-18T21:06:00+02:00","dateModified":"2026-04-18T21:06:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-6-65cc2b"},{"@type":"BlogPosting","headline":"comment (6e)","articleBody":"comment — Touché et contraint de sortir en raison d’une coupure, Kinghorn laisse momentanément sa place à Pouzelgues.","datePublished":"2026-04-18T21:06:00+02:00","dateModified":"2026-04-18T21:06:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-6-2034e9"},{"@type":"BlogPosting","headline":"comment (8e)","articleBody":"comment — Sur une mêlée outrageusement dominée par Toulouse, le cuir est vite écarté vers l’autre côté du terrain où Ntamack, d’un coup de pied millimétré vers l’intérieur, trouve Delibes qui sert Remue pour aplatir avant que l’ouvreur ne fasse passer la transformation entre les perches.","datePublished":"2026-04-18T21:08:00+02:00","dateModified":"2026-04-18T21:08:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-8-a8bb4d"},{"@type":"BlogPosting","headline":"comment (10e)","articleBody":"comment — Sur un renvoi mal maîtrisé par les Toulousains, Castres récupère enfin le cuir et Durand s’engouffre dans l’intervalle, mais Marchand, impeccable en défense, obtient la sanction avant que, quelques instants plus tard, l’alignement des Stadistes ne se dérègle, Delaporte se jette sur le sol sans sécuriser la prise et offre une mêlée aux visiteurs aux abords de leurs quarante mètres.","datePublished":"2026-04-18T21:10:00+02:00","dateModified":"2026-04-18T21:10:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-10-fc3117"},{"@type":"BlogPosting","headline":"comment (11e)","articleBody":"comment — Sur une pénalité rapidement exploitée par le CO, les joueurs de Toulouse restent statiques au lieu de reculer, l’arbitre Jérémy Rozier laisse filer le mouvement et les Castrais déboulent aux abords des 22 mètres.","datePublished":"2026-04-18T21:11:00+02:00","dateModified":"2026-04-18T21:11:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-11-61fb63"},{"@type":"BlogPosting","headline":"comment (12e)","articleBody":"comment — Sur une pénalité rapidement exploitée par Castres, Toulouse tarde à se replacer et l’arbitre Jérémy Rozier laisse les Tarnais progresser jusqu’aux abords des 22 mètres, avant qu’Ambadiang, d’abord redoutable dans l’affrontement et servi près de l’en-but, ne laisse échapper la balle sur l’ultime percussion, puis que Delibes, sur le contre suivant, ne parvienne pas à concrétiser une relance très ambitieuse.","datePublished":"2026-04-18T21:12:00+02:00","dateModified":"2026-04-18T21:12:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-12-518d4c"},{"@type":"BlogPosting","headline":"comment (13e)","articleBody":"comment — Pour Toulouse, Pouzelgues quitte l’aire de jeu et laisse sa place à Kinghorn, qui fait ainsi son retour.","datePublished":"2026-04-18T21:13:00+02:00","dateModified":"2026-04-18T21:13:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-13-3ce59b"},{"@type":"BlogPosting","headline":"comment (15e)","articleBody":"comment — Sous pression sur leur introduction, les joueurs d’Ugo Mola font plier le pack adverse et récoltent une sanction en leur faveur, avant que Marchand ne trouve Banos tout au bout de la touche, où l’intervention irrégulière de Walcker sur le porteur de sauts offre à Ntamack l’occasion de renvoyer les siens occuper de nouveau le terrain du CO au pied.","datePublished":"2026-04-18T21:15:00+02:00","dateModified":"2026-04-18T21:15:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-15-548893"},{"@type":"BlogPosting","headline":"Essai : Herve (17e)","articleBody":"Essai : Herve","datePublished":"2026-04-18T21:17:00+02:00","dateModified":"2026-04-18T21:17:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-17-d5ca30"},{"@type":"BlogPosting","headline":"comment (17e)","articleBody":"comment — Sur une conquête aérienne de Roumat, le pack toulousain organise un groupé pénétrant avant qu’un coup de pied de Ntamack, mal exploité, ne rende finalement la munition aux Castrais, Remue lançant alors la contre-attaque depuis son propre camp, puis, un peu plus tard, une perte de balle des Stadistes permet à Botitu de s’engouffrer plein champ et à Hervé de tenter d’en profiter au pied, sans débouché concret, ce qui ramène l’arbitre à sanctionner un hors-jeu au ras du regroupement contre Toulouse.","datePublished":"2026-04-18T21:17:00+02:00","dateModified":"2026-04-18T21:17:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-17-678ae1"},{"@type":"BlogPosting","headline":"Transformation : Herve (18e)","articleBody":"Transformation : Herve","datePublished":"2026-04-18T21:18:00+02:00","dateModified":"2026-04-18T21:18:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-18-2a51f0"},{"@type":"BlogPosting","headline":"comment (19e)","articleBody":"comment — Sur une remise en jeu, Durand combine avec Delaporte le long de la ligne avant qu’Ambadiang ne longe le couloir et ne menace la zone d’en-but, puis, dans la continuité de cette séquence patiemment construite par les Tarnais pour aspirer la défense, Hervé exploite une brèche, résiste au retour de deux défenseurs toulousains et conclut sous les poteaux.","datePublished":"2026-04-18T21:19:00+02:00","dateModified":"2026-04-18T21:19:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-19-bb29ac"},{"@type":"BlogPosting","headline":"comment (21e)","articleBody":"comment — Hervé ajoute les points au pied après avoir aplati sous les montants, et dans la foulée, des Castrais plus entreprenants depuis un moment voient Arata lever un ballon haut que Vanverberghe maîtrise avant que les Tarnais ne relancent près de la ligne médiane.","datePublished":"2026-04-18T21:21:00+02:00","dateModified":"2026-04-18T21:21:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-21-d6454f"},{"@type":"BlogPosting","headline":"comment (23e)","articleBody":"comment — Dominateurs dans les zones de contact, les visiteurs butent pourtant sur un énorme travail de Marchand, impeccable au grattage dans ses 30 mètres pour provoquer une nouvelle sanction, avant que Costes ne se défasse du premier plaquage, que Delibes ne surgisse plein fer sur le renversement et frôle la brèche dans la défense locale, puis que Roumat, en soutien, ne fasse vivre le mouvement avant de laisser échapper la balle en pleine accélération.","datePublished":"2026-04-18T21:23:00+02:00","dateModified":"2026-04-18T21:23:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-23-7b5277"},{"@type":"BlogPosting","headline":"comment (25e)","articleBody":"comment — Le début tourne à l’avertissement pour les Tarnais, l’arbitre Jérémy Rozier rappelant fermement les deux premières lignes à l’ordre avant de brandir la menace disciplinaire, puis sur le long coup de pied d’Hervé qui lance un duel d’occupation, Kinghorn s’impose avec autorité dans les airs et, après l’isolement de Costes, le ballon échappé offre une pénalité aux Castrais.","datePublished":"2026-04-18T21:25:00+02:00","dateModified":"2026-04-18T21:25:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-25-14be85"},{"@type":"BlogPosting","headline":"comment (26e)","articleBody":"comment — Castres opte pour la touche sur pénalité, Ducat domine l’alignement et, au terme d’un mouvement porté où Ramototabua est servi à deux reprises, le troisième ligne finit par aplatir en puissance derrière la ligne.","datePublished":"2026-04-18T21:26:00+02:00","dateModified":"2026-04-18T21:26:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-26-a5537b"},{"@type":"BlogPosting","headline":"comment (27e)","articleBody":"comment — Sur une pénalité jouée en touche, Ducat capte le renvoi, Ramototabua est servi à deux reprises et conclut en puissance avant que la vidéo ne signale un possible en-avant qui pousse l’arbitre Jérémy Rozier à annuler la réalisation, les Tarnais récupérant tout de même une pénalité qu’ils choisissent de négocier à la main, sans que Durand ne parvienne à aplatir grâce à une défense toulousaine héroïque sur sa ligne qui finit par récupérer la possession.","datePublished":"2026-04-18T21:27:00+02:00","dateModified":"2026-04-18T21:27:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-27-764060"},{"@type":"BlogPosting","headline":"comment (28e)","articleBody":"comment — Castres opte pour la touche pénalité, Ducat capte le renvoi, Ramototabua est trouvé à deux reprises et conclut en puissance avant que l’arbitre Jérémy Rozier, après recours à la vidéo pour un possible en-avant initial, n’invalide la réalisation, puis Palis vient créer le décalage sur l’extérieur, permet aux Tarnais de camper durablement dans le camp stadiste et Ardron, en relais, envoie Vargas franchir la ligne des vingt-deux mètres.","datePublished":"2026-04-18T21:28:00+02:00","dateModified":"2026-04-18T21:28:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-28-16260c"},{"@type":"BlogPosting","headline":"Carton : Elias (29e)","articleBody":"Carton : Elias","datePublished":"2026-04-18T21:29:00+02:00","dateModified":"2026-04-18T21:29:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-29-6fd7c2"},{"@type":"BlogPosting","headline":"comment (29e)","articleBody":"comment — L’arbitre prévient Baille qu’au moindre nouveau geste litigieux, il devra quitter le terrain temporairement avec un carton jaune.","datePublished":"2026-04-18T21:29:00+02:00","dateModified":"2026-04-18T21:29:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-29-183440"},{"@type":"BlogPosting","headline":"comment (30e)","articleBody":"comment — Sur un maul bien organisé qui offre une pénalité en cours aux Tarnais, l’offensive est finalement stoppée et Elias est sanctionné d’un avertissement jaune pour Toulouse.","datePublished":"2026-04-18T21:30:00+02:00","dateModified":"2026-04-18T21:30:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-30-cdb9d7"},{"@type":"BlogPosting","headline":"comment (32e)","articleBody":"comment — Tout proche de son en-but, Kinghorn vient subtiliser la munition à Goodhue sur le contest avant que Graou ne repousse le danger, puis, plus loin, Botitu stabilise le jeu sur l’extérieur malgré une transmission hasardeuse, permettant à Vargas de tenter une initiative et à Ambadiang de replier sa course aux abords des quarante mètres des Stadistes.","datePublished":"2026-04-18T21:32:00+02:00","dateModified":"2026-04-18T21:32:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-32-813818"},{"@type":"BlogPosting","headline":"Essai : Ducat (33e)","articleBody":"Essai : Ducat","datePublished":"2026-04-18T21:33:00+02:00","dateModified":"2026-04-18T21:33:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-33-17e37a"},{"@type":"BlogPosting","headline":"Transformation : Herve (34e)","articleBody":"Transformation : Herve","datePublished":"2026-04-18T21:34:00+02:00","dateModified":"2026-04-18T21:34:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-34-2a51f0"},{"@type":"BlogPosting","headline":"comment (34e)","articleBody":"comment — Sous une pression constante dans les 22 toulousains, les avants castrais enchaînent les fautes sifflées en leur faveur, choisissent la touche plutôt que les points, lancent une combinaison rapide vers Arata dans l’axe et permettent à Ducat de filer conclure en force sous les poteaux.","datePublished":"2026-04-18T21:34:00+02:00","dateModified":"2026-04-18T21:34:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-34-6646c0"},{"@type":"BlogPosting","headline":"Carton : Baille (35e)","articleBody":"Carton : Baille","datePublished":"2026-04-18T21:35:00+02:00","dateModified":"2026-04-18T21:35:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-35-8d2452"},{"@type":"BlogPosting","headline":"Essai : Palis (36e)","articleBody":"Essai : Palis","datePublished":"2026-04-18T21:36:00+02:00","dateModified":"2026-04-18T21:36:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-36-099960"},{"@type":"BlogPosting","headline":"comment (36e)","articleBody":"comment — Hervé ajoute les points au pied, et tandis que les deux camps se retrouvent désormais à égalité après avoir tour à tour imposé leur tempo, le coup de pied de renvoi de Ntamack est capté dans les hauteurs par Vanverberghe.","datePublished":"2026-04-18T21:36:00+02:00","dateModified":"2026-04-18T21:36:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-36-63556e"},{"@type":"BlogPosting","headline":"comment (38e)","articleBody":"comment — Portés par une dynamique totale, les joueurs de Castres voient Ardron échouer tout près de l’en-but avant qu’une indiscipline flagrante de Baille ne lui vaille un avertissement temporaire, et, en double infériorité numérique côté toulousain, les Tarnais optent sans surprise pour une mêlée ordonnée où Bertrand fait son entrée à la place de Delibes pour ce bras de fer.","datePublished":"2026-04-18T21:38:00+02:00","dateModified":"2026-04-18T21:38:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-38-4ee6c2"},{"@type":"BlogPosting","headline":"comment (39e)","articleBody":"comment — Palis conclut la séquence en force après un ballon arraché au sol et un crochet gagnant sur Banos, mais Hervé ne parvient pas ensuite à ajuster son tir face aux perches.","datePublished":"2026-04-18T21:39:00+02:00","dateModified":"2026-04-18T21:39:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-39-a0224f"},{"@type":"BlogPosting","headline":"comment (40e)","articleBody":"comment — (40+1) Le premier acte se conclut au Stade Pierre-Fabre avec les Tarnais devant leurs voisins haut-garonnais, et dans la foulée, les locaux obtiennent une pénalité pour une ultime offensive tandis que Banos cède sa place à Théo Ntamack.","datePublished":"2026-04-18T21:40:00+02:00","dateModified":"2026-04-18T21:40:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-40-6fbff2"},{"@type":"BlogPosting","headline":"comment (40e)","articleBody":"comment — (40+2) Le duel a repris au Stade Pierre Fabre entre Castres et Toulouse, où Meafou s’empare du ballon pour une fulgurance vers l’avant, Palis se saisit de la chandelle et Cocagi fait son entrée à la place de Botitu côté castrais.","datePublished":"2026-04-18T21:40:00+02:00","dateModified":"2026-04-18T21:40:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-40-4030e2"},{"@type":"BlogPosting","headline":"comment (40e)","articleBody":"comment — (40+3) Toulouse parvient à se dégager proprement, mais la tentative de coup de pied de Graou file droit en dehors des limites du terrain.","datePublished":"2026-04-18T21:40:00+02:00","dateModified":"2026-04-18T21:40:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-40-ee43ba"},{"@type":"BlogPosting","headline":"comment (40e)","articleBody":"comment — Mi-temps (19 - 14).","datePublished":"2026-04-18T21:40:00+02:00","dateModified":"2026-04-18T21:40:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-40-4d76d0"},{"@type":"BlogPosting","headline":"Remplacement : Vilimoni Botitu (41e)","articleBody":"Remplacement : Vilimoni Botitu","datePublished":"2026-04-18T21:41:00+02:00","dateModified":"2026-04-18T21:41:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-41-356902"},{"@type":"BlogPosting","headline":"Remplacement : Theo Ntamack (41e)","articleBody":"Remplacement : Theo Ntamack","datePublished":"2026-04-18T21:41:00+02:00","dateModified":"2026-04-18T21:41:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-41-0a55b0"},{"@type":"BlogPosting","headline":"comment (45e)","articleBody":"comment — Elias subtilise le cuir en touche mais Toulouse le perd aussitôt au sol, offrant à Castres une séquence d’attaque plein axe, avant que le retour de Baille ne rétablisse l’égalité numérique et que Ntamack n’expédie le jeu en touche au niveau de la médiane.","datePublished":"2026-04-18T21:45:00+02:00","dateModified":"2026-04-18T21:45:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-45-5abfd1"},{"@type":"BlogPosting","headline":"Carton : Vanverberghe (46e)","articleBody":"Carton : Vanverberghe","datePublished":"2026-04-18T21:46:00+02:00","dateModified":"2026-04-18T21:46:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-46-7fd63a"},{"@type":"BlogPosting","headline":"Remplacement : Nicolas Corato (47e)","articleBody":"Remplacement : Nicolas Corato","datePublished":"2026-04-18T21:47:00+02:00","dateModified":"2026-04-18T21:47:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-47-d01ffe"},{"@type":"BlogPosting","headline":"comment (47e)","articleBody":"comment — Roumat domine dans les airs mais la liaison entre Graou et Marchand se dérègle, offrant une mêlée fermée au CO, puis Hervé lit la situation et choisit un long jeu au pied vers les trente-cinq mètres toulousains pour installer son équipe dans le camp adverse.","datePublished":"2026-04-18T21:47:00+02:00","dateModified":"2026-04-18T21:47:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-47-ffb80d"},{"@type":"BlogPosting","headline":"comment (48e)","articleBody":"comment — Interrogé au bord du terrain, Ugo Mola souligne que l’intensité mise d’entrée par son équipe a payé sur le premier segment du match, qu’ils ont ensuite permis à l’adversaire de se relancer, et il mise désormais sur l’impact de ses remplaçants pour inverser de nouveau la dynamique.","datePublished":"2026-04-18T21:48:00+02:00","dateModified":"2026-04-18T21:48:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-48-ffdcdd"},{"@type":"BlogPosting","headline":"comment (50e)","articleBody":"comment — Sur l’action précédente, Mallez reste au sol après un déblayage très limite de Vanverberghe, sanctionné pour une prise type crocodile qui offre une pénalité aux Toulousains et lui vaut un avertissement temporaire, avant que Collier ne fasse ensuite son entrée à la place de Corato pour le CO.","datePublished":"2026-04-18T21:50:00+02:00","dateModified":"2026-04-18T21:50:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-50-2798aa"},{"@type":"BlogPosting","headline":"comment (51e)","articleBody":"comment — Sur une percée de Meafou dans sa moitié de terrain, Ramototabua se jette au sol pour récupérer la possession et déclencher un long contre depuis les trente mètres tarnais, avant qu’une séquence très rude ne laisse Banos et Vargas éprouvés et n’entraîne la sortie de Baille, Marchand et Mallez, relayés côté toulousain par Bertrand, Cramont et Ainuu.","datePublished":"2026-04-18T21:51:00+02:00","dateModified":"2026-04-18T21:51:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-51-ea53cf"},{"@type":"BlogPosting","headline":"Remplacement : Leo Banos (52e)","articleBody":"Remplacement : Leo Banos","datePublished":"2026-04-18T21:52:00+02:00","dateModified":"2026-04-18T21:52:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-52-7f8b9a"},{"@type":"BlogPosting","headline":"Remplacement : Veresa Ramototabua (52e)","articleBody":"Remplacement : Veresa Ramototabua","datePublished":"2026-04-18T21:52:00+02:00","dateModified":"2026-04-18T21:52:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-52-e45b60"},{"@type":"BlogPosting","headline":"Remplacement : Efrain Elias (52e)","articleBody":"Remplacement : Efrain Elias","datePublished":"2026-04-18T21:52:00+02:00","dateModified":"2026-04-18T21:52:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-52-9aa3ab"},{"@type":"BlogPosting","headline":"comment (52e)","articleBody":"comment — Pour Castres, Walcker a quitté la pelouse, laissant sa place à Guérois-Galisson.","datePublished":"2026-04-18T21:52:00+02:00","dateModified":"2026-04-18T21:52:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-52-94ce2a"},{"@type":"BlogPosting","headline":"comment (53e)","articleBody":"comment — Hervé choisit une longue ouverture au pied tandis que Ntamack opte pour une relance portée à la main, et depuis la reprise, les duels au contact se multiplient dans un combat rugueux.","datePublished":"2026-04-18T21:53:00+02:00","dateModified":"2026-04-18T21:53:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-53-36dc3b"},{"@type":"BlogPosting","headline":"Transformation : Ntamack (54e)","articleBody":"Transformation : Ntamack","datePublished":"2026-04-18T21:54:00+02:00","dateModified":"2026-04-18T21:54:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-54-3c1079"},{"@type":"BlogPosting","headline":"Essai : Chocobares (54e)","articleBody":"Essai : Chocobares","datePublished":"2026-04-18T21:54:00+02:00","dateModified":"2026-04-18T21:54:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-54-3ab605"},{"@type":"BlogPosting","headline":"comment (54e)","articleBody":"comment — Toulouse fait entrer Flament, Théo Ntamack et Pouzelgues à la place d’Elias, Banos et Kinghorn, tandis que Castres procède ensuite au changement de Ramototabua, relayé par Cope.","datePublished":"2026-04-18T21:54:00+02:00","dateModified":"2026-04-18T21:54:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-54-1ec264"},{"@type":"BlogPosting","headline":"comment (56e)","articleBody":"comment — Sur une fulgurance de Pouzelgues relayée par Bertrand, Chocobares conclut en coin une action renversée avant que Romain Ntamack n’ajuste calmement la tentative au pied.","datePublished":"2026-04-18T21:56:00+02:00","dateModified":"2026-04-18T21:56:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-56-40539c"},{"@type":"BlogPosting","headline":"Pénalité : Herve (57e)","articleBody":"Pénalité : Herve","datePublished":"2026-04-18T21:57:00+02:00","dateModified":"2026-04-18T21:57:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-57-7d2f57"},{"@type":"BlogPosting","headline":"Remplacement : Adam Vargas (57e)","articleBody":"Remplacement : Adam Vargas","datePublished":"2026-04-18T21:57:00+02:00","dateModified":"2026-04-18T21:57:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-57-5540a1"},{"@type":"BlogPosting","headline":"comment (57e)","articleBody":"comment — Pour le Stade Toulousain, Graou a quitté l’aire de jeu et laissé sa place à Dupont.","datePublished":"2026-04-18T21:57:00+02:00","dateModified":"2026-04-18T21:57:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-57-46c350"},{"@type":"BlogPosting","headline":"Carton : Arata (58e)","articleBody":"Carton : Arata","datePublished":"2026-04-18T21:58:00+02:00","dateModified":"2026-04-18T21:58:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-58-755da0"},{"@type":"BlogPosting","headline":"Remplacement : Guillaume Ducat (59e)","articleBody":"Remplacement : Guillaume Ducat","datePublished":"2026-04-18T21:59:00+02:00","dateModified":"2026-04-18T21:59:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-59-01705c"},{"@type":"BlogPosting","headline":"comment (59e)","articleBody":"comment — Sur une mêlée sanctionnée en faveur de Castres, Hervé ajuste la pénalité depuis les 22 mètres côté droit, puis Chabouni fait son entrée à la place de Vargas pour le CO.","datePublished":"2026-04-18T21:59:00+02:00","dateModified":"2026-04-18T21:59:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-59-dccc3a"},{"@type":"BlogPosting","headline":"Essai : Cramont (60e)","articleBody":"Essai : Cramont","datePublished":"2026-04-18T22:00:00+02:00","dateModified":"2026-04-18T22:00:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-60-ff4221"},{"@type":"BlogPosting","headline":"comment (60e)","articleBody":"comment — On vient de basculer dans le dernier tiers de la rencontre au Stade Pierre-Fabre, et dans cette affiche fidèle aux attentes, Toulouse, installé aux abords du centre du terrain, écarte largement le ballon pour tenter de déborder la défense.","datePublished":"2026-04-18T22:00:00+02:00","dateModified":"2026-04-18T22:00:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-60-80e308"},{"@type":"BlogPosting","headline":"Transformation : Ntamack (61e)","articleBody":"Transformation : Ntamack","datePublished":"2026-04-18T22:01:00+02:00","dateModified":"2026-04-18T22:01:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-61-3c1079"},{"@type":"BlogPosting","headline":"comment (61e)","articleBody":"comment — Sur une intervention litigieuse d’Arata sur Chocobares, d’abord jugée licite par Jérémy Rozier avant d’être requalifiée en avertissement temporaire après échange avec la vidéo, Maravat fait ensuite son entrée en lieu et place de Ducat pour Castres.","datePublished":"2026-04-18T22:01:00+02:00","dateModified":"2026-04-18T22:01:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-61-d7dacc"},{"@type":"BlogPosting","headline":"comment (62e)","articleBody":"comment — Théo Ntamack surgit en troisième rideau pour aplatir derrière un regroupement en exploitant un infime intervalle, avant que Cramont, au poste de talonneur, ne reproduise le même scénario en puissance en se faufilant lui aussi dans la minuscule brèche au ras du ruck.","datePublished":"2026-04-18T22:02:00+02:00","dateModified":"2026-04-18T22:02:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-62-2c9c2d"},{"@type":"BlogPosting","headline":"Pénalité : Herve (65e)","articleBody":"Pénalité : Herve","datePublished":"2026-04-18T22:05:00+02:00","dateModified":"2026-04-18T22:05:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-65-7d2f57"},{"@type":"BlogPosting","headline":"comment (66e)","articleBody":"comment — Pour Toulouse, Brennan a cédé sa place à Bonnard Martin, lequel se fait ensuite reprendre par l’arbitre Jérémy Rozier pour une entrée illicite sur le côté, offrant à Hervé l’occasion de tenter puis de réussir la pénalité en faveur de Castres.","datePublished":"2026-04-18T22:06:00+02:00","dateModified":"2026-04-18T22:06:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-66-1e03b4"},{"@type":"BlogPosting","headline":"Remplacement : Baptiste Delaporte (67e)","articleBody":"Remplacement : Baptiste Delaporte","datePublished":"2026-04-18T22:07:00+02:00","dateModified":"2026-04-18T22:07:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-67-52c05b"},{"@type":"BlogPosting","headline":"Essai : Bertrand (68e)","articleBody":"Essai : Bertrand","datePublished":"2026-04-18T22:08:00+02:00","dateModified":"2026-04-18T22:08:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-68-c554b7"},{"@type":"BlogPosting","headline":"comment (68e)","articleBody":"comment — Dans un Stade Pierre-Fabre où l’écart reste infime entre les deux camps et où le suspense ne faiblit pas, une pénalité toulousaine relance le jeu vers les extérieurs avec Dupont qui écarte, Costes qui décale Chocobares et Flament qui semble filer seul à l’essai avant de laisser échapper la balle tout près de la ligne.","datePublished":"2026-04-18T22:08:00+02:00","dateModified":"2026-04-18T22:08:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-68-1d8f58"},{"@type":"BlogPosting","headline":"Transformation : Ntamack (69e)","articleBody":"Transformation : Ntamack","datePublished":"2026-04-18T22:09:00+02:00","dateModified":"2026-04-18T22:09:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-69-3c1079"},{"@type":"BlogPosting","headline":"Remplacement : Santiago Arata (69e)","articleBody":"Remplacement : Santiago Arata","datePublished":"2026-04-18T22:09:00+02:00","dateModified":"2026-04-18T22:09:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-69-2bb551"},{"@type":"BlogPosting","headline":"comment (70e)","articleBody":"comment — Bertrand déborde le long de la ligne, conclut en puissance après un relais gagnant de ses partenaires toulousains, puis Romain Ntamack ajoute les points au pied.","datePublished":"2026-04-18T22:10:00+02:00","dateModified":"2026-04-18T22:10:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-70-1b5e51"},{"@type":"BlogPosting","headline":"Essai : Pouzelgues (72e)","articleBody":"Essai : Pouzelgues","datePublished":"2026-04-18T22:12:00+02:00","dateModified":"2026-04-18T22:12:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-72-15d215"},{"@type":"BlogPosting","headline":"comment (72e)","articleBody":"comment — Fernandez fait son entrée à la place d’Arata côté castrais, puis Remue transperce la défense sur une course décisive avant qu’Hervé, chargé de éloigner le danger, ne voie sa tentative de dégagement stoppée.","datePublished":"2026-04-18T22:12:00+02:00","dateModified":"2026-04-18T22:12:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-72-a9cf73"},{"@type":"BlogPosting","headline":"Transformation : Ntamack (73e)","articleBody":"Transformation : Ntamack","datePublished":"2026-04-18T22:13:00+02:00","dateModified":"2026-04-18T22:13:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-73-3c1079"},{"@type":"BlogPosting","headline":"Remplacement : Florent Vanverberghe (73e)","articleBody":"Remplacement : Florent Vanverberghe","datePublished":"2026-04-18T22:13:00+02:00","dateModified":"2026-04-18T22:13:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-73-ee5fac"},{"@type":"BlogPosting","headline":"comment (73e)","articleBody":"comment — Le Stade Toulousain campe désormais près de l’en-but castrais, enchaîne les prises de terrain et met une arrière-garde tarnaise de plus en plus à bout de souffle.","datePublished":"2026-04-18T22:13:00+02:00","dateModified":"2026-04-18T22:13:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-73-c05889"},{"@type":"BlogPosting","headline":"comment (75e)","articleBody":"comment — Pouzelgues déborde sur l’aile, va aplatir le sixième essai offrant le bonus offensif aux Stadistes à ce moment-là, puis Ntamack ajoute les deux points au pied.","datePublished":"2026-04-18T22:15:00+02:00","dateModified":"2026-04-18T22:15:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-75-5ae307"},{"@type":"BlogPosting","headline":"comment (77e)","articleBody":"comment — La victoire toulousaine au Stade Pierre Fabre ne fait désormais plus l’ombre d’un suspense, le bonus offensif en ligne de mire, tandis que la supériorité athlétique des Rouge et Noir écrase le débat et leur permet de contrôler chaque séquence de jeu.","datePublished":"2026-04-18T22:17:00+02:00","dateModified":"2026-04-18T22:17:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-77-141700"},{"@type":"BlogPosting","headline":"comment (78e)","articleBody":"comment — L’arbitre Jérémy Rozier désigne de nouveau la cible aux Toulousains, estimant qu’un joueur de Castres, Pouzelgues, a illégalement ceinturé Ambadiang sur le retour de jeu des Tarnais.","datePublished":"2026-04-18T22:18:00+02:00","dateModified":"2026-04-18T22:18:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-78-909f13"},{"@type":"BlogPosting","headline":"Fin de la rencontre (80e)","articleBody":"Fin de la rencontre","datePublished":"2026-04-18T22:20:00+02:00","dateModified":"2026-04-18T22:20:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-80-6ca0cf"},{"@type":"BlogPosting","headline":"comment (80e)","articleBody":"comment — Toulouse pousse une ultime offensive dans les 22 mètres castrais sous l’impulsion de Dupont, avant que le coup de sifflet final ne vienne entériner au Stade Pierre-Fabre une large victoire bonifiée des Rouge et Noir en déplacement.","datePublished":"2026-04-18T22:20:00+02:00","dateModified":"2026-04-18T22:20:00+02:00","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/#u-80-f49128"}]}</script>
<script type="application/ld+json" id=vr-news-schema>{"@context":"https://schema.org","@type":"NewsArticle","headline":"Résultat Castres – Toulouse : 25-42 (Saison 2025-2026)","url":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/","image":["https://vibrez-rugby.com/wp-content/uploads/2026/04/Castres-Toulouse-en-direct.jpg"],"datePublished":"2026-04-18T20:45:38+02:00","dateModified":"2026-04-18T22:20:00+02:00","description":"Résultat Castres – Toulouse : 25-42. Retrouvez le score, les essais et le résumé du match 2025-2026 sur Vibrez Rugby.","mainEntityOfPage":{"@type":"WebPage","@id":"https://vibrez-rugby.com/castres-toulouse-en-direct-2/"},"publisher":{"@type":"NewsMediaOrganization","name":"Vibrez Rugby","url":"https://vibrez-rugby.com/","logo":{"@type":"ImageObject","url":"https://vibrez-rugby.com/wp-content/uploads/2020/08/cropped-android-chrome-512x512-1-1.webp","width":512,"height":512}},"author":{"@type":"Organization","name":"Vibrez Rugby","url":"https://vibrez-rugby.com/"}}</script>
<style>
      .vr-live-badge{
        display:none;align-items:center;gap:.4rem;
        color:#b30000;background:#fff;border:1px solid rgba(179,0,0,.35);
        padding:.15rem .5rem;border-radius:999px;font-size:.85rem;line-height:1;font-weight:700
      }
      .vr-live-badge .vr-live-dot{
        width:.5rem;height:.5rem;border-radius:999px;background:#d00;display:inline-block;margin-right:.1rem;
        box-shadow:0 0 0 .14rem rgba(221,0,0,.25)
      }
      .vr-live-page .vr-live-badge{ display:inline-flex; }
      .vr-kickoff{margin:.5rem 0;padding:.25rem .5rem;background:#f6f7f8;border-radius:.25rem;font-size:.95rem}
    </style>
<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"/>
<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>
</head>
<body class="wp-singular post-template-default single single-post postid-349699 single-format-standard wp-custom-logo wp-embed-responsive wp-theme-twentytwentyfour wp-child-theme-twentytwentyfour-child vr-live-page"><noscript><meta http-equiv="refresh" content="0;url='https://vibrez-rugby.com/castres-toulouse-en-direct-2/?PageSpeed=noscript'" /><style><!--table,div,span,font,p{display:none} --></style><div style="display:block">Please click <a href="https://vibrez-rugby.com/castres-toulouse-en-direct-2/?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/castres-toulouse-en-direct-2/','MMVvyUVY8Q',true,false,'bnA2RYYVrpA');
//]]></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 alignfull rugby-main-body 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" style="margin-bottom:var(--wp--preset--spacing--40);padding-top:var(--wp--preset--spacing--50)"><figure style="height:800px; margin-bottom:var(--wp--preset--spacing--40);" class="rugby-media-img wp-block-post-featured-image"><img width=1080 height=1080 src="https://vibrez-rugby.com/wp-content/uploads/2026/04/Castres-Toulouse-en-direct-768x768.jpg" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="Castres - Toulouse en direct" style="height:800px;object-fit:contain;" decoding=async fetchpriority=high srcset="https://vibrez-rugby.com/wp-content/uploads/2026/04/Castres-Toulouse-en-direct.jpg 1080w, https://vibrez-rugby.com/wp-content/uploads/2026/04/Castres-Toulouse-en-direct-300x300.jpg 300w, https://vibrez-rugby.com/wp-content/uploads/2026/04/Castres-Toulouse-en-direct-1024x1024.jpg 1024w, https://vibrez-rugby.com/wp-content/uploads/2026/04/Castres-Toulouse-en-direct-150x150.jpg 150w, https://vibrez-rugby.com/wp-content/uploads/2026/04/Castres-Toulouse-en-direct-768x768.jpg 768w" sizes="(max-width: 1080px) 100vw, 1080px" data-pagespeed-url-hash=2170027012 onload="pagespeed.CriticalImages.checkImageForCriticality(this);"/></figure>
<div class="wp-block-group is-vertical is-content-justification-stretch is-layout-flex wp-container-core-group-is-layout-6215b345 wp-block-group-is-layout-flex" style="padding-top:0;padding-bottom:0"><span class=vr-live-badge><span class=vr-live-dot></span>EN DIRECT</span> <h1 class="wp-block-post-title has-x-large-font-size">Résultat Castres – Toulouse : 25-42 (Saison 2025-2026)</h1>
<div class=wp-block-template-part>
<div class="wp-block-group has-global-padding is-layout-constrained wp-block-group-is-layout-constrained">
<div class="wp-block-group is-content-justification-left is-layout-flex wp-container-core-group-is-layout-dfe8e91f wp-block-group-is-layout-flex"><div class="taxonomy-category has-link-color wp-elements-f31eb46ae56196ce7deb49fb8f0bc9da wp-block-post-terms has-text-color has-primary-blue-color"><a href="https://vibrez-rugby.com/actualite-rugby/" rel=tag>Actualité</a><span class=wp-block-post-terms__separator>, </span><a href="https://vibrez-rugby.com/competition/top-14/" rel=tag>Top 14</a></div></div>
</div>
</div></div>
</div>
<div class="entry-content alignfull wp-block-post-content has-global-padding is-layout-constrained wp-block-post-content-is-layout-constrained"> <div class=vr-share-buttons data-url="https://vibrez-rugby.com/castres-toulouse-en-direct-2/" data-title="Résultat Castres – Toulouse : 25-42 (Saison 2025-2026)">
<span class=vr-share-label>Partager :</span>
<button class=vr-share-btn data-action=copy title="Copier le lien" aria-label="Copier le lien">
<svg width=20 height=20 viewbox="0 0 24 24" fill=none stroke=currentColor stroke-width=2><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg>
</button>
<a class="vr-share-btn vr-share-facebook" data-action=facebook target=_blank rel="noopener noreferrer" title=Facebook aria-label="Partager sur Facebook">
<svg width=20 height=20 viewbox="0 0 24 24" fill=currentColor><path d="M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z"/></svg>
</a>
<a class="vr-share-btn vr-share-twitter" data-action=twitter target=_blank rel="noopener noreferrer" title="X / Twitter" aria-label="Partager sur X">
<svg width=20 height=20 viewbox="0 0 24 24" fill=currentColor><path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"/></svg>
</a>
<a class="vr-share-btn vr-share-whatsapp" data-action=whatsapp target=_blank rel="noopener noreferrer" title=WhatsApp aria-label="Partager sur WhatsApp">
<svg width=20 height=20 viewbox="0 0 24 24" fill=currentColor><path d="M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413z"/></svg>
</a>
<a class="vr-share-btn vr-share-linkedin" data-action=linkedin target=_blank rel="noopener noreferrer" title=LinkedIn aria-label="Partager sur LinkedIn">
<svg width=20 height=20 viewbox="0 0 24 24" fill=currentColor><path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.062 2.062 0 01-2.063-2.065 2.064 2.064 0 112.063 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/></svg>
</a>
<a class="vr-share-btn vr-share-email" data-action=email title=Email aria-label="Partager par email">
<svg width=20 height=20 viewbox="0 0 24 24" fill=none stroke=currentColor stroke-width=2><rect x=2 y=4 width=20 height=16 rx=2 /><path d="m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7"/></svg>
</a>
</div>
<p></p>
<p>Bienvenue dans ce live consacré à la compétition <a href="https://vibrez-rugby.com/competition/top-14/" title="Top 14">Top 14</a>, rendez vous à partir de 21H00 pour suivre Castres &#8211; <a href="https://vibrez-rugby.com/stade-toulousain-en-direct/" title="Toulouse en direct">Toulouse en direct</a> à la RADIO et/ou en <a href="https://vibrez-rugby.com/matchs-de-rugby-en-direct/" title="score live">score live</a>. Retrouvez la composition des équipes du match Castres (8e, 47 pts) &#8211; Toulouse (1e, 71 pts) pour le compte de la 21e journéee journée.</p><p class=lien-interne-conseil><strong>À lire aussi</strong> | <a href="https://vibrez-rugby.com/pro-d2-a-quelle-heure-et-sur-quelle-chaine-tv-suivre-valence-romans-brive/">Pro D2: à quelle heure et sur quelle chaîne TV suivre Valence-Romans &#8211; Brive</a></p>
<h2>Composition: Castres :</h2>
<p>(1) Quentin Walcker, (2) Teddy Durand, (3) Nicolas Corato, (4) <a href="https://vibrez-rugby.com/rsl/guillaume-ducat/" title="Guillaume Ducat">Guillaume Ducat</a>, (5) <a href="https://vibrez-rugby.com/rsl/florent-vanverberghe/" title="Florent Vanverberghe">Florent Vanverberghe</a>, (6) <a href="https://vibrez-rugby.com/rsl/baptiste-delaporte/" title="Baptiste Delaporte">Baptiste Delaporte</a>, (7) Veresa Tuqovu Ramototabua, (8) Tyler Ardron, (9) Santiago Arata, (10) Enzo Hervé, (11) Adam Vargas, (12) Jack Goodhue, (13) Vilimoni Botitu, (14) <a href="https://vibrez-rugby.com/rsl/christian-ambadiang/" title="Christian Ambadiang">Christian Ambadiang</a>, (15) Geoffrey Palis, (16) Pierre Colonna, (17) Loîs Guérois-Galisson, (18) <a href="https://vibrez-rugby.com/rsl/gauthier-maravat/" title="Gauthier Maravat">Gauthier Maravat</a>, (19) Baptiste Cope, (20) Jérémy Fernandez, (21) Adrea Cocagi, (22) Théo Chabouni, (23) Will Collier</p>
<h2>Composition Toulouse :</h2>
<p>(1) Cyril Baille, (2) Julien Marchand, (3) Paul Mallez, (4) Efrain Elias, (5) Emmanuel Meafou, (6) Léo Banos, (7) Joshua Brennan, (8) Alexandre Roumat, (9) Paul Graou, (10) Romain Ntamack, (11) Dimitri Delibes, (12) Santiago Chocobares, (13) Paul Costes, (14) Blair Kinghorn, (15) Matias Remue, (16) Guillaume Cramont, (17) Benjamin Bertrand, (18) Thibaud Flament, (19) Roméo Bonnard-Martin, (20) Théo Ntamack, (21) Antoine Dupont, (22) Célian Pouzelgues, (23) David Ainu&rsquo;u</p><p class=lien-interne-conseil><strong>À lire aussi</strong> | <a href="https://vibrez-rugby.com/pau-sacha-zegueur-prolonge-son-contrat-jusquen-2030/">Pau : Sacha Zegueur prolonge son contrat jusqu’en 2030</a></p>
<div id=match-container data-match-id=5592></div>
<div data-post-id=200074 class="insert-page insert-page-200074">
<br><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">
<figure class="wp-block-image aligncenter size-large is-resized"><a href="https://vibrez-rugby.com/application-rugby/"><img loading=lazy decoding=async width=1024 height=131 src="https://vibrez-rugby.com/wp-content/uploads/2025/01/CS-application-1024x131.jpg" alt="live en direct" class=wp-image-309550 style="width:720px;height:auto" srcset="https://vibrez-rugby.com/wp-content/uploads/2025/01/CS-application-1024x131.jpg 1024w, https://vibrez-rugby.com/wp-content/uploads/2025/01/xCS-application-300x38.jpg.pagespeed.ic.ctYWVTB26Q.webp 300w, https://vibrez-rugby.com/wp-content/uploads/2025/01/CS-application-768x98.jpg 768w, https://vibrez-rugby.com/wp-content/uploads/2025/01/xCS-application.jpg.pagespeed.ic.pnLu9qxdSJ.webp 1458w" sizes="auto, (max-width: 1024px) 100vw, 1024px" data-pagespeed-url-hash=509605153 onload="pagespeed.CriticalImages.checkImageForCriticality(this);"/></a></figure>
</div>
</div>
<!DOCTYPE html>
<html lang=fr>
<head>
<meta charset=UTF-8>
<meta name=viewport content="width=device-width, initial-scale=1.0">
<link href="https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&#038;display=swap" rel=stylesheet>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
</head>
<body>
<main class=main-container>
<header class=match-header>
<div class=match-meta>
<span class=competition-badge></span>
<span class=match-day></span>
</div>
<h1 class="match-title custom-h1">live en direct</h1>
<div class="match-date-time custom_date"></div>
</header>
<section class=scoreboard>
<div class="team-block team-local">
<div class=team-emblem-wrapper>
<img decoding=async src="" alt="live en direct" class="team-emblem custom-emblem-local" data-pagespeed-url-hash=2337852585 onload="pagespeed.CriticalImages.checkImageForCriticality(this);">
</div>
<h2 class="team-name custom-local-name"></h2>
<div class=team-form></div>
</div>
<div class=score-block>
<div class="score-display custom-score-container"></div>
<div class=match-period></div>
<div class=match-status-badge></div>
</div>
<div class="team-block team-visitor">
<div class=team-emblem-wrapper>
<img decoding=async src="" alt="live en direct" class="team-emblem custom-emblem-visitor" data-pagespeed-url-hash=2337852585 onload="pagespeed.CriticalImages.checkImageForCriticality(this);">
</div>
<h2 class="team-name custom-visitor-name"></h2>
<div class=team-form></div>
</div>
</section>
<section class=match-summary>
<table class=summary-table></table>
</section>
<section class="radio-section refresh-button-container"></section>
<section class="video-section youtube-container" style="display: none;">
<iframe id=youtube-video src="" frameborder=0 allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</section>
<section class=video-section id=fb-live-container style="display: none;"></section>
<section class=chart-section>
<canvas id=myChart></canvas>
</section>
<nav class=tabs-nav>
<button class="tab-btn active" data-tab=actions>Actions</button>
<button class=tab-btn data-tab=composition>Composition</button>
<button class=tab-btn data-tab=enjeux>Face à Face</button>
</nav>
<div class=tab-panels>
<section id=actions class="tab-panel active">
<ul class=timeline></ul>
</section>
<section id=composition class=tab-panel>
<div class=composition-grid>
<table class="composition-table custom-composition-table">
<thead>
<tr>
<th>Équipe Locale</th>
<th>Équipe Visiteuse</th>
</tr>
</thead>
<tbody></tbody>
</table>
</div>
</section>
<section id=enjeux class=tab-panel>
<table id=matchTable class=stats-table></table>
</section>
</div>
<div class=content-display id=content-display></div>
</main>
<aside class="radio-player spotify-style-player" style="display: none;">
<button class="radio-player-close close-button" aria-label=Fermer>&times;</button>
<div class="radio-player-info audio-info">
<img decoding=async class="radio-player-logo radio-logo" src="" alt="Radio Logo" data-pagespeed-url-hash=2337852585 onload="pagespeed.CriticalImages.checkImageForCriticality(this);">
<div class=radio-player-details>
<span class=radio-player-status>En direct</span>
<h3 class="radio-player-title audio-title">Sud Radio</h3>
</div>
</div>
<audio controls>
<source src="" type="audio/mpeg">
Votre navigateur ne supporte pas l&rsquo;élément audio.
</audio>
</aside>
<script>
  var teamRequest = false;
  
    // ✅ PATCH : recalcul simple des stats si l’API renvoie 0 partout
  function buildEmptyStats() {
    return {
      locale: { drop:0, essai:0, "mi-temps": null, penalite:0, carton_jaune:0, carton_rouge:0, transformation:0 },
      ext:    { drop:0, essai:0, "mi-temps": null, penalite:0, carton_jaune:0, carton_rouge:0, transformation:0 }
    };
  }

  function normalizeActionType(t) {
    return String(t || '').toUpperCase().trim();
  }

  function applyStatsFromActions(data) {
    if (!data || !Array.isArray(data.actions)) return data;

    // si stats absentes -> on les crée
    if (!data.stats) data.stats = buildEmptyStats();

    // si stats présentes mais vides -> on peut recalculer
    const sL = data.stats.locale || {};
    const sE = data.stats.ext || {};
    const sum =
      (sL.essai||0)+(sL.transformation||0)+(sL.penalite||0)+(sL.drop||0)+(sL.carton_jaune||0)+(sL.carton_rouge||0) +
      (sE.essai||0)+(sE.transformation||0)+(sE.penalite||0)+(sE.drop||0)+(sE.carton_jaune||0)+(sE.carton_rouge||0);

    // Si l’API a déjà des stats > 0, on ne touche pas
    if (sum > 0) return data;

    // Recalcul depuis actions
    const stats = buildEmptyStats();
    const localId = String(data.local_team?.id || '');
    const visitorId = String(data.visitor_team?.id || '');

    for (const a of data.actions) {
      if (!a) continue;
      const type = normalizeActionType(a.type);
      const teamId = String(a.competitionEquipeId || '');

      const side = (teamId === localId) ? 'locale' : (teamId === visitorId ? 'ext' : null);

      if (type === 'TRY')                 { if (side) stats[side].essai += 1; }
      else if (type === 'GOALAFTERTRY')   { if (side) stats[side].transformation += 1; }
      else if (type === 'GOALPENALTY')    { if (side) stats[side].penalite += 1; }
      else if (type === 'DROPGOAL')       { if (side) stats[side].drop += 1; }
      else if (type === 'PENALTY TRY' || type === 'PENALTYTRY') { if (side) stats[side].essai += 1; }
      else if (type === 'CARD') {
        const st = String(a.sousType || a.description || '').toUpperCase();
        if (side && st.includes('YELLOW')) stats[side].carton_jaune += 1;
        if (side && st.includes('RED'))    stats[side].carton_rouge += 1;
      }
      else if (type === 'MT') {
        stats.locale["mi-temps"] = stats.locale["mi-temps"] ?? 'MT';
        stats.ext["mi-temps"]    = stats.ext["mi-temps"] ?? 'MT';
      }
    }

    data.stats = stats;
    return data;
  }

  function getRencontreId() {
    let urlParams = new URLSearchParams(window.location.search);
    let rId = urlParams.get('id');
    if (!rId) {
      const matchContainer = document.getElementById('match-container');
      if (matchContainer) {
        rId = matchContainer.getAttribute('data-match-id');
      }
    }
    if (!rId) {
      rId = findRencontreIdInComments();
    }
    console.log(rId);
    return rId;
  }

  function findRencontreIdInComments() {
    var urlElement = document.querySelector('dd.tribe-events-event-url a');
    if (urlElement) {
      var href = urlElement.getAttribute('href');
      var rId = new URL(href).searchParams.get('id');
      return rId;
    } else {
      const matchContainer = document.getElementById('team-container');
      if (matchContainer) {
        rId = matchContainer.getAttribute('team-match-id');
        teamRequest = true;
        return rId;
      }
    }
    if (!rId) {
      const parentElement = document.querySelector('#tribe-events-content');
      const commentNode = Array.from(parentElement.childNodes).find(node => node.nodeType === 8);
      if (commentNode) {
        const match = commentNode.nodeValue.match(/Rencontre ID: (\d+)/);
        if (match) {
          rId = match[1];
          console.log('Rencontre ID:', rId);
          return rId;
        } else {
          console.log('ID non trouvé dans le commentaire.');
        }
      } else {
        console.log('Aucun commentaire trouvé.');
      }
    }
  }

  function fetchDataAndUpdate() {
    var apiUrl = '';
    const rencontreId = getRencontreId();
    if (teamRequest) {
      apiUrl = `https://rugby-app-4ebacff10fda.herokuapp.com/rencontres/next_rencontre?id=${rencontreId}`;
    } else {
      apiUrl = `https://rugby-app-4ebacff10fda.herokuapp.com/rencontres/${rencontreId}`;
    }
    fetch(apiUrl)
      .then(response => response.json())
      .then(allData => {
        const data = allData[0];
        applyStatsFromActions(data);
        const chartSection = document.querySelector('.chart-section');
        const summarySection = document.querySelector('.match-summary');

        if (data.rencontre_resultat_locale && data.rencontre_resultat_visiteuse && data.chart && data.chart.length > 0) {
          createChart(data);
          chartSection.style.display = 'block';
        } else {
          chartSection.style.display = 'none';
        }

        if (data.stats) {
  updateLists(data);
  summarySection.style.display = 'block';
} else {
  summarySection.style.display = 'none';
}

        updateActions(data);
        updateScoreAndTeams(data);
        creerTableau(data);
        const contentDisplay = document.getElementById('content-display');
        if (data.content) {
          contentDisplay.innerHTML = data.content;
        }
        const radioContainer = document.querySelector('.refresh-button-container');
        radioContainer.innerHTML = '';
        const radios = (data.local_team.radios || []).concat(data.visitor_team.radios || []);
        const uniqueRadios = Array.from(new Set(radios.map(radio => radio.id)))
          .map(id => radios.find(radio => radio.id === id));
        if (radios && radios.length > 0) {
          uniqueRadios.forEach(radio => {
            const radioButton = document.createElement('button');
            radioButton.textContent = `Écouter ${radio.name}`;
            radioButton.classList.add('radio-btn');
            radioButton.onclick = function() {
              playRadio(radio.name, radio.link, radio.logo);
            };
            radioContainer.appendChild(radioButton);
          });
        } else {
          radioContainer.style.display = 'none';
        }
        if (data.youtube_link) {
          const youtubeContainer = document.querySelector('.youtube-container');
          const youtubeIframe = document.getElementById('youtube-video');
          youtubeIframe.src = data.youtube_link;
          youtubeContainer.style.display = 'flex';
        }
        const liveFbLink = data.fb_live;
        const container_fb = document.getElementById('fb-live-container');
        if (liveFbLink && liveFbLink.includes('?v=')) {
          const videoId = liveFbLink.split('?v=')[1];
          const videoUrlEncoded = encodeURIComponent(`https://www.facebook.com/facebook/videos/${videoId}/`);
          const iframeSrc = `https://www.facebook.com/plugins/video.php?href=${videoUrlEncoded}&width=560&height=314&show_text=false&appId&mute=0`;
          const iframe = document.createElement('iframe');
          iframe.src = iframeSrc;
          iframe.width = '560';
          iframe.height = '314';
          iframe.style.border = 'none';
          iframe.style.overflow = 'hidden';
          iframe.scrolling = 'no';
          iframe.setAttribute('frameborder', '0');
          iframe.setAttribute('allowfullscreen', 'true');
          iframe.setAttribute('allow', 'autoplay; clipboard-write; encrypted-media; picture-in-picture; web-share');
          container_fb.style.display = 'flex';
          container_fb.appendChild(iframe);
        }
        if (data.etat === 'termine' || radios.length === 0) {
          radioContainer.style.display = 'none';
        } else {
          resetTimer();
        }
      });
  }

  function creerTableau(statsData) {
    const table = document.getElementById('matchTable');
    table.innerHTML = '';
    let headerRow = `<thead><tr>
                        <th>${statsData.local_team.name}</th>
                        <th>Statistiques</th>
                        <th>${statsData.visitor_team.name}</th>
                    </tr></thead><tbody>`;
    table.insertAdjacentHTML('beforeend', headerRow);
    const labels = {
      "classement_actuel": "Classement actuel",
      "victoires_domicile": "Victoires domicile",
      "victoires_exterieur": "Victoires extérieur",
      "points_domicile": "Points domicile",
      "points_exterieur": "Points extérieur",
      "essais_marques_domicile": "Essais marqués domicile",
      "essais_marques_exterieur": "Essais marqués extérieur",
      "essais_encaisses_domicile": "Essais encaissés domicile",
      "essais_encaisses_exterieur": "Essais encaissés extérieur",
      "tendance_globale": "Tendance globale",
      "penalites_encaissees_domicile": "Pénalités encaissées domicile",
      "penalites_encaissees_exterieur": "Pénalités encaissées extérieur"
    };
    Object.keys(labels).forEach(key => {
      let row = `<tr>
                      <td>${formatData(statsData.local_team_stats[key])}</td>
                      <td class="stat-label">${labels[key]}</td>
                      <td>${formatData(statsData.visitor_team_stats[key])}</td>
                   </tr>`;
      table.insertAdjacentHTML('beforeend', row);
    });
    table.insertAdjacentHTML('beforeend', '</tbody>');
  }

  function formatData(data) {
    if (typeof data === 'string' && data.match(/V|N|D/)) {
      let formattedData = data.split(' ').map(el => {
        switch (el) {
          case 'V':
            return '<span class="form-badge form-win">' + el + '</span>';
          case 'N':
            return '<span class="form-badge form-draw">' + el + '</span>';
          case 'D':
            return '<span class="form-badge form-loss">' + el + '</span>';
          default:
            return el;
        }
      }).join(' ');
      return formattedData;
    } else {
      return data;
    }
  }

  function createTimelineItem(action, actionTeamName, isLocalTeam, actionTeam) {
    const li = document.createElement('li');

    if (action.type === 'comment') {
      li.className = 'timeline-item timeline-comment';
      const commentText = action.comment || action.text || action.description || action.content || 'Commentaire sans texte';
      li.innerHTML = `
        <div class="timeline-card timeline-card-comment">
          <div class="timeline-card-header">
            <img decoding="async" src="https://vibrez-rugby.com/wp-content/uploads/2020/08/cropped-android-chrome-512x512-1-1-300x300.webp" alt="Vibrez Rugby" class="comment-logo">
            <span class="timeline-time">${action.minutes || 0}'</span>
          </div>
          <p class="timeline-card-text">${commentText}</p>
        </div>
      `;
      return li;
    }

    if (action.type === 'tweet') {
      li.className = 'timeline-item timeline-comment';
      const tweetUrl = action.description || action.comment || action.tweetUrl || '';
      const tweetContent = action.text || '';
      li.innerHTML = `
        <div class="timeline-card timeline-card-tweet">
          <div class="timeline-card-header timeline-card-header-tweet">
            <img decoding="async" src="https://abs.twimg.com/icons/apple-touch-icon-192x192.png" alt="Twitter" class="tweet-logo">
            <span class="timeline-time">${action.minutes || 0}'</span>
          </div>
          <div class="tweet-content">
            ${tweetContent ? `<p class="tweet-text">${tweetContent}</p>` : ''}
            ${tweetUrl ? `<div id="tweet-embed-${action.minutes || Date.now()}" class="tweet-embed"></div>` : ''}
          </div>
        </div>
      `;
      if (tweetUrl) {
        setTimeout(() => {
          embedTweet(tweetUrl, `tweet-embed-${action.minutes || Date.now()}`);
        }, 100);
      }
      return li;
    }

    li.className = 'timeline-item ' + (isLocalTeam ? 'timeline-local' : 'timeline-visitor');

    let sousTypeString = '';
    let minute = action.minutes + "'";
    if (action.type === 'CARD') {
      sousTypeString = action.description.toUpperCase() || '';
    }

    const imgSrc = `https://vibrez-rugby.com/wp-content/uploads/2024/08/${action.type_traduit ? action.type_traduit.normalize("NFD").replace(/[\u0300-\u036f]/g, "").toLowerCase().replace(/\s+/g, '') : ''}${sousTypeString}.png`;

    let actionsVar = '';
    const specialTypes = new Set(['Start', 'Stop', 'MT', 'MATCHBEGIN', 'MATCHOVER']);

    if (!specialTypes.has(action.type)) {
      actionsVar = action.type_traduit ?? action.type;
    } else {
      minute = '';
      switch (action.type) {
        case 'Start':
        case 'MATCHBEGIN':
          actionsVar = 'Coup d\'envoi';
          break;
        case 'Stop':
        case 'MATCHOVER':
          actionsVar = 'Fin du match';
          break;
        case 'MT':
          actionsVar = 'Mi-temps';
          break;
        default:
          actionsVar = action.type_traduit ?? action.type;
      }
    }

    const showTeamInfo = !specialTypes.has(action.type);

    li.innerHTML = `
      <div class="timeline-marker">
        <img decoding="async" src="${imgSrc}" alt="${actionsVar}" class="timeline-icon">
      </div>
      <div class="timeline-card">
        ${minute ? `<span class="timeline-time">${minute}</span>` : ''}
        ${showTeamInfo ? `<img decoding="async" src="${actionTeamName}" alt="live en direct" class="timeline-team-logo">` : ''}
        <h4 class="timeline-action-title">${actionsVar}</h4>
        ${action.Joueur1 ? `<p class="timeline-player">${action.Joueur1.Personne.nom}</p>` : ''}
        ${action.Joueur2 ? `<p class="timeline-player timeline-player-secondary">${action.Joueur2.Personne.nom}</p>` : ''}
      </div>
    `;
    return li;
  }

  function loadTwitterWidgets() {
    if (!window.twttr && !document.getElementById('twitter-widgets')) {
      const script = document.createElement('script');
      script.id = 'twitter-widgets';
      script.src = 'https://platform.twitter.com/widgets.js';
      script.async = true;
      script.charset = 'utf-8';
      document.head.appendChild(script);
    }
  }

  function embedTweet(tweetUrl, containerId) {
    const checkTwitter = () => {
      if (window.twttr && window.twttr.widgets) {
        const container = document.getElementById(containerId);
        if (container) {
          window.twttr.widgets.createTweet(
            extractTweetId(tweetUrl),
            container,
            {
              theme: 'light',
              width: 400,
              align: 'center',
              conversation: 'none',
              cards: 'visible'
            }
          ).then(() => {
            console.log('Tweet embedded successfully');
          }).catch(err => {
            console.error('Error embedding tweet:', err);
            container.innerHTML = `
              <div class="tweet-fallback">
                <p>Tweet non disponible</p>
                <a href="${tweetUrl}" target="_blank" rel="noopener">Voir sur Twitter</a>
              </div>
            `;
          });
        }
      } else {
        setTimeout(checkTwitter, 100);
      }
    };
    checkTwitter();
  }

  function extractTweetId(url) {
    const match = url.match(/status\/(\d+)/);
    return match ? match[1] : null;
  }

  function updateActions(data, invertOrder = true) {
    const timeline = document.querySelector('.timeline');
    timeline.innerHTML = '';
    loadTwitterWidgets();

    const actionsTab = document.querySelector('.tab-btn[data-tab="actions"]');
    const compositionTab = document.querySelector('.tab-btn[data-tab="composition"]');
    const actionsPanel = document.getElementById('actions');
    const compositionPanel = document.getElementById('composition');

    // Vérifier s'il y a des actions
    const hasActions = data.etat !== 'A venir' && data.etat !== 'avenir' && Array.isArray(data.actions) && data.actions.length > 0;

    if (hasActions) {
      const actions = data.actions.filter(a => a && a.type !== 'KICKOFF');

      const priorityOf = (t) => {
        switch (t) {
          case 'Start':
          case 'MATCHBEGIN':
            return 0;
          default:
            return 1;
          case 'MT':
            return 2;
          case 'MATCHOVER':
          case 'Stop':
            return 3;
        }
      };

      const normMinute = (a) => {
        const m = typeof a.minutes === 'number' ? a.minutes : parseInt(a.minutes, 10);
        if (Number.isFinite(m)) return m;
        if (a.type === 'Start' || a.type === 'MATCHBEGIN') return -1;
        if (a.type === 'MATCHOVER' || a.type === 'Stop') return 999;
        if (a.type === 'MT') return 500;
        return 999;
      };

      const orderedAsc = actions.slice().sort((a, b) => {
        const pa = priorityOf(a.type);
        const pb = priorityOf(b.type);
        if (pa !== pb) return pa - pb;
        const ma = normMinute(a);
        const mb = normMinute(b);
        if (ma !== mb) return ma - mb;
        const aLocal = String(a.competitionEquipeId) === String(data.local_team?.id);
        const bLocal = String(b.competitionEquipeId) === String(data.local_team?.id);
        return (bLocal ? 1 : 0) - (aLocal ? 1 : 0);
      });

      const orderedActions = invertOrder ? orderedAsc.slice().reverse() : orderedAsc;

      for (const action of orderedActions) {
        const isLocalTeam = String(action.competitionEquipeId) === String(data.local_team?.id);
        const actionTeam = isLocalTeam ? data.local_team : data.visitor_team;
        const actionTeamImg = actionTeam?.img_url || '';
        const item = createTimelineItem(action, actionTeamImg, isLocalTeam, actionTeam);
        timeline.appendChild(item);
      }

      actionsTab.style.display = 'block';
    } else {
      actionsTab.style.display = 'none';
      actionsPanel.classList.remove('active');
    }

    // Vérifier s'il y a des compositions
    const hasComposition = data.compositon_equipe_local && data.compositon_equipe_local.length > 0;

    if (!hasComposition) {
      compositionTab.style.display = 'none';
      compositionPanel.classList.remove('active');

      // Si pas d'actions ni de composition, activer l'onglet Face à Face
      if (!hasActions) {
        const enjeuxTab = document.querySelector('.tab-btn[data-tab="enjeux"]');
        const enjeuxPanel = document.getElementById('enjeux');
        enjeuxTab.classList.add('active');
        enjeuxPanel.classList.add('active');
      }
      return;
    }

    compositionTab.style.display = 'block';

    const table = document.querySelector(".custom-composition-table tbody");
    table.innerHTML = '';

    const sortedEquipeLocal = (data.compositon_equipe_local || []).slice().sort((a, b) => a.numero - b.numero);
    const sortedEquipeVisiteur = (data.compositon_equipe_visiteur || []).slice().sort((a, b) => a.numero - b.numero);

    for (let i = 0; i < sortedEquipeLocal.length; i++) {
      const joueurLocal = sortedEquipeLocal[i] || {};
      const joueurVisiteur = sortedEquipeVisiteur[i];

      const row = table.insertRow();
      row.insertCell(0).innerHTML =
        `<span class='player-number'>${joueurLocal.numero ?? ''}</span>
         <span class='player-name'>${joueurLocal.nom ?? ''}</span>
         ${joueurLocal.estCapitaine ? "<span class='captain-badge'>C</span>" : ""}`;

      row.insertCell(1).innerHTML = joueurVisiteur
        ? `<span class='player-number'>${joueurVisiteur.numero ?? ''}</span>
           <span class='player-name'>${joueurVisiteur.nom ?? ''}</span>
           ${joueurVisiteur.estCapitaine ? "<span class='captain-badge'>C</span>" : ""}`
        : '';
    }
  }

  function getFormeHtml(equipe) {
    let formeArray = equipe.forme;
    return formeArray.map(val => {
      if (val === 'V') {
        return '<span class="form-dot form-dot-win"></span>';
      } else if (val === 'N') {
        return '<span class="form-dot form-dot-draw"></span>';
      } else if (val === 'D') {
        return '<span class="form-dot form-dot-loss"></span>';
      }
    }).join('');
  }

  function updateScoreAndTeams(data) {
    const scoreContainer = document.querySelector(".custom-score-container");
    const emblemeLocal = document.querySelector(".custom-emblem-local");
    const dateContainer = document.querySelector(".custom_date");
    const nomLocal = document.querySelector(".custom-local-name");
    const emblemeVisiteur = document.querySelector(".custom-emblem-visitor");
    const nomVisiteur = document.querySelector(".custom-visitor-name");
    const h1Container = document.querySelector(".custom-h1");
    const competitionBadge = document.querySelector(".competition-badge");
    const matchDay = document.querySelector(".match-day");
    const matchStatusBadge = document.querySelector(".match-status-badge");

    emblemeLocal.src = data.local_team.img_url;
    emblemeVisiteur.src = data.visitor_team.img_url;

    let formeEquipeLocale = getFormeHtml(data.local_team);
    let formeEquipeVisiteuse = getFormeHtml(data.visitor_team);

    nomLocal.innerHTML = `${data.local_team.name}<div class="team-form-dots">${formeEquipeLocale}</div>`;
    nomVisiteur.innerHTML = `${data.visitor_team.name}<div class="team-form-dots">${formeEquipeVisiteuse}</div>`;

    // Mise à jour du badge de compétition
    competitionBadge.textContent = data.competition || '';

    // Mise à jour de la journée
    // Formats possibles: "13e-journee", "poule 3", "journee-13", etc.
    let day = String(data.day || '')
  .replace(/-/g, ' ')                           // Remplace les tirets par des espaces
  .replace(/journee\s*(\d+)/gi, 'Journée $1')   // "journee 13" -> "Journée 13"
  .replace(/(\d+)e?\s*journee/gi, 'Journée $1') // "13e journee" ou "13 journee" -> "Journée 13"
  .replace(/poule\s*(\d+)/gi, 'Poule $1');      // "poule 3" -> "Poule 3"

matchDay.textContent = day;

    const gameStatus = data.etat === 'endirect' || data.etat === 'avenir' ? 'En Direct' : '';
    const gameFinish = data.etat === 'termine' ? 'Terminé' : '';

    // Mise à jour du badge de statut
    if (data.etat === 'endirect') {
      matchStatusBadge.textContent = 'LIVE';
      matchStatusBadge.className = 'match-status-badge status-live';
      document.body.classList.add('match-live');
    } else if (data.etat === 'termine') {
      matchStatusBadge.textContent = 'Terminé';
      matchStatusBadge.className = 'match-status-badge status-finished';
      document.body.classList.remove('match-live');
    } else {
      matchStatusBadge.textContent = 'À venir';
      matchStatusBadge.className = 'match-status-badge status-upcoming';
      document.body.classList.remove('match-live');
    }

    h1Container.textContent = `${data.local_team.name} - ${data.visitor_team.name}`;

    const date = new Date(data.date);
    const dateFormatted = `${date.toLocaleDateString('fr-FR', {
      weekday: 'long',
      year: 'numeric',
      month: 'long',
      day: 'numeric',
    })}`;
    const heureFormatted = `${date.toLocaleTimeString('fr-FR', {
      hour: '2-digit',
      minute: '2-digit',
    })}`;

    if (data.rencontre_resultat_locale && data.etat === "termine") {
      scoreContainer.innerHTML = `
        <div class="score-value">${data.rencontre_resultat_locale.pointsDeMarque}</div>
        <div class="score-separator">-</div>
        <div class="score-value">${data.rencontre_resultat_visiteuse.pointsDeMarque}</div>
      `;
      if (data.periode) {
        document.querySelector('.match-period').textContent = data.periode;
      }
      dateContainer.innerHTML = `<span class="date-text">${dateFormatted}</span>`;
    } else if (data.etat === 'endirect') {
      scoreContainer.innerHTML = `
        <div class="score-value score-live">${data.rencontre_resultat_locale.pointsDeMarque}</div>
        <div class="score-separator">-</div>
        <div class="score-value score-live">${data.rencontre_resultat_visiteuse.pointsDeMarque}</div>
      `;
      if (data.periode) {
        document.querySelector('.match-period').textContent = data.periode;
      }
      dateContainer.innerHTML = `<span class="date-text">${dateFormatted}</span>`;
    } else {
      scoreContainer.innerHTML = `
        <div class="match-kickoff">
          <span class="kickoff-time">${heureFormatted}</span>
        </div>
      `;
      dateContainer.innerHTML = `<span class="date-text">${dateFormatted}</span>`;
    }
  }

  function updateLists(data) {
    const summaryTable = document.querySelector('.summary-table');
    summaryTable.innerHTML = '';

    const orderedKeys = [
      'MI-TEMPS', 'ESSAI', 'TRANSFORMATION', 'PENALITE',
      'ESSAIS DE PÉNALITÉ', 'DROP', 'CARTON_JAUNE', 'CARTON_ROUGE'
    ];

    const keyMap = {
      'MI-TEMPS': 'mi-temps',
      'ESSAI': 'essai',
      'TRANSFORMATION': 'transformation',
      'PENALITE': 'penalite',
      'ESSAIS DE PÉNALITÉ': 'Essais de pénalité',
      'DROP': 'drop',
      'CARTON_JAUNE': 'carton_jaune',
      'CARTON_ROUGE': 'carton_rouge'
    };

    const displayLabels = {
      'MI-TEMPS': 'Mi-temps',
      'ESSAI': 'Essais',
      'TRANSFORMATION': 'Transformations',
      'PENALITE': 'Pénalités',
      'ESSAIS DE PÉNALITÉ': 'Essais pénalité',
      'DROP': 'Drops',
      'CARTON_JAUNE': 'Cartons jaunes',
      'CARTON_ROUGE': 'Cartons rouges'
    };

    const localeStats = data?.stats?.locale || {};
    const extStats = data?.stats?.ext || {};

    orderedKeys.forEach((key) => {
      const dataKey = keyMap[key];
      let localValue = localeStats.hasOwnProperty(dataKey) ? localeStats[dataKey] : 0;
      let visitorValue = extStats.hasOwnProperty(dataKey) ? extStats[dataKey] : 0;

      if (key === 'MI-TEMPS') {
        localValue = localeStats.hasOwnProperty(dataKey) ? localeStats[dataKey] : null;
        visitorValue = extStats.hasOwnProperty(dataKey) ? extStats[dataKey] : null;
      }

      if (localValue !== null || visitorValue !== null) {
        const tr = document.createElement('tr');
        tr.innerHTML = `
          <td class="stat-value stat-local">${localValue}</td>
          <td class="stat-label">${displayLabels[key]}</td>
          <td class="stat-value stat-visitor">${visitorValue}</td>
        `;
        summaryTable.appendChild(tr);
      }
    });
  }

  // Gestion des onglets
  document.querySelectorAll('.tab-btn').forEach(btn => {
    btn.addEventListener('click', () => {
      const tabId = btn.dataset.tab;

      // Mise à jour des boutons
      document.querySelectorAll('.tab-btn').forEach(b => b.classList.remove('active'));
      btn.classList.add('active');

      // Mise à jour des panneaux
      document.querySelectorAll('.tab-panel').forEach(panel => panel.classList.remove('active'));
      document.getElementById(tabId).classList.add('active');
    });
  });

  let myChart;

  function createChart(data) {
    const chartData = data.chart;
    if (chartData) {
      const labels = Array.from({ length: 80 }, (_, i) => i);
      const teams = {
        [data.local_team.id]: { name: data.local_team.name, color: '#004D90' },
        [data.visitor_team.id]: { name: data.visitor_team.name, color: '#e63946' }
      };
      const datasets = Object.keys(teams).map(teamId => {
        const rawTeamData = chartData
          .filter(item => item.team === teamId)
          .map(item => ({ x: item.minutes, y: item.score }));
        return {
          label: teams[teamId].name,
          data: rawTeamData,
          borderColor: teams[teamId].color,
          backgroundColor: teams[teamId].color + '20',
          borderWidth: 3,
          tension: 0.3,
          fill: false,
          pointRadius: 0,
          pointHoverRadius: 6,
        };
      });
      const localTeamDataset = datasets.find(dataset => dataset.label === teams[data.local_team.id].name);
      const sortedDatasets = [localTeamDataset].concat(datasets.filter(dataset => dataset !== localTeamDataset));
      if (myChart) {
        myChart.destroy();
      }
      if (document.getElementById('myChart')) {
        const ctx = document.getElementById('myChart').getContext('2d');
        myChart = new Chart(ctx, {
          type: 'line',
          data: {
            labels: labels,
            datasets: sortedDatasets
          },
          options: {
            responsive: true,
            maintainAspectRatio: true,
            plugins: {
              legend: {
                display: true,
                position: 'top',
                labels: {
                  usePointStyle: true,
                  padding: 20,
                  font: {
                    family: 'Poppins',
                    size: 12
                  }
                }
              }
            },
            scales: {
              x: {
                display: true,
                title: {
                  display: true,
                  text: 'Minutes',
                  font: {
                    family: 'Poppins',
                    size: 12
                  }
                },
                type: 'linear',
                position: 'bottom',
                min: 0,
                max: 80,
                grid: {
                  color: 'rgba(0, 0, 0, 0.05)'
                }
              },
              y: {
                display: true,
                title: {
                  display: true,
                  text: 'Points',
                  font: {
                    family: 'Poppins',
                    size: 12
                  }
                },
                grid: {
                  color: 'rgba(0, 0, 0, 0.05)'
                }
              }
            },
          }
        });
      }
    }
  }

  let refreshTimeout = null;

  function resetTimer() {
    if (refreshTimeout) {
      clearTimeout(refreshTimeout);
    }
    refreshTimeout = setTimeout(() => {
      fetchDataAndUpdate();
    }, 60000);
  }

  function playRadio(name, url, logo) {
    const playerContainer = document.querySelector('.spotify-style-player');
    const audioTitle = playerContainer.querySelector('.audio-title');
    const audioSource = playerContainer.querySelector('audio source');
    const audioPlayer = playerContainer.querySelector('audio');
    const logoImg = playerContainer.querySelector('.radio-logo');
    const closeButton = playerContainer.querySelector('.close-button');

    closeButton.onclick = function() {
      playerContainer.style.display = 'none';
      audioPlayer.pause();
    };

    audioTitle.textContent = name;
    audioSource.src = url;
    logoImg.src = logo;
    audioPlayer.load();
    playerContainer.style.display = 'flex';
    audioPlayer.play().catch(error => {
      console.error("Autoplay blocked by the browser: ", error);
    });
  }

  window.onload = function() {
    fetchDataAndUpdate();
  };
</script>
<style>
  :root {
    /* Couleurs Vibrez Rugby */
    --color-primary: #004D90;
    --color-primary-dark: #002759;
    --color-accent: #0693e3;
    --color-danger: #e63946;
    --color-success: #2a9d8f;
    --color-warning: #f4a261;

    /* Neutres */
    --color-white: #ffffff;
    --color-gray-50: #f8fafc;
    --color-gray-100: #f1f5f9;
    --color-gray-200: #e2e8f0;
    --color-gray-300: #cbd5e1;
    --color-gray-400: #94a3b8;
    --color-gray-500: #64748b;
    --color-gray-600: #475569;
    --color-gray-700: #334155;
    --color-gray-800: #1e293b;
    --color-gray-900: #0f172a;

    /* Typographie */
    --font-family: 'Poppins', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;

    /* Espacements */
    --spacing-xs: 0.25rem;
    --spacing-sm: 0.5rem;
    --spacing-md: 1rem;
    --spacing-lg: 1.5rem;
    --spacing-xl: 2rem;
    --spacing-2xl: 3rem;

    /* Bordures */
    --radius-sm: 0.375rem;
    --radius-md: 0.5rem;
    --radius-lg: 0.75rem;
    --radius-xl: 1rem;
    --radius-full: 9999px;

    /* Ombres */
    --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);
    --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
    --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
    --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);
  }

  *, *::before, *::after {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
  }

  body {
    font-family: var(--font-family);
    background: var(--color-gray-50);
    color: var(--color-gray-800);
    line-height: 1.6;
    -webkit-font-smoothing: antialiased;
  }

  /* Container principal */
  .main-container {
    max-width: 1000px;
    margin: 0 auto;
    padding: var(--spacing-md);
  }

  /* Header du match */
  .match-header {
    text-align: center;
    padding: var(--spacing-sm) 0;
  }

  .match-meta {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: var(--spacing-sm);
    margin-bottom: var(--spacing-sm);
    flex-wrap: wrap;
  }

  .competition-badge {
    background: linear-gradient(135deg, var(--color-primary), var(--color-primary-dark));
    color: var(--color-white);
    padding: var(--spacing-xs) var(--spacing-md);
    border-radius: var(--radius-full);
    font-size: 0.75rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.05em;
  }

  .match-day {
    color: var(--color-gray-500);
    font-size: 0.875rem;
  }

  .match-title {
    font-size: clamp(1.25rem, 3vw, 1.75rem);
    font-weight: 700;
    color: var(--color-gray-900);
    margin-bottom: var(--spacing-xs);
  }

  .match-date-time {
    color: var(--color-gray-500);
    font-size: 0.9rem;
  }

  .date-text {
    text-transform: capitalize;
  }

  /* Scoreboard */
  .scoreboard {
    display: grid;
    grid-template-columns: 1fr auto 1fr;
    gap: var(--spacing-sm);
    align-items: center;
    background: var(--color-white);
    border-radius: var(--radius-xl);
    padding: var(--spacing-md);
    box-shadow: var(--shadow-md);
    margin-bottom: var(--spacing-sm);
  }

  .team-block {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
  }

  .team-emblem-wrapper {
    width: 80px;
    height: 80px;
    display: flex;
    align-items: center;
    justify-content: center;
    margin-bottom: var(--spacing-xs);
  }

  .team-emblem {
    max-width: 100%;
    max-height: 100%;
    object-fit: contain;
    border-radius: var(--radius-md);
  }

  .team-name {
    font-size: 0.9rem;
    font-weight: 600;
    color: var(--color-gray-800);
    margin-bottom: 0;
  }

  .team-form-dots {
    display: flex;
    justify-content: center;
    gap: 4px;
    margin-top: var(--spacing-xs);
  }

  .form-dot {
    width: 10px;
    height: 10px;
    border-radius: var(--radius-full);
  }

  .form-dot-win { background-color: var(--color-success); }
  .form-dot-draw { background-color: var(--color-warning); }
  .form-dot-loss { background-color: var(--color-danger); }

  .score-block {
    display: flex;
    flex-direction: column;
    align-items: center;
    min-width: 140px;
  }

  .score-display {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
  }

  .score-value {
    font-size: 2rem;
    font-weight: 700;
    color: var(--color-gray-900);
    min-width: 45px;
    text-align: center;
  }

  .score-live {
    color: var(--color-danger);
  }

  .score-separator {
    font-size: 1.5rem;
    font-weight: 300;
    color: var(--color-gray-400);
  }

  .match-period {
    font-size: 0.75rem;
    color: var(--color-gray-500);
    margin-top: var(--spacing-xs);
  }

  .match-status-badge {
    display: inline-flex;
    align-items: center;
    padding: var(--spacing-xs) var(--spacing-sm);
    border-radius: var(--radius-full);
    font-size: 0.7rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    margin-top: var(--spacing-sm);
  }

  .status-live {
    background-color: var(--color-danger);
    color: var(--color-white);
    animation: pulse 2s infinite;
  }

  .status-finished {
    background-color: var(--color-gray-200);
    color: var(--color-gray-600);
  }

  .status-upcoming {
    background-color: var(--color-accent);
    color: var(--color-white);
  }

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

  .match-kickoff {
    text-align: center;
  }

  .kickoff-time {
    font-size: 2rem;
    font-weight: 700;
    color: var(--color-primary);
  }

  /* Match summary stats */
  .match-summary {
    margin-bottom: var(--spacing-sm);
  }

  .summary-table {
    width: 100%;
    background: var(--color-white);
    border-radius: var(--radius-md);
    overflow: hidden;
    box-shadow: var(--shadow-sm);
  }

  .summary-table tr {
    display: grid;
    grid-template-columns: 60px 1fr 60px;
    border-bottom: 1px solid var(--color-gray-100);
    align-items: center;
  }

  .summary-table tr:last-child {
    border-bottom: none;
  }

  .summary-table td {
    padding: 4px var(--spacing-sm);
    border: none;
  }

  .summary-table .stat-value {
    font-weight: 600;
    font-size: 0.8rem;
  }

  .summary-table .stat-local {
    text-align: center;
    color: var(--color-primary);
  }

  .summary-table .stat-visitor {
    text-align: center;
    color: var(--color-danger);
  }

  .summary-table .stat-label {
    text-align: center;
    color: var(--color-gray-500);
    font-size: 0.7rem;
  }

  /* Radio section */
  .radio-section {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: var(--spacing-sm);
    margin-bottom: var(--spacing-lg);
  }

  .radio-btn {
    display: inline-flex;
    align-items: center;
    gap: var(--spacing-xs);
    padding: var(--spacing-sm) var(--spacing-lg);
    background: linear-gradient(135deg, var(--color-danger), #c1121f);
    color: var(--color-white);
    border: none;
    border-radius: var(--radius-full);
    font-family: var(--font-family);
    font-size: 0.875rem;
    font-weight: 500;
    cursor: pointer;
    transition: transform 0.2s, box-shadow 0.2s;
  }

  .radio-btn:hover {
    transform: translateY(-2px);
    box-shadow: var(--shadow-md);
  }

  /* Video sections */
  .video-section {
    display: flex;
    justify-content: center;
    margin-bottom: var(--spacing-lg);
    border-radius: var(--radius-lg);
    overflow: hidden;
  }

  .video-section iframe {
    width: 100%;
    max-width: 700px;
    aspect-ratio: 16/9;
    border: none;
    border-radius: var(--radius-lg);
  }

  /* Chart section */
  .chart-section {
    background: var(--color-white);
    border-radius: var(--radius-md);
    padding: var(--spacing-sm) var(--spacing-md);
    margin-bottom: var(--spacing-md);
    box-shadow: var(--shadow-sm);
  }

  #myChart {
    max-height: 180px;
  }

  /* Tabs */
  .tabs-nav {
    display: flex;
    background: var(--color-white);
    border-radius: var(--radius-lg);
    padding: var(--spacing-xs);
    gap: var(--spacing-xs);
    margin-bottom: var(--spacing-lg);
    box-shadow: var(--shadow-sm);
  }

  .tab-btn {
    flex: 1;
    padding: var(--spacing-sm) var(--spacing-md);
    background: transparent;
    border: none;
    border-radius: var(--radius-md);
    font-family: var(--font-family);
    font-size: 0.875rem;
    font-weight: 500;
    color: var(--color-gray-600);
    cursor: pointer;
    transition: all 0.2s;
  }

  .tab-btn:hover {
    background: var(--color-gray-100);
  }

  .tab-btn.active {
    background: linear-gradient(135deg, var(--color-primary), var(--color-primary-dark));
    color: var(--color-white);
  }

  .tab-panels {
    min-height: 200px;
  }

  .tab-panel {
    display: none;
  }

  .tab-panel.active {
    display: block;
  }

  /* Timeline */
  .timeline {
    list-style: none;
    position: relative;
    padding: var(--spacing-lg) 0;
  }

  .timeline::before {
    content: '';
    position: absolute;
    left: 50%;
    top: 0;
    bottom: 0;
    width: 2px;
    background: var(--color-gray-200);
    transform: translateX(-50%);
  }

  .timeline-item {
    position: relative;
    width: 50%;
    padding: var(--spacing-md);
    margin-bottom: var(--spacing-md);
  }

  .timeline-item.timeline-local {
    padding-right: calc(var(--spacing-xl) + 25px);
    text-align: right;
  }

  .timeline-item.timeline-visitor {
    margin-left: 50%;
    padding-left: calc(var(--spacing-xl) + 25px);
    text-align: left;
  }

  .timeline-marker {
    position: absolute;
    top: 50%;
    width: 40px;
    height: 40px;
    transform: translateY(-50%);
    background: var(--color-white);
    border-radius: var(--radius-full);
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: var(--shadow-md);
    z-index: 1;
  }

  .timeline-item.timeline-local .timeline-marker {
    right: -20px;
  }

  .timeline-item.timeline-visitor .timeline-marker {
    left: -20px;
  }

  .timeline-icon {
    width: 28px;
    height: 28px;
    object-fit: contain;
  }

  .timeline-card {
    background: var(--color-white);
    border-radius: var(--radius-lg);
    padding: var(--spacing-md);
    box-shadow: var(--shadow-sm);
    display: inline-flex;
    flex-direction: column;
    align-items: center;
    min-width: 180px;
  }

  .timeline-time {
    font-size: 0.75rem;
    font-weight: 600;
    color: var(--color-primary);
    background: var(--color-gray-100);
    padding: 2px 8px;
    border-radius: var(--radius-full);
    margin-bottom: var(--spacing-xs);
  }

  .timeline-team-logo {
    width: 36px;
    height: 36px;
    object-fit: contain;
    margin-bottom: var(--spacing-xs);
  }

  .timeline-action-title {
    font-size: 0.9rem;
    font-weight: 600;
    color: var(--color-gray-800);
  }

  .timeline-player {
    font-size: 0.8rem;
    color: var(--color-gray-600);
    margin-top: 2px;
  }

  .timeline-player-secondary {
    color: var(--color-gray-400);
  }

  /* Timeline comments */
  .timeline-comment {
    width: 100%;
    display: flex;
    justify-content: center;
    left: 0 !important;
    margin-left: 0 !important;
    padding: var(--spacing-md) !important;
  }

  .timeline-card-comment,
  .timeline-card-tweet {
    max-width: 500px;
    width: 100%;
    text-align: center;
  }

  .timeline-card-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: var(--spacing-sm) var(--spacing-md);
    background: linear-gradient(135deg, var(--color-primary), var(--color-primary-dark));
    border-radius: var(--radius-lg) var(--radius-lg) 0 0;
    margin: calc(-1 * var(--spacing-md));
    margin-bottom: var(--spacing-md);
    width: calc(100% + 2 * var(--spacing-md));
  }

  .timeline-card-header-tweet {
    background: linear-gradient(135deg, #1da1f2, #0d8bd9);
  }

  .timeline-card-header .timeline-time {
    background: rgba(255, 255, 255, 0.2);
    color: var(--color-white);
  }

  .comment-logo,
  .tweet-logo {
    width: 28px;
    height: 28px;
    border-radius: var(--radius-full);
  }

  .timeline-card-text {
    font-size: 0.95rem;
    color: var(--color-gray-700);
    line-height: 1.5;
  }

  .tweet-embed {
    margin-top: var(--spacing-md);
  }

  .tweet-fallback {
    padding: var(--spacing-md);
    background: var(--color-gray-50);
    border-radius: var(--radius-md);
  }

  .tweet-fallback a {
    color: var(--color-accent);
    text-decoration: none;
  }

  /* Composition table */
  .composition-grid {
    max-width: 700px;
    margin: 0 auto;
  }

  .composition-table {
    width: 100%;
    background: var(--color-white);
    border-radius: var(--radius-lg);
    overflow: hidden;
    box-shadow: var(--shadow-sm);
    border-collapse: collapse;
    table-layout: fixed;
  }

  .composition-table thead th {
    background: linear-gradient(135deg, var(--color-primary), var(--color-primary-dark));
    color: var(--color-white);
    padding: var(--spacing-sm) var(--spacing-md);
    font-weight: 600;
    font-size: 0.85rem;
    width: 50%;
    text-align: center;
  }

  .composition-table tbody td {
    padding: var(--spacing-sm) var(--spacing-md);
    border-bottom: 1px solid var(--color-gray-100);
    vertical-align: middle;
  }

  .composition-table tbody td .player-wrapper {
    display: inline-flex;
    align-items: center;
    text-align: left;
  }

  .composition-table tbody tr:nth-child(odd) {
    background: var(--color-gray-50);
  }

  .composition-table tbody tr:hover {
    background: var(--color-gray-100);
  }

  /* Les deux colonnes : texte aligné à gauche, centré dans l'espace */
  .composition-table tbody td:first-child,
  .composition-table tbody td:last-child {
    text-align: left;
    padding-left: 15%;
  }

  .player-number {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 22px;
    height: 22px;
    background: var(--color-primary);
    color: var(--color-white);
    border-radius: var(--radius-sm);
    font-size: 0.7rem;
    font-weight: 600;
    margin-right: var(--spacing-xs);
  }

  .player-name {
    font-weight: 500;
    font-size: 0.85rem;
  }

  .captain-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 18px;
    height: 18px;
    background: var(--color-warning);
    color: var(--color-gray-900);
    border-radius: var(--radius-full);
    font-size: 0.65rem;
    font-weight: 700;
    margin-left: var(--spacing-xs);
  }

  /* Stats table (Face à Face) */
  .stats-table {
    width: 100%;
    background: var(--color-white);
    border-radius: var(--radius-lg);
    overflow: hidden;
    box-shadow: var(--shadow-sm);
    border-collapse: collapse;
    table-layout: fixed;
  }

  .stats-table thead th {
    background: linear-gradient(135deg, var(--color-primary), var(--color-primary-dark));
    color: var(--color-white);
    padding: var(--spacing-sm);
    font-weight: 600;
    font-size: 0.75rem;
    word-wrap: break-word;
  }

  .stats-table thead th:first-child,
  .stats-table thead th:last-child {
    width: 25%;
  }

  .stats-table thead th:nth-child(2) {
    width: 50%;
  }

  .stats-table tbody td {
    padding: var(--spacing-xs) var(--spacing-sm);
    border-bottom: 1px solid var(--color-gray-100);
    text-align: center;
    font-size: 0.8rem;
    vertical-align: middle;
    word-wrap: break-word;
  }

  .stats-table tbody tr:nth-child(odd) {
    background: var(--color-gray-50);
  }

  .stats-table .stat-label {
    font-weight: 500;
    color: var(--color-gray-600);
    font-size: 0.7rem;
    line-height: 1.2;
  }

  .form-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 18px;
    height: 18px;
    border-radius: var(--radius-sm);
    font-size: 0.65rem;
    font-weight: 700;
    margin: 1px;
  }

  .form-win {
    background: var(--color-success);
    color: var(--color-white);
  }

  .form-draw {
    background: var(--color-warning);
    color: var(--color-gray-900);
  }

  .form-loss {
    background: var(--color-danger);
    color: var(--color-white);
  }

  /* Content display */
  .content-display {
    margin-top: var(--spacing-lg);
  }

  /* Radio player */
  .radio-player {
    position: fixed;
    bottom: var(--spacing-lg);
    right: var(--spacing-lg);
    width: 320px;
    background: var(--color-gray-900);
    border-radius: var(--radius-lg);
    padding: var(--spacing-md);
    box-shadow: var(--shadow-xl);
    z-index: 1000;
    flex-direction: column;
    gap: var(--spacing-sm);
  }

  .radio-player-close {
    position: absolute;
    top: var(--spacing-sm);
    right: var(--spacing-sm);
    background: transparent;
    border: none;
    color: var(--color-gray-400);
    font-size: 1.5rem;
    cursor: pointer;
    line-height: 1;
    padding: 0;
    width: 24px;
    height: 24px;
  }

  .radio-player-close:hover {
    color: var(--color-white);
  }

  .radio-player-info {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
  }

  .radio-player-logo {
    width: 48px;
    height: 48px;
    border-radius: var(--radius-md);
    object-fit: cover;
  }

  .radio-player-details {
    flex: 1;
  }

  .radio-player-status {
    font-size: 0.7rem;
    color: var(--color-danger);
    text-transform: uppercase;
    font-weight: 600;
    letter-spacing: 0.05em;
  }

  .radio-player-title {
    font-size: 0.95rem;
    font-weight: 600;
    color: var(--color-white);
    margin: 0;
  }

  .radio-player audio {
    width: 100%;
    height: 36px;
  }

  /* Responsive */
  @media (max-width: 768px) {
    .scoreboard {
      display: flex;
      flex-direction: row;
      flex-wrap: nowrap;
      justify-content: space-between;
      align-items: center;
      gap: var(--spacing-xs);
      padding: var(--spacing-sm);
    }

    .team-block {
      flex: 1;
      min-width: 0;
    }

    .team-local { order: 1; }
    .score-block { order: 2; }
    .team-visitor { order: 3; }

    .score-block {
      flex: 0 0 auto;
      min-width: 80px;
    }

    .team-emblem-wrapper {
      width: 60px;
      height: 60px;
    }

    .team-name {
      font-size: 0.8rem;
    }

    .score-value {
      font-size: 1.75rem;
    }

    /* Summary table mobile */
    .summary-table tr {
      grid-template-columns: 45px 1fr 45px;
    }

    .summary-table td {
      padding: 3px var(--spacing-xs);
    }

    .summary-table .stat-value {
      font-size: 0.7rem;
    }

    .summary-table .stat-label {
      font-size: 0.6rem;
    }

    /* Chart mobile */
    .chart-section {
      max-width: 100%;
      padding: var(--spacing-sm);
    }

    #myChart {
      max-height: 150px;
    }

    /* Timeline mobile */
    .timeline::before {
      left: 20px;
    }

    .timeline-item,
    .timeline-item.timeline-local,
    .timeline-item.timeline-visitor {
      width: 100%;
      padding-left: 60px;
      padding-right: var(--spacing-md);
      text-align: left;
      margin-left: 0;
    }

    .timeline-marker,
    .timeline-item.timeline-local .timeline-marker,
    .timeline-item.timeline-visitor .timeline-marker {
      left: 0;
      right: auto;
    }

    .timeline-card {
      width: 100%;
      align-items: flex-start;
    }

    .timeline-comment {
      padding-left: var(--spacing-md) !important;
    }

    .timeline-comment .timeline-card {
      align-items: center;
    }

    /* Tabs mobile */
    .tabs-nav {
      flex-direction: row;
    }

    .tab-btn {
      font-size: 0.75rem;
      padding: var(--spacing-sm) var(--spacing-xs);
    }

    /* Radio player mobile */
    .radio-player {
      bottom: var(--spacing-md);
      right: var(--spacing-md);
      left: var(--spacing-md);
      width: auto;
    }

    /* Composition table mobile */
    .composition-grid {
      max-width: 100%;
    }

    .composition-table {
      font-size: 0.75rem;
    }

    .composition-table thead th {
      padding: var(--spacing-xs) var(--spacing-sm);
      font-size: 0.7rem;
    }

    .composition-table tbody td {
      padding: var(--spacing-xs) var(--spacing-sm);
    }

    .composition-table tbody td:first-child,
    .composition-table tbody td:last-child {
      padding-left: 10%;
    }

    .player-number {
      width: 18px;
      height: 18px;
      font-size: 0.6rem;
      margin-right: 2px;
    }

    .player-name {
      font-size: 0.7rem;
    }

    .captain-badge {
      width: 14px;
      height: 14px;
      font-size: 0.55rem;
    }

    /* Stats table (Face à Face) mobile */
    .stats-table {
      font-size: 0.7rem;
    }

    .stats-table thead th {
      padding: var(--spacing-xs);
      font-size: 0.6rem;
      line-height: 1.2;
    }

    .stats-table thead th:first-child,
    .stats-table thead th:last-child {
      width: 22%;
    }

    .stats-table thead th:nth-child(2) {
      width: 56%;
    }

    .stats-table tbody td {
      padding: var(--spacing-xs) 2px;
      font-size: 0.65rem;
    }

    .stats-table .stat-label {
      font-size: 0.6rem;
    }

    .form-badge {
      width: 14px;
      height: 14px;
      font-size: 0.5rem;
      margin: 0;
    }
  }

  @media (max-width: 480px) {
    .main-container {
      padding: var(--spacing-xs);
    }

    .match-header {
      padding: var(--spacing-sm) 0;
    }

    .match-title {
      font-size: 0.9rem;
    }

    .match-meta {
      gap: var(--spacing-xs);
    }

    .competition-badge {
      font-size: 0.6rem;
      padding: 2px var(--spacing-sm);
    }

    .match-day {
      font-size: 0.7rem;
    }

    .match-date-time {
      font-size: 0.75rem;
    }

    .scoreboard {
      padding: var(--spacing-xs);
      gap: var(--spacing-xs);
    }

    .team-emblem-wrapper {
      width: 45px;
      height: 45px;
    }

    .team-name {
      font-size: 0.65rem;
    }

    .form-dot {
      width: 5px;
      height: 5px;
    }

    .score-block {
      min-width: 60px;
    }

    .score-value {
      font-size: 1.25rem;
      min-width: 30px;
    }

    .score-separator {
      font-size: 1rem;
    }

    .match-status-badge {
      font-size: 0.6rem;
      padding: 2px 6px;
    }

    .kickoff-time {
      font-size: 1.25rem;
    }

    /* Summary even smaller */
    .summary-table tr {
      grid-template-columns: 35px 1fr 35px;
    }

    .summary-table td {
      padding: 2px var(--spacing-xs);
    }

    .summary-table .stat-value {
      font-size: 0.65rem;
    }

    .summary-table .stat-label {
      font-size: 0.55rem;
    }

    /* Timeline smaller */
    .timeline-item,
    .timeline-item.timeline-local,
    .timeline-item.timeline-visitor {
      padding-left: 50px;
      padding-right: var(--spacing-xs);
    }

    .timeline-marker {
      width: 32px;
      height: 32px;
    }

    .timeline-icon {
      width: 22px;
      height: 22px;
    }

    .timeline-card {
      padding: var(--spacing-xs);
    }

    .timeline-time {
      font-size: 0.65rem;
      padding: 1px 6px;
    }

    .timeline-team-logo {
      width: 28px;
      height: 28px;
    }

    .timeline-action-title {
      font-size: 0.75rem;
    }

    .timeline-player {
      font-size: 0.7rem;
    }

    /* Tables even smaller */
    .stats-table thead th {
      font-size: 0.55rem;
      padding: 4px 2px;
    }

    .stats-table tbody td {
      font-size: 0.6rem;
      padding: 4px 2px;
    }

    .stats-table .stat-label {
      font-size: 0.55rem;
    }

    .form-badge {
      width: 12px;
      height: 12px;
      font-size: 0.45rem;
    }

    .composition-table thead th {
      font-size: 0.6rem;
    }

    .composition-table tbody td {
      padding: 4px 2px;
    }

    .player-number {
      width: 16px;
      height: 16px;
      font-size: 0.55rem;
    }

    .player-name {
      font-size: 0.65rem;
    }

    .captain-badge {
      width: 12px;
      height: 12px;
      font-size: 0.5rem;
    }

    /* Radio button smaller */
    .radio-btn {
      font-size: 0.75rem;
      padding: var(--spacing-xs) var(--spacing-md);
    }
  }

  /* Hide elements */
  .entry-title {
    display: none;
  }
</style>
</body>
</html>
<br><br>
<br><br>
<h1>live en direct</h1>
<p>
live en direct</strong> sur Vibrez Rugby. Pronostics, face-à-face, compositions, statistiques : tout savoir avant le direct. Accédez ensuite à notre radio live et/ou à notre <a href="https://vibrez-rugby.com/matchs-de-rugby-en-direct/" title="score live">score live</a> commenté en temps réel pour ne rien manquer de l&rsquo;action.
</p>
<h2>Comment suivre live en direct ?</h2>
<p>
Plusieurs options s&rsquo;offrent à vous pour vivre cette rencontre comme si vous y étiez. Choisissez celle qui vous convient le mieux en fonction de votre situation.
</p>
<h3>À la radio ou en score live commenté</h3>
<p>
Si vous ne pouvez pas regarder le match, écoutez <strong>live en direct</strong> à la radio ou suivez notre score live. Chaque action clé, essai, pénalité et carton est mis à jour instantanément pour vous offrir une expérience immersive.
</p>
<h3>Sur quelle chaîne TV ?</h3>
<p>
Pour connaître l&rsquo;heure et la chaîne de diffusion TV de <strong>live en direct</strong>, consultez notre programme TV complet, mis à jour quotidiennement avec les informations des diffuseurs officiels (<a href="https://vibrez-rugby.com/competition/top-14/" title="Top 14">Top 14</a>, <a href="https://vibrez-rugby.com/competition/pro-d2/" title="Pro D2">Pro D2</a>, Coupe d&rsquo;Europe, etc.).
</p>
<h2>Vibrez Rugby : Votre référence pour le rugby en direct</h2>
<p>
Notre plateforme vous donne accès à un large éventail de compétitions, chaque week-end. Plongez au cœur de l’action en un seul clic !
</p>
<h3>Toutes vos compétitions préférées</h3>
<ul>
<li><a href="https://vibrez-rugby.com/club/france/" title="XV de France">XV de France</a> (Masculin, Féminin, U20)</li>
<li>Coupes d’Europe</li>
<li>Top 14, Pro D2, <a href="https://vibrez-rugby.com/competition/nationale/" title=Nationale>Nationale</a>, et Fédérales 1 à 3</li>
<li>Rugby à 7 (Sevens), Élite 1 et 2</li>
</ul>
<p>
<strong>Ne ratez rien de live en direct :</strong> suivez le score en live, écoutez le match à la radio et vibrez au rythme des plus grandes rencontres de rugby.
</p>
</div>
<div>
<h2>Castres &#8211; Toulouse en direct en direct à la radio : vivez le match de rugby comme si vous y étiez !</h2>
<p>Si vous êtes un passionné de rugby, ne manquez pas l’occasion de vivre l’excitation du match en direct sur notre blog avec Castres &#8211; Toulouse en direct en direct à la radio. Nous vous proposons une expérience immersive où chaque phase de jeu, essai, et moment décisif sera commenté en temps réel pour offrir une couverture exhaustive et dynamique. Voici une présentation complète de ce que vous pouvez attendre de notre diffusion en direct et comment vous pouvez vous préparer pour ne rien manquer de l’action.</p>
<h4>Castres &#8211; Toulouse en direct en direct à la radio : une expérience immersive</h4>
<p>Suivre un match de rugby en direct offre une différence significative entre le regarder à la télévision, le suivre sur un écran numérique, ou l’écouter à la radio. Avec Castres &#8211; Toulouse en direct en direct à la radio, vous bénéficierez d’une expérience unique qui se concentre sur l’essence même du jeu. La radio, avec sa capacité à capturer l’intensité et le suspense du rugby par la voix seule, plonge au cœur du match comme jamais auparavant. Grâce à une narration vivante et détaillée, chaque plaquage, passe, et décision arbitrale sera retranscrit avec précision, permettant de ressentir l’émotion du jeu en temps réel.</p><p class=lien-interne-conseil><strong>À lire aussi</strong> | <a href="https://vibrez-rugby.com/racing-92-patrice-collazo-souligne-les-progres-a-faire-apres-le-derby/">Racing 92 : Patrice Collazo souligne les progrès à faire après le derby</a></p>
<h4>Pourquoi choisir Castres &#8211; Toulouse en direct en direct à la radio ?</h4>
<p>Le rugby se prête particulièrement bien à la diffusion en direct à la radio. La nature rapide et imprévisible du jeu fait que chaque instant compte, et il est essentiel de suivre l’action en continu sans interruptions. Avec Castres &#8211; Toulouse en direct en direct à la radio, nous garantissons une couverture continue et sans faille. Nos commentateurs expérimentés fournissent non seulement les faits, mais aussi les analyses et les commentaires qui enrichiront la compréhension du match.</p>
<p>Le format de la radio permet également une certaine flexibilité. Vous pouvez écouter notre diffusion en direct tout en vaquant à vos occupations quotidiennes, que ce soit dans la voiture, au travail, ou à la maison. Notre couverture est conçue pour offrir une immersion totale, même sans écran.</p><p class=lien-interne-conseil><strong>À lire aussi</strong> | <a href="https://vibrez-rugby.com/resultats-top-14-le-point-apres-le-week-end-resultats-classement-et-statistiques-2-2-2-2/">Résultats Top 14 &#8211; Le point après le week end ( résultats, classement et statistiques )</a></p>
<h4>Comment suivre Castres &#8211; Toulouse en direct en direct à la radio ?</h4>
<p>Pour suivre le match de rugby en direct avec Castres &#8211; Toulouse en direct, rien de plus simple. Rendez-vous sur notre blog où vous trouverez toutes les informations nécessaires pour accéder à notre diffusion en direct à la radio. Un lecteur audio intégré vous permettra de rester connecté à l’action où que vous soyez.</p>
<p>Avant le coup d’envoi, nous publierons des mises à jour et des informations préalables sur les équipes, les joueurs clés, et les enjeux du match. Consultez ces détails pour une expérience plus riche et interactive. Pendant le match, notre équipe de commentateurs fournira des mises à jour en direct, des analyses de jeu, et des commentaires sur les moments clés, tout en maintenant une interaction avec les auditeurs pour répondre à vos questions et commentaires.</p><p class=lien-interne-conseil><strong>À lire aussi</strong> | <a href="https://vibrez-rugby.com/top-14-le-racing-92-surclasse-le-stade-francais-et-soffre-un-derby-a-sens-unique/">Top 14 : le Racing 92 surclasse le Stade Français et s’offre un derby à sens unique</a></p>
<h4>Les avantages de suivre le rugby en direct à la radio</h4>
<p>Écouter le rugby en direct à la radio présente plusieurs avantages. Premièrement, cela permet une concentration totale sur l’aspect narratif du match, sans les distractions visuelles qui peuvent diminuer l’impact de l’action. La radio stimule l’imagination et l’engagement en permettant de visualiser le jeu dans l’esprit.</p>
<p>Deuxièmement, la diffusion en direct à la radio est souvent plus rapide que les diffusions télévisées, ce qui signifie que les informations sont reçues presque instantanément. Cela est particulièrement utile pour les moments cruciaux du match, où chaque seconde compte.</p><p class=lien-interne-conseil><strong>À lire aussi</strong> | <a href="https://vibrez-rugby.com/christophe-urios-on-a-perdu-pied-parce-quon-narrivait-pas-a-marquer/">Christophe Urios : « On a perdu pied parce qu’on n’arrivait pas à marquer »</a></p>
<p>Enfin, suivre un match en direct à la radio favorise une connexion plus personnelle avec le jeu. Les voix familières qui partagent votre passion pour le rugby rendent chaque essai et victoire encore plus gratifiants.</p>
<h4>Comment interagir pendant la diffusion en direct ?</h4>
<p>Nous encourageons vivement l’interaction pendant notre diffusion en direct. Via notre blog, participez à des discussions en direct, posez des questions à nos commentateurs, et partagez vos propres observations. Cela enrichit non seulement votre expérience, mais aussi celle des autres auditeurs. Votre participation est essentielle pour créer une communauté engagée autour du rugby et de notre couverture en direct.</p><p class=lien-interne-conseil><strong>À lire aussi</strong> | <a href="https://vibrez-rugby.com/sebastien-tillous-borde-on-ne-lache-rien-malgre-la-situation/">Sébastien Tillous-Borde : « On ne lâche rien malgré la situation »</a></p>
<h4>Conclusion</h4>
<p>Ne manquez pas l’opportunité de vivre le rugby comme jamais auparavant avec Castres &#8211; Toulouse en direct en direct à la radio. Grâce à une couverture détaillée, une narration immersive, et une interaction en temps réel, vous serez au cœur de chaque action, essai, et victoire. Visitez notre blog pour obtenir toutes les informations nécessaires et préparez-vous à écouter un match de rugby inoubliable. Avec Castres &#8211; Toulouse en direct, vous vivrez chaque moment du match avec intensité et passion, directement depuis votre source de radio préférée.</p>
<p>Restez connecté, restez engagé, et surtout, profitez de chaque instant de ce match palpitant en direct à la radio.</p><p class=lien-interne-conseil><strong>À lire aussi</strong> | <a href="https://vibrez-rugby.com/xavier-sadourny-on-est-frustre/">Xavier Sadourny : « On est frustré »</a></p>
</div>
<aside class="bloc-conseille bloc-conseille-final"><h3 class=bloc-conseille-titre>Articles les plus populaires :</h3><a class=bloc-conseille-lien href="https://vibrez-rugby.com/resultats-des-barrages-de-federale-3-on-connait-tous-les-qualifies-pour-les-32e-de-finale/"><span class=bloc-conseille-icone>→</span> Résultats des barrages de Fédérale 3 : on connaît tous les qualifiés pour les 32e de finale</a><a class=bloc-conseille-lien href="https://vibrez-rugby.com/pau-sacha-zegueur-prolonge-son-contrat-jusquen-2030/"><span class=bloc-conseille-icone>→</span> Pau : Sacha Zegueur prolonge son contrat jusqu’en 2030</a><a class=bloc-conseille-lien href="https://vibrez-rugby.com/racing-92-patrice-collazo-souligne-les-progres-a-faire-apres-le-derby/"><span class=bloc-conseille-icone>→</span> Racing 92 : Patrice Collazo souligne les progrès à faire après le derby</a></aside> <div id=live-wrapper data-match-id=5592>
<p class=vr-kickoff>Coup d’envoi : 21:00 (heure de Paris)</p> <div id=live-score-bar style="position:sticky;top:0;background:#0d4677;color:#fff;padding:10px 12px;display:flex;align-items:center;gap:12px;z-index:99;font-size:14px;">
<div style="display:flex;align-items:center;gap:8px;min-width:0;">
<img src="https://vibrez-rugby.com/wp-content/uploads/2024/08/big_castres.png" alt="Résultat Castres – Toulouse : 25-42 (Saison 2025-2026)" style="height:22px;width:auto;" data-pagespeed-url-hash=4052207593 onload="pagespeed.CriticalImages.checkImageForCriticality(this);">
<strong style="white-space:nowrap;overflow:hidden;text-overflow:ellipsis;">Castres</strong>
</div>
<div style="margin-left:auto;margin-right:auto;text-align:center;min-width:120px;">
<div style="font-size:18px;font-weight:700;">25 &#8211; 42</div>
<div style="font-size:12px;opacity:.9;">TERMINE (T)</div>
</div>
<div style="display:flex;align-items:center;gap:8px;min-width:0;">
<strong style="white-space:nowrap;overflow:hidden;text-overflow:ellipsis;">Toulouse</strong>
<img src="https://vibrez-rugby.com/wp-content/uploads/2024/08/big_toulouse.png" alt="Résultat Castres – Toulouse : 25-42 (Saison 2025-2026)" style="height:22px;width:auto;" data-pagespeed-url-hash=1143189328 onload="pagespeed.CriticalImages.checkImageForCriticality(this);">
</div>
</div>
<div id=live-timeline style="padding:12px;">
<div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>80</strong> — Fin de la rencontre</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>80</strong> — comment — Toulouse pousse une ultime offensive dans les 22 mètres castrais sous l’impulsion de Dupont, avant que le coup de sifflet final ne vienne entériner au Stade Pierre-Fabre une large victoire bonifiée des Rouge et Noir en déplacement.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>78</strong> — comment — L’arbitre Jérémy Rozier désigne de nouveau la cible aux Toulousains, estimant qu’un joueur de Castres, Pouzelgues, a illégalement ceinturé Ambadiang sur le retour de jeu des Tarnais.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>77</strong> — comment — La victoire toulousaine au Stade Pierre Fabre ne fait désormais plus l’ombre d’un suspense, le bonus offensif en ligne de mire, tandis que la supériorité athlétique des Rouge et Noir écrase le débat et leur permet de contrôler chaque séquence de jeu.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">🏉</span><div><strong>75</strong> — comment — Pouzelgues déborde sur l’aile, va aplatir le sixième essai offrant le bonus offensif aux Stadistes à ce moment-là, puis Ntamack ajoute les deux points au pied.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>73</strong> — Transformation : Ntamack</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>73</strong> — Remplacement : Florent Vanverberghe</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>73</strong> — comment — Le Stade Toulousain campe désormais près de l’en-but castrais, enchaîne les prises de terrain et met une arrière-garde tarnaise de plus en plus à bout de souffle.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">🏉</span><div><strong>72</strong> — Essai : Pouzelgues</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>72</strong> — comment — Fernandez fait son entrée à la place d’Arata côté castrais, puis Remue transperce la défense sur une course décisive avant qu’Hervé, chargé de éloigner le danger, ne voie sa tentative de dégagement stoppée.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>70</strong> — comment — Bertrand déborde le long de la ligne, conclut en puissance après un relais gagnant de ses partenaires toulousains, puis Romain Ntamack ajoute les points au pied.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>69</strong> — Transformation : Ntamack</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>69</strong> — Remplacement : Santiago Arata</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">🏉</span><div><strong>68</strong> — Essai : Bertrand</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">🏉</span><div><strong>68</strong> — comment — Dans un Stade Pierre-Fabre où l’écart reste infime entre les deux camps et où le suspense ne faiblit pas, une pénalité toulousaine relance le jeu vers les extérieurs avec Dupont qui écarte, Costes qui décale Chocobares et Flament qui semble filer seul à l’essai avant de laisser échapper la balle tout près de la ligne.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>67</strong> — Remplacement : Baptiste Delaporte</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">🎯</span><div><strong>66</strong> — comment — Pour Toulouse, Brennan a cédé sa place à Bonnard Martin, lequel se fait ensuite reprendre par l’arbitre Jérémy Rozier pour une entrée illicite sur le côté, offrant à Hervé l’occasion de tenter puis de réussir la pénalité en faveur de Castres.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">🎯</span><div><strong>65</strong> — Pénalité : Herve</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>62</strong> — comment — Théo Ntamack surgit en troisième rideau pour aplatir derrière un regroupement en exploitant un infime intervalle, avant que Cramont, au poste de talonneur, ne reproduise le même scénario en puissance en se faufilant lui aussi dans la minuscule brèche au ras du ruck.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>61</strong> — Transformation : Ntamack</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>61</strong> — comment — Sur une intervention litigieuse d’Arata sur Chocobares, d’abord jugée licite par Jérémy Rozier avant d’être requalifiée en avertissement temporaire après échange avec la vidéo, Maravat fait ensuite son entrée en lieu et place de Ducat pour Castres.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">🏉</span><div><strong>60</strong> — Essai : Cramont</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>60</strong> — comment — On vient de basculer dans le dernier tiers de la rencontre au Stade Pierre-Fabre, et dans cette affiche fidèle aux attentes, Toulouse, installé aux abords du centre du terrain, écarte largement le ballon pour tenter de déborder la défense.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>59</strong> — Remplacement : Guillaume Ducat</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">🎯</span><div><strong>59</strong> — comment — Sur une mêlée sanctionnée en faveur de Castres, Hervé ajuste la pénalité depuis les 22 mètres côté droit, puis Chabouni fait son entrée à la place de Vargas pour le CO.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">🟨</span><div><strong>58</strong> — Carton : Arata</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">🎯</span><div><strong>57</strong> — Pénalité : Herve</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>57</strong> — Remplacement : Adam Vargas</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>57</strong> — comment — Pour le Stade Toulousain, Graou a quitté l’aire de jeu et laissé sa place à Dupont.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>56</strong> — comment — Sur une fulgurance de Pouzelgues relayée par Bertrand, Chocobares conclut en coin une action renversée avant que Romain Ntamack n’ajuste calmement la tentative au pied.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>54</strong> — Transformation : Ntamack</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">🏉</span><div><strong>54</strong> — Essai : Chocobares</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>54</strong> — comment — Toulouse fait entrer Flament, Théo Ntamack et Pouzelgues à la place d’Elias, Banos et Kinghorn, tandis que Castres procède ensuite au changement de Ramototabua, relayé par Cope.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>53</strong> — comment — Hervé choisit une longue ouverture au pied tandis que Ntamack opte pour une relance portée à la main, et depuis la reprise, les duels au contact se multiplient dans un combat rugueux.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>52</strong> — Remplacement : Leo Banos</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>52</strong> — Remplacement : Veresa Ramototabua</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>52</strong> — Remplacement : Efrain Elias</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>52</strong> — comment — Pour Castres, Walcker a quitté la pelouse, laissant sa place à Guérois-Galisson.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>51</strong> — comment — Sur une percée de Meafou dans sa moitié de terrain, Ramototabua se jette au sol pour récupérer la possession et déclencher un long contre depuis les trente mètres tarnais, avant qu’une séquence très rude ne laisse Banos et Vargas éprouvés et n’entraîne la sortie de Baille, Marchand et Mallez, relayés côté toulousain par Bertrand, Cramont et Ainuu.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">🎯</span><div><strong>50</strong> — comment — Sur l’action précédente, Mallez reste au sol après un déblayage très limite de Vanverberghe, sanctionné pour une prise type crocodile qui offre une pénalité aux Toulousains et lui vaut un avertissement temporaire, avant que Collier ne fasse ensuite son entrée à la place de Corato pour le CO.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>48</strong> — comment — Interrogé au bord du terrain, Ugo Mola souligne que l’intensité mise d’entrée par son équipe a payé sur le premier segment du match, qu’ils ont ensuite permis à l’adversaire de se relancer, et il mise désormais sur l’impact de ses remplaçants pour inverser de nouveau la dynamique.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>47</strong> — Remplacement : Nicolas Corato</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>47</strong> — comment — Roumat domine dans les airs mais la liaison entre Graou et Marchand se dérègle, offrant une mêlée fermée au CO, puis Hervé lit la situation et choisit un long jeu au pied vers les trente-cinq mètres toulousains pour installer son équipe dans le camp adverse.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">🟨</span><div><strong>46</strong> — Carton : Vanverberghe</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>45</strong> — comment — Elias subtilise le cuir en touche mais Toulouse le perd aussitôt au sol, offrant à Castres une séquence d’attaque plein axe, avant que le retour de Baille ne rétablisse l’égalité numérique et que Ntamack n’expédie le jeu en touche au niveau de la médiane.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>41</strong> — Remplacement : Vilimoni Botitu</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>41</strong> — Remplacement : Theo Ntamack</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">🎯</span><div><strong>40</strong> — comment — (40+1) Le premier acte se conclut au Stade Pierre-Fabre avec les Tarnais devant leurs voisins haut-garonnais, et dans la foulée, les locaux obtiennent une pénalité pour une ultime offensive tandis que Banos cède sa place à Théo Ntamack.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>40</strong> — comment — (40+2) Le duel a repris au Stade Pierre Fabre entre Castres et Toulouse, où Meafou s’empare du ballon pour une fulgurance vers l’avant, Palis se saisit de la chandelle et Cocagi fait son entrée à la place de Botitu côté castrais.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>40</strong> — comment — (40+3) Toulouse parvient à se dégager proprement, mais la tentative de coup de pied de Graou file droit en dehors des limites du terrain.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>40</strong> — comment — Mi-temps (19 &#8211; 14).</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>39</strong> — comment — Palis conclut la séquence en force après un ballon arraché au sol et un crochet gagnant sur Banos, mais Hervé ne parvient pas ensuite à ajuster son tir face aux perches.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>38</strong> — comment — Portés par une dynamique totale, les joueurs de Castres voient Ardron échouer tout près de l’en-but avant qu’une indiscipline flagrante de Baille ne lui vaille un avertissement temporaire, et, en double infériorité numérique côté toulousain, les Tarnais optent sans surprise pour une mêlée ordonnée où Bertrand fait son entrée à la place de Delibes pour ce bras de fer.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">🏉</span><div><strong>36</strong> — Essai : Palis</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>36</strong> — comment — Hervé ajoute les points au pied, et tandis que les deux camps se retrouvent désormais à égalité après avoir tour à tour imposé leur tempo, le coup de pied de renvoi de Ntamack est capté dans les hauteurs par Vanverberghe.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">🟨</span><div><strong>35</strong> — Carton : Baille</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>34</strong> — Transformation : Herve</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>34</strong> — comment — Sous une pression constante dans les 22 toulousains, les avants castrais enchaînent les fautes sifflées en leur faveur, choisissent la touche plutôt que les points, lancent une combinaison rapide vers Arata dans l’axe et permettent à Ducat de filer conclure en force sous les poteaux.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">🏉</span><div><strong>33</strong> — Essai : Ducat</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>32</strong> — comment — Tout proche de son en-but, Kinghorn vient subtiliser la munition à Goodhue sur le contest avant que Graou ne repousse le danger, puis, plus loin, Botitu stabilise le jeu sur l’extérieur malgré une transmission hasardeuse, permettant à Vargas de tenter une initiative et à Ambadiang de replier sa course aux abords des quarante mètres des Stadistes.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">🎯</span><div><strong>30</strong> — comment — Sur un maul bien organisé qui offre une pénalité en cours aux Tarnais, l’offensive est finalement stoppée et Elias est sanctionné d’un avertissement jaune pour Toulouse.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">🟨</span><div><strong>29</strong> — Carton : Elias</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">🟨</span><div><strong>29</strong> — comment — L’arbitre prévient Baille qu’au moindre nouveau geste litigieux, il devra quitter le terrain temporairement avec un carton jaune.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">🎯</span><div><strong>28</strong> — comment — Castres opte pour la touche pénalité, Ducat capte le renvoi, Ramototabua est trouvé à deux reprises et conclut en puissance avant que l’arbitre Jérémy Rozier, après recours à la vidéo pour un possible en-avant initial, n’invalide la réalisation, puis Palis vient créer le décalage sur l’extérieur, permet aux Tarnais de camper durablement dans le camp stadiste et Ardron, en relais, envoie Vargas franchir la ligne des vingt-deux mètres.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">🎯</span><div><strong>27</strong> — comment — Sur une pénalité jouée en touche, Ducat capte le renvoi, Ramototabua est servi à deux reprises et conclut en puissance avant que la vidéo ne signale un possible en-avant qui pousse l’arbitre Jérémy Rozier à annuler la réalisation, les Tarnais récupérant tout de même une pénalité qu’ils choisissent de négocier à la main, sans que Durand ne parvienne à aplatir grâce à une défense toulousaine héroïque sur sa ligne qui finit par récupérer la possession.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">🎯</span><div><strong>26</strong> — comment — Castres opte pour la touche sur pénalité, Ducat domine l’alignement et, au terme d’un mouvement porté où Ramototabua est servi à deux reprises, le troisième ligne finit par aplatir en puissance derrière la ligne.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">🎯</span><div><strong>25</strong> — comment — Le début tourne à l’avertissement pour les Tarnais, l’arbitre Jérémy Rozier rappelant fermement les deux premières lignes à l’ordre avant de brandir la menace disciplinaire, puis sur le long coup de pied d’Hervé qui lance un duel d’occupation, Kinghorn s’impose avec autorité dans les airs et, après l’isolement de Costes, le ballon échappé offre une pénalité aux Castrais.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>23</strong> — comment — Dominateurs dans les zones de contact, les visiteurs butent pourtant sur un énorme travail de Marchand, impeccable au grattage dans ses 30 mètres pour provoquer une nouvelle sanction, avant que Costes ne se défasse du premier plaquage, que Delibes ne surgisse plein fer sur le renversement et frôle la brèche dans la défense locale, puis que Roumat, en soutien, ne fasse vivre le mouvement avant de laisser échapper la balle en pleine accélération.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>21</strong> — comment — Hervé ajoute les points au pied après avoir aplati sous les montants, et dans la foulée, des Castrais plus entreprenants depuis un moment voient Arata lever un ballon haut que Vanverberghe maîtrise avant que les Tarnais ne relancent près de la ligne médiane.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>19</strong> — comment — Sur une remise en jeu, Durand combine avec Delaporte le long de la ligne avant qu’Ambadiang ne longe le couloir et ne menace la zone d’en-but, puis, dans la continuité de cette séquence patiemment construite par les Tarnais pour aspirer la défense, Hervé exploite une brèche, résiste au retour de deux défenseurs toulousains et conclut sous les poteaux.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>18</strong> — Transformation : Herve</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">🏉</span><div><strong>17</strong> — Essai : Herve</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>17</strong> — comment — Sur une conquête aérienne de Roumat, le pack toulousain organise un groupé pénétrant avant qu’un coup de pied de Ntamack, mal exploité, ne rende finalement la munition aux Castrais, Remue lançant alors la contre-attaque depuis son propre camp, puis, un peu plus tard, une perte de balle des Stadistes permet à Botitu de s’engouffrer plein champ et à Hervé de tenter d’en profiter au pied, sans débouché concret, ce qui ramène l’arbitre à sanctionner un hors-jeu au ras du regroupement contre Toulouse.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>15</strong> — comment — Sous pression sur leur introduction, les joueurs d’Ugo Mola font plier le pack adverse et récoltent une sanction en leur faveur, avant que Marchand ne trouve Banos tout au bout de la touche, où l’intervention irrégulière de Walcker sur le porteur de sauts offre à Ntamack l’occasion de renvoyer les siens occuper de nouveau le terrain du CO au pied.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>13</strong> — comment — Pour Toulouse, Pouzelgues quitte l’aire de jeu et laisse sa place à Kinghorn, qui fait ainsi son retour.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">🎯</span><div><strong>12</strong> — comment — Sur une pénalité rapidement exploitée par Castres, Toulouse tarde à se replacer et l’arbitre Jérémy Rozier laisse les Tarnais progresser jusqu’aux abords des 22 mètres, avant qu’Ambadiang, d’abord redoutable dans l’affrontement et servi près de l’en-but, ne laisse échapper la balle sur l’ultime percussion, puis que Delibes, sur le contre suivant, ne parvienne pas à concrétiser une relance très ambitieuse.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">🎯</span><div><strong>11</strong> — comment — Sur une pénalité rapidement exploitée par le CO, les joueurs de Toulouse restent statiques au lieu de reculer, l’arbitre Jérémy Rozier laisse filer le mouvement et les Castrais déboulent aux abords des 22 mètres.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>10</strong> — comment — Sur un renvoi mal maîtrisé par les Toulousains, Castres récupère enfin le cuir et Durand s’engouffre dans l’intervalle, mais Marchand, impeccable en défense, obtient la sanction avant que, quelques instants plus tard, l’alignement des Stadistes ne se dérègle, Delaporte se jette sur le sol sans sécuriser la prise et offre une mêlée aux visiteurs aux abords de leurs quarante mètres.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>8</strong> — comment — Sur une mêlée outrageusement dominée par Toulouse, le cuir est vite écarté vers l’autre côté du terrain où Ntamack, d’un coup de pied millimétré vers l’intérieur, trouve Delibes qui sert Remue pour aplatir avant que l’ouvreur ne fasse passer la transformation entre les perches.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>6</strong> — Transformation : Ntamack</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>6</strong> — comment — Sur un long coup de pied de Graou capté par Banos, le jeu toulousain se déploie immédiatement vers les ailes avec une succession de passes propres qui ouvre une brèche pour la course de Ntamack dans les 22 mètres, avant que le rythme imposé par les Haut-Garonnais ne soit interrompu lorsque la tentative de Delibes de trouver Costes à son niveau est annulée pour un en-avant commis par les locaux au départ de l’enchaînement.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>6</strong> — comment — Touché et contraint de sortir en raison d’une coupure, Kinghorn laisse momentanément sa place à Pouzelgues.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">🏉</span><div><strong>5</strong> — Essai : Remue</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>4</strong> — comment — Au terme d’une longue séquence offensive où Delibes est finalement bloqué tout près de l’en-but, Ntamack ouvre parfaitement pour Banos qui aplatit, puis le demi d’ouverture transforme sans trembler plein axe.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">🏉</span><div><strong>4</strong> — comment — Sur l’action qui conduit à l’essai, Jérémy Rozier sollicite l’assistance de la vidéo et, pour un geste jugé irrégulier, Botitu est finalement sanctionné d’un avertissement temporaire.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">🟨</span><div><strong>3</strong> — Carton : Botitu</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>2</strong> — Transformation : Ntamack</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">🏉</span><div><strong>2</strong> — Essai : Banos</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>2</strong> — comment — Le duel s’engage au stade Pierre-Fabre entre Castres et Toulouse, et sur la remise en jeu initiale sanctionnée contre Corato, les visiteurs choisissent la touche pénale pour lancer une large séquence de passes que la défense tarnaise parvient néanmoins à contenir.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>1</strong> — comment — Bienvenue sur Vibrez Rugby pour suivre le match Castres &#8211; Toulouse commenté !&lt;br&gt;
• Zappez entre les radios suggérées qui pourraient diffuser le match&lt;br&gt;
• Consultez les stats dans l&#039;onglet &quot;Face à face&quot;&lt;br&gt;
• Découvrez les compos dans l&#039;onglet &quot;Compositions&quot;&lt;br&gt;
Bon match à tous !</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>0</strong> — Début de la rencontre</div></div> </div>
<div id=live-lineups style="padding:12px;">
<h2 style="margin:10px 0 6px;">Compositions</h2>
<div style="display:grid;grid-template-columns:1fr 1fr;gap:16px;">
<div>
<h3 style="margin:6px 0;">Castres</h3>
<ol style="margin:0;padding-left:18px;">
<li>15. Geoffrey Palis</li>
<li>14. Christian Ambadiang</li>
<li>13. Vilimoni Botitu</li>
<li>12. Jack Goodhue</li>
<li>11. Adam Vargas</li>
<li>10. Enzo Hervé</li>
<li>9. Santiago Arata</li>
<li>8. Tyler Ardron</li>
<li>7. Veresa Tuqovu Ramototabua</li>
<li>6. Baptiste Delaporte</li>
<li>5. Florent Vanverberghe</li>
<li>4. Guillaume Ducat</li>
<li>3. Nicolas Corato</li>
<li>2. Teddy Durand</li>
<li>1. Quentin Walcker</li>
<li>23. Will Collier</li>
<li>22. Théo Chabouni</li>
<li>21. Adrea Cocagi</li>
<li>20. Jérémy Fernandez</li>
<li>19. Baptiste Cope</li>
<li>18. Gauthier Maravat</li>
<li>17. Loîs Guérois-Galisson</li>
<li>16. Pierre Colonna</li>
</ol>
</div>
<div>
<h3 style="margin:6px 0;">Toulouse</h3>
<ol style="margin:0;padding-left:18px;">
<li>15. Matias Remue</li>
<li>14. Blair Kinghorn</li>
<li>13. Paul Costes</li>
<li>12. Santiago Chocobares</li>
<li>11. Dimitri Delibes</li>
<li>10. Romain Ntamack</li>
<li>9. Paul Graou</li>
<li>8. Alexandre Roumat</li>
<li>7. Joshua Brennan</li>
<li>6. Léo Banos</li>
<li>5. Emmanuel Meafou</li>
<li>4. Efrain Elias</li>
<li>3. Paul Mallez</li>
<li>2. Julien Marchand</li>
<li>1. Cyril Baille</li>
<li>23. David Ainu&#039;u</li>
<li>22. Célian Pouzelgues</li>
<li>21. Antoine Dupont</li>
<li>20. Théo Ntamack</li>
<li>19. Roméo Bonnard-Martin</li>
<li>18. Thibaud Flament</li>
<li>17. Benjamin Bertrand</li>
<li>16. Guillaume Cramont</li>
</ol>
</div>
</div>
</div>
<div id=live-stats style="padding:12px;">
<h2 style="margin:10px 0 6px;">Stats clés</h2>
<div style="overflow:auto;">
<table style="width:100%;border-collapse:collapse;font-size:14px;">
<thead>
<tr style="background:#f7f7f7">
<th style="text-align:left;padding:8px;">Castres</th>
<th style="text-align:center;padding:8px;">Stat</th>
<th style="text-align:right;padding:8px;">Toulouse</th>
</tr>
</thead>
<tbody>
<tr>
<td style="padding:6px;border-top:1px solid #eee;">0</td>
<td style="padding:6px;border-top:1px solid #eee;text-align:center;">Essais</td>
<td style="padding:6px;border-top:1px solid #eee;text-align:right;">0</td>
</tr>
<tr>
<td style="padding:6px;border-top:1px solid #eee;">0</td>
<td style="padding:6px;border-top:1px solid #eee;text-align:center;">Pénalités</td>
<td style="padding:6px;border-top:1px solid #eee;text-align:right;">0</td>
</tr>
<tr>
<td style="padding:6px;border-top:1px solid #eee;">0</td>
<td style="padding:6px;border-top:1px solid #eee;text-align:center;">Transformations</td>
<td style="padding:6px;border-top:1px solid #eee;text-align:right;">0</td>
</tr>
<tr>
<td style="padding:6px;border-top:1px solid #eee;">0</td>
<td style="padding:6px;border-top:1px solid #eee;text-align:center;">Drops</td>
<td style="padding:6px;border-top:1px solid #eee;text-align:right;">0</td>
</tr>
<tr>
<td style="padding:6px;border-top:1px solid #eee;">0</td>
<td style="padding:6px;border-top:1px solid #eee;text-align:center;">Cartons jaunes</td>
<td style="padding:6px;border-top:1px solid #eee;text-align:right;">0</td>
</tr>
<tr>
<td style="padding:6px;border-top:1px solid #eee;">0</td>
<td style="padding:6px;border-top:1px solid #eee;text-align:center;">Cartons rouges</td>
<td style="padding:6px;border-top:1px solid #eee;text-align:right;">0</td>
</tr>
</tbody>
</table>
</div>
</div>
<div id=live-timeline-bottom style="padding:12px;">
<div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>80</strong> — Fin de la rencontre</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>80</strong> — comment — Toulouse pousse une ultime offensive dans les 22 mètres castrais sous l’impulsion de Dupont, avant que le coup de sifflet final ne vienne entériner au Stade Pierre-Fabre une large victoire bonifiée des Rouge et Noir en déplacement.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>78</strong> — comment — L’arbitre Jérémy Rozier désigne de nouveau la cible aux Toulousains, estimant qu’un joueur de Castres, Pouzelgues, a illégalement ceinturé Ambadiang sur le retour de jeu des Tarnais.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>77</strong> — comment — La victoire toulousaine au Stade Pierre Fabre ne fait désormais plus l’ombre d’un suspense, le bonus offensif en ligne de mire, tandis que la supériorité athlétique des Rouge et Noir écrase le débat et leur permet de contrôler chaque séquence de jeu.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">🏉</span><div><strong>75</strong> — comment — Pouzelgues déborde sur l’aile, va aplatir le sixième essai offrant le bonus offensif aux Stadistes à ce moment-là, puis Ntamack ajoute les deux points au pied.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>73</strong> — Transformation : Ntamack</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>73</strong> — Remplacement : Florent Vanverberghe</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>73</strong> — comment — Le Stade Toulousain campe désormais près de l’en-but castrais, enchaîne les prises de terrain et met une arrière-garde tarnaise de plus en plus à bout de souffle.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">🏉</span><div><strong>72</strong> — Essai : Pouzelgues</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>72</strong> — comment — Fernandez fait son entrée à la place d’Arata côté castrais, puis Remue transperce la défense sur une course décisive avant qu’Hervé, chargé de éloigner le danger, ne voie sa tentative de dégagement stoppée.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>70</strong> — comment — Bertrand déborde le long de la ligne, conclut en puissance après un relais gagnant de ses partenaires toulousains, puis Romain Ntamack ajoute les points au pied.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>69</strong> — Transformation : Ntamack</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>69</strong> — Remplacement : Santiago Arata</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">🏉</span><div><strong>68</strong> — Essai : Bertrand</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">🏉</span><div><strong>68</strong> — comment — Dans un Stade Pierre-Fabre où l’écart reste infime entre les deux camps et où le suspense ne faiblit pas, une pénalité toulousaine relance le jeu vers les extérieurs avec Dupont qui écarte, Costes qui décale Chocobares et Flament qui semble filer seul à l’essai avant de laisser échapper la balle tout près de la ligne.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>67</strong> — Remplacement : Baptiste Delaporte</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">🎯</span><div><strong>66</strong> — comment — Pour Toulouse, Brennan a cédé sa place à Bonnard Martin, lequel se fait ensuite reprendre par l’arbitre Jérémy Rozier pour une entrée illicite sur le côté, offrant à Hervé l’occasion de tenter puis de réussir la pénalité en faveur de Castres.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">🎯</span><div><strong>65</strong> — Pénalité : Herve</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>62</strong> — comment — Théo Ntamack surgit en troisième rideau pour aplatir derrière un regroupement en exploitant un infime intervalle, avant que Cramont, au poste de talonneur, ne reproduise le même scénario en puissance en se faufilant lui aussi dans la minuscule brèche au ras du ruck.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>61</strong> — Transformation : Ntamack</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>61</strong> — comment — Sur une intervention litigieuse d’Arata sur Chocobares, d’abord jugée licite par Jérémy Rozier avant d’être requalifiée en avertissement temporaire après échange avec la vidéo, Maravat fait ensuite son entrée en lieu et place de Ducat pour Castres.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">🏉</span><div><strong>60</strong> — Essai : Cramont</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>60</strong> — comment — On vient de basculer dans le dernier tiers de la rencontre au Stade Pierre-Fabre, et dans cette affiche fidèle aux attentes, Toulouse, installé aux abords du centre du terrain, écarte largement le ballon pour tenter de déborder la défense.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>59</strong> — Remplacement : Guillaume Ducat</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">🎯</span><div><strong>59</strong> — comment — Sur une mêlée sanctionnée en faveur de Castres, Hervé ajuste la pénalité depuis les 22 mètres côté droit, puis Chabouni fait son entrée à la place de Vargas pour le CO.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">🟨</span><div><strong>58</strong> — Carton : Arata</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">🎯</span><div><strong>57</strong> — Pénalité : Herve</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>57</strong> — Remplacement : Adam Vargas</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>57</strong> — comment — Pour le Stade Toulousain, Graou a quitté l’aire de jeu et laissé sa place à Dupont.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>56</strong> — comment — Sur une fulgurance de Pouzelgues relayée par Bertrand, Chocobares conclut en coin une action renversée avant que Romain Ntamack n’ajuste calmement la tentative au pied.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>54</strong> — Transformation : Ntamack</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">🏉</span><div><strong>54</strong> — Essai : Chocobares</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>54</strong> — comment — Toulouse fait entrer Flament, Théo Ntamack et Pouzelgues à la place d’Elias, Banos et Kinghorn, tandis que Castres procède ensuite au changement de Ramototabua, relayé par Cope.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>53</strong> — comment — Hervé choisit une longue ouverture au pied tandis que Ntamack opte pour une relance portée à la main, et depuis la reprise, les duels au contact se multiplient dans un combat rugueux.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>52</strong> — Remplacement : Leo Banos</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>52</strong> — Remplacement : Veresa Ramototabua</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>52</strong> — Remplacement : Efrain Elias</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>52</strong> — comment — Pour Castres, Walcker a quitté la pelouse, laissant sa place à Guérois-Galisson.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>51</strong> — comment — Sur une percée de Meafou dans sa moitié de terrain, Ramototabua se jette au sol pour récupérer la possession et déclencher un long contre depuis les trente mètres tarnais, avant qu’une séquence très rude ne laisse Banos et Vargas éprouvés et n’entraîne la sortie de Baille, Marchand et Mallez, relayés côté toulousain par Bertrand, Cramont et Ainuu.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">🎯</span><div><strong>50</strong> — comment — Sur l’action précédente, Mallez reste au sol après un déblayage très limite de Vanverberghe, sanctionné pour une prise type crocodile qui offre une pénalité aux Toulousains et lui vaut un avertissement temporaire, avant que Collier ne fasse ensuite son entrée à la place de Corato pour le CO.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>48</strong> — comment — Interrogé au bord du terrain, Ugo Mola souligne que l’intensité mise d’entrée par son équipe a payé sur le premier segment du match, qu’ils ont ensuite permis à l’adversaire de se relancer, et il mise désormais sur l’impact de ses remplaçants pour inverser de nouveau la dynamique.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>47</strong> — Remplacement : Nicolas Corato</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>47</strong> — comment — Roumat domine dans les airs mais la liaison entre Graou et Marchand se dérègle, offrant une mêlée fermée au CO, puis Hervé lit la situation et choisit un long jeu au pied vers les trente-cinq mètres toulousains pour installer son équipe dans le camp adverse.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">🟨</span><div><strong>46</strong> — Carton : Vanverberghe</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>45</strong> — comment — Elias subtilise le cuir en touche mais Toulouse le perd aussitôt au sol, offrant à Castres une séquence d’attaque plein axe, avant que le retour de Baille ne rétablisse l’égalité numérique et que Ntamack n’expédie le jeu en touche au niveau de la médiane.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>41</strong> — Remplacement : Vilimoni Botitu</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>41</strong> — Remplacement : Theo Ntamack</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">🎯</span><div><strong>40</strong> — comment — (40+1) Le premier acte se conclut au Stade Pierre-Fabre avec les Tarnais devant leurs voisins haut-garonnais, et dans la foulée, les locaux obtiennent une pénalité pour une ultime offensive tandis que Banos cède sa place à Théo Ntamack.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>40</strong> — comment — (40+2) Le duel a repris au Stade Pierre Fabre entre Castres et Toulouse, où Meafou s’empare du ballon pour une fulgurance vers l’avant, Palis se saisit de la chandelle et Cocagi fait son entrée à la place de Botitu côté castrais.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>40</strong> — comment — (40+3) Toulouse parvient à se dégager proprement, mais la tentative de coup de pied de Graou file droit en dehors des limites du terrain.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>40</strong> — comment — Mi-temps (19 &#8211; 14).</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>39</strong> — comment — Palis conclut la séquence en force après un ballon arraché au sol et un crochet gagnant sur Banos, mais Hervé ne parvient pas ensuite à ajuster son tir face aux perches.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>38</strong> — comment — Portés par une dynamique totale, les joueurs de Castres voient Ardron échouer tout près de l’en-but avant qu’une indiscipline flagrante de Baille ne lui vaille un avertissement temporaire, et, en double infériorité numérique côté toulousain, les Tarnais optent sans surprise pour une mêlée ordonnée où Bertrand fait son entrée à la place de Delibes pour ce bras de fer.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">🏉</span><div><strong>36</strong> — Essai : Palis</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>36</strong> — comment — Hervé ajoute les points au pied, et tandis que les deux camps se retrouvent désormais à égalité après avoir tour à tour imposé leur tempo, le coup de pied de renvoi de Ntamack est capté dans les hauteurs par Vanverberghe.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">🟨</span><div><strong>35</strong> — Carton : Baille</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>34</strong> — Transformation : Herve</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>34</strong> — comment — Sous une pression constante dans les 22 toulousains, les avants castrais enchaînent les fautes sifflées en leur faveur, choisissent la touche plutôt que les points, lancent une combinaison rapide vers Arata dans l’axe et permettent à Ducat de filer conclure en force sous les poteaux.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">🏉</span><div><strong>33</strong> — Essai : Ducat</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>32</strong> — comment — Tout proche de son en-but, Kinghorn vient subtiliser la munition à Goodhue sur le contest avant que Graou ne repousse le danger, puis, plus loin, Botitu stabilise le jeu sur l’extérieur malgré une transmission hasardeuse, permettant à Vargas de tenter une initiative et à Ambadiang de replier sa course aux abords des quarante mètres des Stadistes.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">🎯</span><div><strong>30</strong> — comment — Sur un maul bien organisé qui offre une pénalité en cours aux Tarnais, l’offensive est finalement stoppée et Elias est sanctionné d’un avertissement jaune pour Toulouse.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">🟨</span><div><strong>29</strong> — Carton : Elias</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">🟨</span><div><strong>29</strong> — comment — L’arbitre prévient Baille qu’au moindre nouveau geste litigieux, il devra quitter le terrain temporairement avec un carton jaune.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">🎯</span><div><strong>28</strong> — comment — Castres opte pour la touche pénalité, Ducat capte le renvoi, Ramototabua est trouvé à deux reprises et conclut en puissance avant que l’arbitre Jérémy Rozier, après recours à la vidéo pour un possible en-avant initial, n’invalide la réalisation, puis Palis vient créer le décalage sur l’extérieur, permet aux Tarnais de camper durablement dans le camp stadiste et Ardron, en relais, envoie Vargas franchir la ligne des vingt-deux mètres.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">🎯</span><div><strong>27</strong> — comment — Sur une pénalité jouée en touche, Ducat capte le renvoi, Ramototabua est servi à deux reprises et conclut en puissance avant que la vidéo ne signale un possible en-avant qui pousse l’arbitre Jérémy Rozier à annuler la réalisation, les Tarnais récupérant tout de même une pénalité qu’ils choisissent de négocier à la main, sans que Durand ne parvienne à aplatir grâce à une défense toulousaine héroïque sur sa ligne qui finit par récupérer la possession.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">🎯</span><div><strong>26</strong> — comment — Castres opte pour la touche sur pénalité, Ducat domine l’alignement et, au terme d’un mouvement porté où Ramototabua est servi à deux reprises, le troisième ligne finit par aplatir en puissance derrière la ligne.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">🎯</span><div><strong>25</strong> — comment — Le début tourne à l’avertissement pour les Tarnais, l’arbitre Jérémy Rozier rappelant fermement les deux premières lignes à l’ordre avant de brandir la menace disciplinaire, puis sur le long coup de pied d’Hervé qui lance un duel d’occupation, Kinghorn s’impose avec autorité dans les airs et, après l’isolement de Costes, le ballon échappé offre une pénalité aux Castrais.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>23</strong> — comment — Dominateurs dans les zones de contact, les visiteurs butent pourtant sur un énorme travail de Marchand, impeccable au grattage dans ses 30 mètres pour provoquer une nouvelle sanction, avant que Costes ne se défasse du premier plaquage, que Delibes ne surgisse plein fer sur le renversement et frôle la brèche dans la défense locale, puis que Roumat, en soutien, ne fasse vivre le mouvement avant de laisser échapper la balle en pleine accélération.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>21</strong> — comment — Hervé ajoute les points au pied après avoir aplati sous les montants, et dans la foulée, des Castrais plus entreprenants depuis un moment voient Arata lever un ballon haut que Vanverberghe maîtrise avant que les Tarnais ne relancent près de la ligne médiane.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>19</strong> — comment — Sur une remise en jeu, Durand combine avec Delaporte le long de la ligne avant qu’Ambadiang ne longe le couloir et ne menace la zone d’en-but, puis, dans la continuité de cette séquence patiemment construite par les Tarnais pour aspirer la défense, Hervé exploite une brèche, résiste au retour de deux défenseurs toulousains et conclut sous les poteaux.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>18</strong> — Transformation : Herve</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">🏉</span><div><strong>17</strong> — Essai : Herve</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>17</strong> — comment — Sur une conquête aérienne de Roumat, le pack toulousain organise un groupé pénétrant avant qu’un coup de pied de Ntamack, mal exploité, ne rende finalement la munition aux Castrais, Remue lançant alors la contre-attaque depuis son propre camp, puis, un peu plus tard, une perte de balle des Stadistes permet à Botitu de s’engouffrer plein champ et à Hervé de tenter d’en profiter au pied, sans débouché concret, ce qui ramène l’arbitre à sanctionner un hors-jeu au ras du regroupement contre Toulouse.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>15</strong> — comment — Sous pression sur leur introduction, les joueurs d’Ugo Mola font plier le pack adverse et récoltent une sanction en leur faveur, avant que Marchand ne trouve Banos tout au bout de la touche, où l’intervention irrégulière de Walcker sur le porteur de sauts offre à Ntamack l’occasion de renvoyer les siens occuper de nouveau le terrain du CO au pied.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>13</strong> — comment — Pour Toulouse, Pouzelgues quitte l’aire de jeu et laisse sa place à Kinghorn, qui fait ainsi son retour.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">🎯</span><div><strong>12</strong> — comment — Sur une pénalité rapidement exploitée par Castres, Toulouse tarde à se replacer et l’arbitre Jérémy Rozier laisse les Tarnais progresser jusqu’aux abords des 22 mètres, avant qu’Ambadiang, d’abord redoutable dans l’affrontement et servi près de l’en-but, ne laisse échapper la balle sur l’ultime percussion, puis que Delibes, sur le contre suivant, ne parvienne pas à concrétiser une relance très ambitieuse.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">🎯</span><div><strong>11</strong> — comment — Sur une pénalité rapidement exploitée par le CO, les joueurs de Toulouse restent statiques au lieu de reculer, l’arbitre Jérémy Rozier laisse filer le mouvement et les Castrais déboulent aux abords des 22 mètres.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>10</strong> — comment — Sur un renvoi mal maîtrisé par les Toulousains, Castres récupère enfin le cuir et Durand s’engouffre dans l’intervalle, mais Marchand, impeccable en défense, obtient la sanction avant que, quelques instants plus tard, l’alignement des Stadistes ne se dérègle, Delaporte se jette sur le sol sans sécuriser la prise et offre une mêlée aux visiteurs aux abords de leurs quarante mètres.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>8</strong> — comment — Sur une mêlée outrageusement dominée par Toulouse, le cuir est vite écarté vers l’autre côté du terrain où Ntamack, d’un coup de pied millimétré vers l’intérieur, trouve Delibes qui sert Remue pour aplatir avant que l’ouvreur ne fasse passer la transformation entre les perches.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>6</strong> — Transformation : Ntamack</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>6</strong> — comment — Sur un long coup de pied de Graou capté par Banos, le jeu toulousain se déploie immédiatement vers les ailes avec une succession de passes propres qui ouvre une brèche pour la course de Ntamack dans les 22 mètres, avant que le rythme imposé par les Haut-Garonnais ne soit interrompu lorsque la tentative de Delibes de trouver Costes à son niveau est annulée pour un en-avant commis par les locaux au départ de l’enchaînement.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>6</strong> — comment — Touché et contraint de sortir en raison d’une coupure, Kinghorn laisse momentanément sa place à Pouzelgues.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">🏉</span><div><strong>5</strong> — Essai : Remue</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>4</strong> — comment — Au terme d’une longue séquence offensive où Delibes est finalement bloqué tout près de l’en-but, Ntamack ouvre parfaitement pour Banos qui aplatit, puis le demi d’ouverture transforme sans trembler plein axe.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">🏉</span><div><strong>4</strong> — comment — Sur l’action qui conduit à l’essai, Jérémy Rozier sollicite l’assistance de la vidéo et, pour un geste jugé irrégulier, Botitu est finalement sanctionné d’un avertissement temporaire.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">🟨</span><div><strong>3</strong> — Carton : Botitu</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>2</strong> — Transformation : Ntamack</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">🏉</span><div><strong>2</strong> — Essai : Banos</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>2</strong> — comment — Le duel s’engage au stade Pierre-Fabre entre Castres et Toulouse, et sur la remise en jeu initiale sanctionnée contre Corato, les visiteurs choisissent la touche pénale pour lancer une large séquence de passes que la défense tarnaise parvient néanmoins à contenir.</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>1</strong> — comment — Bienvenue sur Vibrez Rugby pour suivre le match Castres &#8211; Toulouse commenté !&lt;br&gt;
• Zappez entre les radios suggérées qui pourraient diffuser le match&lt;br&gt;
• Consultez les stats dans l&#039;onglet &quot;Face à face&quot;&lt;br&gt;
• Découvrez les compos dans l&#039;onglet &quot;Compositions&quot;&lt;br&gt;
Bon match à tous !</div></div><div class=live-event style="border-bottom:1px solid #eee;padding:10px 4px;display:flex;gap:10px;align-items:flex-start"><span style="font-size:1.1em;line-height:1.1">➡️</span><div><strong>0</strong> — Début de la rencontre</div></div> </div>
</div>
</div></main>
<div class="wp-block-group has-global-padding is-layout-constrained wp-block-group-is-layout-constrained"></div>
<div class="wp-block-group has-global-padding is-content-justification-center is-layout-constrained wp-block-group-is-layout-constrained"></div>
<br><br><br><br><br><br><br><br><br>
<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 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/xaccueil.png.pagespeed.ic.YRmGM7IsMj.webp 500w, https://vibrez-rugby.com/wp-content/uploads/2024/11/accueil-300x300.png 300w, https://vibrez-rugby.com/wp-content/uploads/2024/11/accueil-150x150.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/40x500xen-direct.png.pagespeed.ic.IIT2RpwdeN.png" alt="" class=wp-image-302714 style=width:40px srcset="https://vibrez-rugby.com/wp-content/uploads/2024/11/xen-direct.png.pagespeed.ic._YDB3SvchH.webp 500w, https://vibrez-rugby.com/wp-content/uploads/2024/11/en-direct-300x300.png 300w, https://vibrez-rugby.com/wp-content/uploads/2024/11/en-direct-150x150.png 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 loading=lazy 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/radios.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.t2lQapOiQU.webp 150w" sizes="auto, (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/resultat.png" alt="" class=wp-image-302716 style=width:40px srcset="https://vibrez-rugby.com/wp-content/uploads/2024/11/resultat.png 500w, https://vibrez-rugby.com/wp-content/uploads/2024/11/resultat-300x300.png 300w, https://vibrez-rugby.com/wp-content/uploads/2024/11/resultat-150x150.png 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-9ac7bc21f3946d079b8177ff2134f3ac 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://delpit-services.fr/nettoyage-toulouse/" data-type=link data-id="https://delpit-services.fr/nettoyage-toulouse/">Nettoyage Toulouse</a> , <a href="https://sexy-rugby.com/" data-type=link data-id="https://sexy-rugby.com/">Boutique 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> , <a href="https://sports-podcasts.com/">Sports Podcasts</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>
<style id=vr-share-css>
    .vr-share-buttons {
        display: flex;
        align-items: center;
        flex-wrap: wrap;
        gap: 8px;
        margin-bottom: 1.5rem;
    }
    .vr-share-label {
        font-weight: 600;
        font-size: 0.95rem;
        color: #333;
        margin-right: 4px;
    }
    .vr-share-btn {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        width: 40px;
        height: 40px;
        border-radius: 50%;
        border: 1px solid #ccc;
        background: transparent;
        color: #555;
        cursor: pointer;
        text-decoration: none;
        transition: all 0.2s ease;
    }
    .vr-share-btn:hover {
        transform: scale(1.1);
    }
    .vr-share-btn svg {
        width: 20px;
        height: 20px;
    }
    .vr-share-btn[data-action="copy"]:hover,
    .vr-share-btn.copied {
        background: #004D90;
        color: #fff;
        border-color: #004D90;
    }
    .vr-share-btn.copied {
        background: #22c55e !important;
        border-color: #22c55e !important;
    }
    .vr-share-facebook:hover { background: #1877F2; color: #fff; border-color: #1877F2; }
    .vr-share-twitter:hover  { background: #000; color: #fff; border-color: #000; }
    .vr-share-whatsapp:hover { background: #25D366; color: #fff; border-color: #25D366; }
    .vr-share-linkedin:hover { background: #0A66C2; color: #fff; border-color: #0A66C2; }
    .vr-share-email:hover    { background: #004D90; color: #fff; border-color: #004D90; }
    @media (max-width: 768px) {
        .vr-share-buttons {
            justify-content: center;
        }
        .vr-share-label {
            width: 100%;
            text-align: center;
            margin-bottom: 4px;
        }
        .vr-share-btn {
            width: 38px;
            height: 38px;
        }
        .vr-share-btn svg {
            width: 18px;
            height: 18px;
        }
    }
    </style>
<script id=vr-share-js>(function(){var wrap=document.querySelector('.vr-share-buttons');if(!wrap)return;var shareUrl=wrap.dataset.url||window.location.href;var shareTitle=wrap.dataset.title||document.title;var encoded=encodeURIComponent(shareUrl);var encTitle=encodeURIComponent(shareTitle);wrap.querySelectorAll('.vr-share-btn').forEach(function(btn){btn.addEventListener('click',function(e){var action=btn.dataset.action;if(action==='copy'){e.preventDefault();navigator.clipboard.writeText(shareUrl).then(function(){var original=btn.innerHTML;btn.classList.add('copied');btn.innerHTML='<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3"><path d="M20 6L9 17l-5-5"/></svg>';setTimeout(function(){btn.classList.remove('copied');btn.innerHTML=original;},2000);}).catch(function(){});}else if(action==='twitter'){btn.href='https://twitter.com/intent/tweet?text='+encTitle+'&url='+encoded;}else if(action==='facebook'){btn.href='https://www.facebook.com/sharer/sharer.php?u='+encoded;}else if(action==='whatsapp'){btn.href='https://wa.me/?text='+encTitle+'%20'+encoded;}else if(action==='linkedin'){btn.href='https://www.linkedin.com/sharing/share-offsite/?url='+encoded;}else if(action==='email'){btn.href='mailto:?subject='+encTitle+'&body='+encoded;}});});})();</script>
<script type=module src="https://vibrez-rugby.com/wp-includes/js/dist/script-modules/block-library/navigation/view.min.js?ver=b0f909c3ec791c383210" 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=349699&object_title='+encodeURIComponent(finalTitle)+'&object_url='+encodeURIComponent(objectUrl)+'&nonce=28d6d6b190';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?ver=2.0.1" 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>