CINXE.COM
‘Spellbound’: 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/6/5/7/1436657_spellbound_561145.jpg" imagesrcset="https://d1nslcd7m2225b.cloudfront.net/Pictures/480xany/6/5/7/1436657_spellbound_561145.jpg 480w,https://d1nslcd7m2225b.cloudfront.net/Pictures/600xany/6/5/7/1436657_spellbound_561145.jpg 600w,https://d1nslcd7m2225b.cloudfront.net/Pictures/780xany/6/5/7/1436657_spellbound_561145.jpg 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>‘Spellbound’: Review | Reviews | Screen</title> <meta name="description" content="Rachel Zegler, Nicole Kidman and Javier Bardem lend their voices to Netflix’s family animation" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="momentnowdate" content="2025-02-17 14:07:54.775"/> <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="Fri, 22 Nov 2024 08:01 GMT" /> <link rel="canonical" href="https://www.screendaily.com/reviews/spellbound-review/5199163.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="‘Spellbound’: Review" /> <meta property="og:type" content="Article" /> <meta property="og:url" content="https://www.screendaily.com/reviews/spellbound-review/5199163.article" /> <meta property="og:site_name" content="Screen" /> <meta property="og:description" content="Rachel Zegler, Nicole Kidman and Javier Bardem lend their voices to Netflix's family animation" /> <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/6/5/7/1436657_spellbound_561145.jpg" /> <meta property="og:image:alt" content="Spellbound" /> <meta property="twitter:card" content="summary_large_image" /> <meta property="twitter:title" content="‘Spellbound’: Review" /> <meta property="twitter:description" content="Rachel Zegler, Nicole Kidman and Javier Bardem lend their voices to Netflix's family animation" /> <meta property="twitter:image:src" content="https://d1nslcd7m2225b.cloudfront.net/Pictures/1120xAny/6/5/7/1436657_spellbound_561145.jpg" /> <meta property="twitter:image:alt" content="Spellbound" /> <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':'5199163'}); window.dataLayer.push({'StoryFormatProperty':'N'}); window.dataLayer.push({'StoryCategories':'|United States|Reviews|Animation|Reviews|Netflix|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':'|176|11068|11088|11895|12096|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':'|Tim Grierson, Senior US Critic|'}); 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/tilda-swinton-on-calls-to-boycott-the-berlinale-and-her-future-plans-i-need-a-break/5201984.article" class="image"><div class="image"><img src="https://d1nslcd7m2225b.cloudfront.net/Pictures/274x183/7/2/2/1443722_screenshot20250214at11.06.23_634667_crop.jpg" loading="lazy" class="lazyloaded" alt="Tilda Swinton"></div><div class="captionBlock"><span class="title">Tilda Swinton on calls to boycott the Berlinale and her future plans: “I need a break”</span></div></a></li><li class="promotedStory"><a href="/news/the-trouble-with-jessica-heads-to-north-america-europe-exclusive/5201878.article" class="image"><div class="image"><img src="https://d1nslcd7m2225b.cloudfront.net/Pictures/274x183/5/8/1/1443581_15_182046_crop.jpg" loading="lazy" class="lazyloaded" alt="'The Trouble With Jessica'"></div><div class="captionBlock"><span class="title">‘The Trouble With Jessica’ heads to North America, Europe (exclusive)</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/hysteria-review-tense-german-satirical-thriller-eyes-breakout-status/5202102.article" class="image"><div class="image"><img src="https://d1nslcd7m2225b.cloudfront.net/Pictures/274x183/9/8/4/1443984_hysteria_358786.jpg" loading="lazy" class="lazyloaded" alt="Hysteria"></div><div class="captionBlock"><span class="title">‘Hysteria’ review: Tense German satirical thriller eyes breakout status</span></div></a></li><li class="promotedStory"><a href="/reviews/the-longing-review-toshizo-fujiwara-directs-and-stars-in-sweet-panorama-drama/5202104.article" class="image"><div class="image"><img src="https://d1nslcd7m2225b.cloudfront.net/Pictures/274x183/9/8/7/1443987_thelongingbytoshizofujiwara_credittoshizoproduce_575453_crop.jpg" loading="lazy" class="lazyloaded" alt="The Longing by Toshizo Fujiwara_Credit Toshizo Produce"></div><div class="captionBlock"><span class="title">‘The Longing’ review: Toshizo Fujiwara directs and stars in sweet Panorama drama</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/2025-film-festivals-and-markets-calendar-latest-dates/5200079.article" class="image"><div class="image"><img src="https://d1nslcd7m2225b.cloudfront.net/Pictures/274x183/1/0/5/1439105_festivalimage_225197.jpg" loading="lazy" class="lazyloaded" alt="festival image"></div><div class="captionBlock"><span class="title">2025 film festivals and markets calendar: latest dates</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-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><li class="promotedStory"><a href="/news/captain-america-brave-new-world-opens-with-180m-at-global-box-office-ne-zha-2-stays-top/5202090.article" class="image"><div class="image"><img src="https://d1nslcd7m2225b.cloudfront.net/Pictures/274x183/9/5/9/1443959_captainamericabravenewworldcmarvelstudios_978702_crop.jpg" loading="lazy" class="lazyloaded" alt="Captain America Brave New World c Marvel Studios"></div><div class="captionBlock"><span class="title">‘Captain America: Brave New World’ opens with $180m at global box office; ‘Ne Zha 2’ stays top</span></div></a></li><li class="promotedStory"><a href="/news/uk-ireland-box-office-preview-bridget-jones-captain-america-face-off-for-valentines-day/5202002.article" class="image"><div class="image"><img src="https://d1nslcd7m2225b.cloudfront.net/Pictures/274x183/7/7/2/1443772_boxofficepreview_670382.jpg" loading="lazy" class="lazyloaded" alt="'Bridget Jones: Mad About The Boy', 'Captain America: Brave New World'"></div><div class="captionBlock"><span class="title">UK-Ireland box office preview: ‘Bridget Jones’, ‘Captain America’ face off for Valentine’s Day</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>‘Spellbound’: Review</h1> </div> <p class="byline meta">By <span class="author"><a href="https://www.screendaily.com/tim-grierson-senior-us-critic/1100130.bio" rel="author">Tim Grierson, Senior US Critic</a></span><span class="date" data-date-timezone="{"publishdate": "2024-11-22T08:01:00","format": "D MMMM YYYY"}">2024-11-22T08:01: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%2fspellbound-review%2f5199163.article&e=%e2%80%98Spellbound%e2%80%99%3a+Review" class="facebook" title="Share this on Facebook" target="_blank"></a> </li> <!-- twitter--> <li> <a href="https://twitter.com/intent/tweet?text=%e2%80%98Spellbound%e2%80%99%3a+Review&url=https%3a%2f%2fwww.screendaily.com%2freviews%2fspellbound-review%2f5199163.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%2fspellbound-review%2f5199163.article" class="linkedin" title="Share this on Linked in" target="_blank"></a> </li> <li><a href="mailto:?subject=%E2%80%98Spellbound%E2%80%99: Review&body=https://www.screendaily.com/reviews/spellbound-review/5199163.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="/5199163/bookmark"> </li> </ul> </div> <div class="articleWrapper"> <div class="articleContent"> <div class="standfirst"><p>Rachel Zegler, Nicole Kidman and Javier Bardem lend their voices to Netflix’s family animation</p></div><div class="storytext"><div class="inline_image image_size_full" data-attachment="1436657" data-sequence="1"> <p class="picture"><img alt="Spellbound" src="https://d1nslcd7m2225b.cloudfront.net/Pictures/480xany/6/5/7/1436657_spellbound_561145.jpg" sizes="(max-width: 1023px) 100vw, 780px" srcset="https://d1nslcd7m2225b.cloudfront.net/Pictures/480xany/6/5/7/1436657_spellbound_561145.jpg 480w,https://d1nslcd7m2225b.cloudfront.net/Pictures/600xany/6/5/7/1436657_spellbound_561145.jpg 600w,https://d1nslcd7m2225b.cloudfront.net/Pictures/780xany/6/5/7/1436657_spellbound_561145.jpg 780w" loading="eager" class="lazyloaded" width="1200" height="800"></p> <div class="inline_meta"><p class="inline_source"><cite>Source: Netflix</cite></p><p class="inline_caption">‘Spellbound’</p></div></div> <p><strong></strong><em>Dir: Vicky Jenson. US/Spain. 2024. 106mins</em></p> <p>Even in enchanted kingdoms, families have problems. This is the primary lesson of <em>Spellbound</em>, a heartfelt animation that never proves to be especially magical. Rachel Zegler voices an optimistic princess hiding a secret — her royal parents have been turned into monsters by a dark curse — who goes on a journey to restore things to how they once were. But despite a handful of catchy songs from Oscar-winning composer Alan Menken and a thoughtful, unexpected final twist, the latest project from Skydance Animation, which also produced 2022’s <em>Luck</em>, finds the nascent company still lagging behind its competitors. </p> <blockquote> <p>A sense of narrative deja vu </p> </blockquote> <p>Streaming on Netflix globally starting on November 22 — the same day it also receives a limited US theatrical release — <em>Spellbound</em> hopes to find an audience over the Thanksgiving holiday, especially among families who would prefer to watch something at home. The film features big names, including Javier Bardem and Nicole Kidman in smaller roles but, even among viewers seeking animated fare, <em>Spellbound</em> lacks the buzz of <em>Moana 2</em>, which opens in the US and rolls out globally from November 27.</p> <p>In the land of Lumbria, Princess Ellian (voiced by Zegler) is a happy-go-lucky teenager who has done her best to cope with the fact that her parents, the king (Bardem) and queen (Kidman), were put under a spell that has transformed them into rampaging, unspeaking creatures. With the help of the haughty but loyal Minister Bolinar (John Lithgow), Ellian has kept this a secret from their subjects – but eventually the townspeople learn the horrible truth, sending the kingdom into a panic. Two wacky oracles (Tituss Burgess, Nathan Lane) instruct the princess that she must take her parents in search of a mystical totem that can reverse the curse before it is too late for them to change back.</p> <p>Directed by Vicky Jenson, who co-directed <em>Shrek </em>and <em>Shark Tale</em>, the film plays with fairytale tropes, trying to find humour in updating the old-fashioned milieu with modern references. (There are jokes about rideshares, and the dialogue contains plenty of modern expressions, such as “They are <em>a lot</em>.”) But the quippy exchanges often fall flat, while the comedy frequently targets younger children, relying on tired bits of business such as overly cute critters and broad slapstick. </p> <p>Skydance Animation’s first feature, <em>Luck,</em> borrowed heavily from the playbooks of Pixar and Dreamworks, concocting a would-be clever imaginary world while attempting to balance laughs and sentiment. Ambitiously, <em>Spellbound</em> aspires to be an adventure saga, a musical and a tear-jerking family drama. But the sense of narrative deja vu — the nagging recognition that the film draws from disparate, familiar parts, rarely gelling into a coherent whole — cannot help but make the proceedings feel derivative. This is especially apparent in the humdrum animation style, which is bright and energetic but unspectacular.</p> <p>Ziegler makes for a likeable, independent princess, and the <em>West Side Story</em> star certainly has the talent to perform Menken’s peppy tunes. (It is both a strength and a limitation that <em>Spellbound</em>’s songs echo his previous work on classics like <em>The Little Mermaid </em>and <em>Beauty And The Beast</em>, with Tony-nominated lyricist Glenn Slater providing the zippy rhymes.) Unfortunately, Ziegler’s supporting cast struggle with their predictable roles. Lithgow’s fussy Bolinar is a drag, while Burgess and Lane’s comic-relief oracles are schticky rather than uproarious. Bardem and Kidman, reuniting after 2021’s <em>Being The Ricardos </em>and once again playing a fractious couple, have little opportunity to shine. </p> <p>Yet, underneath the threadbare plot and commonplace characters, Jenson wants to say something meaningful about the sometimes-fraught relationship between parents and children — and the challenges of trying to recapture simpler, happier times. Initially, Ellian is frustrated by her unruly parents, who she is convinced are still there somewhere inside these rambunctious monsters, even though most in the castle believe they are too far gone to save. As the princess takes them on a quest to find a cure, she must be the adult guiding these unreasoning beasts. <strong><br></strong></p> <p>Jenson’s ultimate message is actually not revealed until the finale, which should not be spoiled – although let it be said that she provocatively explores how family members can become (metaphorical) monsters without realising it. That closing twist would hit harder, however, if the journey to get there had been more engaging. But, by recycling themes and genres, <em>Spellbound</em> fails to transform into a touching fable.</p> <div class="factfile"> <p>Production company: Skydance Animation</p> <p>Worldwide distribution: Netflix<strong> </strong></p> <p>Producers: John Lasseter, David Ellison, Dana Goldberg, Bruce Anderson, Linda Woolverton</p> <p>Screenplay: Lauren Hynek & Elizabeth Martin and Julia Miranda, story by Vicky Jenson and Lauren Hynek & Elizabeth Martin </p> <p>Cinematography: Todd Heapy (camera), Miguel Pablos Contreras (lighting)</p> <p>Production design: Brett Nystul</p> <p>Editing: Susan Fitzer</p> <p>Music: Alan Menken</p> <p>Main voice cast: Rachel Zegler, John Lithgow, Jenifer Lewis, Tituss Burgess, Nathan Lane, Javier Bardem, Nicole Kidman </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="/animation/11088.subject">Animation</a></li><li><a href="/netflix/12096.subject">Netflix</a></li><li><a href="/reviews/11068.subject">Reviews</a></li><li><a href="/united-states/176.subject">United States</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%2fspellbound-review%2f5199163.article&e=%e2%80%98Spellbound%e2%80%99%3a+Review" class="facebook" title="Share this on Facebook" target="_blank"></a> </li> <!-- twitter--> <li> <a href="https://twitter.com/intent/tweet?text=%e2%80%98Spellbound%e2%80%99%3a+Review&url=https%3a%2f%2fwww.screendaily.com%2freviews%2fspellbound-review%2f5199163.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%2fspellbound-review%2f5199163.article" class="linkedin" title="Share this on Linked in" target="_blank"></a> </li> <li><a href="mailto:?subject=%E2%80%98Spellbound%E2%80%99: Review&body=https://www.screendaily.com/reviews/spellbound-review/5199163.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="/5199163/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/hysteria-review-tense-german-satirical-thriller-eyes-breakout-status/5202102.article" class="image"> <img alt="Hysteria" loading="lazy" sizes="(max-width:767px) 100px, (max-width: 1179px) 220px, 280px" src="https://d1nslcd7m2225b.cloudfront.net/Pictures/100x67/9/8/4/1443984_hysteria_358786.jpg" srcset="https://d1nslcd7m2225b.cloudfront.net/Pictures/100x67/9/8/4/1443984_hysteria_358786.jpg 100w,https://d1nslcd7m2225b.cloudfront.net/Pictures/172x115/9/8/4/1443984_hysteria_358786.jpg 172w,https://d1nslcd7m2225b.cloudfront.net/Pictures/220x148/9/8/4/1443984_hysteria_358786.jpg 220w,https://d1nslcd7m2225b.cloudfront.net/Pictures/280x188/9/8/4/1443984_hysteria_358786.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/hysteria-review-tense-german-satirical-thriller-eyes-breakout-status/5202102.article">‘Hysteria’ review: Tense German satirical thriller eyes breakout status</a> </h3> <p class="meta"> <span class="date" data-date-timezone="{"publishdate": "2025-02-17T14:04:00Z","format": "D MMMM YYYY HH:mm"}">2025-02-17T14:04:00Z</span> <span class="author">By <a rel="author" href="https://www.screendaily.com/wendy-ide/1100977.bio">Wendy Ide</a></span> </p> <p>Mehmet Akif Büyükatalay follows up his debut hit ‘Oray’</p> </div> </li> <li class=""> <a href="https://www.screendaily.com/reviews/the-longing-review-toshizo-fujiwara-directs-and-stars-in-sweet-panorama-drama/5202104.article" class="image"> <img alt="The Longing by Toshizo Fujiwara_Credit Toshizo Produce" loading="lazy" sizes="(max-width:767px) 100px, (max-width: 1179px) 220px, 280px" src="https://d1nslcd7m2225b.cloudfront.net/Pictures/100x67/9/8/7/1443987_thelongingbytoshizofujiwara_credittoshizoproduce_575453_crop.jpg" srcset="https://d1nslcd7m2225b.cloudfront.net/Pictures/100x67/9/8/7/1443987_thelongingbytoshizofujiwara_credittoshizoproduce_575453_crop.jpg 100w,https://d1nslcd7m2225b.cloudfront.net/Pictures/172x115/9/8/7/1443987_thelongingbytoshizofujiwara_credittoshizoproduce_575453_crop.jpg 172w,https://d1nslcd7m2225b.cloudfront.net/Pictures/220x148/9/8/7/1443987_thelongingbytoshizofujiwara_credittoshizoproduce_575453_crop.jpg 220w,https://d1nslcd7m2225b.cloudfront.net/Pictures/280x188/9/8/7/1443987_thelongingbytoshizofujiwara_credittoshizoproduce_575453_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/the-longing-review-toshizo-fujiwara-directs-and-stars-in-sweet-panorama-drama/5202104.article">‘The Longing’ review: Toshizo Fujiwara directs and stars in sweet Panorama drama</a> </h3> <p class="meta"> <span class="date" data-date-timezone="{"publishdate": "2025-02-17T13:58:00Z","format": "D MMMM YYYY HH:mm"}">2025-02-17T13:58:00Z</span> <span class="author">By <a rel="author" href="https://www.screendaily.com/lee-marshall/244.bio">Lee Marshall</a></span> </p> <p>An Osaka pancake chef helps an ex-con out</p> </div> </li> <li class=""> <a href="https://www.screendaily.com/reviews/all-i-had-was-nothingness-review-a-powerful-shoah-through-the-eyes-of-its-maker/5202042.article" class="image"> <img alt="All I Had Was Nothingness" loading="lazy" sizes="(max-width:767px) 100px, (max-width: 1179px) 220px, 280px" src="https://d1nslcd7m2225b.cloudfront.net/Pictures/100x67/8/4/7/1443847_allihadwasnothingness_674246.jpg" srcset="https://d1nslcd7m2225b.cloudfront.net/Pictures/100x67/8/4/7/1443847_allihadwasnothingness_674246.jpg 100w,https://d1nslcd7m2225b.cloudfront.net/Pictures/172x115/8/4/7/1443847_allihadwasnothingness_674246.jpg 172w,https://d1nslcd7m2225b.cloudfront.net/Pictures/220x148/8/4/7/1443847_allihadwasnothingness_674246.jpg 220w,https://d1nslcd7m2225b.cloudfront.net/Pictures/280x188/8/4/7/1443847_allihadwasnothingness_674246.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/all-i-had-was-nothingness-review-a-powerful-shoah-through-the-eyes-of-its-maker/5202042.article">‘All I Had Was Nothingness’ review: A powerful ‘Shoah’ through the eyes of its maker</a> </h3> <p class="meta"> <span class="date" data-date-timezone="{"publishdate": "2025-02-17T13:30:00Z","format": "D MMMM YYYY HH:mm"}">2025-02-17T13:30:00Z</span> <span class="author">By <a rel="author" href="https://www.screendaily.com/fionnuala-halligan/172.bio">Fionnuala Halligan</a></span> </p> <p>40 years later, Guillame Ribot pairs unused footage with Claude Lanzmann’s words to show how the film was made</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/5199163/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&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/reflection-in-a-dead-diamond-review-fast-and-frenetic-movie-geek-nostalgia/5202068.article" class="image"> <img alt="Reflection In A Dead Diamond" loading="lazy" sizes="(max-width:767px) 100px, (max-width: 1179px) 220px, 280px" src="https://d1nslcd7m2225b.cloudfront.net/Pictures/100x67/8/9/3/1443893_reflectioninadeaddiamond_273697.jpg" srcset="https://d1nslcd7m2225b.cloudfront.net/Pictures/100x67/8/9/3/1443893_reflectioninadeaddiamond_273697.jpg 100w,https://d1nslcd7m2225b.cloudfront.net/Pictures/172x115/8/9/3/1443893_reflectioninadeaddiamond_273697.jpg 172w,https://d1nslcd7m2225b.cloudfront.net/Pictures/220x148/8/9/3/1443893_reflectioninadeaddiamond_273697.jpg 220w,https://d1nslcd7m2225b.cloudfront.net/Pictures/280x188/8/9/3/1443893_reflectioninadeaddiamond_273697.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/reflection-in-a-dead-diamond-review-fast-and-frenetic-movie-geek-nostalgia/5202068.article">‘Reflection In A Dead Diamond’ review: Fast and frenetic movie geek nostalgia</a> </h3> <p class="meta"> <span class="date" data-date-timezone="{"publishdate": "2025-02-16T21:30:00Z","format": "D MMMM YYYY HH:mm"}">2025-02-16T21:30:00Z</span> <span class="author">By <a rel="author" href="https://www.screendaily.com/jonathan-romney/885.bio">Jonathan Romney</a></span> </p> <p>Brussels-based Hélène Cattet and Bruno Forzani premiere their fourth film in Berlin competition</p> </div> </li> <li class=""> <a href="https://www.screendaily.com/reviews/islands-review-sam-riley-stacy-martin-scorch-in-canary-islands-suspense/5202038.article" class="image"> <img alt="Islands" loading="lazy" sizes="(max-width:767px) 100px, (max-width: 1179px) 220px, 280px" src="https://d1nslcd7m2225b.cloudfront.net/Pictures/100x67/8/4/0/1443840_islands_454198_crop.jpg" srcset="https://d1nslcd7m2225b.cloudfront.net/Pictures/100x67/8/4/0/1443840_islands_454198_crop.jpg 100w,https://d1nslcd7m2225b.cloudfront.net/Pictures/172x115/8/4/0/1443840_islands_454198_crop.jpg 172w,https://d1nslcd7m2225b.cloudfront.net/Pictures/220x148/8/4/0/1443840_islands_454198_crop.jpg 220w,https://d1nslcd7m2225b.cloudfront.net/Pictures/280x188/8/4/0/1443840_islands_454198_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/islands-review-sam-riley-stacy-martin-scorch-in-canary-islands-suspense/5202038.article">‘Islands’ review: Sam Riley, Stacy Martin scorch in Canary Islands suspense</a> </h3> <p class="meta"> <span class="date" data-date-timezone="{"publishdate": "2025-02-16T21:30:00Z","format": "D MMMM YYYY HH:mm"}">2025-02-16T21:30:00Z</span> <span class="author">By <a rel="author" href="https://www.screendaily.com/fionnuala-halligan/172.bio">Fionnuala Halligan</a></span> </p> <p>Fuerteventura-set noir is the latest from Germany’s Jan-Ole Gerster</p> </div> </li> <li class=""> <a href="https://www.screendaily.com/reviews/how-to-be-normal-review-peppy-debut-from-austria-tackles-mental-illness/5202054.article" class="image"> <img alt="How To Be Normal And The Oddness Of The Other World" loading="lazy" sizes="(max-width:767px) 100px, (max-width: 1179px) 220px, 280px" src="https://d1nslcd7m2225b.cloudfront.net/Pictures/100x67/8/5/6/1443856_howtobenormalandtheoddnessoftheotherworld_616957.jpg" srcset="https://d1nslcd7m2225b.cloudfront.net/Pictures/100x67/8/5/6/1443856_howtobenormalandtheoddnessoftheotherworld_616957.jpg 100w,https://d1nslcd7m2225b.cloudfront.net/Pictures/172x115/8/5/6/1443856_howtobenormalandtheoddnessoftheotherworld_616957.jpg 172w,https://d1nslcd7m2225b.cloudfront.net/Pictures/220x148/8/5/6/1443856_howtobenormalandtheoddnessoftheotherworld_616957.jpg 220w,https://d1nslcd7m2225b.cloudfront.net/Pictures/280x188/8/5/6/1443856_howtobenormalandtheoddnessoftheotherworld_616957.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/how-to-be-normal-review-peppy-debut-from-austria-tackles-mental-illness/5202054.article">‘How To Be Normal’ review: Peppy debut from Austria tackles mental illness</a> </h3> <p class="meta"> <span class="date" data-date-timezone="{"publishdate": "2025-02-16T21:00:00Z","format": "D MMMM YYYY HH:mm"}">2025-02-16T21:00:00Z</span> <span class="author">By <a rel="author" href="https://www.screendaily.com/lee-marshall/244.bio">Lee Marshall</a></span> </p> <p>Star Luisa-Celine Gaffron shines in Perspectives premiere</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/5199163/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 & 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>