CINXE.COM

‘Sauna’: Sundance Review | Reviews | Screen

<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <link rel="preload" as="style" href="/Magazine/core.css?p=7605401637413244"> <link rel="preload" as="script" href="/Magazine/core.js?p=7605401637413244"> <link rel="preload" as="image" href="https://d1nslcd7m2225b.cloudfront.net/Pictures/480xany/5/2/6/1440526_sauna_636870.jpeg" imagesrcset="https://d1nslcd7m2225b.cloudfront.net/Pictures/480xany/5/2/6/1440526_sauna_636870.jpeg 480w,https://d1nslcd7m2225b.cloudfront.net/Pictures/600xany/5/2/6/1440526_sauna_636870.jpeg 600w,https://d1nslcd7m2225b.cloudfront.net/Pictures/780xany/5/2/6/1440526_sauna_636870.jpeg 780w" imagesizes="(max-width: 1023px) 100vw, 780px" /> <!-- OneTrust Cookies Consent Notice start for Screen Daily | Film News, Film Reviews, Film Festivals and Awards --> <script src="https://cdn-ukwest.onetrust.com/scripttemplates/otSDKStub.js" type="text/javascript" charset="UTF-8" data-domain-script="9135b9e3-8796-4495-a4a1-5fd2085b2b56" ></script> <script type="text/javascript"> function OptanonWrapper() { } </script> <!-- OneTrust Cookies Consent Notice end for Screen Daily | Film News, Film Reviews, Film Festivals and Awards --> <title>‘Sauna’: Sundance Review | Reviews | Screen</title> <meta name="description" content="A queer romance attempts to blossom in this involving Copenhagen-set debut" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="momentnowdate" content="2025-02-27 01:16:38.914"/> <meta name="momentlocale" content="en-gb"/> <meta name="momentlocaleformat" content="D MMMM YYYY"/> <meta name="momentrelative" content="false"/> <meta name="momentrelativeformat" content="YYYY,MM,DD"/> <meta name="momentrelativemorethan" content="10"/> <meta name="pubdate" content="Tue, 28 Jan 2025 02:30 GMT" /> <link rel="canonical" href="https://www.screendaily.com/reviews/sauna-sundance-review/5200714.article" /> <meta name="blockthis" content="blockGA" /> <meta name="showwallpaper" content="true" /> <meta name="navcode" content="27" /> <meta name="primarynavigation" content="Reviews" /> <meta property="og:title" content="‘Sauna’: Sundance Review" /> <meta property="og:type" content="Article" /> <meta property="og:url" content="https://www.screendaily.com/reviews/sauna-sundance-review/5200714.article" /> <meta property="og:site_name" content="Screen" /> <meta property="og:description" content="A queer romance attempts to blossom in this involving Copenhagen-set debut" /> <meta property="og:image:width" content="1024" /> <meta property="og:image:height" content="536" /> <meta property="og:image" content="https://d1nslcd7m2225b.cloudfront.net/Pictures/1024x536/5/2/6/1440526_sauna_636870.jpeg" /> <meta property="og:image:alt" content="Sauna" /> <meta property="twitter:card" content="summary_large_image" /> <meta property="twitter:title" content="‘Sauna’: Sundance Review" /> <meta property="twitter:description" content="A queer romance attempts to blossom in this involving Copenhagen-set debut" /> <meta property="twitter:image:src" content="https://d1nslcd7m2225b.cloudfront.net/Pictures/1120xAny/5/2/6/1440526_sauna_636870.jpeg" /> <meta property="twitter:image:alt" content="Sauna" /> <link rel="icon" href="/magazine/dest/graphics/favicons/favicon-32x32.png" /> <!--[if IE]><link rel="shortcut icon" href="/magazine/dest/graphics/favicons/favicon.ico" /><![endif]--> <link rel="apple-touch-icon-precomposed" href="/magazine/dest/graphics/favicons/apple-touch-icon-precomposed.png" /> <meta name="msapplication-TileImage" content="/magazine/dest/graphics/favicons/mstile-144x144.png" /> <meta name="msapplication-TileColor" content="#ffffff" /> <link href="/Magazine/core.css?p=7605401637413244" rel="stylesheet" type="text/css"> <link href="/Magazine/print.css?p=7605401637413244" rel="stylesheet" type="text/css" media="print"> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous" referrerpolicy="no-referrer"></script> <script>var newLang={"more":{"default":"Show more","searchtype":"Show more","searchdates":"Show more"},"less":{"default":"Show fewer","searchtype":"Show fewer","searchdates":"Show fewer"},"show":{"default":"show"},"hide":{"default":"hide"},"caption":{"show":"show caption","hide":"hide caption"},"carousel":{"play":"play slideshow","pause":"pause slideshow"}};</script> <script type="text/javascript"> var IPState = { useripstate: false, useripname: '' }; </script> <script type="text/javascript"> window.dataLayer = window.dataLayer || []; window.dataLayer.push({'StoryID':'5200714'}); window.dataLayer.push({'StoryFormatProperty':'N'}); window.dataLayer.push({'StoryCategories':'|Festivals|Europe|Sundance|World Cinema Dramatic Competition|Reviews|Denmark|Reviews|Reviews homepage|'}); window.dataLayer.push({'StoryLayout':'Standard'}); window.dataLayer.push({'StoryWidth':'standard width'}); window.dataLayer.push({'StoryLayoutCode':'1'}); window.dataLayer.push({'StoryFormatCode':'1101'}); window.dataLayer.push({'StoryTypeCode':'2'}); window.dataLayer.push({'StoryCategoriesCodes':'|9|72|165|251|11068|11074|11895|12632|'}); window.dataLayer.push({'StoryFullNavPath':'|1|27|'}); window.dataLayer.push({'UserID':undefined}); window.dataLayer.push({'NavCode':'27'}); window.dataLayer.push({'MicrositeNavCode':'-1'}); window.dataLayer.push({'NavKey':'5198'}); window.dataLayer.push({'NavigationAreaNavCode':'27'}); </script> <script type="text/javascript"> window.dataLayer.push({'AccessQualificationTypeName':'Free access (anonymous users)'}); window.dataLayer.push({'AccessProductCode':'SDMA'}); window.dataLayer.push({'AccessProductName':'Screen Daily Metered access'}); window.dataLayer.push({'AccessCount':'1'}); </script> <script type="text/javascript"> window.dataLayer = window.dataLayer || []; window.dataLayer.push({'LoggedIn':'False'}); window.dataLayer.push({'AuthorName':'|Allan Hunter|'}); window.dataLayer.push({'ContentAccessStatus':'Granted'}); window.dataLayer.push({'StoryType':'Reviews'}); window.dataLayer.push({'UserStateLoggedIn':'False'}); window.dataLayer.push({'FullNavPath':'|1|27|'}); </script> <meta name="google-site-verification" content="5mYg_kSnz91_S4BIZyYQnl1xgu3nCUutRd6iXpowGzA" /> <link href="https://fonts.googleapis.com/css?family=Fira+Sans:700|Open+Sans:400,700,800" rel="stylesheet"> <style type="text/css"> .leaderboard .ad { padding: 24px 0; text-align:center; } #wrapper_sleeve { background-color:#ffffff; } .wallpaper-applied header#masthead + .ad { padding:24px 0; text-align:center; } @media only screen and (max-width: 768px) { .mob-ad-75 { min-height:75px; } .wallpaper-applied header#masthead + .ad { width:360px !important; padding:24px 0; text-align:center; } } /* .billboard { position: relative; width:100%; margin:auto; } @media only screen and (min-width: 768px) { .billboard { width:100%; margin:auto; } } .billboard .sleeve { margin: auto; padding: 24px; text-align: center } .billboard.no-styles { background-color: transparent; border: 0 } .billboard.no-styles .sleeve>div { padding: 0 } .billboard .notice { display: none; margin-bottom: -10px; padding-top: 12px } */ @media screen and (max-width: 767px){ .mob-ad-75 { min-height: 75px; } } /* CLS with wallpaper - fix site width */ #wrapper_sleeve { position: relative; max-width: 1024px; margin: 0 auto; background-color: #fff; } body#story.story-style-2 #wrapper_sleeve, body#story.story-style-4 #wrapper_sleeve, body#story.story-style-5 #wrapper_sleeve, body#story.story-style-6 #wrapper_sleeve, body#story.story-style-7 #wrapper_sleeve{ max-width:unset; } .footer { width: 100vw; position: relative; left: 50%; right: 50%; margin-left: -50vw; margin-right: -50vw; } .wallpaper-applied.site-width-1024 .container.hot-topics-container .inner-sleeve { max-width: 1180px; width:auto; margin: 0 auto; } .container.hot-topics-container .inner-sleeve { max-width: 1180px; width:auto; margin: 0 auto; } .footer .container .inner-sleeve { max-width: 1220px; } #wrapper_sleeve>:first-child { padding-top: 31px; background-color: #fff; } .accessContainer>.container:first-child .inner-sleeve { padding-top: 60px; } @media only screen and (max-width: 768px) { .accessContainer .storyPreview .access-denied-index-img.picture img{ width:100px; } } @media screen and (min-width: 1024px){ /*.hero-spin{ width:100%; margin-left: -50%; margin-right: -50%; } .grid .hero-carousel .swiper-box, .container>.inner-sleeve:not(#colwrapper) .grid .oneColumn .spinVideo.full-width-background, .container>.inner-sleeve:not(#colwrapper) .grid .oneColumn .spinVideo.site-width-background, .container>.inner-sleeve:not(#colwrapper) .grid .oneColumn div.full-width-background, .container>.inner-sleeve:not(#colwrapper) .grid .oneColumn div.site-width-background{ width:100%; margin-left: calc(-50% + 50%); } */ body#story.story-style-1 .contentWrapper{ width: auto; padding-right: 7%; } body#story.story-style-2 .contentWrapper, body#story.story-style-4 .contentWrapper, body#story.story-style-5 .contentWrapper, body#story.story-style-6 .contentWrapper, body#story.story-style-7 .contentWrapper { width: 107%; padding-right: 7%; } } @media screen and (min-width: 1180px){ /*.grid .hero-carousel .swiper-box{ width:100%; margin-left: -50%; margin-right: -50%; } } */ .wallpaper-applied.site-width-1024 #mainnav > .inner-sleeve { max-width: 1220px; } .wallpaper-applied.site-width-1024 .mast > .inner-sleeve { max-width: 1220px; } .wallpaper-applied.site-width-1024 .footer .inner-sleeve { max-width: 1220px; } .wallpaper-applied.site-width-1024 .ad-style1, .wallpaper-applied.site-width-1024 .container .inner-sleeve { max-width: 1220px; } /* end - CLS with wallpaper - fix site width */ .wallpaper-applied #wrapper_sleeve > :first-child { padding-top:0px !important; } .wallpaper-applied #wrapper_sleeve > .container:first-child > .inner-sleeve, .wallpaper-applied #wrapper_sleeve > div:empty + div .inner-sleeve { padding-top: 10px !important; } .sponsored-link-text { font-size: .889rem !important } .sponsored-link-text a:hover { color:#a81c22; text-decoration:underline } </style> <!-- Start Temp Fix MBICS-652 --> <style> .contactList ul li { border-bottom: 0 solid #bebebe; / } </style> <!-- End Temp Fix MBICS-652 --> <style> /* TEMP FIX PWVD-819*/ @media screen and (max-width:1023px) { .enhanced-advertising #rightcolumn_sleeve { display:block; } #story.enhanced-advertising #rightcolumn_sleeve { display: none; } } </style> <style> .ad-text{ background: #f0f2f2; font-size: 0.675rem; padding: 2px; color: #444; text-transform: uppercase; border-top: 4px solid #DCDCDC; } </style> <style type="text/css">.inline_image img[width][height]:not(.zoomable-image) {contain: unset;}</style> <script async='async' src='https://www.googletagservices.com/tag/js/gpt.js'></script> <!--<script sync src="//www.googletagservices.com/tag/js/gpt.js"></script>--> <script type='text/javascript'> var googletag = googletag || {}; googletag.cmd = googletag.cmd || []; (function() { var gads = document.createElement('script'); gads.async = true; gads.type = 'text/javascript'; var useSSL = 'https:' == document.location.protocol; gads.src = (useSSL ? 'https:' : 'http:') + '//www.googletagservices.com/tag/js/gpt.js'; var node = document.getElementsByTagName('script')[0]; node.parentNode.insertBefore(gads, node); })(); </script> <script type='text/javascript'> function getDataLayerVal(keyVal) { for (var i = 0; i < window.dataLayer.length; i++) { if (dataLayer[i][keyVal] !== undefined) { return dataLayer[i][keyVal]; } } } //Testing for ad targetting - Story Tagging var storyCategories = getDataLayerVal('StoryCategories'); if (storyCategories != null) { //option 1, is to extract values from pipe delimited list var categories1 = storyCategories.substring(1, storyCategories.length - 1); //remove | from start and end categories1 = categories1.split('|'); //split at | if (categories1.length > 0) { console.log(categories1[0]); //access item in array } //option 2 is replace pipes with commas var categories2 = storyCategories.substring(1, storyCategories.length - 1); //remove | from start and end categories2 = categories2.replace(/\|/g, ','); //replace pipes with commas if (categories2.length > 0) { console.log(categories2); } } //end testing for ad targetting //Testing for ad targetting - user reg level var visitorType2 = getDataLayerVal('RegLevel'); if (visitorType2 != null) { //option 1, is to extract values from pipe delimited list var visitor1 = visitorType2.substring(1, visitorType2.length - 1); //remove | from start and end visitor1 = visitor1.split('|'); //split at | if (visitor1.length > 0) { console.log(visitor1[0]); //access item in array } //option 2 is replace pipes with commas var visitor2 = visitorType2.substring(1, visitorType2.length - 1); //remove | from start and end visitor2 = visitor2.replace(/\|/g, ','); //replace pipes with commas if (visitor2.length > 0) { console.log(visitor2); } } //end testing for ad targetting // Function to get URL parameter by name function getUrlParameter(name) { name = name.replace(/[\[]/, '\\[').replace(/[\]]/, '\\]'); var regex = new RegExp('[\\?&]' + name + '=([^&#]*)'); var results = regex.exec(location.search); return results === null ? '' : decodeURIComponent(results[1].replace(/\+/g, ' ')); } // Extract UTM parameters from URL var utmSource = getUrlParameter('utm_source'); var utmMedium = getUrlParameter('utm_medium'); var utmCampaign = getUrlParameter('utm_campaign'); var showwallpaper; if(document.querySelector('meta[name="showwallpaper"]')) { showwallpaper = document.querySelector('meta[name="showwallpaper"]').content; } googletag.cmd.push(function() { // Define a size mapping object. The first parameter to addSize is // a viewport size, while the second is a list of allowed ad sizes. var mapping = googletag.sizeMapping(). // 320, 0 addSize([320, 0], [[300, 50],[300,75],[320,50], [300, 50]]). // 480, 0 addSize([480, 0], [300, 75]). // 768, 0 addSize([768, 0], [300, 250]). // 1024, 0 addSize([1024, 0], [300, 350]).build(); var mapMPUA = googletag.sizeMapping(). // 320, 0 addSize([320, 0], [300,250]). // 768, 0 addSize([768, 0], [300, 250]). // 1024, 0 addSize([1024, 0], [[300, 250]]).build(); //addSize([1024, 0], [[300, 250],[300,50]]).build(); var mapMPU = googletag.sizeMapping(). // 320, 0 addSize([320, 0], [[300, 600], [300,250]]). // 768, 0 addSize([768, 0], [[300, 600], [300, 250]]). // 1024, 0 addSize([1024, 0], [[300, 250],[300,600]]).build(); //addSize([1024, 0], [[300, 250],[300,50]]).build(); var mapMPUSmall = googletag.sizeMapping(). // 320, 0 addSize([320, 0], [300,250]). // 768, 0 addSize([768, 0], [300, 250]). // 1024, 0 addSize([1024, 0], [300, 250]).build(); //addSize([1024, 0], [[300, 250],[300,50]]).build(); var mapLB = googletag.sizeMapping(). // 320, 0 addSize([320, 0], [300,50]). //// 601, 0 addSize([601, 0], [[468,60]]). // 768, 0 addSize([768, 0], [[468,60],[728,90]]). // 1024, 0 addSize([1024, 0], [[468, 60],[728,90]]).build(); var mapSectionDivide = googletag.sizeMapping(). // 320, 0 addSize([320, 0], [300, 75]). //// 601, 0 addSize([601, 0], [300, 75]). // 768, 0 addSize([768, 0], [[728, 90],[970, 250],[970, 90]]). // 1024, 0 addSize([1024, 0], [[728, 90],[970, 250],[970, 90]]).build(); var mapLBUnderNav = googletag.sizeMapping(). addSize([0, 0], []). // 320, 0 addSize([320, 0], [[300,75],[320,50],[320,100]]). // 1024, 0 addSize([1050, 0], [[1024, 250], [970,250], [728, 90]]).build(); var mapWallpaper = googletag.sizeMapping(). addSize([0, 0], []). // 1220, 0 addSize([1220, 0], [1,1]).build(); var mapSkinLeft = googletag.sizeMapping(). addSize([0, 0], []). // 1220, 0 addSize([1220, 0], [500,1000]).build(); googletag.defineSlot('/21612928716/Screen/AdvertA', [300, 250], 'div-gpt-AdvertA').defineSizeMapping(mapMPU).addService(googletag.pubads()); googletag.defineSlot('/21612928716/Screen/AdvertB', [300, 250], 'div-gpt-AdvertB').defineSizeMapping(mapMPU).addService(googletag.pubads()); googletag.defineSlot('/21612928716/Screen/AdvertC', [300, 250], 'div-gpt-AdvertC').defineSizeMapping(mapMPU).addService(googletag.pubads()); googletag.defineSlot('/21612928716/Screen/AdvertD', [300, 250], 'div-gpt-AdvertD').defineSizeMapping(mapMPU).addService(googletag.pubads()); googletag.defineSlot('/21612928716/Screen/AdvertE', [300, 250], 'div-gpt-AdvertE').defineSizeMapping(mapMPU).addService(googletag.pubads()); googletag.defineSlot('/21612928716/Screen/AdvertF', [300, 250], 'div-gpt-AdvertF').defineSizeMapping(mapMPU).addService(googletag.pubads()); googletag.defineSlot('/21612928716/Screen/mpu-extra', [300, 250], 'div-gpt-ad-mpu-extra').defineSizeMapping(mapMPU).addService(googletag.pubads()); googletag.defineSlot('/21612928716/Screen/mpu-extra-two', [300, 250], 'div-gpt-ad-mpu-extra-two').defineSizeMapping(mapMPU).addService(googletag.pubads()); // googletag.defineSlot('/21612928716/Screen/AdvertMastLB', [[728, 90], [300, 75]], 'div-gpt-AdvertMastLB').defineSizeMapping(mapLB).addService(googletag.pubads()); googletag.defineSlot('/21612928716/Screen/AdvertAttach', [300, 250], 'div-gpt-AdvertAttach').defineSizeMapping(mapMPU).addService(googletag.pubads()); googletag.defineSlot('/21612928716/Screen/SmallMPU', [300, 250], 'div-gpt-SmallMPU').defineSizeMapping(mapMPUSmall).addService(googletag.pubads()); googletag.defineSlot('/21612928716/Screen/LargeMPU', [[300, 600],[300, 250]], 'div-gpt-LargeMPU').defineSizeMapping(mapMPU).addService(googletag.pubads()); googletag.defineSlot('/21612928716/Screen/billboard', [[1024, 250],[970, 250],[728, 90],[300, 75]], 'div-gpt-billboard').setTargeting('allow_expandable', 'true').defineSizeMapping(mapLBUnderNav).addService(googletag.pubads()); googletag.defineSlot('/21612928716/Screen/SectionDivide', [[970, 250],[970, 90]], 'div-gpt-sectiondivide-one').defineSizeMapping(mapSectionDivide).addService(googletag.pubads()); googletag.defineSlot('/21612928716/Screen/SectionDivide', [[970, 250],[970, 90]], 'div-gpt-sectiondivide-two').defineSizeMapping(mapSectionDivide).addService(googletag.pubads()); googletag.defineSlot('/21612928716/Screen/btm-bb', [970, 250], 'div-gpt-ad-bottom-billboard').defineSizeMapping(mapLBUnderNav).addService(googletag.pubads()); // googletag.defineSlot('/21612928716/Screen/skin-left', [[970, 250],[970, 90]], 'div-gpt-ad-skin-left').defineSizeMapping(mapSkinLeft).addService(googletag.pubads()); googletag.defineOutOfPageSlot('/21612928716/Screen/Overlay', 'div-gpt-overlay').addService(googletag.pubads()); var wallpaperSlot = googletag.defineOutOfPageSlot('/21612928716/Screen/Wallpaper', 'div-gpt-wallpaper') .addService(googletag.pubads()).setTargeting('url', document.location.pathname); googletag.pubads().addEventListener("slotRenderEnded", function(a){ a.slot.getSlotElementId()!=wallpaperSlot.getSlotElementId()||a.isEmpty||(document.querySelector(".wallpaper-ad[data-site-width-1024]")&&(document.body.className+=" site-width-1024"),"true"===showwallpaper&&(document.body.className+=" wallpaper-applied")); $(window).trigger('wallpaper:advert') }); googletag.pubads().collapseEmptyDivs(true); /* googletag.pubads().enableLazyLoad({ fetchMarginPercent: 5, renderMarginPercent: 5, mobileScaling: 0.0 }); */ googletag.pubads().setTargeting('loggedin', getDataLayerVal('LoggedIn')); googletag.pubads().setTargeting('visitortype', getDataLayerVal('RegLevel')); googletag.pubads().setTargeting('navcode', getDataLayerVal('NavCode')); googletag.pubads().setTargeting('storycode', getDataLayerVal('StoryID')); googletag.pubads().setTargeting('storylayout', getDataLayerVal('StoryLayout')); googletag.pubads().setTargeting('storycat', getDataLayerVal('StoryCategories')); googletag.pubads().setTargeting('categories2', categories2); googletag.pubads().setTargeting('visitor2', visitor2); googletag.pubads().setTargeting('utm_source', utmSource); googletag.pubads().setTargeting('utm_medium', utmMedium); googletag.pubads().setTargeting('utm_campaign', utmCampaign); googletag.enableServices(); }); window.addEventListener('message', receiveMessage, false); function receiveMessage(event) { if(event.data == 'wallpaper-fireplace') document.body.className+=" wallpaper-fireplace"; if(document.body.className.match('wallpaper-fireplace')) { var mastHeight = document.querySelector('#masthead').offsetHeight,wallpaperElement = document.querySelector('.wallpaper-ad').getElementsByTagName('div')[0]; wallpaperElement.style.top = mastHeight + 'px' } } $(document).on('click','#cookiePolicy .continue',function(){ var timer = setTimeout(function(){ if(document.body.className.match('wallpaper-fireplace')){ var mastHeight = document.querySelector('#masthead').offsetHeight,cookiePolicy=((document.querySelector('#cookiePolicy')&&document.querySelector('#cookiePolicy').offsetHeight)||0), wallpaperElement = document.querySelector('.wallpaper-ad').getElementsByTagName('div')[0]; wallpaperElement.style.top = (mastHeight+cookiePolicy-10)+'px'; } clearTimeout(timer); },250); }); </script> <!-- Meta Pixel Code --> <script> !function(f,b,e,v,n,t,s) {if(f.fbq)return;n=f.fbq=function(){n.callMethod? n.callMethod.apply(n,arguments):n.queue.push(arguments)}; if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0'; n.queue=[];t=b.createElement(e);t.async=!0; t.src=v;s=b.getElementsByTagName(e)[0]; s.parentNode.insertBefore(t,s)}(window, document,'script', 'https://connect.facebook.net/en_US/fbevents.js'); fbq('init', '1787080818148630'); fbq('track', 'PageView'); </script> <noscript> <img height="1" width="1" style="display:none" src=https://www.facebook.com/tr?id=1787080818148630&ev=PageView&noscript=1 /></noscript> <!-- End Meta Pixel Code --> <!-- The Film Agency --> <!-- Meta Pixel Code --> <script> !function(f,b,e,v,n,t,s) {if(f.fbq)return;n=f.fbq=function(){n.callMethod? n.callMethod.apply(n,arguments):n.queue.push(arguments)}; if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0'; n.queue=[];t=b.createElement(e);t.async=!0; t.src=v;s=b.getElementsByTagName(e)[0]; s.parentNode.insertBefore(t,s)}(window, document,'script', 'https://connect.facebook.net/en_US/fbevents.js'); fbq('init', '400707963055585'); fbq('track', 'PageView'); </script> <noscript><img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id=400707963055585&ev=PageView&noscript=1" /></noscript> <!-- End Meta Pixel Code --> <!-- Twitter conversion tracking base code --> <script> !function(e,t,n,s,u,a){e.twq||(s=e.twq=function(){s.exe?s.exe.apply(s,arguments):s.queue.push(arguments); },s.version='1.1',s.queue=[],u=t.createElement(n),u.async=!0,u.src='https://static.ads-twitter.com/uwt.js', a=t.getElementsByTagName(n)[0],a.parentNode.insertBefore(u,a))}(window,document,'script'); twq('config','odu1r'); </script> <!-- End Twitter conversion tracking base code --> <script> var EnhancedAdvertisingConfig = {}; </script> <!--Global Enhanced Adverts JSON definition from PAGETEXT--> <script> EnhancedAdvertisingConfig = { "Refresh":false, "RefreshDelaySecondsDefaultDesktop":30, "RefreshDelaySecondsDefaultMobile":30, "StoryDynamicSlotsAddGroupsAll":"Ads,Widgets", "StoryDynamicSlotsAddGroupsInline":"", "StoryDynamicSlotsAddGroupsRHC":"", "StoryDynamicSlotsRemoveGroupsAll":"", "StoryDynamicSlotsRemoveGroupsInline":"", "StoryDynamicSlotsRemoveGroupsRHC":"", "StoryDynamicSlotsRepeat":true, "StoryDynamicSlotsDesktopMaxInlineSlots":0, "StoryDynamicSlotsMobileMaxInlineSlots":20, "StoryDynamicSlotsDesktopMaxRHCSlots":20, "StoryDynamicSlotsDesktopElementSpacingFirst":3, "StoryDynamicSlotsMobileElementSpacingFirst":3, "StoryDynamicSlotsDesktopElementSpacing":3, "StoryDynamicSlotsMobileElementSpacing":5, "GAMAdUnitSizesInlineMobileDefault":[[300,250]], "GAMAdUnitSizesInlineDesktopDefault":[[300,250]], "GAMAdUnitSizesRHCDefault":[[300,250],[300,600]], "RHCMinHeightForSlotInsert":270, "RHCMinHeightForStickyAd":550, "CollapseEmptyDivs":true, "Slots":[ { "Type":"GAMAdvert", //"Position":"PreferRight", "Position":"PreferRight", "Group":"Ads", "AdUnit":"/21612928716/Screen/AdvertA", "RefreshDelaySeconds":30, "Sticky":false, "Repeat":false, "Refresh":false, "InsertIfNoRHCSpace":true, "AdUnitSizesInlineDesktop":[[300,250]], "AdUnitSizesInlineMobile":[[300,600],[300,250]], "AdUnitSizesRHC":[[300,600],[300,250]], "NoBackfill":true, //"CSSClass":"wvc-custom-ad", "ExtraHTML":"<div class=\"ad-text\">Advert</div>" }, { "Type":"CustomContent", "Position":"Right", "Sticky":false, "Group":"Widgets", "Repeat":false, "InsertIfNoRHCSpace":true, "HTML":"<div class=\"tab-widget-7\" data-ajax-load-content=\"\" data-cache-bust=\"true\" data-url=\"/ajax/most?wid=2&cachetoken=1\"></div>", "CustomEventName":"MostPopularWidgetInit", "Javascript":function(elem,container,slotconfig,adcounter,counter,repeat){ $(window).trigger('abacus:readjusrhcheight',[event, elem]); }, "CSSClass":"wvc-custom-widget-mostpopular", "MinHeight":650 }, { "Type":"GAMAdvert", "Position":"Right", "Group":"Ads", "AdUnit":"/21612928716/Screen/AdvertB", "RefreshDelaySeconds":30, "Sticky":true, "Repeat":false, "Refresh":false, "InsertIfNoRHCSpace":true, "AdUnitSizesInlineDesktop":[[300,250]], "AdUnitSizesInlineMobile":[[300,600],[300,250]], "AdUnitSizesRHC":[[300,600],[300,250]], //"CSSClass":"wvc-custom-ad", "ExtraHTML":"<div class=\"ad-text\">Advert</div>" }, { "Type":"GAMAdvert", "Position":"Right", "Group":"Ads", "AdUnit":"/21612928716/Screen/AdvertB", "RefreshDelaySeconds":30, "Sticky":true, "Repeat":true, "Refresh":false, "InsertIfNoRHCSpace":false, "AdUnitSizesInlineDesktop":[[300,250]], "AdUnitSizesInlineMobile":[[300,600],[300,250]], "AdUnitSizesRHC":[[300,600],[300,250]], //"CSSClass":"wvc-custom-ad", "ExtraHTML":"<div class=\"ad-text\">Advert</div>" }, { "Type":"GAMAdvert", "Position":"Inline", "Group":"Ads", "AdUnit":"/21612928716/Screen/AdvertB", "RefreshDelaySeconds":30, "Sticky":false, "Repeat":true, //"Refresh":true, "AdUnitSizesInlineDesktop":[[300,250]], "AdUnitSizesInlineMobile":[[300,600],[300,250]], "AdUnitSizesRHC":[[300,600],[300,250]], //"CSSClass":"wvc-custom-ad", "ExtraHTML":"<div class=\"ad-text\">Advert</div>" } ], "Overrides":[ { //If Type - Promotion "Conditions":"StoryType-11007", "Settings":{ "RemoveGroupsAll":"Ads" } }, { //If Category="Slots (all) - Off" "Conditions":"StoryCategoriesCodes-999999", "Operator":"And", "Settings":{ "RemoveGroupsAll":"Ads,Widgets" } }, { //If Category="Slots (RHC) - Off" "Conditions":"StoryCategoriesCodes-999999", "Operator":"And", "Settings":{ "RemoveGroupsRHC":"Ads,Widgets" } }, { //If Category="Slots (inline) - Off" "Conditions":"StoryCategoriesCodes-999999", "Operator":"And", "Settings":{ "RemoveGroupsInline":"Ads,Widgets" } }, { //If Category="Advert slots (all) - Off" "Conditions":"StoryCategoriesCodes-999999", "Operator":"And", "Settings":{ "RemoveGroupsAll":"Ads" } }, { //If Category="Advert slots (RHC) - Off" "Conditions":"StoryCategoriesCodes-999999", "Operator":"And", "Settings":{ "RemoveGroupsRHC":"Ads" } }, { //If Category="Advert slots (inline) - Off" "Conditions":"StoryCategoriesCodes-999999", "Operator":"And", "Settings":{ "RemoveGroupsInline":"Ads" } } ] };</script> <script> $(window).trigger("wvcfe:globalenhancedadvertsinit", [event, EnhancedAdvertisingConfig]); (function(w, d) { if(window.NodeList && !NodeList.prototype.forEach) { NodeList.prototype.forEach = Array.prototype.forEach; } d.addEventListener('DOMContentLoaded', function(event) { if(EnhancedAdvertisingConfig.Slots) { var enhAdDebug = false; if( localStorage.getItem('enh-ads-debug') == 'true' ) enhAdDebug = true; var sp = 'story-inlinecontent-placeholder'; var supportedTypes = ['gamadvert', 'customcontent']; var supportedPositions = ['inline', 'preferright', 'right']; var isDesktopResolution = w.matchMedia("screen and (min-width: 1023px)").matches; var isStoryFullLayout = d.body.classList.contains('story-full-layout'); var inlineCounter = 1; var rhcCounter = 1; var inlineAdCounter = 1; var rhcAdCounter = 1; var ticking = false; $('#story.enhanced-advertising .storytext > div.webonly').each( function(){ var t = $(this); t.replaceWith( t.html() ); }); var storyCustomContentPlaceholders = d.querySelectorAll('#story.enhanced-advertising .storytext > *'); var maxRHCSlotsToFitIn = 0; var matches = function(el, selector) { return (el.matches || el.matchesSelector || el.msMatchesSelector || el.mozMatchesSelector || el.webkitMatchesSelector || el.oMatchesSelector).call(el, selector); }; var getClosestParent = function(elem, selector) { for(; elem && elem !== d; elem = elem.parentNode) { if(matches(elem, selector)) { return elem; } } return null; }; var storyType = dataLayer ? dataLayer.filter(function(el) { return el && el.StoryTypeCode && el.StoryTypeCode != 'null'; }).map(function(el) { return 'StoryType-' + el.StoryTypeCode; }).join('') : ''; var storyFormat = dataLayer ? dataLayer.filter(function(el) { return el && el.StoryFormatCode && el.StoryFormatCode != 'null'; }).map(function(el) { return 'StoryFormat-' + el.StoryFormatCode; }).join('') : ''; var storyLayout = dataLayer ? dataLayer.filter(function(el) { return el && el.StoryLayoutCode && el.StoryLayoutCode != 'null'; }).map(function(el) { return 'StoryLayout-' + el.StoryLayoutCode; }).join('') : ''; //PWVD-780 var storyWidth = dataLayer ? dataLayer.filter(function(el) { return el && el.StoryWidth && el.StoryWidth != 'null'; }).map(function(el) { return 'StoryWidth-' + el.StoryWidth; }).join('') : ''; var storyFullNavPath = dataLayer ? dataLayer.filter(function(el) { return el && el.StoryFullNavPath && el.StoryFullNavPath != 'null'; }).map(function(el) { return el.StoryFullNavPath; }).join('').split('|').filter(function(el) { return el && el != 'null'; }).join('-') : ''; var storyCategoriesCodes = dataLayer ? dataLayer.filter(function(el) { return el && el.StoryCategoriesCodes && el.StoryCategoriesCodes != 'null'; }).map(function(el) { return el.StoryCategoriesCodes; }).join('').split('|').filter(function(el) { return el && el != 'null'; }).map(function(el) { return 'StoryCategoriesCodes-' + el; }) : []; var storyID = dataLayer ? dataLayer.filter(function(el) { return el && el.StoryID && el.StoryID != 'null'; }).map(function(el) { return 'StoryID-' + el.StoryID; }).filter(function(el) { return el && el != 'null' && el != 'StoryID-'; }).join('') : ''; storyFullNavPath = (storyFullNavPath ? 'StoryFullNavPath-' + storyFullNavPath : ''); var allDataLayerFilters = storyCategoriesCodes.concat([storyType, storyFormat, storyLayout, storyWidth, storyFullNavPath, storyID]).map(function(m) { return m.toLowerCase(); }); EnhancedAdvertisingConfig.RHCMinHeightForSlotInsert = (EnhancedAdvertisingConfig.RHCMinHeightForSlotInsert || 800); EnhancedAdvertisingConfig.RHCMinHeightForStickyAd = (EnhancedAdvertisingConfig.RHCMinHeightForStickyAd || 250); if('Overrides' in EnhancedAdvertisingConfig) { if(EnhancedAdvertisingConfig.Overrides) { var overrides = EnhancedAdvertisingConfig.Overrides; var andOperator = function() { return (override.Conditions.toLowerCase().split(',').filter(function(el) { return el && el; }).every(function(el) { return allDataLayerFilters.indexOf(el) != -1; })); }; var orOperator = function(el) { return (override.Conditions.toLowerCase().split(',').filter(function(el) { return el && el; }).some(function(el) { return allDataLayerFilters.indexOf(el) != -1; })); }; for(var i = 0, iL = overrides.length; i < iL; i++) { var override = overrides[i]; var operatorFilter; if(override.Operator && override.Operator.toLowerCase() == 'and') { operatorFilter = andOperator; } else { operatorFilter = orOperator; } if(operatorFilter()) { if('Settings' in override) { if(override.Settings) { var settings = override.Settings; if('AddGroupsAll' in settings && settings.AddGroupsAll && isString(settings.AddGroupsAll)) { if(settings.AddGroupsAll.toLowerCase().toLowerCase().indexOf('[all]') != -1) { EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsAll = '[all]'; } else { EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsAll += ',' + settings.AddGroupsAll.toLowerCase(); } } if('AddGroupsInline' in settings && settings.AddGroupsInline && isString(settings.AddGroupsInline)) { if(settings.AddGroupsInline.toLowerCase().toLowerCase().indexOf('[all]') != -1) { EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsInline = '[all]'; } else { EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsInline += ',' + settings.AddGroupsInline.toLowerCase(); } } if('AddGroupsRHC' in settings && settings.AddGroupsRHC && isString(settings.AddGroupsRHC)) { if(settings.AddGroupsRHC.toLowerCase().toLowerCase().indexOf('[all]') != -1) { EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsRHC = '[all]'; } else { EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsRHC += ',' + settings.AddGroupsRHC.toLowerCase(); } } if('RemoveGroupsAll' in settings && settings.RemoveGroupsAll && isString(settings.RemoveGroupsAll)) { if(settings.RemoveGroupsAll.toLowerCase().toLowerCase().indexOf('[all]') != -1) { EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsAll = '[all]'; } else { EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsAll += ',' + settings.RemoveGroupsAll.toLowerCase(); } } if('RemoveGroupsInline' in settings && settings.RemoveGroupsInline && isString(settings.RemoveGroupsInline)) { if(settings.RemoveGroupsInline.toLowerCase().toLowerCase().indexOf('[all]') != -1) { EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsInline = '[all]'; } else { EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsInline += ',' + settings.RemoveGroupsInline.toLowerCase(); } } if('RemoveGroupsRHC' in settings && settings.RemoveGroupsRHC && isString(settings.RemoveGroupsRHC)) { if(settings.RemoveGroupsRHC.toLowerCase().toLowerCase().indexOf('[all]') != -1) { EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsRHC = '[all]'; } else { EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsRHC += ',' + settings.RemoveGroupsRHC.toLowerCase(); } } if('Repeat' in settings && isBoolean(settings.Repeat)) { EnhancedAdvertisingConfig.StoryDynamicSlotsRepeat = settings.Repeat; } if('DesktopMaxInlineSlots' in settings && isNumberPositiveOrZero(settings.DesktopMaxInlineSlots)) { EnhancedAdvertisingConfig.StoryDynamicSlotsDesktopMaxInlineSlots = settings.DesktopMaxInlineSlots; } if('MobileMaxInlineSlots' in settings && isNumberPositiveOrZero(settings.MobileMaxInlineSlots)) { EnhancedAdvertisingConfig.StoryDynamicSlotsMobileMaxInlineSlots = settings.MobileMaxInlineSlots; } if('DesktopMinRHCSlots' in settings && isNumberPositiveOrZero(settings.DesktopMinRHCSlots)) { EnhancedAdvertisingConfig.StoryDynamicSlotsDesktopMinRHCSlots = settings.DesktopMinRHCSlots; } if('MobileMinRHCSlots' in settings && isNumberPositiveOrZero(settings.MobileMinRHCSlots)) { EnhancedAdvertisingConfig.StoryDynamicSlotsMobileMinRHCSlots = settings.MobileMinRHCSlots; } if('DesktopMaxRHCSlots' in settings && isNumberPositiveOrZero(settings.DesktopMaxRHCSlots)) { EnhancedAdvertisingConfig.StoryDynamicSlotsDesktopMaxRHCSlots = settings.DesktopMaxRHCSlots; } if('MobileMaxRHCSlots' in settings && isNumberPositiveOrZero(settings.MobileMaxRHCSlots)) { EnhancedAdvertisingConfig.StoryDynamicSlotsMobileMaxRHCSlots = settings.MobileMaxRHCSlots; } if('DesktopElementSpacingFirst' in settings && settings.DesktopElementSpacingFirst && isNumberPositive(settings.DesktopElementSpacingFirst)) { EnhancedAdvertisingConfig.StoryDynamicSlotsDesktopElementSpacingFirst = settings.DesktopElementSpacingFirst; } if('MobileElementSpacingFirst' in settings && settings.MobileElementSpacingFirst && isNumberPositive(settings.MobileElementSpacingFirst)) { EnhancedAdvertisingConfig.StoryDynamicSlotsMobileElementSpacingFirst = settings.MobileElementSpacingFirst; } if('DesktopElementSpacing' in settings && settings.DesktopElementSpacing && isNumberPositive(settings.DesktopElementSpacing)) { EnhancedAdvertisingConfig.StoryDynamicSlotsDesktopElementSpacing = settings.DesktopElementSpacing; } if('MobileElementSpacing' in settings && settings.MobileElementSpacing && isNumberPositive(settings.MobileElementSpacing)) { EnhancedAdvertisingConfig.StoryDynamicSlotsMobileElementSpacing = settings.MobileElementSpacing; } if('RHCMinHeightForSlotInsert' in settings && settings.RHCMinHeightForSlotInsert && isNumberPositive(settings.RHCMinHeightForSlotInsert)) { EnhancedAdvertisingConfig.RHCMinHeightForSlotInsert = settings.RHCMinHeightForSlotInsert; } if('RHCMinHeightForStickyAd' in settings && settings.RHCMinHeightForStickyAd && isNumberPositive(settings.RHCMinHeightForStickyAd)) { EnhancedAdvertisingConfig.RHCMinHeightForStickyAd = settings.RHCMinHeightForStickyAd; } if('CollapseEmptyDivs' in settings && isBoolean(settings.CollapseEmptyDivs)) { EnhancedAdvertisingConfig.CollapseEmptyDivs = settings.CollapseEmptyDivs; } } } } } } } var paragraphThreshold = isDesktopResolution ? EnhancedAdvertisingConfig.StoryDynamicSlotsDesktopElementSpacing : EnhancedAdvertisingConfig.StoryDynamicSlotsMobileElementSpacing; var paragraphFirstThreshold = isDesktopResolution ? EnhancedAdvertisingConfig.StoryDynamicSlotsDesktopElementSpacingFirst : EnhancedAdvertisingConfig.StoryDynamicSlotsMobileElementSpacingFirst; var maxInlineSlots = isDesktopResolution ? EnhancedAdvertisingConfig.StoryDynamicSlotsDesktopMaxInlineSlots : EnhancedAdvertisingConfig.StoryDynamicSlotsMobileMaxInlineSlots; var minRHCSlots = isDesktopResolution ? EnhancedAdvertisingConfig.StoryDynamicSlotsDesktopMinRHCSlots : EnhancedAdvertisingConfig.StoryDynamicSlotsMobileMinRHCSlots; var maxRHCSlots = isDesktopResolution ? EnhancedAdvertisingConfig.StoryDynamicSlotsDesktopMaxRHCSlots : EnhancedAdvertisingConfig.StoryDynamicSlotsMobileMaxRHCSlots; var allAddGroups = (EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsAll ? EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsAll : "").split(',').filter(function(f) { return f; }).filter(function(x, i, a) { return a.indexOf(x) === i; }); var allAddInlineGroups = [].concat(allAddGroups, (EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsInline ? EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsInline : "").split(',')).map(function(m) { return m.toLowerCase(); }).filter(function(f) { return f; }).filter(function(x, i, a) { return a.indexOf(x) === i; }); var allAddRHCGroups = [].concat(allAddGroups, (EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsRHC ? EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsRHC : "").split(',')).map(function(m) { return m.toLowerCase(); }).filter(function(f) { return f; }).filter(function(x, i, a) { return a.indexOf(x) === i; }); var allRemoveGroups = (EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsAll ? EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsAll : "").split(',').filter(function(f) { return f; }).filter(function(x, i, a) { return a.indexOf(x) === i; }); var allRemoveInlineGroups = [].concat(allRemoveGroups, (EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsInline ? EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsInline : "").split(',')).map(function(m) { return m.toLowerCase(); }).filter(function(f) { return f; }).filter(function(x, i, a) { return a.indexOf(x) === i; }); var allRemoveRHCGroups = [].concat(allRemoveGroups, (EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsRHC ? EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsRHC : "").split(',')).map(function(m) { return m.toLowerCase(); }).filter(function(f) { return f; }).filter(function(x, i, a) { return a.indexOf(x) === i; }); EnhancedAdvertisingConfig.Slots = EnhancedAdvertisingConfig.Slots.map(function(x, i) { x.Used = false; x.Index = i; if('Type' in x) { if(supportedTypes.indexOf(x.Type.toString().toLowerCase()) != -1) { x.Type = x.Type.toString().toLowerCase(); } else { x.Type = 'customcontent'; } } else { x.Type = 'customcontent'; } if('Position' in x) { if(supportedPositions.indexOf(x.Position.toString().toLowerCase()) != -1) { x.Position = x.Position.toString().toLowerCase(); } else { x.Position = 'inline'; } } else { x.Position = 'inline'; } if('CSSClass' in x) { x.CSSClass = x.CSSClass.toString().split(' ').join(',').split(',').filter(function(e) { return e && e; }).join(' '); } else { x.CSSClass = ''; } if('Group' in x) { x.Group = x.Group.toString().split(' ').join(',').split(',').filter(function(e) { return e && e; }).join(','); } else { x.Group = ''; } if('Sticky' in x) { if(x.Sticky.toString().toLowerCase() == 'true') { x.Sticky = true; } else { x.Sticky = false; } } else { x.Sticky = false; } if('InsertIfNoRHCSpace' in x) { if(x.InsertIfNoRHCSpace.toString().toLowerCase() == 'true') { x.InsertIfNoRHCSpace = true; } else { x.InsertIfNoRHCSpace = false; } } else { x.InsertIfNoRHCSpace = false; } if('MinHeight' in x) { x.MinHeight = parseInt(x.MinHeight.toString()); } else { x.MinHeight = 0; } if('NoBackfill' in x) { if(x.NoBackfill.toString().toLowerCase() == 'true') { x.NoBackfill = true; } else { x.NoBackfill = false; } } else { x.NoBackfill = false; } if('Refresh' in x) { if(x.Refresh.toString().toLowerCase() == 'true') { x.Refresh = true; } else { x.Refresh = false; } } else { x.Refresh = false; } if('ExtraHTML' in x) { if(x.ExtraHTML.toString()) { x.ExtraHTML = x.ExtraHTML.toString(); } else { x.ExtraHTML = ''; } } else { x.ExtraHTML = ''; } if('CustomEventName' in x) { if(x.CustomEventName.toString()) { x.CustomEventName = x.CustomEventName.toString(); } else { x.CustomEventName = ''; } } else { x.CustomEventName = ''; } if('Javascript' in x) { if(x.Javascript) { if(typeof x.Javascript === 'function') { x.Javascript = x.Javascript; } } else { x.Javascript = ''; } } else { x.Javascript = ''; } if('AdUnit' in x) { if(x.AdUnit.toString()) { x.AdUnit = x.AdUnit.toString(); } else { x.AdUnit = ''; } } else { x.AdUnit = ''; } if('AdUnitSizesInlineMobile' in x) { x.AdUnitSizesInlineMobile = x.AdUnitSizesInlineMobile; } else if('GAMAdUnitSizesInlineMobileDefault' in EnhancedAdvertisingConfig) { x.AdUnitSizesInlineMobile = EnhancedAdvertisingConfig.GAMAdUnitSizesInlineMobileDefault } if('AdUnitSizesInlineDesktop' in x) { x.AdUnitSizesInlineDesktop = x.AdUnitSizesInlineDesktop; } else if('GAMAdUnitSizesInlineDesktopDefault' in EnhancedAdvertisingConfig) { x.AdUnitSizesInlineDesktop = EnhancedAdvertisingConfig.GAMAdUnitSizesInlineDesktopDefault; } if('AdUnitSizesRHC' in x) { x.AdUnitSizesRHC = x.AdUnitSizesRHC; } else if('GAMAdUnitSizesRHCDefault' in EnhancedAdvertisingConfig) { x.AdUnitSizesRHC = EnhancedAdvertisingConfig.GAMAdUnitSizesRHCDefault; } if('RefreshDelaySeconds' in x) { x.RefreshDelaySeconds = parseInt(x.RefreshDelaySeconds.toString(), 10); } else { x.RefreshDelaySeconds = 30; } return x; }); var storyInlineContent = EnhancedAdvertisingConfig.Slots.filter(function(el) { return el && (el.Position.toLowerCase() == "inline" || ((!isDesktopResolution || isStoryFullLayout) && el.Position.toLowerCase() == "preferright")) && (el.Group || "").split(',').filter(function(subel) { return subel && subel != undefined; }).map(function(subel) { return subel.toLowerCase(); }).some(function(subel) { return allAddInlineGroups.indexOf(subel) != -1 || allAddInlineGroups.indexOf('[all]') != -1; }) && !(el.Group || "").split(',').filter(function(subel) { return subel && subel != undefined; }).map(function(subel) { return subel.toLowerCase(); }).some(function(subel) { return allRemoveInlineGroups.indexOf(subel) != -1 || allRemoveInlineGroups.indexOf('[all]') != -1; }); }); var storyRHCContent = isDesktopResolution ? EnhancedAdvertisingConfig.Slots.filter(function(el) { return el && (el.Position.toLowerCase() == "right" || (isDesktopResolution && !isStoryFullLayout && el.Position.toLowerCase() == "preferright")) && (el.Group || "").split(',').filter(function(subel) { return subel && subel != undefined; }).map(function(subel) { return subel.toLowerCase(); }).some(function(subel) { return allAddRHCGroups.indexOf(subel) != -1 || allAddRHCGroups.indexOf('[all]') != -1; }) && !(el.Group || "").split(',').filter(function(subel) { return subel && subel != undefined; }).map(function(subel) { return subel.toLowerCase(); }).some(function(subel) { return allRemoveRHCGroups.indexOf(subel) != -1 || allRemoveRHCGroups.indexOf('[all]') != -1; }); }) : []; storyInlineContent.forEach( (c, ix) => c.inlineIndex = ix ); storyRHCContent.forEach( (c, ix) => c.rhcIndex = ix ); var googletag = w.googletag || {}; googletag.cmd = googletag.cmd || []; if( isNumberPositive(maxInlineSlots) ){ //PWVD-781 for(var tmpCounter = 0, i = 0, eL = storyCustomContentPlaceholders.length, adThresholdCounter = 1; i < eL; i++) { var currentIsPara = matches(storyCustomContentPlaceholders[i], 'p:not([class])'); var nextIsPara = (i + 1 < eL) && matches(storyCustomContentPlaceholders[i + 1], 'p:not([class])'); if( currentIsPara && !nextIsPara ){ //PWVD-897 - count paragraphs followed by any other element if(adThresholdCounter < (tmpCounter == 0 ? paragraphFirstThreshold : paragraphThreshold)) { adThresholdCounter++; continue; } } else if( currentIsPara && nextIsPara ) { if(adThresholdCounter < (tmpCounter == 0 ? paragraphFirstThreshold : paragraphThreshold)) { adThresholdCounter++; continue; } tmpCounter++; adThresholdCounter = 1; storyCustomContentPlaceholders[i].outerHTML = storyCustomContentPlaceholders[i].outerHTML + "<div class=\"story-inlinecontent-placeholder story-inlinecontent-placeholder-init item-notin-viewport\" data-storyinlinecontainer=\"" + tmpCounter + "\"><div class=\"story-inlinecontent-placeholder-inner\" data-id=\"story-inline-item-" + tmpCounter + "\" data-storyinlineitem=\"" + tmpCounter + "\"></div></div>"; if(tmpCounter >= maxInlineSlots && maxInlineSlots) break; } } } if(d.querySelector('#story.enhanced-advertising:not(.story-full-layout) #rightcolumn_sleeve')) { if(!(d.body.id == "story" || d.body.id == "story_custom") && !d.querySelector('.storytext div.table-full:not(.initialized)')) { w.addEventListener("abacus:storytexttablefull:finished", function(e) { adjustRHCHeightAndInitialAds(); }, true); } else { adjustRHCHeightAndInitialAds(); } } if('IntersectionObserver' in w && 'IntersectionObserverEntry' in w && 'intersectionRatio' in w.IntersectionObserverEntry.prototype) { d.querySelectorAll('.story-inlinecontent-placeholder.story-inlinecontent-placeholder-init').forEach(function(el) { if(el) { var inlineAdsObserver = new IntersectionObserver(function(entries) { return inlineAdsObserverCallback(entries); }, { root: null, rootMargin: "50px 0px 50px 0px", threshold: [0, 0.01, 0.99, 1] }); inlineAdsObserver.observe(el); } }); var inlineAdsObserverCallback = function(entries) { return entries.forEach(function(entry, i) { if(entry.isIntersecting) { entry.target.classList.remove('item-notin-viewport'); entry.target.classList.add('item-in-viewport'); } else { entry.target.classList.remove('item-in-viewport'); entry.target.classList.add('item-notin-viewport'); } }); }; d.querySelectorAll('.storytext-end, #rhcreflow-extra-end').forEach(function(el) { if(el) { var adsInViewportObserver = new IntersectionObserver(function(entries) { return adsInViewportObserverCallback(entries); }, { root: null, rootMargin: "0px 0px 200px 0px", threshold: [1] }); adsInViewportObserver.observe(el); } }); var adsInViewportObserverCallback = function(entries) { return entries.forEach(function(entry, i) { if(entry.isIntersecting) { if(entry.target.classList.contains('storytext-end') && d.body.classList.contains('enhanced-advertising-inline-init')) { d.body.classList.add('enhanced-advertising-storytext-endreached'); } // RHC is empty at load time so it always fires as in viewport, need to check whether rhc ads slots already init if(entry.target.classList.contains('rhcreflow-extra-end') && d.body.classList.contains('enhanced-advertising-rhc-init')) { d.body.classList.add('enhanced-advertising-rhc-endreached'); } /* if(entry.target.id === 'rhcreflow-extra'){ //Fix for issue when RHC is not in initial viewport if( location.host.indexOf('abasoftaws.co.uk') > 0 ) console.log('New observer callback'); readjusRHCHeight(); } */ } }); }; } var inlineEl = d.querySelector('.story-inlinecontent-placeholder.story-inlinecontent-placeholder-init:not(.story-inlinecontent-placeholder-completed):not(.story-inlinecontent-placeholder-processing)'); if(inlineEl) { googletag.cmd = googletag.cmd || []; googletag.cmd.push(function() { d.body.classList.add('enhanced-advertising-inline-init'); insertInlineSlot(inlineEl); console.log('Init inline ad slot load'); }); } function slotRender(event){ var el, slot = event.slot, slotId = slot.getSlotElementId(); if(enhAdDebug) console.log('Slot render: ' + slotId); if(slotId == 'custom-inline'){ el = document.querySelector(`div.story-inlinecontent-placeholder-inner[data-id="story-inline-item-${event.dataId}"]`); //Get inline slot (does not have ID) //if(!el) // el = document.querySelector(`div.story-inlinecontent-placeholder-inner[data-id="story-inline-item-${event.inlineIndex+1}"]`); } else el = d.getElementById(slotId); if(el) { var minHeight = 0; var parentInlineNode = getClosestParent(el, '.story-inlinecontent-placeholder'); var parentRHCNode = getClosestParent(el, '.story-rhccontent-placeholder'); if(parentInlineNode || parentRHCNode) { var classList = el.classList; if(parentInlineNode) { parentInlineNode.classList.add('story-inlinecontent-placeholder-ad'); var index = parseInt(parentInlineNode.hasAttribute('data-index') ? parentInlineNode.getAttribute('data-index') : '0', 10); if(!event.isEmpty) { classList.add('ad'); classList.add('mob-ad-50'); classList.add('ad-story-inline'); classList.add('ad-story-inline-notempty'); parentInlineNode.classList.add('story-inlinecontent-placeholder-ad-size-' + event.size.join('x')); parentInlineNode.setAttribute('data-slot', slot.getAdUnitPath()); var currentInlineSlot = storyInlineContent.filter(function(e) { return e.Index == index; }); if(currentInlineSlot.length) { minHeight = currentInlineSlot[0].MinHeight; if(currentInlineSlot[0].Repeat == false) { currentInlineSlot[0].Used = true; } } else { console.log('Slot with index [data-index="' + index + '"] was not found'); } parentInlineNode.classList.add('story-inlinecontent-placeholder-finished'); insertInlineSlot(d.querySelector('.story-inlinecontent-placeholder.story-inlinecontent-placeholder-init:not(.story-inlinecontent-processing)')); } else { classList.add('ad-story-inline-isempty'); var currentInlineSlot = storyInlineContent.filter(function(e) { return e.Index == index; }); if(currentInlineSlot.length) { minHeight = currentInlineSlot[0].MinHeight; currentInlineSlot[0].Used = true; } else { console.log('Slot with index [data-index="' + index + '"] was not found'); } if(parentInlineNode && parentInlineNode.hasAttribute('data-nobackfill')) { if(parentInlineNode.getAttribute('data-nobackfill') == '1') { updateInlinePlaceholderClasses(parentInlineNode, event.isEmpty, minHeight); if(!storyInlineContent.some(function(el) { return el.Used == false; })) { finalizeRemainingEmptyInlineSlotContainers(parentInlineNode.classList, true); } else { insertInlineSlot(d.querySelector('.story-inlinecontent-placeholder.story-inlinecontent-placeholder-init:not(.story-inlinecontent-processing)')); } initRHCHeightCalc(); return; } } // Move to next from the list if( storyInlineContent.some( function(e){ return e.Used == false; } ) ) { if(enhAdDebug) console.log('slotRender: parentInlineNode: Move to next from the list') var adRetryCssClass = 'ad-story-inline-retry'; var nextInlineSlotList = storyInlineContent.filter(function(e) { return e.Index > index && e.Used == false; }); if(!nextInlineSlotList.length) { // select repeatable ads nextInlineSlotList = storyInlineContent.filter(function(e) { return e.Used == false && e.Index > index && e.Repeat == true; }); if(!nextInlineSlotList.length) { // if no repeatable ads by indexed order then start from the beginning or just pick any existing nextInlineSlotList = storyInlineContent.filter(function(e) { return e.Used == false && e.Repeat == true; }); if(!nextInlineSlotList.length) { // no more ads to add d.body.classList.add('enhanced-advertising-inline-runoutofslots'); finalizeRemainingEmptyInlineSlotContainers(parentInlineNode.classList, true); updateInlinePlaceholderClasses(parentInlineNode, event.isEmpty, minHeight); initRHCHeightCalc(); return; } } } var mapInlineAdItem = nextInlineSlotList[0]; var refresh = EnhancedAdvertisingConfig.Refresh; googletag.destroySlots([slot]); if(mapInlineAdItem.Refresh) { refresh = mapInlineAdItem.Refresh; } if(mapInlineAdItem.Repeat) { parentInlineNode.classList.remove('story-inlinecontent-placeholder-repeat-false'); parentInlineNode.classList.add('story-inlinecontent-placeholder-repeat-true'); } else { parentInlineNode.classList.remove('story-inlinecontent-placeholder-repeat-true'); parentInlineNode.classList.add('story-inlinecontent-placeholder-repeat-false'); } var mapInlineAdItemSlot = googletag.defineSlot(mapInlineAdItem.AdUnit, isDesktopResolution ? mapInlineAdItem.AdUnitSizesInlineDesktop : mapInlineAdItem.AdUnitSizesInlineMobile, slotId); if(mapInlineAdItemSlot) { mapInlineAdItemSlot.defineSizeMapping(googletag.sizeMapping().build()).setTargeting('refresh', (refresh ? 'true' : 'false')).setTargeting('refreshdelayseconds', mapInlineAdItem.RefreshDelaySeconds || (isDesktopResolution ? EnhancedAdvertisingConfig.RefreshDelaySecondsDefaultDesktop : EnhancedAdvertisingConfig.RefreshDelaySecondsDefaultMobile)).setCollapseEmptyDiv(EnhancedAdvertisingConfig.CollapseEmptyDivs, false).addService(googletag.pubads()); } else { console.warn('Something wrong with inline ad slot \'' + slotId + '\', size(s) \'' + (isDesktopResolution ? mapInlineAdItem.AdUnitSizesInlineDesktop : mapInlineAdItem.AdUnitSizesInlineMobile).join('x') + '\', path \'' + mapInlineAdItem.AdUnit + '\''); } googletag.display(slotId); el.classList.add(adRetryCssClass); parentInlineNode.setAttribute('data-index', mapInlineAdItem.Index); if(mapInlineAdItem.ExtraHTML) { var extraHTMLEl = parentInlineNode.querySelector('.story-inlinecontent-placeholder-ad-extrahtml'); if(extraHTMLEl) { extraHTMLEl.innerHTML = mapInlineAdItem.ExtraHTML; } } else { var extraHTMLEl = parentInlineNode.querySelector('.story-inlinecontent-placeholder-ad-extrahtml'); if(extraHTMLEl) { extraHTMLEl.innerHTML = ''; } } } else { // no slots to add.. finalizeRemainingEmptyInlineSlotContainers(parentInlineNode.classList, true); } } } else if(parentRHCNode) { parentRHCNode.classList.add('story-rhccontent-placeholder-ad'); var index = parseInt(parentRHCNode.hasAttribute('data-index') ? parentRHCNode.getAttribute('data-index') : '0', 10); if(!event.isEmpty) { classList.add('ad-rhc'); classList.add('ad-story-rhc'); classList.add('ad-story-rhc-notempty'); parentRHCNode.classList.add('story-rhccontent-placeholder-ad-size-' + event.size.join('x')); parentRHCNode.setAttribute('data-slot', slot.getAdUnitPath()); var currentRHCSlot = storyRHCContent.filter(function(e) { return e.Index == index; }); if(currentRHCSlot.length) { minHeight = currentRHCSlot[0].MinHeight; if(currentRHCSlot[0].Repeat == false) { currentRHCSlot[0].Used = true; } if(currentRHCSlot[0].InsertIfNoRHCSpace) { currentRHCSlot[0].InsertIfNoRHCSpace = false; } } else { console.log('Slot with index [data-index="' + index + '"] was not found'); } parentRHCNode.classList.remove('story-rhccontent-placeholder-isempty'); parentRHCNode.classList.remove('story-rhccontent-placeholder-notempty'); parentRHCNode.classList.add((event.isEmpty ? 'story-rhccontent-placeholder-isempty' : 'story-rhccontent-placeholder-notempty')); parentRHCNode.classList.add('story-rhccontent-placeholder-ad-completed'); parentRHCNode.classList.add('story-rhccontent-placeholder-finished'); var canAddRHC = isStoryTextTallerThanRHC(); if( ( index > 0 && !d.body.classList.contains('enhanced-advertising-inline-completed') && parentRHCNode.classList.contains('story-rhccontent-placeholder-canbesticky') ) || ( canAddRHC.canAdd && parentRHCNode.classList.contains('story-rhccontent-placeholder-canbesticky') && canAddRHC.delta > EnhancedAdvertisingConfig.RHCMinHeightForStickyAd ) ){ parentRHCNode.classList.remove('story-rhccontent-placeholder-canbesticky'); parentRHCNode.classList.add('story-rhccontent-placeholder-sticky'); } } else { classList.add('ad-story-rhc-isempty'); var currentRHCSlot = storyRHCContent.filter(function(e) { return e.Index == index; }); if(currentRHCSlot.length) { currentRHCSlot[0].Used = true; } else { console.log('Slot with index [data-index="' + index + '"] was not found'); } if(parentRHCNode && parentRHCNode.hasAttribute('data-nobackfill')) { if(parentRHCNode.getAttribute('data-nobackfill') == '1') { updateRHCPlaceholderClasses(parentRHCNode, event.isEmpty); if(!storyRHCContent.some(function(el) { return el.Used == false; })) { d.body.classList.add('enhanced-advertising-rhc-runoutofslots'); finalizeRemainingEmptyRHCSlotContainers(parentRHCNode.classList, true); } initRHCHeightCalc(); return; } } // Move to next from the list if(enhAdDebug){ console.log('slotRender: parentRHCNode: storyRHCContent: index: ' + index); console.log(storyRHCContent); } if(storyRHCContent.some(function(e) { return e.Used == false; })) { var adRetryCssClass = 'ad-story-rhc-retry'; var nextRHCSlotList = storyRHCContent.filter(function(e) { if(enhAdDebug) console.log('%c Current index: ' + e.Index + ', slot data index: ' + index, 'color: #0C6') return e.Index > index && e.Used == false; }); if(enhAdDebug){ console.log('%c slotRender: parentRHCNode: Moved to next from the list', 'color: #06C'); console.log(nextRHCSlotList); } if(!nextRHCSlotList.length) { // select repeatable ads nextRHCSlotList = storyRHCContent.filter(function(e) { return e.Used == false && e.Index > index && e.Repeat == true; }); if(!nextRHCSlotList.length) { // if no repeatable ads by indexed order then start from the beginning or just pick any existing nextRHCSlotList = storyRHCContent.filter(function(e) { return e.Used == false && e.Repeat == true; }); if(!nextRHCSlotList.length) { // no more ads to add finalizeRemainingEmptyRHCSlotContainers(parentRHCNode.classList, false); //updateRHCPlaceholderClasses(parentRHCNode, event.isEmpty, minHeight); updateRHCPlaceholderClasses(parentRHCNode, event.isEmpty); initRHCHeightCalc(); return; } } } var mapRHCAdItem = nextRHCSlotList[0]; var refresh = EnhancedAdvertisingConfig.Refresh; googletag.destroySlots([slot]); if(mapRHCAdItem.Refresh) { refresh = mapRHCAdItem.Refresh; } if(mapRHCAdItem.Repeat) { parentRHCNode.classList.remove('story-rhccontent-placeholder-repeat-false'); parentRHCNode.classList.add('story-rhccontent-placeholder-repeat-true'); } else { parentRHCNode.classList.remove('story-rhccontent-placeholder-repeat-true'); parentRHCNode.classList.add('story-rhccontent-placeholder-repeat-false'); } if(mapRHCAdItem.Type == 'customcontent'){ //Custom content (RSCCS-540) if(enhAdDebug) console.log('Next RHC config item is custom content'); adjustRHCHeightAndInitialAds(); } else if(mapRHCAdItem.AdUnit){ //Google ad var mapInlineAdItemSlot = googletag.defineSlot(mapRHCAdItem.AdUnit, isDesktopResolution ? mapRHCAdItem.AdUnitSizesInlineDesktop : mapRHCAdItem.AdUnitSizesInlineMobile, slotId); if(mapInlineAdItemSlot) { mapInlineAdItemSlot.defineSizeMapping( googletag.sizeMapping().build() ).setTargeting( 'refresh', (refresh ? 'true' : 'false') ).setTargeting( 'refreshdelayseconds', mapRHCAdItem.RefreshDelaySeconds || (isDesktopResolution ? EnhancedAdvertisingConfig.RefreshDelaySecondsDefaultDesktop : EnhancedAdvertisingConfig.RefreshDelaySecondsDefaultMobile) ).setCollapseEmptyDiv( EnhancedAdvertisingConfig.CollapseEmptyDivs, false ).addService( googletag.pubads() ); } else { console.warn('SlotRender: Something wrong with RHC ad slot \'' + slotId + '\', size(s) \'' + (isDesktopResolution ? mapRHCAdItem.AdUnitSizesInlineDesktop : mapRHCAdItem.AdUnitSizesInlineMobile).join('x') + '\', path \'' + mapRHCAdItem.AdUnit + '\''); } googletag.display(slotId); } el.classList.add(adRetryCssClass); parentRHCNode.setAttribute('data-index', mapRHCAdItem.Index); if(mapRHCAdItem.ExtraHTML) { var extraHTMLEl = parentRHCNode.querySelector('.story-rhccontent-placeholder-ad-extrahtml'); if(extraHTMLEl) { extraHTMLEl.innerHTML = mapRHCAdItem.ExtraHTML; } } else { var extraHTMLEl = parentRHCNode.querySelector('.story-rhccontent-placeholder-ad-extrahtml'); if(extraHTMLEl) { extraHTMLEl.innerHTML = ''; } } } else { // no slots to add.. finalizeRemainingEmptyRHCSlotContainers(parentRHCNode.classList, false); } } } if(parentInlineNode) { updateInlinePlaceholderClasses(parentInlineNode, event.isEmpty, minHeight); } else { //updateRHCPlaceholderClasses(parentRHCNode, event.isEmpty, minHeight); updateRHCPlaceholderClasses(parentRHCNode, event.isEmpty); } } } initRHCHeightCalc(); } googletag.cmd = googletag.cmd || []; googletag.cmd.push(function() { googletag.pubads().addEventListener('slotRequested', function(event) { var slot = event.slot; var el = d.getElementById(slot.getSlotElementId()); if(el) { var parentInlineNode = getClosestParent(el, '.story-inlinecontent-placeholder'); var parentRHCNode = getClosestParent(el, '.story-rhccontent-placeholder'); if(parentInlineNode || parentRHCNode) { if(parentInlineNode) { parentInlineNode.classList.add('story-inlinecontent-placeholder-ad-init'); } else { parentRHCNode.classList.add('story-rhccontent-placeholder-ad-init'); } } } }); googletag.pubads().addEventListener('slotRenderEnded', function(event) { var sId = event.slot.getSlotElementId(); if( enhAdDebug && sId.includes('story-rhcad') || sId.includes('story-inlinead') ){ console.log(`%c Slot RENDER END (${sId})`, 'color: #FE2ACA'); console.log(event); //loadOrRender(sId, 'render', event); } slotRender(event); }); if(enhAdDebug){ //Track slot load events googletag.pubads().addEventListener('slotOnload', (evLoad) => { var sId = evLoad.slot.getSlotElementId(); if( sId.includes('story-rhcad') || sId.includes('story-inlinead') ){ console.log(`%c Slot LOAD (${ evLoad.slot.getSlotElementId() })`, 'color: #C00;'); console.log(event); //loadOrRender(sId, 'load'); } }); } googletag.pubads().addEventListener('slotVisibilityChanged', function(event) { var slot = event.slot; if(slot.getTargeting('refresh').indexOf('true') > -1 && event.inViewPercentage > 0) { var el = d.getElementById(slot.getSlotElementId()); var parentStoryInlineNode = getClosestParent(el, '.ad-story-inline'); var parentStoryRHCNode = getClosestParent(el, '.ad-story-rhc'); if(parentStoryInlineNode || parentStoryRHCNode) { if(parentStoryInlineNode) { var inlineEl = getClosestParent(el, '.story-inlinecontent-placeholder'); if(inlineEl) { if(inlineEl.hasAttribute('data-shouldrefresh')) { var shouldRefresh = inlineEl.getAttribute('data-shouldrefresh'); if(shouldRefresh && shouldRefresh == '1') { googletag.cmd.push(function() { googletag.pubads().refresh([slot], { changeCorrelator: false }); }); var classList = parentStoryInlineNode.classList; var cssClassName = 'ad-story-inline-refreshed-'; var cssClassCounter = 1; for(var i = 0, c = parentStoryInlineNode.className.split(' '), iL = c.length; i < iL; i++) { var v = c[i]; if(v.indexOf(cssClassName) != -1) { cssClassCounter = parseInt(v.split(cssClassName).join(''), 10) + 1; classList.remove(v); break; } } classList.add(cssClassName + cssClassCounter); classList.add('ad-story-inline-refreshed'); inlineEl.setAttribute('data-shouldrefresh', '0'); } } } } else { var rhcEl = getClosestParent(el, '.story-rhccontent-placeholder'); if(rhcEl) { if(rhcEl.hasAttribute('data-shouldrefresh')) { var shouldRefresh = rhcEl.getAttribute('data-shouldrefresh'); if(shouldRefresh && shouldRefresh == '1') { googletag.cmd.push(function() { googletag.pubads().refresh([slot], { changeCorrelator: false }); }); var classList = parentStoryRHCNode.classList; var cssClassName = 'ad-story-rhc-refreshed-'; var cssClassCounter = 1; for(var i = 0, c = parentStoryRHCNode.className.split(' '), iL = c.length; i < iL; i++) { var v = c[i]; if(v.indexOf(cssClassName) != -1) { cssClassCounter = parseInt(v.split(cssClassName).join(''), 10) + 1; classList.remove(v); break; } } classList.add(cssClassName + cssClassCounter); classList.add('ad-story-rhc-refreshed'); rhcEl.setAttribute('data-shouldrefresh', '0'); } } } } } } }); googletag.pubads().addEventListener('impressionViewable', function(event) { var slot = event.slot; if(slot.getTargeting('refresh').indexOf('true') > -1) { var refreshdelayseconds = slot.getTargeting('refreshdelayseconds').length ? parseInt(slot.getTargeting('refreshdelayseconds')[0], 10) : 0; if(refreshdelayseconds) { setTimeout(function() { var el = d.getElementById(slot.getSlotElementId()); var parentStoryInlineNode = getClosestParent(el, '.ad-story-inline'); var parentStoryRHCNode = getClosestParent(el, '.ad-story-rhc'); if(parentStoryInlineNode) { var inlineEl = getClosestParent(el, '.story-inlinecontent-placeholder'); if(inlineEl) { if(inlineEl.classList.contains('item-in-viewport')) { googletag.cmd.push(function() { googletag.pubads().refresh([slot], { changeCorrelator: false }); }); var classList = parentStoryInlineNode.classList; var cssClassName = 'ad-story-inline-refreshed-'; var cssClassCounter = 1; for(var i = 0, c = parentStoryInlineNode.className.split(' '), iL = c.length; i < iL; i++) { var v = c[i]; if(v.indexOf(cssClassName) != -1) { cssClassCounter = parseInt(v.split(cssClassName).join(''), 10) + 1; classList.remove(v); break; } } classList.add(cssClassName + cssClassCounter); inlineEl.setAttribute('data-shouldrefresh', '0'); } else { inlineEl.setAttribute('data-shouldrefresh', '1'); } } } else if(parentStoryRHCNode) { var rhcEl = getClosestParent(el, '.story-rhccontent-placeholder'); if(rhcEl) { if(rhcEl.classList.contains('item-in-viewport')) { googletag.cmd.push(function() { googletag.pubads().refresh([slot], { changeCorrelator: false }); }); var classList = parentStoryRHCNode.classList; var cssClassName = 'ad-story-rhc-refreshed-'; var cssClassCounter = 1; for(var i = 0, c = parentStoryRHCNode.className.split(' '), iL = c.length; i < iL; i++) { var v = c[i]; if(v.indexOf(cssClassName) != -1) { cssClassCounter = parseInt(v.split(cssClassName).join(''), 10) + 1; classList.remove(v); break; } } classList.add(cssClassName + cssClassCounter); rhcEl.setAttribute('data-shouldrefresh', '0'); } else { rhcEl.setAttribute('data-shouldrefresh', '1'); } } } }, refreshdelayseconds * 1000); } else { console.log('Ad refresh delay in seconds is incorrect (slot: ' + slot.getSlotElementId() + '): ', refreshdelayseconds); } } }); }); function isBoolean(n) { return !!n === n; } function isNumber(n) { return +n === n; } function isString(n) { return '' + n === n; } function isNumberPositive(n) { return +n === n && n > 0; } function isNumberPositiveOrZero(n) { return +n === n && n >= 0; } function isArrayOfArrays(a) { return a.every(function(x) { return Array.isArray(x); }); } function getAbsoluteHeight(element) { if(!element) return 0; var styles = w.getComputedStyle(element); var margin = parseFloat(styles['margin-top']) + parseFloat(styles['margin-bottom']); var minHeight = element.clientHeight; return Math.ceil(minHeight ? minHeight + margin : element.offsetHeight + margin); } function updateRHCContainerState() { var classList = d.body.classList; if(!d.querySelectorAll('#rhcreflow-extra .story-rhccontent-placeholder.story-rhccontent-placeholder-completed').length) { d.body.classList.add('enhanced-advertising-rhc-empty'); } else { d.body.classList.remove('enhanced-advertising-rhc-empty'); } } function insertRHCSlot(el) { if(el) { el.classList.add('story-rhccontent-placeholder-processing'); } if(el && storyRHCContent.some(function(e) { return e.Used == false; })) { var classList = el.classList; var placeholder = el.querySelector('[data-id]'); var tempFilteredRHCAds = storyRHCContent; if(placeholder) { var elemsIndexes = d.querySelectorAll('.story-rhccontent-placeholder.story-rhccontent-placeholder-completed[data-index]'); var slotIndex = elemsIndexes.length ? parseInt(elemsIndexes[elemsIndexes.length - 1].getAttribute('data-index'), 10) : -1; tempFilteredRHCAds = storyRHCContent.filter(function(e) { return slotIndex < e.Index && e.Used == false; }); if(!tempFilteredRHCAds.length) { tempFilteredRHCAds = storyRHCContent.filter(function(e) { return e.Used == false && slotIndex < e.Index && e.Repeat == true; }); } if(!tempFilteredRHCAds.length) { tempFilteredRHCAds = storyRHCContent.filter(function(e) { return e.Used == false && e.Repeat == true; }); } if(!tempFilteredRHCAds.length) { finalizeRemainingEmptyRHCSlotContainers(classList, false); return; } var mapRHCAdItem = tempFilteredRHCAds[0]; classList.remove('story-rhccontent-placeholder-init'); classList.remove('story-rhccontent-placeholder-processing'); classList.add('story-rhccontent-placeholder-completed'); if(mapRHCAdItem.CSSClass) { mapRHCAdItem.CSSClass.split(' ').forEach(function(elem) { if(elem) { classList.add(elem); } }); } if(mapRHCAdItem.Type == 'gamadvert') { if(placeholder) { var refresh = EnhancedAdvertisingConfig.Refresh; el.setAttribute('data-storycustomcontent', '0'); if(mapRHCAdItem.Sticky) { classList.add('story-rhccontent-placeholder-canbesticky'); placeholder.classList.add('sticky'); } if(mapRHCAdItem.NoBackfill) { el.setAttribute('data-nobackfill', '1'); } else { el.setAttribute('data-nobackfill', '0'); } if(mapRHCAdItem.Refresh) { refresh = mapRHCAdItem.Refresh; } var mapRHCAdItemSlot = googletag.defineSlot(mapRHCAdItem.AdUnit, mapRHCAdItem.AdUnitSizesRHC, 'story-rhcad-' + rhcAdCounter); if(mapRHCAdItemSlot) { mapRHCAdItemSlot.defineSizeMapping(googletag.sizeMapping().build()).setTargeting('refresh', (refresh ? 'true' : 'false')).setTargeting('refreshdelayseconds', mapRHCAdItem.RefreshDelaySeconds || (isDesktopResolution ? EnhancedAdvertisingConfig.RefreshDelaySecondsDefaultDesktop : EnhancedAdvertisingConfig.RefreshDelaySecondsDefaultMobile)).setCollapseEmptyDiv(EnhancedAdvertisingConfig.CollapseEmptyDivs, false).addService(googletag.pubads()); } else { console.warn('Something wrong with rhc ad slot \'' + 'story-rhcad-' + rhcAdCounter + '\', size(s) \'' + mapRHCAdItem.AdUnitSizesRHC.join('x') + '\', path \'' + mapRHCAdItem.AdUnit + '\''); } if(refresh) { el.setAttribute('data-shouldrefresh', '0'); classList.add('story-rhccontent-placeholder-refresh-true'); } else { classList.add('story-rhccontent-placeholder-refresh-false'); } classList.add('story-rhccontent-placeholder-ad'); placeholder.id = 'story-rhcad-' + rhcAdCounter; placeholder.outerHTML = '<div class="story-rhccontent-placeholder-ad-extrahtml">' + mapRHCAdItem.ExtraHTML + '</div>' + placeholder.outerHTML; el.setAttribute('data-slot', mapRHCAdItem.AdUnit); googletag.display('story-rhcad-' + rhcAdCounter); $(w).trigger("wvcfe:storyrhcaditeminit", [$(el), $(placeholder), mapRHCAdItem, rhcAdCounter, rhcCounter, false, 'rhc', mapRHCAdItem.Type]); if(mapRHCAdItem.CustomEventName) { $(w).trigger(mapRHCAdItem.CustomEventName, [el, placeholder, mapRHCAdItem, rhcAdCounter, rhcCounter, false, 'rhc', mapRHCAdItem.Type]); } if(mapRHCAdItem.Javascript) { if(typeof mapRHCAdItem.Javascript === 'function') { mapRHCAdItem.Javascript.call(this, el, placeholder, mapRHCAdItem, rhcAdCounter, rhcCounter, false, 'rhc', mapRHCAdItem.Type); } } rhcAdCounter++; } } else if(mapRHCAdItem.Type == 'customcontent') { el.setAttribute('data-storycustomcontent', '1'); classList.add('story-rhccontent-placeholder-customcontent'); if(placeholder) { placeholder.innerHTML = mapRHCAdItem.HTML; classList.add('story-rhccontent-placeholder-notempty'); $(w).trigger("wvcfe:storyrhcitemajaxinit", [$(el), $(placeholder), mapRHCAdItem, rhcCounter, false, 'rhc', mapRHCAdItem.Type]); if(mapRHCAdItem.CustomEventName) { $(w).trigger(mapRHCAdItem.CustomEventName, [$(el), $(placeholder), mapRHCAdItem, rhcCounter, false, 'rhc', mapRHCAdItem.Type]); } if(mapRHCAdItem.Javascript) { if(typeof mapRHCAdItem.Javascript === 'function') { mapRHCAdItem.Javascript.call(this, el, placeholder, mapRHCAdItem, rhcCounter, false, 'rhc', mapRHCAdItem.Type); } } el.classList.add('story-rhccontent-placeholder-finished'); } } el.setAttribute('data-index', mapRHCAdItem.Index); rhcCounter++; } else { console.log('Missing placeholder: [data-id="story-rhc-item-' + rhcCounter + '"]'); } } else if(el) { // All slots are used, mark current slot placeholder and the rest ones as completed and used var classList = el.classList; finalizeRemainingEmptyRHCSlotContainers(classList, false); } else { console.log('Missing RHC element'); } } function insertInlineSlot(el) { if(el) { el.classList.add('story-inlinecontent-placeholder-processing'); } if(el && storyInlineContent.some(function(e) { return e.Used == false; })) { var classList = el.classList; var placeholder = el.querySelector('[data-id]'); var tempFilteredInlineAds = storyInlineContent; if(placeholder) { var elemsIndexes = d.querySelectorAll('.story-inlinecontent-placeholder.story-inlinecontent-placeholder-completed[data-index]'); var slotIndex = elemsIndexes.length ? parseInt(elemsIndexes[elemsIndexes.length - 1].getAttribute('data-index'), 10) : -1; tempFilteredInlineAds = storyInlineContent.filter(function(e){ return slotIndex < e.Index && e.Used == false; }); if(!tempFilteredInlineAds.length) { tempFilteredInlineAds = storyInlineContent.filter(function(e) { return e.Used == false && slotIndex < e.Index && e.Repeat == true; }); if(!tempFilteredInlineAds.length) { // start from the first repeatable ad index tempFilteredInlineAds = storyInlineContent.filter(function(e) { return e.Used == false && e.Repeat == true; }); if(!tempFilteredInlineAds.length) { finalizeRemainingEmptyInlineSlotContainers(classList, true); return; } } } var mapInlineAdItem = tempFilteredInlineAds[0]; classList.remove('story-inlinecontent-placeholder-init'); classList.remove('story-inlinecontent-placeholder-processing'); classList.add('story-inlinecontent-placeholder-completed'); if(mapInlineAdItem.CSSClass) { mapInlineAdItem.CSSClass.split(' ').forEach(function(elem) { if(elem) { classList.add(elem); } }); } if(mapInlineAdItem.Type == 'gamadvert') { var refresh = EnhancedAdvertisingConfig.Refresh; el.setAttribute('data-storycustomcontent', '0'); el.classList.add('story-inlinecontent-placeholder-ad'); if(mapInlineAdItem.Sticky) { classList.add('story-inlinecontent-placeholder-sticky'); placeholder.classList.add('sticky'); } if(mapInlineAdItem.NoBackfill) { el.setAttribute('data-nobackfill', '1'); } else { el.setAttribute('data-nobackfill', '0'); } if(mapInlineAdItem.Repeat) { classList.add('story-inlinecontent-placeholder-repeat-true'); } else { classList.add('story-inlinecontent-placeholder-repeat-false'); } if(mapInlineAdItem.Refresh) { refresh = mapInlineAdItem.Refresh; } var mapInlineAdItemSlot = googletag.defineSlot(mapInlineAdItem.AdUnit, isDesktopResolution ? mapInlineAdItem.AdUnitSizesInlineDesktop : mapInlineAdItem.AdUnitSizesInlineMobile, 'story-inlinead-' + inlineAdCounter); if(mapInlineAdItemSlot) { mapInlineAdItemSlot.defineSizeMapping(googletag.sizeMapping().build()).setTargeting('refresh', (refresh ? 'true' : 'false')).setTargeting('refreshdelayseconds', mapInlineAdItem.RefreshDelaySeconds || (isDesktopResolution ? EnhancedAdvertisingConfig.RefreshDelaySecondsDefaultDesktop : EnhancedAdvertisingConfig.RefreshDelaySecondsDefaultMobile)).setCollapseEmptyDiv(EnhancedAdvertisingConfig.CollapseEmptyDivs, false).addService(googletag.pubads()); } else { console.warn('Something wrong with inline ad slot \'' + 'story-inlinead-' + inlineAdCounter + '\', size(s) \'' + (isDesktopResolution ? mapInlineAdItem.AdUnitSizesInlineDesktop : mapInlineAdItem.AdUnitSizesInlineMobile).join('x') + '\', path \'' + mapInlineAdItem.AdUnit + '\''); } if(refresh) { el.setAttribute('data-shouldrefresh', '0'); classList.add('story-inlinecontent-placeholder-refresh-true'); } else { classList.add('story-inlinecontent-placeholder-refresh-false'); } placeholder.id = 'story-inlinead-' + inlineAdCounter; placeholder.outerHTML = '<div class="story-inlinecontent-placeholder-ad-extrahtml">' + mapInlineAdItem.ExtraHTML + '</div>' + placeholder.outerHTML; el.setAttribute('data-slot', mapInlineAdItem.AdUnit); googletag.display('story-inlinead-' + inlineAdCounter); $(w).trigger("wvcfe:storyinlineaditeminit", [$(el), $(placeholder), mapInlineAdItem, inlineAdCounter, inlineCounter, false, 'inline', mapInlineAdItem.Type]); if(mapInlineAdItem.CustomEventName) { $(w).trigger(mapInlineAdItem.CustomEventName, [el, placeholder, mapInlineAdItem, inlineAdCounter, inlineCounter, false, 'inline', mapInlineAdItem.Type]); } if(mapInlineAdItem.Javascript) { if(typeof mapInlineAdItem.Javascript === 'function') { mapInlineAdItem.Javascript.call(this, el, placeholder, mapInlineAdItem, inlineAdCounter, inlineCounter, false, 'inline', mapInlineAdItem.Type); } } inlineAdCounter++; } else if(mapInlineAdItem.Type == 'customcontent') { el.setAttribute('data-storycustomcontent', '1'); el.classList.add('story-inlinecontent-placeholder-customcontent'); placeholder.innerHTML = mapInlineAdItem.HTML; $(w).trigger("wvcfe:storyinlineitemajaxinit", [$(el), $(placeholder), mapInlineAdItem, inlineCounter, false, 'inline', mapInlineAdItem.Type]); if(mapInlineAdItem.CustomEventName) { $(w).trigger(mapInlineAdItem.CustomEventName, [$(el), $(placeholder), mapInlineAdItem, inlineCounter, false, 'inline', mapInlineAdItem.Type]); } if(mapInlineAdItem.Javascript) { if(typeof mapInlineAdItem.Javascript === 'function') { mapInlineAdItem.Javascript.call(this, el, placeholder, mapInlineAdItem, inlineCounter, false, 'inline', mapInlineAdItem.Type.toLowerCase()); } } el.classList.add('story-inlinecontent-placeholder-finished'); var inlineCustomEvent = { dataId: (mapInlineAdItem.Index+1), slot: { getSlotElementId: function(){ return 'custom-inline'; }, getAdUnitPath: function(){return 'custom-inline'} }, isEmpty: false, size:[0,0] }; el.setAttribute('data-index', mapInlineAdItem.Index); slotRender(inlineCustomEvent); //$(w).trigger('abacus:inlinecontentrender', inlineCustomEvent); } el.setAttribute('data-index', mapInlineAdItem.Index); //el.setAttribute('data-index', inlineCounter); inlineCounter++; } else { console.log('Missing placeholder: [data-id="story-inline-item-' + inlineCounter + '"]'); } } else if(el) { // All slots are used, mark current slot placeholder and the rest ones as completed and used var classList = el.classList; finalizeRemainingEmptyInlineSlotContainers(classList, true); } else { console.log('Missing inline element'); } } function finalizeRemainingEmptyRHCSlotContainers(classList, processremaining) { classList.remove('story-rhccontent-placeholder-init'); classList.remove('story-rhccontent-placeholder-processing'); classList.add('story-rhccontent-placeholder-completed'); classList.add('story-rhccontent-placeholder-isempty'); classList.add('story-rhccontent-placeholder-runoutofslots'); classList.add('story-rhccontent-placeholder-finished'); if(processremaining) { for(var i = 0, elems = d.querySelectorAll('.story-rhccontent-placeholder.story-rhccontent-placeholder-init:not(.story-rhccontent-placeholder-processing)'), iL = elems.length; i < iL; i++) { var e = elems[i]; if(e) { var c = e.classList; c.remove('story-rhccontent-placeholder-init'); c.add('story-rhccontent-placeholder-completed'); c.add('story-rhccontent-placeholder-isempty'); c.add('story-rhccontent-placeholder-runoutofslots'); c.add('story-rhccontent-placeholder-finished'); } } } } function finalizeRemainingEmptyInlineSlotContainers(classList, processremaining) { classList.remove('story-inlinecontent-placeholder-init'); classList.remove('story-inlinecontent-placeholder-processing'); classList.add('story-inlinecontent-placeholder-completed'); classList.add('story-inlinecontent-placeholder-isempty'); classList.add('story-inlinecontent-placeholder-runoutofslots'); classList.add('story-inlinecontent-placeholder-finished'); if(processremaining) { for(var i = 0, elems = d.querySelectorAll('.story-inlinecontent-placeholder.story-inlinecontent-placeholder-init:not(.story-inlinecontent-placeholder-processing)'), iL = elems.length; i < iL; i++) { var e = elems[i]; if(e) { var c = e.classList; c.remove('story-inlinecontent-placeholder-init'); c.add('story-inlinecontent-placeholder-completed'); c.add('story-inlinecontent-placeholder-isempty'); c.add('story-inlinecontent-placeholder-runoutofslots'); c.add('story-inlinecontent-placeholder-finished'); } } } } function updateInlinePlaceholderClasses(node, status, minHeight) { node.classList.remove('story-inlinecontent-placeholder-isempty'); node.classList.remove('story-inlinecontent-placeholder-notempty'); node.classList.add((status ? 'story-inlinecontent-placeholder-isempty' : 'story-inlinecontent-placeholder-notempty')); node.classList.add('story-inlinecontent-placeholder-ad-completed'); if(!status) { var computedMinHeightValue = w.getComputedStyle(node).minHeight || 0; var computedMinHeight = parseInt(computedMinHeightValue, 10); if(minHeight > computedMinHeight) { node.style.minHeight = minHeight + 'px'; } } } function updateRHCPlaceholderClasses(node, status) { node.classList.remove('story-rhccontent-placeholder-ad-init'); node.classList.remove('story-rhccontent-placeholder-isempty'); node.classList.remove('story-rhccontent-placeholder-notempty'); node.classList.add((status ? 'story-rhccontent-placeholder-isempty' : 'story-rhccontent-placeholder-notempty')); node.classList.add('story-rhccontent-placeholder-ad-completed'); } function initRHCHeightCalc() { updateRHCFirstandLastItemStyles(); // readjust height if no in progress/loading ads as the height might change on storytext or RHC if(!d.querySelectorAll('#rhcreflow-extra .story-rhccontent-placeholder.story-rhccontent-placeholder-completed.story-rhccontent-placeholder-ad-init').length) { readjusRHCHeight(); } else { setTimeout(function() { initRHCHeightCalc(); }, 0); } } function isInViewport(element) { var rect = element.getBoundingClientRect(); var height = w.innerHeight || d.documentElement.clientHeight; var width = w.innerWidth || d.documentElement.clientWidth; return ( rect.right >= 0 && rect.bottom >= 0 && rect.left <= width && rect.top <= height ); } function processElementsInViewport() { var adsInlinePlaceholders = d.querySelectorAll('.storytext .story-inlinecontent-placeholder'); //PWVD-893 : change from rhccontent var adsRHCPlaceholders = d.querySelectorAll('#rhcreflow-extra .story-rhccontent-placeholder'); if(adsInlinePlaceholders || adsRHCPlaceholders) { if(adsInlinePlaceholders) { adsInlinePlaceholders.forEach(function(el) { var classList = el.classList; if(!isInViewport(el)) { classList.remove('story-inlinecontent-placeholder-isinviewport'); classList.add('story-inlinecontent-placeholder-isnotinviewport'); } else { classList.remove('story-inlinecontent-placeholder-isnotinviewport'); classList.add('story-inlinecontent-placeholder-isinviewport'); } }); } else { adsRHCPlaceholders.forEach(function(el) { var classList = el.classList; if(!isInViewport(el)) { classList.remove('story-rhccontent-placeholder-isinviewport'); classList.add('story-rhccontent-placeholder-isnotinviewport'); } else { classList.remove('story-rhccontent-placeholder-isnotinviewport'); classList.add('story-rhccontent-placeholder-isinviewport'); } }); } } } function adjustRHCHeightAndInitialAds() { var output = []; var googletag = w.googletag || {}; var rhcreflowExtra = d.querySelector('#rhcreflow-extra'); if(rhcreflowExtra) { rhcreflowExtra.innerHTML = ''; minRHCSlotsToFitIn = (minRHCSlots > 0 ? minRHCSlots : 2); maxRHCSlotsToFitIn = (maxRHCSlots > 0 ? maxRHCSlots : 0); for(var i = 0, iL = Math.max(storyRHCContent.length, maxRHCSlotsToFitIn); i < iL; i++) { rhcCounter = i + 1; output.push("<div class=\"story-rhccontent-placeholder story-rhccontent-placeholder-init item-notin-viewport\" data-storyrhccontainer=\"" + rhcCounter + "\"><div class=\"story-rhccontent-placeholder-inner\" data-id=\"story-rhc-item-" + rhcCounter + "\" data-storyrhcitem=\"" + rhcCounter + "\"></div></div>"); if(rhcCounter >= maxRHCSlotsToFitIn) break; } d.querySelector('#rhcreflow-extra').innerHTML = output.join(''); if('IntersectionObserver' in w && 'IntersectionObserverEntry' in w && 'intersectionRatio' in w.IntersectionObserverEntry.prototype) { d.querySelectorAll('.story-rhccontent-placeholder.story-rhccontent-placeholder-init').forEach(function(el) { if(el) { observer = new IntersectionObserver(function(entries) { return observerCallback(entries); }, { root: null, rootMargin: "50px 0px 50px 0px", threshold: [0, 0.01, 0.99, 1] }); observer.observe(el); } }); var observerCallback = function(entries) { return entries.forEach(function(entry, i) { if(entry.isIntersecting) { entry.target.classList.remove('item-notin-viewport'); entry.target.classList.add('item-in-viewport'); } else { entry.target.classList.remove('item-in-viewport'); entry.target.classList.add('item-notin-viewport'); } }); } } googletag.cmd = googletag.cmd || []; googletag.cmd.push(function() { var rhcEl = d.querySelector('.story-rhccontent-placeholder.story-rhccontent-placeholder-init:not(.story-rhccontent-placeholder-completed):not(.story-rhccontent-placeholder-processing)'); var hasAnyRHCLoadedBefore = d.querySelectorAll('.story-rhccontent-placeholder.story-rhccontent-placeholder-completed'); if(rhcEl && !hasAnyRHCLoadedBefore.length) { insertRHCSlot(rhcEl); d.body.classList.add('enhanced-advertising-rhc-init'); } }); updateRHCContainerState(); } } function isStoryTextTallerThanRHC() { var calcHeight = 0; if(w.matchMedia("screen and (min-width: 1023px)").matches && !d.body.classList.contains('story-full-layout')) { var h = 0, colmain = d.getElementById('colmain').clientHeight; d.querySelectorAll('#rightcolumn_sleeve > *:not(#rhcreflow-extra)').forEach(function(item) { h = getAbsoluteHeight(item); item.setAttribute('data-height', h); calcHeight += h; }); d.querySelectorAll('#rhcreflow-extra > *').forEach(function(item) { h = getAbsoluteHeight(item); item.setAttribute('data-height', h); calcHeight += h; }); return { "canAdd": colmain > calcHeight, "delta": colmain - calcHeight }; } else { return { "canAdd": false, "delta": 0 }; } } function canAddRHCItem() { // check whether inline and RHC ads finished loading, otherwise ignore var storyRHCSlotHeight = EnhancedAdvertisingConfig.RHCMinHeightForSlotInsert; var calcHeight = 0; if(w.matchMedia("screen and (min-width: 1023px)").matches && !d.body.classList.contains('story-full-layout')) { var h = 0, innerChild = 0; d.querySelectorAll('#rightcolumn_sleeve > *:not(#rhcreflow-extra)').forEach(function(item) { h = getAbsoluteHeight(item); item.setAttribute('data-height', h); calcHeight += h; }); d.querySelectorAll('#rhcreflow-extra > *').forEach(function(item) { //innerChild = (item || item.querySelector('.story-rhccontent-placeholder-inner') || item.firstChild); //h = getAbsoluteHeight(innerChild); //if (h == 0) { // h = getAbsoluteHeight(item); //} h = getAbsoluteHeight(item); item.setAttribute('data-height', h); calcHeight += h; }); var result = { "canAddRHCItem": d.getElementById('colmain').clientHeight > calcHeight + storyRHCSlotHeight, "colmainTaller": d.getElementById('colmain').clientHeight > calcHeight }; return result; } else { return { "canAddRHCItem": false, "colmainTaller": false }; } } function readjusRHCHeight() { if(w.matchMedia("screen and (min-width: 1023px)").matches && !d.body.classList.contains('story-full-layout')) { d.getElementById('rightcolumn_sleeve').style.minHeight = d.getElementById('colmain').clientHeight + 'px'; } var elemsIndexes = d.querySelectorAll('.story-rhccontent-placeholder.story-rhccontent-placeholder-completed[data-index]'); var slotIndex = elemsIndexes.length ? parseInt(elemsIndexes[elemsIndexes.length - 1].getAttribute('data-index'), 10) : -1; var rhcEl = d.querySelector('.story-rhccontent-placeholder.story-rhccontent-placeholder-init:not(.story-rhccontent-placeholder-completed):not(.story-rhccontent-placeholder-processing)'); var canAdd = canAddRHCItem(); var hasInsertIfNoRHCSpace = storyRHCContent.some(function(e) { return e.InsertIfNoRHCSpace == true && e.Used == false && e.Index > slotIndex; }); if(!rhcEl || (!canAdd.canAddRHCItem && !hasInsertIfNoRHCSpace && !d.querySelectorAll('.story-inlinecontent-placeholder.story-inlinecontent-placeholder-init:not(.story-inlinecontent-processing)').length)) { d.body.classList.add('enhanced-advertising-rhc-completed'); } else { d.body.classList.remove('enhanced-advertising-rhc-completed'); } //var rhcElementsInitialised = d.querySelectorAll('.story-rhccontent-placeholder.story-rhccontent-placeholder-completed:not(.story-rhccontent-placeholder-init):not(.story-rhccontent-placeholder-processing):not(.story-rhccontent-placeholder-finished)'); var rhcElementsInitialised = d.querySelectorAll('.story-rhccontent-placeholder.story-rhccontent-placeholder-completed:not(.story-rhccontent-placeholder-init):not(.story-rhccontent-placeholder-processing):not(.story-rhccontent-placeholder-finished):not(.story-rhccontent-placeholder-isempty)'); //var rhcElemInit = $('.story-rhccontent-placeholder.story-rhccontent-placeholder-completed'); //PWVD-749 //var classesToExclude = ['init', 'processing', 'finished'].map( cls => '.story-rhccontent-placeholder-' + cls); //, 'isempty' //rhcElemInit = rhcElemInit.find( classesToExclude.join(',') ).remove(); if(rhcEl && (canAdd.canAddRHCItem || hasInsertIfNoRHCSpace) && rhcElementsInitialised.length == 0) { googletag.cmd.push(function() { insertRHCSlot(rhcEl); }); } } function updateRHCFirstandLastItemStyles() { d.querySelectorAll('#rhcreflow-extra > *:not(.story-rhccontent-placeholder-init):not(.story-rhccontent-placeholder-processing):not(.story-rhccontent-placeholder-isempty)').forEach(function(item, index, data) { item.classList.remove('story-rhccontent-placeholder-first'); item.classList.remove('story-rhccontent-placeholder-last'); if(index == 0) { item.classList.add('story-rhccontent-placeholder-first'); } if(index == data.length - 1) { item.classList.add('story-rhccontent-placeholder-last'); } }); if((d.querySelectorAll('.storytext .story-inlinecontent-placeholder.story-inlinecontent-placeholder-completed').length == d.querySelectorAll('.storytext .story-inlinecontent-placeholder.story-inlinecontent-placeholder-finished').length) && !d.querySelectorAll('.storytext .story-inlinecontent-placeholder.story-inlinecontent-placeholder-init').length) { d.body.classList.add('enhanced-advertising-inline-completed'); } else { d.body.classList.remove('enhanced-advertising-inline-completed'); } } w.addEventListener('scroll', function(e) { if(!ticking) { w.requestAnimationFrame(function() { processElementsInViewport(); readjusRHCHeight(); ticking = false; }); ticking = true; } }, true); w.addEventListener('resize', function(e) { if(!ticking) { w.requestAnimationFrame(function() { processElementsInViewport(); readjusRHCHeight(); ticking = false; }); ticking = true; } }, true); w.addEventListener("abacus:loadcontent:complete", function(evt, context) { readjusRHCHeight(); }, true); if(d.querySelector('#story .storytext img.lazyload')) { d.addEventListener('lazyloaded', function(e) { if(w.googletag && googletag.apiReady) { if(getClosestParent(e.target, '.storytext')) { readjusRHCHeight(); } } }); } w.addEventListener("abacus:advertb:loaded", function(evt, context) { readjusRHCHeight(); }, true); w.addEventListener("abacus:gamadvert:loaded", function(evt, context) { readjusRHCHeight(); }, true); w.addEventListener("abacus:readjusrhcheight", function(evt, context) { readjusRHCHeight(); }, true); //w.addEventListener('abacus:inlinecontentrender', function(customEvent) { // slotRender(customEvent); //}, true); } }); })(window, document); </script> <!-- ABACUS Google Tag Manager --> <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-NZF83CW');</script> <!-- End Google Tag Manager --> <!-- Screen Google Tag Manager --> <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-T6JMCT');</script> <!-- End Screen Google Tag Manager --> </head> <body id="story" class="M1-master js-disabled story-style-1 story-format-2 story-type-1101 enhanced-advertising enhanced-advertising-rhc-empty"> <!-- ABACUS Google Tag Manager (noscript) --> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-NZF83CW" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <!-- End Google Tag Manager (noscript) --> <!-- Screen Google Tag Manager (noscript) --> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-T6JMCT" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <!-- End Screen Google Tag Manager (noscript) --> <!--[if lte IE 10]> <link rel="stylesheet" href="/CSS/dest/notsupported.css"> <div class="notSupported"> <div class="sleeve"> <span id="logo" class="vector-icon i-brand-logo i-brand-logo-dims"></span> <h2> Your browser is not supported </h2> <p> Sorry but it looks as if your browser is out of date. To get the best experience using our site we recommend that you upgrade or switch browsers. </p> <p class="buttonContainer"> <a class="button" href="https://www.google.co.uk/webhp?ion=1&espv=2&ie=UTF-8#q=update+my+browser" target="_blank">Find a solution</a> </p> </div> </div> <![endif]--> <script type="text/javascript">document.body.className = document.body.className.replace('js-disabled', ''); document.cookie = "_js=1; path=/";</script> <div id="wrapper"> <ul id="skiplinks"><li><a href="#wrapper_sleeve">Skip to main content</a></li><li><a href="#mainnav">Skip to navigation</a></li></ul> <header id="masthead" class="masthead"> <div class="htmlContent"> <!-- /21612928716/Screen/wallpaper --> <div id='div-gpt-wallpaper' class="wallpaper-ad adslot" data-site-width-1024> <script> googletag.cmd.push(function() { googletag.display('div-gpt-wallpaper'); }); </script> </div> <!-- /21612928716/Screen/Overlay --> <div id='div-gpt-overlay' style="height:0"> <script> googletag.cmd.push(function() { googletag.display('div-gpt-overlay'); }); </script> </div> <!-- /21612928716/Screen/skin-left --> <!--<div id='div-gpt-ad-skin-left' style='position:absolute; width: 1000px; margin-top: 48px; height: calc(100% - 48px);'> <script> googletag.cmd.push(function() { googletag.display('div-gpt-ad-skin-left'); }); </script> </div>--> </div> <!--<div class="knock-leaderboard"> <div class="ad">--> <!-- /21612928716/Screen/AdvertMastLB --> <!--<div id='div-gpt-AdvertMastLB'> <script> googletag.cmd.push(function() { googletag.display('div-gpt-AdvertMastLB'); }); </script> </div> </div> </div>--> <div class="mast container full" role="banner" data-multi-toggle-menu> <div class="inner-sleeve" data-menu-open-pushed> <div class="mastheadLogo"> <a href="/"> <span class="logoIcon"> <span class="assistive">Screen Daily</span> </span> </a> </div> <div id="print_logo"> <img src="/magazine/dest/graphics/logo/print_logo.png" alt="" /> </div> <div class="mastheadMobileLogo"> <a href="/"> <span class="logoIcon"> <span class="assistive">Core Test</span> </span> </a> </div> <div class="mastControls"> <nav data-multi-toggle-item="" class="mastNav loggedout hide"><span class="toggleIcon"><a href="#mastnav" data-toggle-button=""><span class="assistive">Mast navigation</span></a></span><ul id="mastnav" data-toggle-element=""><li><a href="https://account.screendaily.com/Register" class="newWindow">Register</a></li><li><a href="https://www.screendaily.com/subscribe">Subscribe</a></li><li><a class="popup signIn" href="https://www.screendaily.com/sign-in">Sign in</a></li></ul></nav> <div class="mastheadSearch hide" data-multi-toggle-item=""> <span class="toggleIcon"> <a href="#search" data-toggle-button=""> <span class="assistive">Search our site</span> </a> </span> <form action="https://www.screendaily.com/searchresults" method="get" id="mastsearch" data-toggle-element=""> <fieldset> <div> <label for="search">Search our site</label> <input type="text" id="search" value="" name="qkeyword" class="text" placeholder="Search our site" /> <button class="mastSearch" type="submit">Search</button> </div> </fieldset> </form> </div> <div class="menuToggle"> <span class="toggleIcon"><a href="#mobilemenu" data-menu-toggle-button=""><span class="assistive">Menu</span></a></span> </div> </div> </div> </div> <div class="menuContainer"> <div class="mobileMenu" id="mobilemenu"> <div class="sleeve"> <a class="menuClose" href="#wrapper"> <span>Close<span class="assistive"> menu</span></span> </a> <ul class="main"> <li class="hasChildren home-icon"> <a href="https://www.screendaily.com/" aria-expanded="false"> <span>Home</span> </a> <ul aria-hidden="true" class="subMenu hide"> <li class="parentBack"> <a class="toolbar" href="#"> <span class="header">Back<span class="assistive"> to parent navigation item</span></span> <span class="btn backBtn"> <i></i> </span> </a> </li> <li class="parentNav home-icon"> <a href="https://www.screendaily.com/"> <span>Home</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/contact-us"> <span>Contact Us</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/digital-editions/11578.subject"> <span>Digital Editions</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/home/screen-network"> <span>Screen Network</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/podcast/12264.subject"> <span>The Screen Podcast</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/home/stars-of-tomorrow"> <span>Stars Of Tomorrow</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/news/world-of-locations-november-2024-april-2025-digital-edition/5198762.article"> <span>World of Locations</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/uk-in-focus"> <span>UK in focus</span> </a> </li> </ul> </li> <li class="hasChildren "> <a href="https://www.screendaily.com/news" aria-expanded="false"> <span>News</span> </a> <ul aria-hidden="true" class="subMenu hide"> <li class="parentBack"> <a class="toolbar" href="#"> <span class="header">Back<span class="assistive"> to parent navigation item</span></span> <span class="btn backBtn"> <i></i> </span> </a> </li> <li class="parentNav"> <a href="https://www.screendaily.com/news"> <span>News</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/news/production"> <span>Production</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/news/distribution"> <span>Distribution</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/news/funding"> <span>Funding</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/news/streaming"> <span>Streaming</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/news/exhibition"> <span>Exhibition</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/news/sales"> <span>Sales</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/11901.subject"> <span>Staff moves</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/tv"> <span>TV</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/artificial-intelligence/12899.subject"> <span>Artificial intelligence</span> </a> </li> <li class="break"> <a href="https://www.screendaily.com/news/box-office"> <span>Box office</span> </a> </li> <li class="hasChildren "> <a href="#"> <span>Territories</span> </a> <ul aria-hidden="true" class="subMenu hide"> <li class="parentBack"> <a class="toolbar" href="#"> <span class="header">Back<span class="assistive"> to parent navigation item</span></span> <span class="btn backBtn"> <i></i> </span> </a> </li> <li class="parentNav"> <span>Territories</span> </li> <li class=""> <a href="https://www.screendaily.com/news/territories/uk-and-ireland"> <span>UK & Ireland</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/news/territories/north-america"> <span>North America</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/news/territories/europe"> <span>Europe</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/news/territories/asia-pacific"> <span>Asia Pacific</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/news/territories/middle-east-and-africa"> <span>Middle East & Africa</span> </a> </li> </ul> </li> </ul> </li> <li class="hasChildren "> <a href="https://www.screendaily.com/reviews" aria-expanded="false"> <span>Reviews</span> </a> <ul aria-hidden="true" class="subMenu hide"> <li class="parentBack"> <a class="toolbar" href="#"> <span class="header">Back<span class="assistive"> to parent navigation item</span></span> <span class="btn backBtn"> <i></i> </span> </a> </li> <li class="parentNav"> <a href="https://www.screendaily.com/reviews"> <span>Reviews</span> </a> </li> <li class="hasChildren "> <a href="#"> <span>Territories</span> </a> <ul aria-hidden="true" class="subMenu hide"> <li class="parentBack"> <a class="toolbar" href="#"> <span class="header">Back<span class="assistive"> to parent navigation item</span></span> <span class="btn backBtn"> <i></i> </span> </a> </li> <li class="parentNav"> <span>Territories</span> </li> <li class=""> <a href="https://www.screendaily.com/reviews/territories/uk-and-ireland"> <span>UK & Ireland</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/reviews/territories/north-america"> <span>North America</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/reviews/territories/europe"> <span>Europe </span> </a> </li> <li class=""> <a href="https://www.screendaily.com/reviews/territories/asia-pacific"> <span>Asia Pacific</span> </a> </li> <li class="break"> <a href="https://www.screendaily.com/reviews/territories/middle-east-and-africa"> <span>Middle East & Africa</span> </a> </li> </ul> </li> <li class="hasChildren "> <a href="#"> <span>Festivals</span> </a> <ul aria-hidden="true" class="subMenu hide"> <li class="parentBack"> <a class="toolbar" href="#"> <span class="header">Back<span class="assistive"> to parent navigation item</span></span> <span class="btn backBtn"> <i></i> </span> </a> </li> <li class="parentNav"> <span>Festivals</span> </li> <li class=""> <a href="https://www.screendaily.com/reviews/festivals/cannes"> <span>Cannes</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/reviews/festivals/berlin"> <span>Berlin</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/reviews/festivals/sundance"> <span>Sundance</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/reviews/festivals/toronto"> <span>Toronto</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/reviews/festivals/venice"> <span>Venice</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/reviews/festivals/more"> <span>More</span> </a> </li> </ul> </li> </ul> </li> <li class="hasChildren "> <a href="https://www.screendaily.com/features" aria-expanded="false"> <span>Features</span> </a> <ul aria-hidden="true" class="subMenu hide"> <li class="parentBack"> <a class="toolbar" href="#"> <span class="header">Back<span class="assistive"> to parent navigation item</span></span> <span class="btn backBtn"> <i></i> </span> </a> </li> <li class="parentNav"> <a href="https://www.screendaily.com/features"> <span>Features</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/features/interviews"> <span>Interviews</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/features/comment"> <span>Comment</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/features/future-leaders-2019-programmers-and-curators-to-watch/5139440.article"> <span>Future Leaders</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/45926.more"> <span>TV</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/my-screen-life/12258.subject"> <span>My Screen Life</span> </a> </li> </ul> </li> <li class="hasChildren "> <a href="https://www.screendaily.com/festivals" aria-expanded="false"> <span>Festivals</span> </a> <ul aria-hidden="true" class="subMenu hide"> <li class="parentBack"> <a class="toolbar" href="#"> <span class="header">Back<span class="assistive"> to parent navigation item</span></span> <span class="btn backBtn"> <i></i> </span> </a> </li> <li class="parentNav"> <a href="https://www.screendaily.com/festivals"> <span>Festivals</span> </a> </li> <li class="hasChildren "> <a href="#"> <span>Europe</span> </a> <ul aria-hidden="true" class="subMenu hide"> <li class="parentBack"> <a class="toolbar" href="#"> <span class="header">Back<span class="assistive"> to parent navigation item</span></span> <span class="btn backBtn"> <i></i> </span> </a> </li> <li class="parentNav"> <span>Europe</span> </li> <li class=""> <a href="https://www.screendaily.com/festivals/europe/cannes"> <span>Cannes</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/festivals/europe/berlin"> <span>Berlin</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/festivals/europe/venice"> <span>Venice</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/festivals/europe/rotterdam"> <span>Rotterdam</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/festivals/europe/karlovy-vary"> <span>Karlovy Vary</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/festivals/europe/locarno"> <span>Locarno</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/festivals/europe/cphdox"> <span>CPH:DOX</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/festivals/europe/sarajevo"> <span>Sarajevo</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/festivals/europe/san-sebastian"> <span>San Sebastian</span> </a> </li> <li class="break"> <a href="https://www.screendaily.com/festivals/europe/tallinn"> <span>Tallinn</span> </a> </li> </ul> </li> <li class="hasChildren "> <a href="#"> <span>North America</span> </a> <ul aria-hidden="true" class="subMenu hide"> <li class="parentBack"> <a class="toolbar" href="#"> <span class="header">Back<span class="assistive"> to parent navigation item</span></span> <span class="btn backBtn"> <i></i> </span> </a> </li> <li class="parentNav"> <span>North America</span> </li> <li class=""> <a href="https://www.screendaily.com/festivals/north-america/toronto"> <span>Toronto</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/festivals/north-america/afm"> <span>AFM</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/festivals/north-america/sundance"> <span>Sundance</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/festivals/north-america/sxsw"> <span>SXSW</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/festivals/north-america/tribeca"> <span>Tribeca</span> </a> </li> </ul> </li> <li class="hasChildren "> <a href="#"> <span>UK</span> </a> <ul aria-hidden="true" class="subMenu hide"> <li class="parentBack"> <a class="toolbar" href="#"> <span class="header">Back<span class="assistive"> to parent navigation item</span></span> <span class="btn backBtn"> <i></i> </span> </a> </li> <li class="parentNav"> <span>UK</span> </li> <li class=""> <a href="https://www.screendaily.com/festivals/uk/london"> <span>London</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/festivals/uk/glasgow"> <span>Glasgow</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/festivals/uk/edinburgh"> <span>Edinburgh</span> </a> </li> <li class="break"> <a href="https://www.screendaily.com/festivals/uk/sheffield-doc/fest"> <span>Sheffield Doc/Fest</span> </a> </li> </ul> </li> <li class="hasChildren "> <a href="#"> <span>Asia Pacific</span> </a> <ul aria-hidden="true" class="subMenu hide"> <li class="parentBack"> <a class="toolbar" href="#"> <span class="header">Back<span class="assistive"> to parent navigation item</span></span> <span class="btn backBtn"> <i></i> </span> </a> </li> <li class="parentNav"> <span>Asia Pacific</span> </li> <li class=""> <a href="https://www.screendaily.com/festivals/asia-pacific/busan"> <span>Busan</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/festivals/asia-pacific/tokyo"> <span>Tokyo</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/festivals/asia-pacific/filmart"> <span>Filmart</span> </a> </li> </ul> </li> <li class="hasChildren "> <a href="#"> <span>MENA</span> </a> <ul aria-hidden="true" class="subMenu hide"> <li class="parentBack"> <a class="toolbar" href="#"> <span class="header">Back<span class="assistive"> to parent navigation item</span></span> <span class="btn backBtn"> <i></i> </span> </a> </li> <li class="parentNav"> <span>MENA</span> </li> <li class=""> <a href="https://www.screendaily.com/festivals/mena/cairo"> <span>Cairo</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/festivals/mena/red-sea"> <span>Red Sea</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/marrakech/12836.subject"> <span>Marrakech</span> </a> </li> </ul> </li> </ul> </li> <li class="hasChildren "> <a href="https://www.screendaily.com/box-office" aria-expanded="false"> <span>Box Office</span> </a> <ul aria-hidden="true" class="subMenu hide"> <li class="parentBack"> <a class="toolbar" href="#"> <span class="header">Back<span class="assistive"> to parent navigation item</span></span> <span class="btn backBtn"> <i></i> </span> </a> </li> <li class="parentNav"> <a href="https://www.screendaily.com/box-office"> <span>Box Office</span> </a> </li> <li class="hasChildren "> <a href="#"> <span>Box Office Reports</span> </a> <ul aria-hidden="true" class="subMenu hide"> <li class="parentBack"> <a class="toolbar" href="#"> <span class="header">Back<span class="assistive"> to parent navigation item</span></span> <span class="btn backBtn"> <i></i> </span> </a> </li> <li class="parentNav"> <span>Box Office Reports</span> </li> <li class=""> <a href="https://www.screendaily.com/box-office/box-office-reports/international"> <span>International</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/box-office/box-office-reports/uk"> <span>UK</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/box-office/box-office-reports/us"> <span>US</span> </a> </li> </ul> </li> <li class=""> <a href="https://www.screendaily.com/box-office/analysis"> <span>Analysis</span> </a> </li> </ul> </li> <li class="hasChildren "> <a href="https://www.screendaily.com/awards" aria-expanded="false"> <span>Awards</span> </a> <ul aria-hidden="true" class="subMenu hide"> <li class="parentBack"> <a class="toolbar" href="#"> <span class="header">Back<span class="assistive"> to parent navigation item</span></span> <span class="btn backBtn"> <i></i> </span> </a> </li> <li class="parentNav"> <a href="https://www.screendaily.com/awards"> <span>Awards</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/awards/oscars"> <span>Oscars</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/awards/baftas"> <span>Baftas</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/awards/golden-globes"> <span>Golden Globes</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/awards/emmys"> <span>Emmys</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/awards/bifas"> <span>Bifas</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/european-film-awards/12593.subject"> <span>European Film Awards</span> </a> </li> </ul> </li> <li class=""> <a href="https://www.screendaily.com/home/stars-of-tomorrow"> <span>Stars of Tomorrow</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/subscribe" class="newWindow"> <span>Subscribe</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/berlin-jury-grid"> <span>Berlin jury grid</span> </a> </li> </ul> </div> </div> <div class="mobileMenuClose"></div> <div id="mainnav" class="desktopNavigation container" data-menu-open-pushed=""><div class="dropdown vanityPanel"><div class="inner-sleeve"></div></div><div class="inner-sleeve"><ul class="main preJS"><li data-navcode="5233" data-rootnavcode="5233" class="home-icon hasChildren oneSubNav"><a href="https://www.screendaily.com/"><span>Home</span></a><div class="dropdown"><div class="inner-sleeve"><ul><li class="subnav"><ul><li data-navcode="5900" data-rootnavcode="5233" class=""><a href="https://www.screendaily.com/contact-us"><span>Contact Us</span></a></li><li data-navcode="5302" data-rootnavcode="5233" class=""><a href="https://www.screendaily.com/digital-editions/11578.subject"><span>Digital Editions</span></a></li><li data-navcode="6065" data-rootnavcode="5233" class=""><a href="https://www.screendaily.com/home/screen-network"><span>Screen Network</span></a></li><li data-navcode="6075" data-rootnavcode="5233" class=""><a href="https://www.screendaily.com/podcast/12264.subject"><span>The Screen Podcast</span></a></li><li data-navcode="5587" data-rootnavcode="5233" class=""><a href="https://www.screendaily.com/home/stars-of-tomorrow"><span>Stars Of Tomorrow</span></a></li><li data-navcode="5474" data-rootnavcode="5233" class=""><a href="https://www.screendaily.com/news/world-of-locations-november-2024-april-2025-digital-edition/5198762.article"><span>World of Locations</span></a></li><li data-navcode="6358" data-rootnavcode="5233" class=""><a href="https://www.screendaily.com/uk-in-focus"><span>UK in focus</span></a></li></ul></li><li class="promotedStory"><a href="/news/berlin-2025-screens-dailies/5201897.article" class="image"><div class="image"><img src="https://d1nslcd7m2225b.cloudfront.net/Pictures/274x183/9/5/4/1443954_efm2025day5_59726.jpg" loading="lazy" class="lazyloaded" alt="EFM 2025 DAY 5"></div><div class="captionBlock"><span class="title">Berlin 2025: Screen’s dailies</span></div></a></li><li class="promotedStory"><a href="/news/berlin-2025-efm-product-guide/5201830.article" class="image"><div class="image"><img src="https://d1nslcd7m2225b.cloudfront.net/Pictures/274x183/4/4/2/1443442_efmproductguide2025_439751.jpg" loading="lazy" class="lazyloaded" alt="EFM product guide 2025"></div><div class="captionBlock"><span class="title">Berlin 2025: EFM Product Guide</span></div></a></li><li class="promotedStory"><a href="/news/screen-digital-edition-february-2025/5201790.article" class="image"><div class="image"><img src="https://d1nslcd7m2225b.cloudfront.net/Pictures/274x183/3/4/7/1443347_febmonthly3x2_809662.jpg" loading="lazy" class="lazyloaded" alt="Feb monthly 3x2"></div><div class="captionBlock"><span class="title">Screen digital edition: February 2025</span></div></a></li></ul></div></div></li><li data-navcode="24" data-rootnavcode="24" class="hasChildren twoSubNav"><a href="https://www.screendaily.com/news"><span>News</span></a><div class="dropdown"><div class="inner-sleeve"><ul><li class="subnav"><ul><li data-navcode="5231" data-rootnavcode="24" class=""><a href="https://www.screendaily.com/news/production"><span>Production</span></a></li><li data-navcode="5230" data-rootnavcode="24" class=""><a href="https://www.screendaily.com/news/distribution"><span>Distribution</span></a></li><li data-navcode="35" data-rootnavcode="24" class=""><a href="https://www.screendaily.com/news/funding"><span>Funding</span></a></li><li data-navcode="40" data-rootnavcode="24" class=""><a href="https://www.screendaily.com/news/streaming"><span>Streaming</span></a></li><li data-navcode="5766" data-rootnavcode="24" class=""><a href="https://www.screendaily.com/news/exhibition"><span>Exhibition</span></a></li><li data-navcode="5767" data-rootnavcode="24" class=""><a href="https://www.screendaily.com/news/sales"><span>Sales</span></a></li><li data-navcode="5772" data-rootnavcode="24" class=""><a href="https://www.screendaily.com/11901.subject"><span>Staff moves</span></a></li><li data-navcode="5961" data-rootnavcode="24" class=""><a href="https://www.screendaily.com/tv"><span>TV</span></a></li><li data-navcode="6399" data-rootnavcode="24" class=""><a href="https://www.screendaily.com/artificial-intelligence/12899.subject"><span>Artificial intelligence</span></a></li><li data-navcode="5276" data-rootnavcode="24" class="break"><a href="https://www.screendaily.com/news/box-office"><span>Box office</span></a></li></ul></li><li class="subnav"><ul><li data-navcode="5806" data-rootnavcode="24" class=""><span>Territories</span><ul><li data-navcode="5768" data-rootnavcode="24" class=""><a href="https://www.screendaily.com/news/territories/uk-and-ireland"><span>UK & Ireland</span></a></li><li data-navcode="5769" data-rootnavcode="24" class=""><a href="https://www.screendaily.com/news/territories/north-america"><span>North America</span></a></li><li data-navcode="5771" data-rootnavcode="24" class=""><a href="https://www.screendaily.com/news/territories/europe"><span>Europe</span></a></li><li data-navcode="5770" data-rootnavcode="24" class=""><a href="https://www.screendaily.com/news/territories/asia-pacific"><span>Asia Pacific</span></a></li><li data-navcode="5807" data-rootnavcode="24" class=""><a href="https://www.screendaily.com/news/territories/middle-east-and-africa"><span>Middle East & Africa</span></a></li></ul></li></ul></li><li class="promotedStory"><a href="/news/leading-film-industry-figures-hit-back-at-uk-government-ai-proposals/5202399.article" class="image"><div class="image"><img src="https://d1nslcd7m2225b.cloudfront.net/Pictures/274x183/6/4/6/1444646_artificialintelligenceg1c095dffa_1280_554284.jpg" loading="lazy" class="lazyloaded" alt="Artificial intelligence"></div><div class="captionBlock"><span class="title">Leading film industry figures hit back at UK government AI proposals</span></div></a></li><li class="promotedStory"><a href="/news/series-mania-unveils-2025-co-pro-pitching-shortlist/5202293.article" class="image"><div class="image"><img src="https://d1nslcd7m2225b.cloudfront.net/Pictures/274x183/4/1/4/1444414_seriesmania2022_copropitchingsessions_hd51_400086.jpg" loading="lazy" class="lazyloaded" alt="A co-pro pitching session at 2022 Series Mania"></div><div class="captionBlock"><span class="title">Series Mania unveils 2025 Co-Pro Pitching shortlist</span></div></a></li></ul></div></div></li><li data-navcode="27" data-rootnavcode="27" class="current hasChildren twoSubNav"><a href="https://www.screendaily.com/reviews"><span>Reviews</span></a><div class="dropdown"><div class="inner-sleeve"><ul><li class="subnav"><ul><li data-navcode="5774" data-rootnavcode="27" class=""><span>Territories</span><ul><li data-navcode="46" data-rootnavcode="27" class=""><a href="https://www.screendaily.com/reviews/territories/uk-and-ireland"><span>UK & Ireland</span></a></li><li data-navcode="5775" data-rootnavcode="27" class=""><a href="https://www.screendaily.com/reviews/territories/north-america"><span>North America</span></a></li><li data-navcode="284" data-rootnavcode="27" class=""><a href="https://www.screendaily.com/reviews/territories/europe"><span>Europe </span></a></li><li data-navcode="48" data-rootnavcode="27" class=""><a href="https://www.screendaily.com/reviews/territories/asia-pacific"><span>Asia Pacific</span></a></li><li data-navcode="47" data-rootnavcode="27" class="break"><a href="https://www.screendaily.com/reviews/territories/middle-east-and-africa"><span>Middle East & Africa</span></a></li></ul></li></ul></li><li class="subnav"><ul><li data-navcode="5777" data-rootnavcode="27" class=""><span>Festivals</span><ul><li data-navcode="5778" data-rootnavcode="27" class=""><a href="https://www.screendaily.com/reviews/festivals/cannes"><span>Cannes</span></a></li><li data-navcode="5779" data-rootnavcode="27" class=""><a href="https://www.screendaily.com/reviews/festivals/berlin"><span>Berlin</span></a></li><li data-navcode="5780" data-rootnavcode="27" class=""><a href="https://www.screendaily.com/reviews/festivals/sundance"><span>Sundance</span></a></li><li data-navcode="5781" data-rootnavcode="27" class=""><a href="https://www.screendaily.com/reviews/festivals/toronto"><span>Toronto</span></a></li><li data-navcode="5782" data-rootnavcode="27" class=""><a href="https://www.screendaily.com/reviews/festivals/venice"><span>Venice</span></a></li><li data-navcode="5817" data-rootnavcode="27" class=""><a href="https://www.screendaily.com/reviews/festivals/more"><span>More</span></a></li></ul></li></ul></li><li class="promotedStory"><a href="/reviews/four-letters-of-love-review-irish-eyes-aromancing-in-heartfelt-adaptation/5202276.article" class="image"><div class="image"><img src="https://d1nslcd7m2225b.cloudfront.net/Pictures/274x183/4/8/2/1444482_brosnan_631022_crop.jpg" loading="lazy" class="lazyloaded" alt="brosnan"></div><div class="captionBlock"><span class="title">‘Four Letters Of Love’ review: Irish eyes a’romancing in heartfelt adaptation</span></div></a></li><li class="promotedStory"><a href="/reviews/tornado-review-tim-roth-jack-lowden-and-koki-do-battle-in-18th-century-britain/5202403.article" class="image"><div class="image"><img src="https://d1nslcd7m2225b.cloudfront.net/Pictures/274x183/6/5/5/1444655_20240214_tornado_8878_239602_crop.jpg" loading="lazy" class="lazyloaded" alt="Tornado"></div><div class="captionBlock"><span class="title">‘Tornado’ review: Tim Roth, Jack Lowden and Kôki do battle in 18th century Britain</span></div></a></li></ul></div></div></li><li data-navcode="5275" data-rootnavcode="5275" class="hasChildren oneSubNav"><a href="https://www.screendaily.com/features"><span>Features</span></a><div class="dropdown"><div class="inner-sleeve"><ul><li class="subnav"><ul><li data-navcode="703" data-rootnavcode="5275" class=""><a href="https://www.screendaily.com/features/interviews"><span>Interviews</span></a></li><li data-navcode="5274" data-rootnavcode="5275" class=""><a href="https://www.screendaily.com/features/comment"><span>Comment</span></a></li><li data-navcode="5950" data-rootnavcode="5275" class=""><a href="https://www.screendaily.com/features/future-leaders-2019-programmers-and-curators-to-watch/5139440.article"><span>Future Leaders</span></a></li><li data-navcode="5962" data-rootnavcode="5275" class=""><a href="https://www.screendaily.com/45926.more"><span>TV</span></a></li><li data-navcode="6027" data-rootnavcode="5275" class=""><a href="https://www.screendaily.com/my-screen-life/12258.subject"><span>My Screen Life</span></a></li></ul></li><li class="promotedStory"><a href="/features/four-uk-indie-distributors-share-strategies-behind-their-highest-grossing-titles-of-2024/5201533.article" class="image"><div class="image"><img src="https://d1nslcd7m2225b.cloudfront.net/Pictures/274x183/6/3/2/1442632_distribs_51575.jpg" loading="lazy" class="lazyloaded" alt="distribs"></div><div class="captionBlock"><span class="title">Four UK indie distributors share strategies behind their highest-grossing titles of 2024</span></div></a></li><li class="promotedStory"><a href="/features/awards-whispers-voters-discuss-the-oscar-and-bafta-nominations-a-lot-of-the-movies-dont-feel-as-oscar-baity/5201502.article" class="image"><div class="image"><img src="https://d1nslcd7m2225b.cloudfront.net/Pictures/274x183/4/1/7/1442417_thebriefing_adobestock_195196458_128141.jpg" loading="lazy" class="lazyloaded" alt="Awards Whispers"></div><div class="captionBlock"><span class="title">Awards Whispers: voters discuss the Oscar and Bafta nominations – “a lot of the movies don’t feel as Oscar-baity”</span></div></a></li><li class="promotedStory"><a href="/news/four-talking-points-from-sundance-2025/5201490.article" class="image"><div class="image"><img src="https://d1nslcd7m2225b.cloudfront.net/Pictures/274x183/3/5/2/1442352_sundance_111176.jpg" loading="lazy" class="lazyloaded" alt="Eugene Hernandez, director, Sundance Film Festival and public programming, atop the Egyptian Theatre"></div><div class="captionBlock"><span class="title">Four talking points from Sundance 2025</span></div></a></li></ul></div></div></li><li data-navcode="29" data-rootnavcode="29" class="hasChildren threeSubNav"><a href="https://www.screendaily.com/festivals"><span>Festivals</span></a><div class="dropdown"><div class="inner-sleeve"><ul><li class="subnav"><ul><li data-navcode="5800" data-rootnavcode="29" class=""><span>Europe</span><ul><li data-navcode="5238" data-rootnavcode="29" class=""><a href="https://www.screendaily.com/festivals/europe/cannes"><span>Cannes</span></a></li><li data-navcode="5623" data-rootnavcode="29" class=""><a href="https://www.screendaily.com/festivals/europe/berlin"><span>Berlin</span></a></li><li data-navcode="5265" data-rootnavcode="29" class=""><a href="https://www.screendaily.com/festivals/europe/venice"><span>Venice</span></a></li><li data-navcode="5310" data-rootnavcode="29" class=""><a href="https://www.screendaily.com/festivals/europe/rotterdam"><span>Rotterdam</span></a></li><li data-navcode="5091" data-rootnavcode="29" class=""><a href="https://www.screendaily.com/festivals/europe/karlovy-vary"><span>Karlovy Vary</span></a></li><li data-navcode="358" data-rootnavcode="29" class=""><a href="https://www.screendaily.com/festivals/europe/locarno"><span>Locarno</span></a></li><li data-navcode="5974" data-rootnavcode="29" class=""><a href="https://www.screendaily.com/festivals/europe/cphdox"><span>CPH:DOX</span></a></li><li data-navcode="5260" data-rootnavcode="29" class=""><a href="https://www.screendaily.com/festivals/europe/sarajevo"><span>Sarajevo</span></a></li><li data-navcode="356" data-rootnavcode="29" class=""><a href="https://www.screendaily.com/festivals/europe/san-sebastian"><span>San Sebastian</span></a></li><li data-navcode="5665" data-rootnavcode="29" class="break"><a href="https://www.screendaily.com/festivals/europe/tallinn"><span>Tallinn</span></a></li></ul></li></ul></li><li class="subnav"><ul><li data-navcode="5802" data-rootnavcode="29" class=""><span>North America</span><ul><li data-navcode="5272" data-rootnavcode="29" class=""><a href="https://www.screendaily.com/festivals/north-america/toronto"><span>Toronto</span></a></li><li data-navcode="5282" data-rootnavcode="29" class=""><a href="https://www.screendaily.com/festivals/north-america/afm"><span>AFM</span></a></li><li data-navcode="102" data-rootnavcode="29" class=""><a href="https://www.screendaily.com/festivals/north-america/sundance"><span>Sundance</span></a></li><li data-navcode="931" data-rootnavcode="29" class=""><a href="https://www.screendaily.com/festivals/north-america/sxsw"><span>SXSW</span></a></li><li data-navcode="152" data-rootnavcode="29" class=""><a href="https://www.screendaily.com/festivals/north-america/tribeca"><span>Tribeca</span></a></li></ul></li><li data-navcode="5801" data-rootnavcode="29" class=""><span>UK</span><ul><li data-navcode="5458" data-rootnavcode="29" class=""><a href="https://www.screendaily.com/festivals/uk/london"><span>London</span></a></li><li data-navcode="5905" data-rootnavcode="29" class=""><a href="https://www.screendaily.com/festivals/uk/glasgow"><span>Glasgow</span></a></li><li data-navcode="361" data-rootnavcode="29" class=""><a href="https://www.screendaily.com/festivals/uk/edinburgh"><span>Edinburgh</span></a></li><li data-navcode="5678" data-rootnavcode="29" class="break"><a href="https://www.screendaily.com/festivals/uk/sheffield-doc/fest"><span>Sheffield Doc/Fest</span></a></li></ul></li></ul></li><li class="subnav"><ul><li data-navcode="5803" data-rootnavcode="29" class=""><span>Asia Pacific</span><ul><li data-navcode="5457" data-rootnavcode="29" class=""><a href="https://www.screendaily.com/festivals/asia-pacific/busan"><span>Busan</span></a></li><li data-navcode="5653" data-rootnavcode="29" class=""><a href="https://www.screendaily.com/festivals/asia-pacific/tokyo"><span>Tokyo</span></a></li><li data-navcode="5318" data-rootnavcode="29" class=""><a href="https://www.screendaily.com/festivals/asia-pacific/filmart"><span>Filmart</span></a></li></ul></li><li data-navcode="5804" data-rootnavcode="29" class=""><span>MENA</span><ul><li data-navcode="6286" data-rootnavcode="29" class=""><a href="https://www.screendaily.com/festivals/mena/cairo"><span>Cairo</span></a></li><li data-navcode="6284" data-rootnavcode="29" class=""><a href="https://www.screendaily.com/festivals/mena/red-sea"><span>Red Sea</span></a></li><li data-navcode="6408" data-rootnavcode="29" class=""><a href="https://www.screendaily.com/marrakech/12836.subject"><span>Marrakech</span></a></li></ul></li></ul></li><li class="promotedStory"><a href="/news/cannes-marche-du-film-selects-2025-country-of-honour/5202439.article" class="image"><div class="image"><img src="https://d1nslcd7m2225b.cloudfront.net/Pictures/274x183/7/0/7/1444707_Cannes-Marche-international-village.jpg" loading="lazy" class="lazyloaded" alt="cannes marche international village"></div><div class="captionBlock"><span class="title">Cannes Marché du Film selects 2025 country of honour</span></div></a></li></ul></div></div></li><li data-navcode="5223" data-rootnavcode="5223" class="hasChildren oneSubNav"><a href="https://www.screendaily.com/box-office"><span>Box Office</span></a><div class="dropdown"><div class="inner-sleeve"><ul><li class="subnav"><ul><li data-navcode="5818" data-rootnavcode="5223" class=""><span>Box Office Reports</span><ul><li data-navcode="5224" data-rootnavcode="5223" class=""><a href="https://www.screendaily.com/box-office/box-office-reports/international"><span>International</span></a></li><li data-navcode="5229" data-rootnavcode="5223" class=""><a href="https://www.screendaily.com/box-office/box-office-reports/uk"><span>UK</span></a></li><li data-navcode="5228" data-rootnavcode="5223" class=""><a href="https://www.screendaily.com/box-office/box-office-reports/us"><span>US</span></a></li></ul></li><li data-navcode="5805" data-rootnavcode="5223" class=""><a href="https://www.screendaily.com/box-office/analysis"><span>Analysis</span></a></li></ul></li><li class="promotedStory"><a href="/news/bridget-jones-4-reaches-27m-at-uk-ireland-box-office-the-monkey-climbs-into-top-five/5202341.article" class="image"><div class="image"><img src="https://d1nslcd7m2225b.cloudfront.net/Pictures/274x183/5/2/5/1444525_bridgetmonkey_400557.jpg" loading="lazy" class="lazyloaded" alt="bridget monkey"></div><div class="captionBlock"><span class="title">‘Bridget Jones 4’ reaches £27m at UK-Ireland box office; ‘The Monkey’ climbs into top five</span></div></a></li><li class="promotedStory"><a href="/news/bridget-jones-4-hits-73m-at-global-box-office-as-captain-america-brave-new-world-pushes-towards-300m/5202315.article" class="image"><div class="image"><img src="https://d1nslcd7m2225b.cloudfront.net/Pictures/274x183/4/7/6/1444476_boxofficepic_316726.jpg" loading="lazy" class="lazyloaded" alt="'Briget Jones: Mad About The Boy', 'Captain America: Brave New World'"></div><div class="captionBlock"><span class="title">‘Bridget Jones 4’ hits $73m at global box office as ‘Captain America: Brave New World’ pushes towards $300m</span></div></a></li><li class="promotedStory"><a href="/news/bridget-jones-4-scores-huge-102m-opening-weekend-at-uk-ireland-box-office/5202120.article" class="image"><div class="image"><img src="https://d1nslcd7m2225b.cloudfront.net/Pictures/274x183/0/1/5/1444015_031_347228.jpg" loading="lazy" class="lazyloaded" alt="031"></div><div class="captionBlock"><span class="title">‘Bridget Jones 4’ scores huge £10.2m opening weekend at UK-Ireland box office</span></div></a></li></ul></div></div></li><li data-navcode="5299" data-rootnavcode="5299" class="hasChildren oneSubNav"><a href="https://www.screendaily.com/awards"><span>Awards</span></a><div class="dropdown"><div class="inner-sleeve"><ul><li class="subnav"><ul><li data-navcode="5303" data-rootnavcode="5299" class=""><a href="https://www.screendaily.com/awards/oscars"><span>Oscars</span></a></li><li data-navcode="5304" data-rootnavcode="5299" class=""><a href="https://www.screendaily.com/awards/baftas"><span>Baftas</span></a></li><li data-navcode="5306" data-rootnavcode="5299" class=""><a href="https://www.screendaily.com/awards/golden-globes"><span>Golden Globes</span></a></li><li data-navcode="5808" data-rootnavcode="5299" class=""><a href="https://www.screendaily.com/awards/emmys"><span>Emmys</span></a></li><li data-navcode="5809" data-rootnavcode="5299" class=""><a href="https://www.screendaily.com/awards/bifas"><span>Bifas</span></a></li><li data-navcode="6222" data-rootnavcode="5299" class=""><a href="https://www.screendaily.com/european-film-awards/12593.subject"><span>European Film Awards</span></a></li></ul></li><li class="promotedStory"><a href="/news/conclave-the-brutalist-lead-winners-at-2025-bafta-film-awards/5202074.article" class="image"><div class="image"><img src="https://d1nslcd7m2225b.cloudfront.net/Pictures/274x183/9/5/7/1443957_2200037270_75175.jpg" loading="lazy" class="lazyloaded" alt="Tessa Ross, Peter Straughan, Edward Berger, Isabella Rossellini, Juliette Howell, Ralph Fiennes and Michael Jackman poses with the Outstanding British Film Award for 'Conclave'"></div><div class="captionBlock"><span class="title">‘Conclave’, ‘The Brutalist’ lead winners at 2025 Bafta Film Awards</span></div></a></li><li class="promotedStory"><a href="/features/unsung-heroes-meet-the-voice-coaches-who-nurtured-this-years-awards-hopefuls/5201783.article" class="image"><div class="image"><img src="https://d1nslcd7m2225b.cloudfront.net/Pictures/274x183/3/8/1/1443381_wickedbts_488164.jpg" loading="lazy" class="lazyloaded" alt="Cynthia Erivo on the 'Wicked' set"></div><div class="captionBlock"><span class="title">Unsung heroes: meet the voice coaches who nurtured this year’s awards hopefuls</span></div></a></li><li class="promotedStory"><a href="/features/how-black-box-diaries-filmmaker-shiori-ito-took-control-of-her-own-story/5201614.article" class="image"><div class="image"><img src="https://d1nslcd7m2225b.cloudfront.net/Pictures/274x183/8/1/4/1442814_20240117bbd_still_34_80343_crop.jpg" loading="lazy" class="lazyloaded" alt="'Black Box Diaries'"></div><div class="captionBlock"><span class="title">How ‘Black Box Diaries’ filmmaker Shiori Ito took control of her own story</span></div></a></li></ul></div></div></li><li data-navcode="6348" data-rootnavcode="6348"><a href="https://www.screendaily.com/home/stars-of-tomorrow"><span>Stars of Tomorrow</span></a></li><li data-navcode="5845" data-rootnavcode="5845" class="hasChildren"><a href="https://www.screendaily.com/subscribe" class="newWindow"><span>Subscribe</span></a><div class="dropdown"><div class="inner-sleeve"><ul><li class="htmlBlock"><div><style type="text/css"> .desktopNavigation #subspromo {background:#fff; padding:20px;} .desktopNavigation #subspromo img {float:right; clear:right; display:block; margin-top:0px; width:450px;} .desktopNavigation #subspromo .subpromo {margin-bottom:20px; margin-left: 20px; padding-left: 0;} .desktopNavigation #subspromo .subpromo li { list-style:disc;} .desktopNavigation #subspromo p {margin-bottom:0} .desktopNavigation #subspromo .register {margin-top:22px;} @media only screen and (max-width: 1123px) { .desktopNavigation #subspromo img { max-width:200px; } } </style> <div id="subspromo" style="overflow:hidden;"> <img src="https://d1nslcd7m2225b.cloudfront.net/Pictures/450xAny/P/web/j/b/m/2021screenpackshot_967117.jpg" alt="screen packshot resized" /> <h3 id="">Subscribe to Screen International</h3> <ul class="subpromo"> <li>Monthly print editions</li> <li>Awards season weeklies</li> <li>Stars of Tomorrow and exclusive supplements</li> <li>Over 16 years of archived content</li> </ul> <a class="button" target="_blank" href="https://subs.screendaily.com/subscriptions">Subscribe Now</a> </div></div></li></ul></div></div></li><li data-navcode="6375" data-rootnavcode="6375"><a href="https://www.screendaily.com/berlin-jury-grid"><span>Berlin jury grid</span></a></li><li class="more hide"><a href="#mobilemenu" data-menu-toggle-button="" aria-expanded="false"><span> More from<span class="assistive"> navigation items</span></span></a></li></ul></div></div><div class="desktopNavigationSpace"></div> </div> </header> <div class="ad leaderboard billboard showMenuPushed"> <!-- /21612928716/Screen/billboard --> <div class="mob-ad-75 tab-ad-250 dt-ad-250"> <div id='div-gpt-billboard'> <script> googletag.cmd.push(function() { googletag.display('div-gpt-billboard'); }); </script> </div> </div> </div> <div id="wrapper_sleeve" data-menu-open-pushed> <div class="storyLayout standard"></div> <div class="headerWrapper"> <div class="container titleByline"> <div class="inner-sleeve"> <div class="storyPrimaryNav"><a href="https://www.screendaily.com/reviews">Reviews</a></div> <div class="story_title"> <h1>‘Sauna’: Sundance Review</h1> </div> <p class="byline meta">By <span class="author"><a href="https://www.screendaily.com/allan-hunter/53.bio" rel="author">Allan Hunter</a></span><span class="date" data-date-timezone="{&quot;publishdate&quot;: &quot;2025-01-28T02:30:00&quot;,&quot;format&quot;: &quot;D MMMM YYYY&quot;}">2025-01-28T02:30:00+00:00</span></p> </div> </div> </div> <div id="columns" class="container"> <div id="colwrapper" class="inner-sleeve"> <div id="colmain" role="main" class="restrictedcontent"> <div id="content"> <div id="content_sleeve"> <div class="contentWrapper"> <div class="storyContentWrapper"> <div class="pageOptions"> <ul> <!--facebook--> <li> <a href="https://www.facebook.com/sharer/sharer.php?u=https%3a%2f%2fwww.screendaily.com%2freviews%2fsauna-sundance-review%2f5200714.article&e=%e2%80%98Sauna%e2%80%99%3a+Sundance+Review" class="facebook" title="Share this on Facebook" target="_blank"></a> </li> <!-- twitter--> <li> <a href="https://twitter.com/intent/tweet?text=%e2%80%98Sauna%e2%80%99%3a+Sundance+Review&url=https%3a%2f%2fwww.screendaily.com%2freviews%2fsauna-sundance-review%2f5200714.article" class="twitter" title="Share this on Twitter" target="_blank"></a> </li> <!--linked in--> <li> <a href="https://www.linkedin.com/cws/share?url=https%3a%2f%2fwww.screendaily.com%2freviews%2fsauna-sundance-review%2f5200714.article" class="linkedin" title="Share this on Linked in" target="_blank"></a> </li> <li><a href="mailto:?subject=%E2%80%98Sauna%E2%80%99: Sundance Review&amp;body=https://www.screendaily.com/reviews/sauna-sundance-review/5200714.article" class="email" title="Email this article"></a></li> </ul> <ul class="pageOptions_right"> <li class=" last" aria-live="polite" data-cache-bust="true" data-ajax-load-content="" data-url="/5200714/bookmark"> </li> </ul> </div> <div class="articleWrapper"> <div class="articleContent"> <div class="standfirst"><p>A queer romance attempts to blossom in this involving Copenhagen-set debut</p></div><div class="storytext"><div class="inline_image image_size_full" data-attachment="1440526" data-sequence="1"> <p class="picture"><img alt="Sauna" src="https://d1nslcd7m2225b.cloudfront.net/Pictures/480xany/5/2/6/1440526_sauna_636870.jpeg" sizes="(max-width: 1023px) 100vw, 780px" srcset="https://d1nslcd7m2225b.cloudfront.net/Pictures/480xany/5/2/6/1440526_sauna_636870.jpeg 480w,https://d1nslcd7m2225b.cloudfront.net/Pictures/600xany/5/2/6/1440526_sauna_636870.jpeg 600w,https://d1nslcd7m2225b.cloudfront.net/Pictures/780xany/5/2/6/1440526_sauna_636870.jpeg 780w" loading="eager" class="lazyloaded" width="1200" height="802"></p> <div class="inline_meta"><p class="inline_source"><cite>Source: Sundance Film Festival</cite></p><p class="inline_caption">‘Sauna’</p></div></div> <p><em>Dir: Mathias Broe. Denmark. 2025. 105mins</em></p> <p><em></em>Two worlds collide in <em>Sauna</em>, a melancholy queer love story that is sensitively handled by first time feature director Mathias Broe. The relationship between a lonely gay man and his transgender lover serves as a backdrop to a nuanced exploration of desire, longing and belonging. Festival programmers and specialist distributors should be attracted to a title that has a Danish theatrical release set for April 24 following its premiere in Sundance’s World Cinema Dramatic competition.</p> <blockquote> <p>&nbsp;A sombre, involving human drama</p> </blockquote> <p>Broe’s short films include <em>Young Man’s Dance</em> (2014) and <em>Amfi</em> (2018), the latter of which won Best Documentary Short at the Danish Film Awards. His debut feature is based on the novel by Mads Ananda Lodahl, written as part of the author’s aim to confront the ’straight world order’ and explore a modern sexuality with more fluid possibilities. The material has an affinity with Broe’s previous work but also holds a personal connection for the filmmaker, who has revealed that his own partner has started transitioning.</p> <p>Johan (Magnus Juhl&nbsp;Andersen) has left his family in the Danish city of Odense to make a new life in Copenhagen. He works at the gay sauna Adonis and shares the apartment of its owner Michael (Klaus Tange). The sauna is a dark labyrinth of desire complete with private cabins,&nbsp; spy holes, porn films and anonymous encounters, all set to a soundtrack of moans and groans. In the cold light of day, Johan sees a different side of the enterprise as he cleans away the stains of the previous night.</p> <p>Johan’s life is spent in clubs, bars and the sauna, with Copenhagen offering everything a horny young man could want from one night stands to Grindr hook-ups. A genuine connection or intimacy is more elusive until Johan meets William (Nina Rask) who is transitioning to male. Romance starts to blossom, allowing Broe to explore the communities surrounding each of them. William is not welcome at the Adonis and told “this is a place where men come to have sex with men.” Johan initially receives a warmer welcome from William’s trans friends, but still manages to feel excluded from their conversations and experiences. The moments they spend in each other’s worlds and Broe’s effective use of close-ups underline how much it is possible to feel alone in a crowd.&nbsp;</p> <p>Broe finds a sense of joy in the growing closeness between Johan and William, especially on a trip to the seaside when they feel able to just be themselves. It soon becomes clear, however, that he is not prepared to take the easy route of a happy-ever-after ending by ignoring the individual and wider pressures on their relationship.</p> <p><em>Sauna</em> makes considerable demands on its actors. Andersen, who previously co-starred with Rask in episodes of Danish television drama <em>Carmen Curlers</em> in 2023, plays Johan as a naive, doe-eyed innocent adrift in a world of endless possibilities. There is a puppy dog hunger to please in him, but nothing that grounds his life. The need for love almost unhinges him, pushing him towards behaviour that is troubling and unsettling. Rask, a trans actor, makes William a more distant figure who always seems slightly less invested in the relationship and wary of commitment. His claim that he is still trying to understand who he is and what he wants could equally apply to Johan.</p> <p>There is a thoughtfulness and maturity to Broe’s approach from the complexity of the central relationship to the avoidance of presenting a tourist’s eye view of Copenhagen and the exploration of modern sexuality through quite traditional storytelling. The result is a sombre, involving human drama.</p> <div class="factfile"> <p>Production company: Nordisk Film Production</p> <p>International sales: Trust Nordisk. susan@trustnordisk.com</p> <p>Producer: Mads-August Hertz</p> <p>Screenplay: Mathias Broe, William Lipperts based on the novel by Mads Ananda Lodahl</p> <p>Cinematography: Nicolai Lok</p> <p>Production design: Signe Crab Nymann</p> <p>Editing: Linda Man</p> <p>Music: Emil Davidsen</p> <p>Main cast: Magnus Juhl Andersen, Nina Rask, Dilan Amin, Klaus Tange</p> </div></div><div id="storytext-end" class="storytext-end"></div> </div> </div> <div class="htmlContent"> </div> </div> <div class="topics"><div class="sleeve"><span class="topicsLabel"></span><h2>Topics</h2><ul class="topicsList"><li><a href="/denmark/11074.subject">Denmark</a></li><li><a href="/europe/72.subject">Europe</a></li><li><a href="/festivals/9.subject">Festivals</a></li><li><a href="/reviews/11068.subject">Reviews</a></li><li><a href="/sundance/165.subject">Sundance</a></li><li><a href="/world-cinema-dramatic-competition/251.subject">World Cinema Dramatic Competition</a></li></ul></div></div> <div class="pageOptions"> <ul> <!--facebook--> <li> <a href="https://www.facebook.com/sharer/sharer.php?u=https%3a%2f%2fwww.screendaily.com%2freviews%2fsauna-sundance-review%2f5200714.article&e=%e2%80%98Sauna%e2%80%99%3a+Sundance+Review" class="facebook" title="Share this on Facebook" target="_blank"></a> </li> <!-- twitter--> <li> <a href="https://twitter.com/intent/tweet?text=%e2%80%98Sauna%e2%80%99%3a+Sundance+Review&url=https%3a%2f%2fwww.screendaily.com%2freviews%2fsauna-sundance-review%2f5200714.article" class="twitter" title="Share this on Twitter" target="_blank"></a> </li> <!--linked in--> <li> <a href="https://www.linkedin.com/cws/share?url=https%3a%2f%2fwww.screendaily.com%2freviews%2fsauna-sundance-review%2f5200714.article" class="linkedin" title="Share this on Linked in" target="_blank"></a> </li> <li><a href="mailto:?subject=%E2%80%98Sauna%E2%80%99: Sundance Review&amp;body=https://www.screendaily.com/reviews/sauna-sundance-review/5200714.article" class="email" title="Email this article"></a></li> </ul> <ul class="pageOptions_right"> <li class=" last" aria-live="polite" data-cache-bust="true" data-ajax-load-content="" data-url="/5200714/bookmark"> </li> </ul> </div> </div> </div> </div> </div> <div id="rightcolumn" class="fixedrightcolumn rightcolumn restrictedcontent"> <div id="rightcolumn_sleeve"> <!-- BELOW NOT SUPPORT Instructions for implementation depending on right or bottom. If this in the bottom position then we might need to wrap the code with ` <div class="container"> <div class="inner-sleeve"> // taxanomy-list to go here </div> </div> ` --> <div data-mpu1-reflow></div> <div id="rhcreflow-tabletlandscape"></div> <div id="rhcreflow-desktop" class="rhc-mostpopular-desktop"> </div> <div id="rhcreflow-extra"></div> <div id="rhcreflow-extra-end" class="rhcreflow-extra-end"></div> </div> </div> </div> </div> <div class="container bottomAdContainer restrictedcontent"> <div class="inner-sleeve"> <div class="bottomAd"> <div style="margin-left:auto; margin-right:auto; text-align:center;padding-bottom:20px"> <div class="sleeve"> <!-- /21612928716/Screen/billboard --> <div id='div-gpt-sectiondivide-one'> <script> googletag.cmd.push(function() { googletag.display('div-gpt-sectiondivide-one'); }); </script> </div> </div> </div> </div> </div> </div> <div class="container relatedVideos restrictedcontent"> <div class="inner-sleeve"> <div id="videosreflow-tabletportrait"></div> <div id="videosreflow-mobile"></div> </div> </div> <div class="container relatedArticles" id="relatedArticles"> <div class="inner-sleeve"> <div class="extras relatedarticles restrictedcontent"> <div class="relatedarticles_sleeve"> <div class="extras_heading"> <h3>Related articles</h3> </div> <div class="extrasStory listBlocks"> <div class="contentWrapper loadMoreItems" data-load-more-ajax=""> <ul data-load-more-context=""> <li class=""> <a href="https://www.screendaily.com/reviews/last-breath-review-woody-harrelson-dives-into-real-life-survival-story/5202197.article" class="image"> <img alt="Last Breath" loading="lazy" sizes="(max-width:767px) 100px, (max-width: 1179px) 220px, 280px" src="https://d1nslcd7m2225b.cloudfront.net/Pictures/100x67/1/8/3/1444183_lastbreath_575648.jpg" srcset="https://d1nslcd7m2225b.cloudfront.net/Pictures/100x67/1/8/3/1444183_lastbreath_575648.jpg 100w,https://d1nslcd7m2225b.cloudfront.net/Pictures/172x115/1/8/3/1444183_lastbreath_575648.jpg 172w,https://d1nslcd7m2225b.cloudfront.net/Pictures/220x148/1/8/3/1444183_lastbreath_575648.jpg 220w,https://d1nslcd7m2225b.cloudfront.net/Pictures/280x188/1/8/3/1444183_lastbreath_575648.jpg 280w" width="100" height="67" class="lazyloaded" /> </a> <div class="storyDetails"> <a href="https://www.screendaily.com/reviews/2.type" class="storyType">Reviews</a> <h3> <a href="https://www.screendaily.com/reviews/last-breath-review-woody-harrelson-dives-into-real-life-survival-story/5202197.article">‘Last Breath’ review: Woody Harrelson dives into real-life survival story</a> </h3> <p class="meta"> <span class="date" data-date-timezone="{&quot;publishdate&quot;: &quot;2025-02-27T01:00:00Z&quot;,&quot;format&quot;: &quot;D MMMM YYYY HH:mm&quot;}">2025-02-27T01:00:00Z</span> <span class="author">By <a rel="author" href="https://www.screendaily.com/tim-grierson-senior-us-critic/1100130.bio">Tim Grierson Senior US Critic</a></span> </p> <p>Alex Parkinson turns his 2019 documentary into a straightforward, appealing thriller</p> </div> </li> <li class=""> <a href="https://www.screendaily.com/reviews/four-letters-of-love-review-irish-eyes-aromancing-in-heartfelt-adaptation/5202276.article" class="image"> <img alt="brosnan" loading="lazy" sizes="(max-width:767px) 100px, (max-width: 1179px) 220px, 280px" src="https://d1nslcd7m2225b.cloudfront.net/Pictures/100x67/4/8/2/1444482_brosnan_631022_crop.jpg" srcset="https://d1nslcd7m2225b.cloudfront.net/Pictures/100x67/4/8/2/1444482_brosnan_631022_crop.jpg 100w,https://d1nslcd7m2225b.cloudfront.net/Pictures/172x115/4/8/2/1444482_brosnan_631022_crop.jpg 172w,https://d1nslcd7m2225b.cloudfront.net/Pictures/220x148/4/8/2/1444482_brosnan_631022_crop.jpg 220w,https://d1nslcd7m2225b.cloudfront.net/Pictures/280x188/4/8/2/1444482_brosnan_631022_crop.jpg 280w" width="100" height="67" class="lazyloaded" /> </a> <div class="storyDetails"> <a href="https://www.screendaily.com/reviews/2.type" class="storyType">Reviews</a> <h3> <a href="https://www.screendaily.com/reviews/four-letters-of-love-review-irish-eyes-aromancing-in-heartfelt-adaptation/5202276.article">‘Four Letters Of Love’ review: Irish eyes a’romancing in heartfelt adaptation</a> </h3> <p class="meta"> <span class="date" data-date-timezone="{&quot;publishdate&quot;: &quot;2025-02-26T22:15:00Z&quot;,&quot;format&quot;: &quot;D MMMM YYYY HH:mm&quot;}">2025-02-26T22:15:00Z</span> <span class="author">By <a rel="author" href="https://www.screendaily.com/allan-hunter/53.bio">Allan Hunter</a></span> </p> <p>Pierce Brosnan, Gabriel Byrne and Helena Bonham Carter headline</p> </div> </li> <li class=""> <a href="https://www.screendaily.com/reviews/tornado-review-tim-roth-jack-lowden-and-koki-do-battle-in-18th-century-britain/5202403.article" class="image"> <img alt="Tornado" loading="lazy" sizes="(max-width:767px) 100px, (max-width: 1179px) 220px, 280px" src="https://d1nslcd7m2225b.cloudfront.net/Pictures/100x67/6/5/5/1444655_20240214_tornado_8878_239602_crop.jpg" srcset="https://d1nslcd7m2225b.cloudfront.net/Pictures/100x67/6/5/5/1444655_20240214_tornado_8878_239602_crop.jpg 100w,https://d1nslcd7m2225b.cloudfront.net/Pictures/172x115/6/5/5/1444655_20240214_tornado_8878_239602_crop.jpg 172w,https://d1nslcd7m2225b.cloudfront.net/Pictures/220x148/6/5/5/1444655_20240214_tornado_8878_239602_crop.jpg 220w,https://d1nslcd7m2225b.cloudfront.net/Pictures/280x188/6/5/5/1444655_20240214_tornado_8878_239602_crop.jpg 280w" width="100" height="67" class="lazyloaded" /> </a> <div class="storyDetails"> <a href="https://www.screendaily.com/reviews/2.type" class="storyType">Reviews</a> <h3> <a href="https://www.screendaily.com/reviews/tornado-review-tim-roth-jack-lowden-and-koki-do-battle-in-18th-century-britain/5202403.article">‘Tornado’ review: Tim Roth, Jack Lowden and Kôki do battle in 18th century Britain</a> </h3> <p class="meta"> <span class="date" data-date-timezone="{&quot;publishdate&quot;: &quot;2025-02-26T20:00:00Z&quot;,&quot;format&quot;: &quot;D MMMM YYYY HH:mm&quot;}">2025-02-26T20:00:00Z</span> <span class="author">By <a rel="author" href="https://www.screendaily.com/nikki-baughan/1100884.bio">Nikki Baughan</a></span> </p> <p>John Maclean’s Western/samurai hybrid thriller opens Glasgow Film Festival</p> </div> </li> </ul> <div class="loadMoreButtonWrapper" data-load-more-button-wrapper=""> <button type="button" class="button" data-load-more-button="" data-items-offset="3" data-ajax-url="https://www.screendaily.com/5200714/loadmore?code=ARTICLES" data-items-to-load="8" data-loading-more-text="Loading more articles"> Load more articles </button> </div> </div> </div> <div class="fixedrightcolumn rightcolumn"> <div class="ad"> <!-- /21612928716/Screen/AdvertC --> <div id='div-gpt-AdvertC'> <script> googletag.cmd.push(function() { googletag.display('div-gpt-AdvertC'); }); </script> </div> </div> <div class="newsletterSignup" data-ajax-load-content="" data-ajax-async="true" data-cache-bust="true" data-url="/newslettersignup?wid=4&amp;navcode=5747"> <header><![CDATA[Newsletters for you]]></header> <intro><![CDATA[Click to add new email alerts]]></intro> <newsletter><![CDATA[UKEURODAILYFESTDAILIES]]></newsletter> <newsletter><![CDATA[USDAILY]]></newsletter> <newsletter><![CDATA[BREAKINGNEWS]]></newsletter> <newsletter><![CDATA[AWARDSCOUNTDOWN]]></newsletter> <newsletter><![CDATA[ASIAPACIFICWEEKLY]]></newsletter> <senttotext><![CDATA[Sent to:]]></senttotext> <editlinktext><![CDATA[Add now]]></editlinktext> </div> </div> </div> </div> </div> </div> <div class="container commentContainer restrictedcontent"> <div class="inner-sleeve"> <div class=" extras"> <div class="extrasStory"> <div class="contentWrapper"></div> </div></div> </div> </div> <div class="container relatedArticles" id="moreArticles"> <div class="inner-sleeve"> <div class="extras relatedarticles restrictedcontent"> <div class="relatedarticles_sleeve"> <div class="extras_heading"> <h3>More from Reviews</h3> </div> <div class="extrasStory listBlocks"> <div class="contentWrapper loadMoreItems" data-load-more-ajax=""> <ul data-load-more-context=""> <li class=""> <a href="https://www.screendaily.com/reviews/beat-the-lotto-gambling-hijinks-in-entertaining-irish-doc/5202328.article" class="image"> <img alt="Beat The Lotto" loading="lazy" sizes="(max-width:767px) 100px, (max-width: 1179px) 220px, 280px" src="https://d1nslcd7m2225b.cloudfront.net/Pictures/100x67/4/9/4/1444494_beatthelotto_561228.jpg" srcset="https://d1nslcd7m2225b.cloudfront.net/Pictures/100x67/4/9/4/1444494_beatthelotto_561228.jpg 100w,https://d1nslcd7m2225b.cloudfront.net/Pictures/172x115/4/9/4/1444494_beatthelotto_561228.jpg 172w,https://d1nslcd7m2225b.cloudfront.net/Pictures/220x148/4/9/4/1444494_beatthelotto_561228.jpg 220w,https://d1nslcd7m2225b.cloudfront.net/Pictures/280x188/4/9/4/1444494_beatthelotto_561228.jpg 280w" width="100" height="67" class="lazyloaded" /> </a> <div class="storyDetails"> <a href="https://www.screendaily.com/reviews/2.type" class="storyType">Reviews</a> <h3> <a href="https://www.screendaily.com/reviews/beat-the-lotto-gambling-hijinks-in-entertaining-irish-doc/5202328.article">’​Beat The Lotto’: Gambling hijinks in entertaining Irish doc</a> </h3> <p class="meta"> <span class="date" data-date-timezone="{&quot;publishdate&quot;: &quot;2025-02-26T19:40:00Z&quot;,&quot;format&quot;: &quot;D MMMM YYYY HH:mm&quot;}">2025-02-26T19:40:00Z</span> <span class="author">By <a rel="author" href="https://www.screendaily.com/fionnuala-halligan/172.bio">Fionnuala Halligan</a></span> </p> <p>Entertaining exploration of a syndicate’s attempts to game the Irish Lottery in 1992</p> </div> </li> <li class=""> <a href="https://www.screendaily.com/reviews/holding-liat-review-israeli-family-suffers-their-own-hostage-crisis/5202456.article" class="image"> <img alt="Holding Liat" loading="lazy" sizes="(max-width:767px) 100px, (max-width: 1179px) 220px, 280px" src="https://d1nslcd7m2225b.cloudfront.net/Pictures/100x67/7/4/0/1444740_holdingliat_767993.jpg" srcset="https://d1nslcd7m2225b.cloudfront.net/Pictures/100x67/7/4/0/1444740_holdingliat_767993.jpg 100w,https://d1nslcd7m2225b.cloudfront.net/Pictures/172x115/7/4/0/1444740_holdingliat_767993.jpg 172w,https://d1nslcd7m2225b.cloudfront.net/Pictures/220x148/7/4/0/1444740_holdingliat_767993.jpg 220w,https://d1nslcd7m2225b.cloudfront.net/Pictures/280x188/7/4/0/1444740_holdingliat_767993.jpg 280w" width="100" height="67" class="lazyloaded" /> </a> <div class="storyDetails"> <a href="https://www.screendaily.com/reviews/2.type" class="storyType">Reviews</a> <h3> <a href="https://www.screendaily.com/reviews/holding-liat-review-israeli-family-suffers-their-own-hostage-crisis/5202456.article">‘Holding Liat’ review: Israeli family suffers their own hostage crisis</a> </h3> <p class="meta"> <span class="date" data-date-timezone="{&quot;publishdate&quot;: &quot;2025-02-26T14:14:00Z&quot;,&quot;format&quot;: &quot;D MMMM YYYY HH:mm&quot;}">2025-02-26T14:14:00Z</span> <span class="author">By <a rel="author" href="https://www.screendaily.com/jonathan-romney/885.bio">Jonathan Romney</a></span> </p> <p>Berlin doc winner confronts the aftermath of the Hamas attacks of October 7</p> </div> </li> <li class=""> <a href="https://www.screendaily.com/reviews/aontas-review-irish-language-crime-puzzle/5202323.article" class="image"> <img alt="Aontas" loading="lazy" sizes="(max-width:767px) 100px, (max-width: 1179px) 220px, 280px" src="https://d1nslcd7m2225b.cloudfront.net/Pictures/100x67/4/9/0/1444490_aontas_558114.jpg" srcset="https://d1nslcd7m2225b.cloudfront.net/Pictures/100x67/4/9/0/1444490_aontas_558114.jpg 100w,https://d1nslcd7m2225b.cloudfront.net/Pictures/172x115/4/9/0/1444490_aontas_558114.jpg 172w,https://d1nslcd7m2225b.cloudfront.net/Pictures/220x148/4/9/0/1444490_aontas_558114.jpg 220w,https://d1nslcd7m2225b.cloudfront.net/Pictures/280x188/4/9/0/1444490_aontas_558114.jpg 280w" width="100" height="67" class="lazyloaded" /> </a> <div class="storyDetails"> <a href="https://www.screendaily.com/reviews/2.type" class="storyType">Reviews</a> <h3> <a href="https://www.screendaily.com/reviews/aontas-review-irish-language-crime-puzzle/5202323.article">’Aontas’ review: Irish-language crime puzzle</a> </h3> <p class="meta"> <span class="date" data-date-timezone="{&quot;publishdate&quot;: &quot;2025-02-24T10:23:00Z&quot;,&quot;format&quot;: &quot;D MMMM YYYY HH:mm&quot;}">2025-02-24T10:23:00Z</span> <span class="author">By <a rel="author" href="https://www.screendaily.com/fionnuala-halligan/172.bio">Fionnuala Halligan</a></span> </p> <p>Carrie Crowley and Brid Brennan anchor Damian McCann’s twisting noir thriller</p> </div> </li> </ul> <div class="loadMoreButtonWrapper" data-load-more-button-wrapper=""> <button type="button" class="button" data-load-more-button="" data-items-offset="3" data-ajax-url="https://www.screendaily.com/5200714/loadmore?code=MORE" data-items-to-load="8" data-loading-more-text="Loading more articles"> Load more articles </button> </div> </div> </div> <div class="fixedrightcolumn rightcolumn"> <div class="ad"> <!-- /21612928716/Screen/AdvertE --> <div id='div-gpt-AdvertE'> <script> googletag.cmd.push(function() { googletag.display('div-gpt-AdvertE'); }); </script> </div> </div> </div> </div> </div> </div> </div> <div class="container"><div class="inner-sleeve"><div id="rhcreflow-tabletportrait"></div><div id="rhcreflow-mobile"></div></div></div><div id="mobile-drop-zone"></div> <div class="container storyBottomMostPopularContainer"> <div class="inner-sleeve"> <div class="extrasStory"> <div class="contentWrapper"> <div class="tab-widget-10" data-ajax-load-content="" data-url="/ajax/most?bottom=1&storypage=1"></div> </div> </div> <div class="fixedrightcolumn rightcolumn"> </div> </div> </div> <div class="footer_ad"> <div class="footer_ad_strip"> <div class="ad"> </div> </div> </div> <div id="footer" class="footer" role="contentinfo"> <div class="container footerTopNavPageText"> <div class="inner-sleeve"> <div class="nav topNav"><ul><li class="first"><a href="https://www.screendaily.com/advertise-with-screen">Advertise with Screen</a></li><li class=""><a href="https://www.screendaily.com/contact-us">Contact us</a></li><li class=""><a href="https://www.screendaily.com/az-subjects">A - Z of Subjects</a></li><li class="last"><a href="https://www.screendaily.com/46017.more">Digital Editions</a></li></ul></div><div class="footerSocial"> <ul> <li class="footerSocialFacebook"> <a href="https://www.facebook.com/ScreenDaily/">Connect with us on Facebook</a> </li> <li class="footerSocialTwitter"> <a href="https://twitter.com/screendaily">Connect with us on Twitter</a> </li> <li class="footerSocialLinkedin"> <a href="https://www.linkedin.com/company/2298039">Connect with us on Linked in</a> </li><li class="footerSocialYoutube"> <a href="https://www.youtube.com/channel/UCKV7nCATTd4LFbD93ScBUoA">Connect with us on YouTube</a> </li> <li class="footerSocialInstagram"> <a href="https://www.instagram.com/screendaily/?hl=en">Connect with us on Instagram></a> </li> </ul> </div> <!-- /21612928716/Screen/btm-bb --> <!--<div style="width: 970px; height:250px; margin-left:auto; margin-right:auto; text-align:center; padding-top:10px; margin-bottom:20px"> <div class="sleeve"> <div id='div-gpt-ad-bottom-billboard' style='min-width: 970px; min-height: 250px;'> <script> googletag.cmd.push(function() { googletag.display('div-gpt-ad-bottom-billboard'); }); </script> </div> </div> </div>--> <div style="clear:both"></div> <div class="footerPromo"> <div> <h3>Subscribe to Screen International</h3> <p>Screen International is the essential resource for the international film industry. Subscribe now for monthly editions, awards season weeklies, access to the Screen International archive and supplements including Stars of Tomorrow and World of Locations.</p> <a href="https://subs.screendaily.com/subscriptions" class="button" target="_blank" id="footer_promo_subscribe_find_more">Find out more</a> </div> <div> <h3>Events</h3> <ul> <li><a href="https://www.mediaproductionshow.com/?utm_source=Screen&utm_medium=website&utm_campaign=Awareness" rel="nofollow" target="_blank">Media Production &amp; Technology Show</a></li> </ul> </div> </div> </div> </div> <div class="container bottomNav"><div class="inner-sleeve"><ul><li class="first"><a href="http://www.mb-insight.com/mbi-website-terms-of-use/">Terms and conditions</a></li><li><a href="http://www.globaldata.com/privacy-policy">Privacy & Cookie Policy</a></li><li class="label"><a href="http://www.mb-insight.com/">Copyright © 2023 Media Business Insight Limited</a></li><li class="last"><a href="https://www.screendaily.com/subscription-faqs">Subscription FAQs</a></li></ul></div></div> <div class="bottom"> <div class="container footerBottomNavPageText"> <div class="inner-sleeve"> <p class="webvision">Site powered by <a href="https://www.abacusemedia.com/webvisioncloud">Webvision Cloud</a></p> </div> </div> </div> </div> </div> </div> <script src="/Magazine/core.js?p=7605401637413244" defer></script> <!-- REMOVE CLASS OF `popup` TO FORGOTTEN PASSWORD IN POPUP --> <script> $(window).on('abacus:popuploaded', function() { $('.abacusPopup .forgottenpassword a').removeClass('popup'); }); </script> <!-- AD Renewals Script - Start --> <script type="text/javascript"> (function(d, s) { var config = { baseUrl:'account.screendaily.com', partyId: 0 }; var cacheDate = new Date(); cacheDate.setHours(0,0,0,0); var _abacus_ = d.createElement('script'); _abacus_.type = 'text/javascript'; _abacus_.async = true; _abacus_.src = ('https:' == d.location.protocol ? 'https://' : 'http://') + config.baseUrl + '/templatejs?partyId=' + config.partyId + '&cacheDate=' + cacheDate.getTime(); var sc = d.getElementsByTagName(s)[0]; sc.parentNode.insertBefore(_abacus_, sc); })(document, 'script'); </script> <!-- AD Renewals Script - End --> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10