PageSourceSearch

https://www.flicks.co.uk/member/login/

html flicks.co.uk collected 2026-10-02 07:14:34 UTC 33,210 bytes, 256 lines download raw bytes

1<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0"><link href="/app-icons/apple-touch-icon.png" rel="apple-touch-icon"><link href="/app-icons/apple-touch-icon-152x152.png" rel="apple-touch-icon" sizes="152x152"><link href="/app-icons/apple-touch-icon-167x167.png" rel="apple-touch-icon" sizes="167x167"><link href="/app-icons/apple-touch-icon-180x180.png" rel="apple-touch-icon" sizes="180x180"><link href="/app-icons/icon-hires.png" rel="icon" sizes="192x192"><link href="/app-icons/icon-normal.png" rel="icon" sizes="128x128"><link href="https://www.flicks.co.uk/member/login/" rel="canonical"><title>Sign in to Flicks</title><meta name="description" property="description" content="Get to your watchlist and membership"><meta name="og:site_name" property="og:site_name" content="Flicks"><meta name="og:title" property="og:title" content="Sign in to Flicks"><meta name="og:description" property="og:description" content="Get to your watchlist and membership"><meta name="twitter:card" property="twitter:card" content="summary_large_image"><meta name="twitter:site" property="twitter:site" content="@thisisflicksuk"><meta name="twitter:title" property="twitter:title" content="Sign in to Flicks"><meta name="twitter:description" property="twitter:description" content="Get to your watchlist and membership"><meta name="twitter:image" property="twitter:image" content="https://www.flicks.co.uk/img/og/flicks-og.png"><link rel="shortcut icon" href="/favicon.svg?v= 2085"><meta name="apple-itunes-app" content="app-id=338053302, affiliate-data=pt=310696&amp;ct=smart-banner&amp;mt=8">
2    <link rel="alternate" hreflang="en-AU" href="https://www.flicks.com.au/member/login/">
3    <link rel="alternate" hreflang="en-NZ" href="https://www.flicks.co.nz/member/login/">
4    <link rel="alternate" hreflang="en-GB" href="https://www.flicks.co.uk/member/login/">
5    <link rel="alternate" hreflang="en-US" href="https://www.flicks.us/member/login/">
6    <link rel="alternate" hreflang="x-default" href="https://www.flicks.us/member/login/">
7  <link rel="stylesheet" href="//use.typekit.net/xbf4ygq.css"><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&amp;display=swap"><link rel="stylesheet" href="/styles.min.css?v=2085">
7<link rel="manifest" href="/manifest.json"><meta name="apple-mobile-web-app-status-bar-style" content="black"><meta name="apple-mobile-web-app-title" content="Flicks">
7<script>var defaultAlertCloseTime = 5000 //milli seconds
8var distance_unit = "mi";
9window.__APP_CONFIG = Object.assign({}, window.__APP_CONFIG, {
10  googleMapsApiKey: "AIzaSyA_tARuEqSbMoB7D9CPgWyWQj-Qd7DGEQA",
11  googleMapsMapId: "d95d7dbe302f43564addc05e"
12});
13</script>
13<script>if (typeof Cookiebot == "undefined")
14  var cookie_ok = false
15else
16  var cookie_ok = Cookiebot.consented
17
18  window.addEventListener('CookiebotOnAccept', CookiebotChangeEventHandler, false)
19  window.addEventListener('CookiebotOnDecline', CookiebotChangeEventHandler, false)
20
21function CookiebotChangeEventHandler(e) {
22  cookie_ok = Cookiebot.consented
23  if (typeof googletag !== "undefined") {
24    googletag.pubads().setPrivacySettings({nonPersonalizedAds: !cookie_ok})
25  }
26}</script>
26<script>var ads_provider = null;
27var screenW = window.matchMedia('screen and (min-width: 971px)').matches ? 'desktop' : 'mobile';</script>
27<script>
vendor: 328 bytes, lines 27-31
27(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
28new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
29j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
30'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
31})(window,document,'script','dataLayer', '
31GTM-PK47FVBM
vendor: 3 bytes, line 31
31');
31</script>
31</head><body>
vendor: 67 bytes, line 31
31<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
31GTM-PK47FVBM
vendor: 82 bytes, line 31
31" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
31<div id="svg-sprite-container" style="display:none"></div>
31<script>(function(){var c=document.getElementById('svg-sprite-container');if(c){fetch('/sprite.svg').then(function(r){return r.text()}).then(function(s){c.innerHTML=s}).catch(function(e){console.warn('Sprite load failed:',e)})}})();</script>
31<div id="wallpaper-container"><main><div><div class="user-login"><div class="container--v5 container--v5-forms"><div class="container--v5__inner"><div class="user-join__inner"><div class="user-join__flicks-logo"><a href="/"><svg><use xlink:href="#flickslogored"></use></svg></a></div><div class="heading__outer"><h1 class="cognito-title heading-1">Sign in or create an account</h1></div><p class="cognito-subtext">Create watchlists and set your favourite cinemas.</p><div class="medium-divider medium-divider--smaller-mobile"></div><form class="form form--login js-only-one-submission" action="/member/login-otp/" method="POST"><div class="form__group form__group--login"><p class="form__label">Email</p><input class="form__input" type="email" name="email" id="login-email" placeholder="[email protected]" autocomplete=" email" inputmode="email" title="Houston, we have a typo. Try that email again." required><input class="form__input-honey" type="text" name="url"><input class="form__input--hidden" type="hidden" name="source" value="web"></div><div class="form__submit-wrapper"><button class="form__submit-button" type="submit"><span class="submit-button__value">Sign in</span><span class="submit-button__spinner is-hidden"><img src="/img/white-spinner.svg"></span></button></div></form><p class="user-login__text-separator">Or do it with...</p><ul class="member-nav__socials"><li><a class="btn--social btn--social-google self" href="https://auth.weareflicks.co/oauth2/authorize?identity_provider=Google&amp;redirect_uri=https://www.flicks.co.uk/member/sso_verify/&amp;response_type=code&amp;client_id=28697se2phftt6d1ppn1put4na&amp;scope=email+openid+profile+aws.cognito.signin.user.admin&amp;prompt=select_account"><svg><use xlink:href="#google"></use></svg><span>Google</span></a></li><li><a class="btn--social btn--social-apple self" href="https://auth.weareflicks.co/oauth2/authorize?identity_provider=SignInWithApple&amp;redirect_uri=https://www.flicks.co.uk/member/sso_verify/&amp;response_type=code&amp;client_id=28697se2phftt6d1ppn1put4na&amp;scope=email+openid+profile+aws.cognito.signin.user.admin"><svg><use xlink:href="#apple"></use></svg><span>Apple</span></a></li><li><a class="btn--social btn--social-facebook self" href="https://auth.weareflicks.co/oauth2/authorize?identity_provider=Facebook&amp;redirect_uri=https://www.flicks.co.uk/member/sso_verify/&amp;response_type=code&amp;client_id=28697se2phftt6d1ppn1put4na&amp;scope=email+openid+profile+aws.cognito.signin.user.admin"><img class="facebook-rounded" src="/img/facebook-rounded.png" alt=""><span>Facebook</span></a></li></ul><p class="join-legal">By continuing you agree to our <a href="https://go.weareflicks.co/terms">terms & conditions</a> and <a href="https://go.weareflicks.co/privacy">privacy policy</a></p><p class="join-about"><a href="https://go.weareflicks.co/membership">About Flicks membership</a>  &nbsp;|&nbsp;  <a href="https://go.weareflicks.co/member-changes">We’ve gone passwordless<a></p></div><div class="empty-space--full"></div></div></div></div></div></main></div><div class="modal search-nav"><div class="container"><div class="search-nav__inner"><div class="search-nav__header"><div class="search-nav__header__inner"><button class="js--closeSearchNav" title="close"><svg><use xlink:href="#arrowleft"></use></svg></button><form class="search-nav__search js--searchNavForm" action="/search/"><input type="text" name="q" placeholder="What do you want to watch?"><input class="btn btn--brick btn--brick--red" type="submit" value="Search"></form></div></div><div class="search-nav__content"><div class="js--searchNavSuggest"><div class="search-nav__content__inner search-nav__content__inner--suggestions"><div class="search-nav__top-section"><p class="search-nav__suggestions-heading">Trending</p><ul class="search-nav__trending"><li class="search-nav__trending-item"><a href="/movie/digger/"><div class="search-nav__trending-skeleton"></div><img src="//d1478j0kge9vfg.cloudfront.net/homepage/20261001232802-PyGljaiRVYw921EQDbfORLosGnrHf300_300x442.jpg" loading="lazy" onload="this.closest('.search-nav__trending-item').classList.add('is-loaded')" onerror="this.closest('.search-nav__trending-item').classList.add('is-loaded')"></a></li><li class="search-nav__trending-item"><a href="/movie/verity/"><div class="search-nav__trending-skeleton"></div><img src="//d1478j0kge9vfg.cloudfront.net/homepage/20261001232941-A2sJxU8TiF9xp3oJYPie0dynw8wZBwmv_300x442.jpg" loading="lazy" onload="this.closest('.search-nav__trending-item').classList.add('is-loaded')" onerror="this.closest('.search-nav__trending-item').classList.add('is-loaded')"></a></li><li class="search-nav__trending-item"><a href="/movie/heart-of-the-beast/"><div class="search-nav__trending-skeleton"></div><img src="//d1478j0kge9vfg.cloudfront.net/homepage/20260923203426-qkciHKeIybCT3IokxNtpveQ3233XAZEe_300x442.jpg" loading="lazy" onload="this.closest('.search-nav__trending-item').classList.add('is-loaded')" onerror="this.closest('.search-nav__trending-item').classList.add('is-loaded')"></a></li><li class="search-nav__trending-item"><a href="/movie/resident-evil-2026/"><div class="search-nav__trending-skeleton"></div><img src="//d1478j0kge9vfg.cloudfront.net/homepage/20260916215702-MEF6kBw5wMZDSuutsAaFGP4BWnRcuEUv_300x442.jpg" loading="lazy" onload="this.closest('.search-nav__trending-item').classList.add('is-loaded')" onerror="this.closest('.search-nav__trending-item').classList.add('is-loaded')"></a></li><li class="search-nav__trending-item"><a href="/movie/practical-magic-2/"><div class="search-nav__trending-skeleton"></div><img src="//d1478j0kge9vfg.cloudfront.net/homepage/20260909213847-fTtKUU4nkVdPXoukIWauecIcYSObb5hU_300x442.webp" loading="lazy" onload="this.closest('.search-nav__trending-item').classList.add('is-loaded')" onerror="this.closest('.search-nav__trending-item').classList.add('is-loaded')"></a></li><li class="search-nav__trending-item"><a href="/movie/coyote-vs-acme/"><div class="search-nav__trending-skeleton"></div><img src="//d1478j0kge9vfg.cloudfront.net/homepage/20260916215849-djxw93ueLFWToPluA1g7ilkCBW4bJ8mV_300x442.jpg" loading="lazy" onload="this.closest('.search-nav__trending-item').classList.add('is-loaded')" onerror="this.closest('.search-nav__trending-item').classList.add('is-loaded')"></a></li><li class="search-nav__trending-item"><a href="/movie/spider-man-brand-new-day/"><div class="search-nav__trending-skeleton"></div><img src="//d1478j0kge9vfg.cloudfront.net/homepage/20260729202816-VP4dB9XOEkwR0nlz4IJo50jwmKn5ShDG_300x442.jpg" loading="lazy" onload="this.closest('.search-nav__trending-item').classList.add('is-loaded')" onerror="this.closest('.search-nav__trending-item').classList.add('is-loaded')"></a></li><li class="search-nav__trending-item"><a href="/movie/the-odyssey-2026/"><div class="search-nav__trending-skeleton"></div><img src="//d1478j0kge9vfg.cloudfront.net/homepage/20260715202830-MITWNZaUc3uwgvkM1RCkaN4qjgq1fSmc_300x442.jpg" loading="lazy" onload="this.closest('.search-nav__trending-item').classList.add('is-loaded')" onerror="this.closest('.search-nav__trending-item').classList.add('is-loaded')"></a></li><li class="search-nav__trending-item"><a href="/movie/runner/"><div class="search-nav__trending-skeleton"></div><img src="//d1478j0kge9vfg.cloudfront.net/homepage/20260909214003-GhHW72ulWxf7NS8QvR5QRdi7JA4YgtiG_300x442.jpg" loading="lazy" onload="this.closest('.search-nav__trending-item').classList.add('is-loaded')" onerror="this.closest('.search-nav__trending-item').classList.add('is-loaded')"></a></li><li class="search-nav__trending-item"><a href="/movie/fall-2/"><div class="search-nav__trending-skeleton"></div><img src="//d1478j0kge9vfg.cloudfront.net/homepage/20260902212716-nuy6hU9dBjN1w0WMpDFkkYi2TU8QAY5V_300x442.webp" loading="lazy" onload="this.closest('.search-nav__trending-item').classList.add('is-loaded')" onerror="this.closest('.search-nav__trending-item').classList.add('is-loaded')"></a></li></ul></div><div class="search-nav__bottom-scroll"><p class="search-nav__suggestions-heading">Search suggestions</p><ul class="search-nav__suggestions"><li><a href="/now-playing/">Movies in Cinemas</a></li><li><a href="/cinemas/">Cinemas</a></li><li><a href="/coming-soon/">Coming Soon</a></li><li><a href="/trailers/">New Trailers</a></li><li><a href="/discover/">Opinion</a></li></ul></div></div></div><div class="search-nav__results js--searchNavResults js--addToWatchlistWrapper"></div></div></div></div></div>
31<div class="modal modal--v5 modal--opacity member-nav"><div class="modal__inner"><div class="modal__content"><button class="modal__btn-close member-nav__btn-close js--closeMemberNav" title="close"><svg><use xlink:href="#close"></use></svg></button><div class="member-nav__form member-nav__form--login member-nav__form--showing"><span class="page__header__heading">Sign in</span><div class="login-join"><p class="member-nav__sign-in-description">Get to your watchlist.</p><ul class="member-nav__socials"><li><a class="btn--social btn--social-facebook" href="/member/login/facebook?source=web"><svg><use xlink:href="#facebook"></use></svg><span>sign in with Facebook</span></a></li><li><a class="btn--social btn--social-google" href="/member/login/google?source=web"><svg><use xlink:href="#google"></use></svg><span>sign in with Google</span></a></li><li><a class="btn--social btn--social-apple" href="/member/login/apple?source=web"><svg><use xlink:href="#apple"></use></svg><span>sign in with Apple</span></a></li></ul><p class="member-nav__sign-in-title">Or sign in with your email</p><form class="member-nav__sign-in-form" action="/member/login/" method="POST"><label class="label" for="login-email">Email Address</label><input class="input-text input--block" type="email" name="email" id="login-email" placeholder="Email" required><label class="label" for="login-password">Password</label><input class="input-text input--block" type="password" id="login-password" name="password" placeholder="Password" required><input type="hidden" name="source" value="web"><input class="input-submit btn btn--brick btn--brick--red input--block" type="submit" value="Sign in"></form></div><p class="member-nav__switch-view">Don’t have a Flicks account?<button class="js--memberNavFormJoin">Sign Up.</button></p><p class="member-nav__switch-view"><button class="js--memberNavFormPassword">I forgot my damn password.</button></p></div><div class="member-nav__form member-nav__form--join"><span class="page__header__heading">Join Flicks</span><div class="login-join"><p class="member-nav__sign-in-description">Keep track of the movies and show you want to see + get Flicks email updates.</p><ul class="member-nav__socials"><li><a class="btn--social btn--social-facebook" href="/member/login/facebook?source=web"><svg><use xlink:href="#facebook"></use></svg><span>sign up with Facebook</span></a></li><li><a class="btn--social btn--social-google" href="/member/login/google?source=web"><svg><use xlink:href="#google"></use></svg><span>sign up with Google</span></a></li><li><a class="btn--social btn--social-apple" href="/member/login/apple?source=web"><svg><use xlink:href="#apple"></use></svg><span>sign up with Apple</span></a></li></ul><p class="member-nav__sign-in-title">Or sign up with your email</p><form class="member-nav__sign-in-form" action="/member/join/" method="POST"><label class="label" for="join-email">Email Address</label><input class="input-text input--block" type="email" name="email" id="join-email" placeholder="Email" required><label class="label" for="join-password">Password</label><input class="input-text input--block" type="password" id="join-password" name="password" placeholder="Password" required><input type="hidden" name="source" value="web"><label class="label" for="join-full_name">Name</label><input class="input-text input--block" type="text" name="full_name" id="join-full_name" placeholder="Name"><input class="input-honey" type="text" name="url"><input class="input-submit btn btn--brick btn--brick--red input--block" type="submit" value="Sign up"><p>By signing up, you agree to our<a href="/page/termsconditions" target="_blank">terms & conditions</a>and<a href="/page/privacypolicy" target="_blank">privacy policy</a>.</p></form></div><p class="member-nav__switch-view">Already have a Flicks account?<button class="js--memberNavFormLogin">Sign in</button></p></div><div class="member-nav__form member-nav__form--password password-reset-form"><form class="form js--forgotPassword-form" action="/member/password/forgot/" method="POST"><div class="form__group form__group--member-edit"><p>Confirm below that you want to reset your password, and we’ll send a link to reset it.</p><input class="form__input" type="hidden" name="email" id="forgot-email" placeholder="Email" value=""><input class="form__input" type="hidden" name="is_member" id="forgot-email-member" value="1"></div><div class="form__submit-wrapper"><input class="form__submit-button" type="submit" value="Confirm"></div></form><p class="member-nav__switch-view">
31Don’t have a Flicks account?<button class="js--memberNavFormJoin">Sign Up</button></p><p class="member-nav__switch-view">Remembered your password?<button class="js--memberNavFormLogin">Sign In</button></p></div><div class="member-nav__form member-nav__form--username"><span class="page__header__heading">Your username</span><p>To post ratings/reviews we need a username. This is what will appear next to your ratings and reviews.</p><form class="member-nav__sign-in-form" action="" method="POST"><label class="label" for="username">Username</label><input class="input-text input--block" type="text" name="username" placeholder="Username"><input class="input-submit btn btn--brick btn--brick--red input--block" type="submit" value="Submit"></form><p class="member-nav__switch-view"><button class="js--memberNavFormLogin">I don't know, create one for me</button></p></div><div class="member-nav__form member-nav__form--delete delete-account-form"></div></div></div></div><div class="modal trailer-modal theme--dark"><button class="trailer-modal__close js--closeTrailer" title="close"><div class="js--closeTrailer"><svg><use xlink:href="#close"></use></svg></div></button><div class="js--loadTrailer js--addToWatchlistWrapper js--voteWrapper"></div></div><div class="modal movie-modal js-movie-modal theme--dark"><button class="movie-modal__close js--close-movie-popup" title="close"><div class="js--close-movie"><svg><use xlink:href="#close"></use></svg></div></button><div class="movie-modal__content js-movie-modal__content"></div></div><div class="modal modal--opacity js-modal" id="social-modal"><div class="modal__inner"><div class="modal__content"><button class="modal__btn-close member-nav__btn-close js--closeModal" title="close"><svg><use xlink:href="#close"></use></svg></button><span class="page__header__heading share-display padding-spacing-more-bottom">Share</span><div class="padding-spacing-more-bottom"><share-button class="share--popupTrigger"></share-button></div></div></div></div><div class="review-form"><div class="modal watchlist-popup modal--opacity"><div class="modal__inner"><div class="modal__content"><div>You have to sign in first<button class="btn btn--block btn--brick btn--brick--red review-form__submit">Sign-in</button></div></div></div></div></div><button class="js-pass-movie-data js-check-lists-status js--openModal" id="wild-flicks-watchlist-trigger" type="button" style="display:none" aria-hidden="true" tabindex="-1" data-list="movie" data-slug="" data-on="1" data-user="" data-username="" data-title="" data-modal-id="user-toggle-lists" data-preselected="watchlist"></button><div class="modal rewards-popup modal--opacity js-modal"><div class="modal__inner"><div class="modal__content"><div>       <div class="left-wrapper"><button class="watchlist-btn watchlist-on-btn"><svg><use xlink:href="#watchlist-tick"></use></svg></button><span class="rewards-popup__dynamic-content"></span></div><div class="right-wrapper"><button class="modal__btn-close member-nav__btn-close js--closeReviewForm js--closeModal" title="close"><svg><use xlink:href="#close"></use></svg></button></div></div></div></div></div><div class="modal modal--v5 modal--opacity js-modal" id="social-modal-v5"><div class="modal__inner"><div class="modal__content"><button class="modal__btn-close member-nav__btn-close js--closeModal" title="close"><svg><use xlink:href="#close"></use></svg></button><div class="modal__heading">Share</div><share-button class="share--popupTrigger"></share-button></div></div></div><div class="js-times-streaming-popup streaming-popup modal modal--v5 modal--opacity js-modal" id="times-streaming-modal"><div class="modal__inner"><div class="modal__content"><button class="modal__btn-close js--closeModal" title="close"><svg><use xlink:href="#close"></use></svg></button></div><div class="thin-divider thin-divider--smaller divider--streaming-popup"></div></div></div><div class="list-notification is-hidden"><svg width="430" height="430" viewBox="0 0 430 430" fill="none" xmlns="http://www.w3.org/2000/svg">
32 <path d="M215 0C96.2663 0 0 96.2663 0 215C0 333.734 96.2663 430 215 430C333.734 430 430 333.734 430 215C430 96.2663 333.734 0 215 0ZM197.083 304.583L107.5 209.643L132.565 184.022L196.6 250.959L314.348 125.417L340.417 150.554L197.083 304.583Z" fill="#25262B"/>
33</svg><p class="list-notification__text">Done.</p></div><!--[if lt IE 10]><div class="modal modal--opacity js-modal js--autoModal modal--displaying"><div class="modal__inner"><div class="modal__content"><h2 class="page__header__heading padding-spacing-bottom">SORRY TO SAY, FLICKS NO LONGER SUPPORTS IE9</h2><p class="padding-spacing-bottom">Please update to<a href="https://www.microsoft.com/windows/microsoft-edge" target="_blank">Microsoft Edge</a>, or another browser.</p><p class="padding-spacing-bottom">Or, if you want to stick it out with Internet Explorer, please update your browser to the latest version<span class="inline-block">(<a href="https://support.microsoft.com/help/4028118/windows-run-the-latest-version-of-internet-explorer-11" target="_blank">IE 11</a>)</span></p></div></div></div><![endif]-->
33<script src="https://unpkg.com/@trevoreyre/autocomplete-js"></script>
33<script src="https://cdn.jwplayer.com/libraries/erspRbQ1.js"></script>
vendor: 63 bytes, line 33
33<script src="https://www.google.com/recaptcha/api.js"></script>
33<script src="/main.min.js?v=2085" async></script>
33<script>(function () {
34  if (typeof window === 'undefined') return;
35  var lastSlug = null;
36  var lastList = null;
37  var lastAt = 0;
38  var username = "";
39
40  function escapeAttr(value) {
41    return String(value || '')
42      .replace(/&/g, '&amp;')
43      .replace(/"/g, '&quot;')
44      .replace(/</g, '&lt;')
45      .replace(/>/g, '&gt;');
46  }
47
48  function posterFallback(type, slug) {
49    return 'https://cdn.flicks.co.nz/UK/' + type + '/' + slug + '/poster/300x442/img.jpg';
50  }
51
52  function emptyMarkup() {
53    var link = document.querySelector('.js--wl-count-text');
54    var href = link && link.closest('a') ? link.closest('a').getAttribute('href') : '/member/dashboard/';
55    return '<li class="mobile-nav__watchlist-poster mobile-nav__watchlist-poster--empty">' +
56      '<a class="mobile-nav__link mobile-nav__link--secondary" href="' + escapeAttr(href) + '">' +
57      'You have nothing on your watchlist, get adding</a></li>';
58  }
59
60  function posterMarkup(detail) {
61    var slug = String(detail.slug || '');
62    var type = String(detail.type || 'movie');
63    var title = String(detail.title || '');
64    var poster = detail.poster || posterFallback(type, slug);
65    return '<li class="mobile-nav__watchlist-poster" data-wl-slug="' + escapeAttr(slug) + '">' +
66      '<a href="/' + escapeAttr(type) + '/' + escapeAttr(slug) + '/">' +
67      '<img src="' + escapeAttr(poster) + '" alt="' + escapeAttr(title) + '" loading="lazy" ' +
68      'onerror="this.onerror=null;this.src=\'/img/placeholders/poster-placeholder.jpg\';"></a></li>';
69  }
70
71  function listPosterMarkup(detail) {
72    var slug = String(detail.slug || '');
73    var type = String(detail.type || 'movie');
74    var title = String(detail.title || '');
75    var poster = detail.poster || posterFallback(type, slug);
76    return '<div class="user-list__poster" data-wl-slug="' + escapeAttr(slug) + '">' +
77      '<img src="' + escapeAttr(poster) + '" alt="' + escapeAttr(title) + '" loading="lazy" ' +
78      'onerror="this.onerror=null;this.src=\'/img/placeholders/poster-placeholder.jpg\';"></div>';
79  }
80
81  function patchPosterLists(detail) {
82    if (!detail.slug) return;
83    document.querySelectorAll('.js--wl-posters').forEach(function (list) {
84      Array.prototype.slice.call(list.children).forEach(function (node) {
85        if (node.getAttribute('data-wl-slug') === String(detail.slug)) {
86          node.parentNode.removeChild(node);
87        }
88      });
89      list.querySelectorAll('.mobile-nav__watchlist-poster--empty').forEach(function (node) {
90        node.parentNode.removeChild(node);
91      });
92      if (detail.added) {
93        list.insertAdjacentHTML('afterbegin', posterMarkup(detail));
94      }
95      while (list.children.length > 4) {
96        list.removeChild(list.lastElementChild);
97      }
98      if (!list.children.length) {
99        list.insertAdjacentHTML('beforeend', emptyMarkup());
100      }
101    });
102  }
103
104  function customListsHref() {
105    return username ? '/member/' + encodeURIComponent(username) + '/lists/' : '/member/dashboard/';
106  }
107
108  function customListHref(listSlug) {
109    return username ? '/member/' + encodeURIComponent(username) + '/lists/' + encodeURIComponent(listSlug) + '/' : '/member/dashboard/';
110  }
111
112  function ensureCustomListsSection() {
113    var section = document.querySelector('.js--wl-lists-section');
114    if (section) return section;
115
116    var watchlistSection = document.querySelector('.js--wl-posters');
117    watchlistSection = watchlistSection ? watchlistSection.closest('.mobile-nav__section') : null;
118    if (!watchlistSection) return null;
119
120    watchlistSection.insertAdjacentHTML('afterend',
121      '<div class="mobile-nav__section js--wl-lists-section">' +
122        '<a class="mobile-nav__link mobile-nav__link--primary mobile-nav__link--has-desc" href="' + escapeAttr(customListsHref()) + '">' +
123          '<span class="js--wl-lists-count" data-wl-list-count="1">All lists (1)</span>' +
124          '<svg class="svg-inline is-gray svg-arrow"><use xlink:href="#arrowright-white"></use></svg>' +
125        '</a>' +
126        '<div class="mobile-nav__submenu js--wl-lists-menu"></div>' +
127      '</div>'
128    );
129    return document.querySelector('.js--wl-lists-section');
130  }
131
132  function customListRowMarkup(detail) {
133    var list = String(detail.list || '');
134    var name = String(detail.listName || list);
135    return '<li class="mobile-nav__submenu-item js--wl-list-row" data-wl-list="' + escapeAttr(list) + '">' +
136      '<a href="' + escapeAttr(customListHref(list)) + '" class="mobile-nav__link mobile-nav__link--secondary mobile-nav__link--all-watchlists">' +
137        '<div class="user-list__posters js--wl-list-posters" data-wl-list="' + escapeAttr(list) + '"></div>' +
138        '<span>' + escapeAttr(name) + '</span>' +
139      '</a>' +
140    '</li>';
141  }
142
143  function updateCustomListCount(wasInserted) {
144    if (!wasInserted) return;
145    document.querySelectorAll('.js--wl-lists-count').forEach(function (node) {
146      var cur = parseInt(node.getAttribute('data-wl-list-count') || '1', 10);
147      if (isNaN(cur)) cur = 1;
148      var next = cur + 1;
149      node.setAttribute('data-wl-list-count', String(next));
150      node.textContent = 'All lists (' + next + ')';
151    });
152  }
153
154  function patchCustomList(detail) {
155    var listSlug = String(detail.list || '');
156    if (!listSlug || listSlug === 'watchlist') return;
157
158    var section = ensureCustomListsSection();
159    if (!section) return;
160    var menu = section.querySelector('.js--wl-lists-menu');
161    if (!menu) return;
162
163    var row = null;
164    Array.prototype.slice.call(menu.querySelectorAll('.js--wl-list-row')).some(function (node) {
165      if (node.getAttribute('data-wl-list') === listSlug) {
166        row = node;
167        return true;
168      }
169      return false;
170    });
171    var inserted = false;
172    if (!row) {
173      menu.insertAdjacentHTML('afterbegin', customListRowMarkup(detail));
174      row = null;
175      Array.prototype.slice.call(menu.querySelectorAll('.js--wl-list-row')).some(function (node) {
176        if (node.getAttribute('data-wl-list') === listSlug) {
177          row = node;
178          return true;
179        }
180        return false;
181      });
182      inserted = true;
183    }
184    updateCustomListCount(inserted && detail.source === 'list-create');
185
186    var posters = row ? row.querySelector('.js--wl-list-posters') : null;
187    if (!posters || !detail.slug) return;
188    Array.prototype.slice.call(posters.children).forEach(function (node) {
189      if (node.getAttribute('data-wl-slug') === String(detail.slug)) {
190        node.parentNode.removeChild(node);
191      }
192    });
193    if (detail.added) {
194      posters.insertAdjacentHTML('afterbegin', listPosterMarkup(detail));
195    }
196    while (posters.children.length > 4) {
197      posters.removeChild(posters.lastElementChild);
198    }
199  }
200
201  // Open the existing watchlist popup from a wild-flicks WC button.
202  // The WC dispatches `wild-flicks-open-watchlist` with the item's
203  // slug / type / title in detail. We update the seed trigger's
204  // data-* attrs and click it -- which reuses the same code paths
205  // an in-page watchlist button would (auth gate via data-user,
206  // list-state AJAX via .js-check-lists-status, modal open via
207  // .js--openModal). On submit the modal fires its own watchlist-
208  // changed events that the listener below picks up to sync the
209  // nav, and the WC's useWatchlist hook listens for the same
210  // event to flip card pill labels.
211  window.addEventListener('wild-flicks-open-watchlist', function (e) {
212    var detail = (e && e.detail) || {};
213    var slug = detail.slug;
214    if (!slug) return;
215    var trigger = document.getElementById('wild-flicks-watchlist-trigger');
216    if (!trigger) return;
217    // data-list mirrors the pug helper (always 'movie'). The
218    // modal's AJAX endpoint is slug-only -- doesn't differentiate
219    // movie vs tv. Pass type through anyway for downstream
220    // handlers that might branch on it.
221    trigger.setAttribute('data-slug', String(slug));
222    trigger.setAttribute('data-title', String(detail.title || ''));
223    if (detail.type) trigger.setAttribute('data-content-type', String(detail.type));
224    trigger.click();
225  });
226
227  window.addEventListener('wild-flicks-watchlist-changed', function (e) {
228    var detail = (e && e.detail) || {};
229    var slug = detail.slug || null;
230    var list = detail.list || (detail.source === 'toggle' ? 'watchlist' : null);
231    var added = !!detail.added;
232    // De-dupe: WC fires for both toggle + list-edit on the same
233    // gesture in some flows; ignore a second event for the same
234    // slug within 1.5s of the first.
235    var now = Date.now();
236    if (slug && slug === lastSlug && list === lastList && now - lastAt < 1500) return;
237    lastSlug = slug;
238    lastList = list;
239    lastAt = now;
240    if (list === 'watchlist') {
241      var nodes = document.querySelectorAll('.js--wl-count-text');
242      nodes.forEach(function (node) {
243        var cur = parseInt(node.getAttribute('data-wl-count') || '0', 10);
244        if (isNaN(cur)) cur = 0;
245        var next = Math.max(0, cur + (added ? 1 : -1));
246        node.setAttribute('data-wl-count', String(next));
247        // Replace the trailing "(N)" — preserves whatever label
248        // precedes it ("Watchlist", "Your watchlist", etc.).
249        node.textContent = node.textContent.replace(/\(\d+\)/, '(' + next + ')');
250      });
251      patchPosterLists(detail);
252    } else {
253      patchCustomList(detail);
254    }
255  });
256})();</script>
256<script>(function(){function c(){var b=a.contentDocument||(a.contentWindow&&a.contentWindow.document);if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a441e92ea8c79af3',t:'MTc5MDkyNTI3Mw=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script>
256</body></html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.