Close dialogue1/1Next imagePrevious imageToggle captionSkip to key eventsPrint subscriptionsSearch jobs Sign indocument.addEventListener('DOMContentLoaded', function () {
/** The checkbox input element used to toggle the navigation menu. */
const navInputCheckbox = document.getElementById('header-nav-input-checkbox');
/** The veggie burger button element used to open/close the menu. */
const veggieBurger = document.getElementById('header-veggie-burger');
/** List of menu items that should be selectable when the menu is open. */
const expandedMenuClickableTags = document.querySelectorAll(
'.selectableMenuItem',
);
/** The root element of the expanded menu. */
const expandedMenu = document.getElementById('header-expanded-menu-root');
/** The label for the first column in the menu, assumed to be "News".*/
const firstColLabel = document.getElementById('News-button');
/** The link element in the second list item under news links. */
const firstColLink = document.querySelector(
'#newsLinks > li:nth-of-type(2) > a',
);
/**
* Focuses on the first navigation element depending on whether the first column label is visible.
*
* If the first column label is not visible, the function focuses on the first link element.
* Otherwise, it focuses on the first column label.
*/
const focusOnFirstNavElement = () => {
if (window.getComputedStyle(firstColLabel).display === 'none') {
firstColLink.focus();
} else {
firstColLabel.focus();
}
};
/**
* Updates ARIA attributes and tabindex values based on whether the menu is open or closed.
*/
const updateAttributesForMenu = (isOpen) => {
firstColLabel.setAttribute('aria-expanded', isOpen ? 'true' : 'false');
veggieBurger.setAttribute(
'data-link-name',
isOpen
? 'header : veggie-burger : hide'
: 'header : veggie-burger : show',
);
expandedMenuClickableTags.forEach((tag) => {
tag.setAttribute('tabindex', isOpen ? '0' : '-1');
});
};
/** Toggles the navigation menu by simulating a click on the checkbox. */
const toggleMainMenu = () => {
if (navInputCheckbox) {
navInputCheckbox.click();
}
};
/**
* Handles keydown events to toggle the menu when the Enter or Space key is pressed.
*/
const keydownToggleMainMenu = (e) => {
if (e.key === 'Enter' || e.key === ' ') {
e.preventDefault();
toggleMainMenu();
}
};
/**
* Handles click events to manage the state of the navigation menu.
*
* - Toggles the menu open/close state when the menu button (veggieBurger) is clicked.
*/
const handleMenuClick = (e) => {
const menuButtonClicked = navInputCheckbox === e.target;
const clickInsideMenu = expandedMenu.contains(e.target);
const menuIsOpen = navInputCheckbox.checked
if (menuButtonClicked && !menuIsOpen) {
document.body.classList.toggle('nav-is-open')
firstColLabel.setAttribute('aria-expanded', 'false')
veggieBurger.setAttribute('data-link-name','header : veggie-burger : show')
expandedMenuClickableTags.forEach(function($selectableElement){
$selectableElement.setAttribute('tabindex','-1')
})
} else if (menuButtonClicked && menuIsOpen) {
document.body.classList.toggle('nav-is-open')
firstColLabel.setAttribute('aria-expanded', 'true')
veggieBurger.setAttribute('data-link-name','header : veggie-burger : hide')
expandedMenuClickableTags.forEach(function($selectableElement){
$selectableElement.setAttribute('tabindex','0')
})
focusOnFirstNavElement()
}
};
/** Adds event listeners to manage the navigation menu. */
if (navInputCheckbox) {
navInputCheckbox.addEventListener('click', handleMenuClick);
veggieBurger.addEventListener('keydown', keydownToggleMainMenu);
document.addEventListener('keydown', (e) => {
if (e.key === 'Escape' && navInputCheckbox.checked) {
toggleMainMenu();
veggieBurger.focus();
}
});
/**
* Handles mouse down events to manage the state of the navigation menu.
*
* - Closes the menu if the click occurs outside both the menu button and the expanded menu.
*/
document.addEventListener('mousedown', function(e){
if(navInputCheckbox.checked && !expandedMenu.contains(e.target) && !veggieBurger.contains(e.target)){
toggleMainMenu()
}
});
}
});UKUK editionUS editionAustralia editionEurope editionInternational editionThe Guardian - Back to homeThe GuardianNewsOpinionSportCultureLifestyleShow moreHide expanded menudocument.addEventListener('DOMContentLoaded', function(){
var columnInput = document.getElementById('News-button');
if (!columnInput) return; // Sticky nav replaces the nav so element no longer exists for users in test.
columnInput.addEventListener('keydown', function(e){
// keyCode: 13 => Enter key | keyCode: 32 => Space key
if (e.keyCode === 13 || e.keyCode === 32) {
e.preventDefault()
document.getElementById('News-checkbox-input').click();
}
})
})NewsView all NewsUK newsUS politicsWorld newsClimate crisisMiddle EastUkraineFootballNewslettersBusinessEnvironmentUK politicsScienceTechGlobal developmentObituariesdocument.addEventListener('DOMContentLoaded', function(){
var columnInput = document.getElementById('Opinion-button');
if (!columnInput) return; // Sticky nav replaces the nav so element no longer exists for users in test.
columnInput.addEventListener('keydown', function(e){
// keyCode: 13 => Enter key | keyCode: 32 => Space key
if (e.keyCode === 13 || e.keyCode === 32) {
e.preventDefault()
document.getElementById('Opinion-checkbox-input').click();
}
})
})OpinionView all OpinionThe Guardian viewColumnistsCartoonsOpinion videosLettersdocument.addEventListener('DOMContentLoaded', function(){
var columnInput = document.getElementById('Sport-button');
if (!columnInput) return; // Sticky nav replaces the nav so element no longer exists for users in test.
columnInput.addEventListener('keydown', function(e){
// keyCode: 13 => Enter key | keyCode: 32 => Space key
if (e.keyCode === 13 || e.keyCode === 32) {
e.preventDefault()
document.getElementById('Sport-checkbox-input').click();
}
})
})SportView all SportFootballCricketRugby unionTennisCyclingF1GolfBoxingRugby leagueRacingUS sportsdocument.addEventListener('DOMContentLoaded', function(){
var columnInput = document.getElementById('Culture-button');
if (!columnInput) return; // Sticky nav replaces the nav so element no longer exists for users in test.
columnInput.addEventListener('keydown', function(e){
// keyCode: 13 => Enter key | keyCode: 32 => Space key
if (e.keyCode === 13 || e.keyCode === 32) {
e.preventDefault()
document.getElementById('Culture-checkbox-input').click();
}
})
})CultureView all CultureFilmMusicTV & radioBooksArt & designStageGamesClassicaldocument.addEventListener('DOMContentLoaded', function(){
var columnInput = document.getElementById('Lifestyle-button');
if (!columnInput) return; // Sticky nav replaces the nav so element no longer exists for users in test.
columnInput.addEventListener('keydown', function(e){
// keyCode: 13 => Enter key | keyCode: 32 => Space key
if (e.keyCode === 13 || e.keyCode === 32) {
e.preventDefault()
document.getElementById('Lifestyle-checkbox-input').click();
}
})
})LifestyleView all LifestyleThe FilterFashionFoodRecipesTravelHealth & fitnessWomenMenLove & sexBeautyHome & gardenMoneyCarsSearch input google-search SearchSupport usPrint subscriptionsSearch jobsHire with Guardian JobsHolidaysLive eventsAbout UsDigital ArchiveGuardian Print ShopPatronsGuardian LicensingThe Guardian appVideoPodcastsPicturesNewslettersToday's paperInside the GuardianGuardian WeeklyCrosswordsWordiplyCorrectionsTipsSearch input google-search SearchSearch jobsHire with Guardian JobsHolidaysLive eventsAbout UsDigital ArchiveGuardian Print ShopPatronsGuardian LicensingFootballLive scoresTablesFixturesResultsCompetitionsClubsClockwatchFootballReal Madrid v Inter, Millwall v Newcastle: Champions League and Carabao Cup – live
Champions League: Lille v Betis, Dortmund v Villarreal
Key events33m agoLet's have some teams...1h agoPreamble The Bernabéu before Real Madrid’s Champions League date with Inter. Photograph: Florencia Tan Jun/UEFA/Getty ImagesView image in fullscreenThe Bernabéu before Real Madrid’s Champions League date with Inter. Photograph: Florencia Tan Jun/UEFA/Getty ImagesDaniel HarrisTue 8 Sep 2026 19.39 BSTFirst published on Tue 8 Sep 2026 18.30 BSTShareKey events33m agoLet's have some teams...1h agoPreamble55s ago19.39 BSTSo, where is the game? Once upon a time, what Madrid did was largely up to Madrid players, but under Mourinho, it ain’t going out like that. Against a back three, the space tends to be behind the wing-backs and down the sides of the outside centre-backs, so I’d expect to see Dumfries and Alexander-Arnold ganging up on Bastoni and dragging him away from the middle, while Cucurella and Vinicius do the same on the other side, freeing up space for Mbappe and whichever of Bellingham and Valverde are box-crashing.
Inter, meanwhile, will want their wing-backs targeting the space Madrid’s full-backs vacate, with their two up front looking to take advantage of Konate and Huijsen’s respective impetuousness and inexperience. This could be a really fun game.
7m ago19.33 BSTInter, meanwhile, look solid. They’ve won three from three in Serie A, and will, I think, look to clutter the centre of the pitch. That’s another reason I’d like to have seen Diomande on from the start, but Mourinho has – unusually for him – done without a defensively-minded midfielder. I’m looking forward to seeing how Curtis Jones does, as I think he’s a good player who’ll thrive with regular selection and greater responsibility. And there’s no disputing the danger Inter offer up front; I don’t fancy either Madrid centre-back against Thuram and Martinez.
12m ago19.28 BSTOur main focus here, though, will be on Madrid v Inter. Mourinho’s men lost at Betis last weekend, and are without the suspended Eduardo Camvinga, Bernardo Silva and Arda Guler. As such Trent Alexander-Arnold comes in on the right of the central three – a move I doubt Aurelien Tchouameni likes all that much. I can’t say I think Alexander-Arnold is much use in that position – as Gary Neville once noted, most right-backs are failed midfielders – but he’s capable of creating something from nothing. I guess I’d quite like to see Yan Diomande on the right, but i’m not surprised Mourinho wants the extra body in midfield that Brahim Diaz can become.
Updated at 19.29 BST21m ago19.18 BSTBrugge have pulled a goal back against Villa – they now trail 3-2. Elsewhere, meanwhile, it’s AEK 1-0 LASK in what internet bores are calling the Upper Case derby.