1<!doctype html> 2 <html lang="en" dir="ltr"> 3 <head> 4 5 6 7 <base href="https://clip.cafe/"> 8 <link rel="canonical" href="https://clip.cafe/login/"> 9 <meta name="robots" content="noindex, follow"> 10 11 <meta charset="utf-8"> 12 <meta name="viewport" content="width=device-width, initial-scale=1"> 13 14 <title>Login or Create Account - ClipCafe</title> 15 16 <link rel="apple-touch-icon" sizes="57x57" href="favicons/apple-icon-57x57.png"> 17 <link rel="apple-touch-icon" sizes="60x60" href="favicons/apple-icon-60x60.png"> 18 <link rel="apple-touch-icon" sizes="72x72" href="favicons/apple-icon-72x72.png"> 19 <link rel="apple-touch-icon" sizes="76x76" href="favicons/apple-icon-76x76.png"> 20 <link rel="apple-touch-icon" sizes="114x114" href="favicons/apple-icon-114x114.png"> 21 <link rel="apple-touch-icon" sizes="120x120" href="favicons/apple-icon-120x120.png"> 22 <link rel="apple-touch-icon" sizes="144x144" href="favicons/apple-icon-144x144.png"> 23 <link rel="apple-touch-icon" sizes="152x152" href="favicons/apple-icon-152x152.png"> 24 <link rel="apple-touch-icon" sizes="180x180" href="favicons/apple-icon-180x180.png"> 25 <link rel="icon" type="image/png" sizes="192x192" href="favicons/android-icon-192x192.png"> 26 <link rel="icon" type="image/png" sizes="32x32" href="favicons/favicon-32x32.png"> 27 <link rel="icon" type="image/png" sizes="96x96" href="favicons/favicon-96x96.png"> 28 <link rel="icon" type="image/png" sizes="16x16" href="favicons/favicon-16x16.png"> 29 30 <link rel="search" type="application/opensearchdescription+xml" title="Clip.Cafe" href="/opensearch.xml"> 31 32 <!-- Preconnect to HLS server for faster video streaming startup --> 33 <link rel="preconnect" href="https://clip.cafe" crossorigin> 34 <link rel="dns-prefetch" href="https://clip.cafe"> 35 <!-- Preconnect to CDN for faster HLS.js and resource loading --> 36 <link rel="preconnect" href="https://cdn.jsdelivr.net" crossorigin> 37 38 <link rel="preload" href="img/bg.svg" type="image/svg+xml" as="image"> 39 40 <meta name="msapplication-TileColor" content="#ffffff"> 41 <meta name="msapplication-TileImage" content="/favicons/ms-icon-144x144.png"> 42 <meta name="theme-color" content="#ffffff"> 43 44 <meta name="apple-mobile-web-app-status-bar" content="#216aa0"> 45 <link rel="manifest" href="manifest.json"> 46 47 48 49 <meta property="og:locale" content="en_GB"> 50 <meta property="fb:app_id" content="422835821953323"> 51 <meta property="og:type" content="website"> 52 <meta property="og:image" content="https://clip.cafe/img/clipcafebig.jpg"> 53 <meta property="og:image:height" content="506"> 54 <meta property="og:image:width" content="2000"> 55 <meta property="og:image" content="https://clip.cafe/img/clipcafecup.png"> 56 <meta property="og:image:height" content="199"> 57 <meta property="og:image:width" content="177"> 58 59 <meta property="og:url" content="https://clip.cafe/"> 60 <meta property="og:site_name" content="Clip.Cafe"> 61 <link rel="image_src" href="https://clip.cafe/img/clipcafebig.jpg"> 62 <meta name="description" content="Awesome Movie Clip & Quote Database with over 5 million movie clips. It will take you 200+ days to watch them all"> 63 64 65 66 67 68 <style> 69 70 html { 71 background-color: #000; /* Fallback for mobile toolbar hide */ 72 } 73 74 html::before { 75 content: ' '; 76 position: fixed; 77 width: 100%; 78 height: 100vh; 79 height: 100dvh; /* Dynamic viewport for mobile toolbar */ 80 top: 0; 81 left: 0; 82 bottom: 0; 83 right: 0; 84 z-index: -1; 85 will-change: transform; 86 background: url(img/bg.svg) no-repeat top center / cover, linear-gradient(180deg, #0a2b44 0%, #051420 80%, #000000 100%); 87 88 } 89 90 91 html,body{ 92 height: 100%; 93 min-height:100%; 94 width:100%; 95 margin: 0; 96 padding:0; 97 98 } 99 body { 100 101 font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; 102 text-shadow:rgba(0,0,0,.3) 0 0 1px; 103 color:#313131; 104 transition: background-image 1s ease-in-out; 105 overflow-x: hidden; 106 } 107 108 header{ 109 width:100%; 110 display: contents; 111 overflow:hidden; 112 } 113 114 115 .lang-switcher{position:relative;display:inline-block;vertical-align:middle;margin-right:8px;} 116 .lang-trigger{background:none;border:1px solid rgba(255,255,255,.25);color:#fff;padding:4px 10px;border-radius:4px;cursor:pointer;font-size:13px;display:flex;align-items:center;gap:5px;} 117 .lang-trigger:hover{border-color:rgba(255,255,255,.5);} 118 .lang-trigger img{vertical-align:middle;} 119 .lang-dropdown{display:none;position:absolute;top:100%;left:0;background:#1a2a3a;border:1px solid rgba(255,255,255,.15);border-radius:6px;min-width:140px;z-index:999;margin-top:4px;box-shadow:0 4px 12px rgba(0,0,0,.4);} 120 .lang-switcher:hover .lang-dropdown{display:block;} 121 .lang-dropdown a{display:flex;align-items:center;gap:8px;padding:8px 12px;color:#ccc;text-decoration:none;font-size:13px;} 122 .lang-dropdown a:hover{background:rgba(255,255,255,.1);color:#fff;} 123 .lang-dropdown a.active{color:#4fc3f7;} 124 .lang-dropdown a img{flex-shrink:0;} 125 126 #playerWrap .plyr--video .plyr__controls{ 127 z-index: 99; 128 padding: 0 12px 21px; 129 bottom: 0px; 130 } 131 132 @media (max-width: 1000px) { 133 134 135 136 #playerWrap .plyr--video .plyr__controls{ 137 padding: 0 2px 14px; 138 } 139 140 } 141 142 /* WalkStreet Banner Styles â floating branded card */ 143 #walkstreet-banner { 144 position: fixed; 145 bottom: 16px; 146 left: 50%; 147 width: min(620px, calc(100% - 24px)); 148 box-sizing: border-box; 149 transform: translateX(-50%) translateY(160%); 150 opacity: 0; 151 background: linear-gradient(135deg, rgba(18,92,44,0.98) 0%, rgba(12,68,33,0.98) 55%, rgba(6,51,26,0.98) 100%); 152 backdrop-filter: blur(10px); 153 -webkit-backdrop-filter: blur(10px); 154 color: #fff; 155 z-index: 10000; 156 padding: 11px 44px 11px 14px; 157 font-size: 15px; 158 border: 1px solid rgba(255,255,255,0.18); 159 border-radius: 14px; 160 box-shadow: inset 0 1px 0 rgba(255,255,255,0.25), 0 12px 32px rgba(0,0,0,0.45); 161 display: flex; 162 align-items: center; 163 transition: transform 0.55s cubic-bezier(0.16,1,0.3,1), opacity 0.45s ease; 164 } 165 #walkstreet-banner.ws-show { 166 transform: translateX(-50%) translateY(0); 167 opacity: 1; 168 } 169 #walkstreet-banner a { 170 display: flex; 171 align-items: center; 172 gap: 12px; 173 flex: 1; 174 min-width: 0; 175 color: #fff; 176 text-decoration: none; 177 text-align: left; 178 } 179 .ws-banner-icon { 180 flex-shrink: 0; 181 width: 46px; 182 height: 46px; 183 border-radius: 11px; 184 box-shadow: 0 3px 8px rgba(0,0,0,0.4); 185 } 186 .ws-banner-body { 187 display: flex; 188 flex-direction: column; 189 align-items: flex-start; 190 gap: 9px; 191 flex: 1; 192 min-width: 0; 193 } 194 .ws-banner-text { 195 line-height: 1.32; 196 } 197 .banner-cta { 198 align-self: flex-start; 199 background: linear-gradient(to bottom, #fccd4d, #f8b500); 200 color: #000; 201 padding: 7px 18px; 202 border-radius: 8px; 203 font-weight: 800; 204 text-transform: uppercase; 205 font-size: 12.5px; 206 letter-spacing: 0.03em; 207 white-space: nowrap; 208 box-shadow: 0 3px 0 #c98a00, 0 5px 10px rgba(0,0,0,0.3); 209 border: none; 210 text-shadow: 0 1px 0 rgba(255,255,255,0.45); 211 display: inline-block; 212 transition: transform 0.12s ease, box-shadow 0.12s ease, background 0.2s ease; 213 } 214 .banner-cta:hover { 215 transform: translateY(-1px); 216 box-shadow: 0 4px 0 #c98a00, 0 7px 14px rgba(0,0,0,0.35); 217 background: linear-gradient(to bottom, #ffe082, #ffca28); 218 } 219 .banner-cta:active { 220 transform: translateY(2px); 221 box-shadow: 0 1px 0 #c98a00, 0 2px 5px rgba(0,0,0,0.3); 222 } 223 #walkstreet-close { 224 position: absolute; 225 right: 6px; 226 top: 6px; 227 background: none; 228 border: none; 229 color: rgba(255,255,255,0.75); 230 font-size: 18px; 231 cursor: pointer; 232 padding: 6px 10px; 233 line-height: 1; 234 border-radius: 8px; 235 }
236 #walkstreet-close:hover { 237 color: #fff; 238 background: rgba(255,255,255,0.12); 239 } 240 body.has-banner { 241 padding-bottom: 100px; /* space so the floating card never hides footer content */ 242 } 243 @media (prefers-reduced-motion: reduce) { 244 #walkstreet-banner { transition: none; } 245 } 246 @media (max-width: 600px) { 247 #walkstreet-banner { 248 bottom: 10px; 249 width: calc(100% - 16px); 250 padding: 10px 38px 10px 12px; 251 font-size: 13px; 252 } 253 #walkstreet-banner a { gap: 10px; } 254 .ws-banner-icon { width: 40px; height: 40px; border-radius: 9px; } 255 body.has-banner { 256 padding-bottom: 128px; 257 } 258 } 259 </style> 260 261 <link rel="stylesheet" href="css/style_min.css?i=1790426701"> 262 <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/font/bootstrap-icons.css"> 263 264 <!-- Google tag (gtag.js) -->
vendor: 64 bytes, lines 264-265
264 265<script async src="https://www.googletagmanager.com/gtag/js?id=
265G-F67NFJ4Z8K
vendor: 12 bytes, line 265
265"></script>
266<script>
vendor: 127 bytes, lines 267-270
267window.dataLayer = window.dataLayer || []; 268function gtag(){dataLayer.push(arguments);} 269gtag('js', new Date()); 270gtag('config', '
270G-F67NFJ4Z8K
vendor: 4 bytes, line 270
270');
271</script>
271 272 273
273<script>window.I18N = {"site.name":"ClipCafe","site.tagline":"Movie Quote Database with Video clips","site.description":"Awesome Movie Clip & Quote Database with over 5 million movie clips. It will take you 200+ days to watch them all","find.page_title":"Clip Finder â find the exact movie clip by quote | Clip.Cafe","find.meta_description":"Type a line of dialogue and instantly play the exact movie clip from that spot. A fast, phrase-anchored clip finder for video editors.","find.heading":"Clip Finder","find.subheading":"Type a line of dialogue â the exact clip plays from that spot.","find.placeholder":"Type an exact line⦠e.g. \"do or do not, there is no try\"","find.empty_player":"Your matching clip will play here.","find.hint":"Type a line of dialogue to find the exact clip.","find.no_results":"No clips found for","find.matches":"matches","find.scope_scene":"Scene match","find.scope_transcript":"Transcript match","find.scope_mixed":"Scene/Transcript","find.prev":"Previous match","find.next":"Next match","find.results_label":"Matching clips","find.movie_matches":"Movies named like this","find.view_label":"View","find.view_player":"Player","find.view_grid":"Grid","find.download":"Download","find.open_clip":"Open clip","find.autoplay":"Autoplay","find.autoplay_on":"Autoplay is on â clips advance automatically","find.autoplay_off":"Autoplay is off â clips stop when finished","find.autoplay_paused":"clips played in a row â tap play to keep watching.","find.filters":"Filters","find.reset":"Reset","find.show_results":"Show results","find.any":"Any","find.facet_scope":"Search in","find.facet_people":"Title & people","find.facet_year":"Year","find.length_s":"Length (s)","find.sort_relevance":"Relevance","find.sort_views":"Most viewed","find.sort_newest":"Newest","find.sort_shortest":"Shortest first","find.sort_longest":"Longest first","find.chip_genre":"Genre","find.clear_filters":"Clear all","find.rescue_lead":"Try without","find.scope_dialog":"Quotes & subtitles","find.scope_scene_ai":"Scene descriptions (AI)","find.scope_both":"Both","find.scene_group":"What's on screen","find.scene_tags_label":"What the AI sees in this clip","find.scene_emotion":"Mood","find.scene_emotion_any":"Any mood","find.scene_situation":"People","find.scene_situation_any":"Any grouping","find.scene_shot":"Framing","find.scene_shot_any":"Any framing","find.scene_motion":"Camera","find.scene_motion_any":"Any camera move","find.scene_light":"Lighting","find.scene_light_any":"Any lighting","find.scene_theme":"Theme","find.scene_setting":"Place","find.scene_coverage":"AI-described: {clips} clips so far ({percent}% of the library).","find.scene_group_hint":"AI-described clips in these results","find.exact_match":"Exact match","find.exact_hint":"Off: clips containing every word, in any order. On: clips saying the words together, exactly as typed.","find.syntax_title":"Advanced search","find.syntax_broad":"Clips containing every word, in any order â anywhere in the clip.","find.syntax_exact":"Only clips that say the whole line, exactly like that.","find.syntax_exclude":"Leaves out any clip that mentions this word.","find.syntax_combine":"Mix them freely: an exact line, plus words to avoid.","find.syntax_foot":"Ticking âExact matchâ adds the quotes for you.","find.parsed_phrase":"Exact line:","find.parsed_words":"Words:","find.parsed_excluded":"Excluding:","find.relaxed_notice":"No exact match â showing the closest lines.","find.range_from":"from","find.range_to":"to","find.range_min":"min","find.range_max":"max","nav.login":"Login","nav.logout":"Logout","nav.my_profile":"My Profile","nav.recently_viewed":"Recently Viewed","nav.settings":"Settings","nav.subscription":"Subscription","nav.liked_clips":"Liked Clips","nav.favorited_movies":"Favorited Movies","nav.browse":"Browse","nav.browse.spotlight":"Spotlight","nav.browse.spotlight_desc":"Curated highlights","nav.browse.genres":"Genres","nav.browse.genres_desc":"Browse by category","nav.browse.years":"Years","nav.browse.years_desc":"Browse by year","nav.games":"Games","nav.games.guess":"Guess The Movie","nav.games.guess_desc":"The classic movie quiz","nav.games.party":"Party Game","nav.games.party_desc":"Multiplayer fun!","nav.games.daily":"The Daily Clip","nav.games.daily_desc":"New puzzle every day!","nav.upgrade":"Upgrade","nav.upgrade_desc":"Unlock HD downloads and premium features","nav.pro":"PRO","nav.your_subscription":"Your subscription","nav.discord":"Discord","nav.discord_desc":"Chat, requests & support","nav.community":"Community","nav.open_menu":"Open Menu","nav.home":"Home","frontpage.try_quotes":"Try:","nav.menu":"Menu","nav.search":"Search","nav.close":"Close","nav.go_to_homepage":"Go to homepage","nav.language":"Language","search.placeholder_movie":"Movie","search.placeholder_actor":"Actor","search.placeholder_character":"Character","search.placeholder_director":"Director","search.placeholder_writer":"Writer","search.scene_description":"Scene Description","search.transcript":"Transcript","search.langs_audio":"Audio: {langs}","search.langs_subtitles":"Subtitles: {langs}","search.all_movies":"All Movies","search.year_from":"Year (from)","search.year_to":"Year (to)","search.length_seconds":"Length (seconds)","search.type_label":"Movies or TV series","search.type_all":"Movies & TV","search.type_movies":"Movies only","search.type_tv":"TV series only","search.rating_label":"Content rating","search.rating_any":"Any Rating","search.audio_label":"Audio language","search.audio_any":"Any audio language","search.subs_label":"Subtitle language","search.subs_any":"Any subtitle language","search.sl_label":"Search in","search.sl_auto":"Search in: any language","find.searched_in":"Searching the {language} subtitles.","find.matched_in":"Matched in {language}","find.no_results_in_lang":"No {language} subtitles found for","search.rating_family":"Family (G · PG)","search.rating_teen":"Teen (PG-13)","search.rating_mature":"Mature (R · TV-MA)","search.sort_label":"Sort results","search.sort_relevance":"Sort: Relevance","search.sort_views":"Sort: Most viewed","search.sort_newest":"Sort: Newest","search.sort_shortest":"Sort: Shortest first","search.sort_longest":"Sort: Longest first","search.helper_text":"Just type any quote, movie line, or phrase you remember","search.advanced_filters":"Advanced Filters (optional)","search.no_results":"No Results","search.movies_in_genre":"mov
273ies with quotes, in {genre} genre","search.no_movies_found":"No Movies Found","search.no_clips_found":"No clips found","search.quotes_with_word":"quotes, with {word} in movies","search.did_you_mean":"Did you mean?","search.did_you_mean_subtitle":"We couldn't find exact matches, but these movies might be what you're looking for:","footer.quote_database":"Movie Quote Database with Video Clips","footer.about_us":"About Us","footer.privacy_policy":"Privacy Policy","footer.refund_policy":"Refund Policy","footer.terms":"Terms & Conditions","footer.sitemap":"Sitemap","footer.dmca":"DMCA","footer.report_bug":"Report a bug","footer.copyright_notice":"All movie names, images, videos are registered trademarks and/or copyrights of their respective holders","footer.recaptcha_notice":"Site is protected by reCAPTCHA.","footer.excellent":"Excellent","collection.not_found":"Collection not found","collection.all_genres":"All Genres","collection.newest_first":"Newest First","collection.oldest_first":"Oldest First","collection.a_to_z":"A â Z","collection.z_to_a":"Z â A","collection.year_newest":"Year (Newest)","collection.year_oldest":"Year (Oldest)","collection.shuffle":"Shuffle","collection.filters":"Filters","collection.select":"Select","collection.grid":"Grid","collection.list":"List","collection.export":"Export","collection.share":"Share","collection.rename":"Rename","collection.privacy":"Privacy","collection.delete":"Delete","collection.items":"items","collection.type_movie":"Movie","collection.type_clip":"Clip","collection.my_collection":"My Collection","collection.public":"Public","collection.private":"Private","collection.private_notice":"This collection is private","collection.no_permission":"You do not have permission to view its contents.","collection.search_items":"Search items...","collection.search_favorites":"Search favorites...","collection.search_likes":"Search likes...","collection.add_to_collection":"Add to Collection","collection.remove_from_collection":"Remove from Collection","collection.cancel":"Cancel","collection.no_items_selected":"No items selected","collection.login_to_add":"Please log in to add to your collections","collection.share_link_copied":"Share link copied","collection.all_favorites":"All Favorites","collection.all_likes":"All Likes","collection.new_collection":"New Collection","collection.search_clips":"Search clips...","collection.name_required":"Collection name is required","collection.type_required":"Collection type must be movie or clip","collection.create_failed":"Failed to create collection","collection.create_error":"Error creating collection","collection.delete_failed":"Failed to delete collection","collection.delete_error":"Error deleting collection","collection.update_failed":"Failed to update collection","collection.update_error":"Error updating collection","collection.load_error":"Error loading collection","collection.empty_title":"This collection is empty","collection.empty_message":"Add items from your favorites or likes","collection.add_failed":"Failed to add to collection","collection.add_error":"Error adding to collection","collection.remove_confirm":"Remove this item from the collection?","collection.remove_failed":"Failed to remove from collection","collection.remove_error":"Error removing from collection","collection.bulk_add_failed":"Failed to add items","collection.bulk_add_error":"Error adding items","collection.bulk_remove_confirm":"Are you sure you want to remove {count} items?","collection.bulk_remove_failed":"Failed to remove items","collection.bulk_remove_error":"Error removing items","collection.note_failed":"Failed to save note","collection.note_error":"Error saving note","collection.tag_add_failed":"Failed to add tag","collection.tag_add_error":"Error adding tag","collection.tag_remove_failed":"Failed to remove tag","collection.items_selected":"{count} item(s) selected","collection.showing_items":"Showing {visible} of {total} items","collection.load_failed":"Failed to load collections","collection.rename_unavailable":"Rename not available here. Open Collections to edit.","collection.rename_title":"Rename collection","collection.privacy_unavailable":"Change privacy not available here. Open Collections to edit.","collection.delete_confirm":"Delete this collection? This cannot be undone.","collection.delete_unavailable":"Delete not available here. Open Collections to manage.","collection.select_to_share":"Select a custom collection to share","collection.share_unavailable":"Share link unavailable","collection.get_failed":"Failed to get collection","collection.copy_failed":"Failed to copy link","collection.export_json":"Export as JSON","collection.export_
273csv":"Export as CSV","collection.export_md":"Export as Markdown","collection.add_note":"Add Note","collection.edit_note":"Edit Note","collection.note_unavailable":"Note editor not available here.","collection.remove_from_favorites":"Remove from Favorites","collection.remove_from_likes":"Remove from Likes","trial.started":"Your 7-day trial has started :)","error.title":"Oops! Something went wrong","error.message":"The page you're looking for might have been moved, deleted, or doesn't exist.","error.go_home":"Go Home","error.go_back":"Go Back","error.404.title":"Page Not Found","error.404.message":"The page you are looking for does not exist.","error.check_new_clips":"Check out new movie clips","error.csrf":"Invalid CSRF token","error.passwords_mismatch":"Passwords do not match","error.loading_collections":"Error loading collections","categories.page_title":"Movie Quote Categories","categories.title":"Categories","movie.season_n":"Season {n}","movie.episode_n":"Episode {n}","movie.all_seasons":"All seasons","movie.all_episodes":"All episodes","movie.cast":"Cast","movie.all_cast":"All Cast","movie.also_watch":"Also watch","movie.reviews":"Reviews","movie.all_reviews":"All Reviews","movie.user_score":"User Score","movie.no_reviews_yet":"No reviews yet","movie.be_first_to_review":"Be the first to review this movie!","movie.go_to_movie_page":"Go to Movie Page","movie.back_to":"Back to {name}","movie.view_all_reviews":"View All {count} Reviews","movie.review.one":"review","movie.review.other":"reviews","movie.rating.overall":"Overall","movie.rating.story":"Story","movie.rating.aesthetics":"Aesthetics","movie.rating.acting":"Acting","movie.rating.sound":"Sound","movie.not_found":"Movie not found","movie.data_unavailable":"Movie data unavailable","movie.tab_about":"About","movie.tab_cast":"Cast","movie.director":"Director","movie.writer":"Writer","movie.year":"Year","movie.genre":"Genre","movie.box_office":"Box Office","movie.production":"Production","movie.awards":"Awards","movie.homepage":"Homepage","movie.part_of_collection":"Part of Collection","movie.you_might_like":"You Might Also Like","movie.watch_full":"Watch Full Movie","movie.add_to_favorites":"Add to Favorites","movie.remove_from_favorites":"Remove from Favorites","movie.added_to_favorites":"Movie added to <a href=\"favs\">favourites</a>","movie.removed_from_favorites":"Movie removed from favourites","movie.share":"Share","movie.be_first_review":"Be the first to share your thoughts on this movie","movie.view_all_cast":"View All Cast","movie.search_dialogue":"Search dialogue or scene...","movie.clear_filters":"Clear all filters","movie.reset":"Reset","movie.sort_timeline_asc":"Timeline Order â","movie.sort_timeline_desc":"Timeline Order â","movie.sort_most_popular":"Most Popular","movie.sort_least_popular":"Least Popular","movie.sort_longest":"Longest First","movie.sort_shortest":"Shortest First","movie.bulk_download_page":"Bulk Download Page","movie.bulk_download":"Bulk Download","movie.your_review":"Your review (optional)","movie.write_your_thoughts":"Write your thoughts about the movie...","movie.save_rating":"Save Rating","movie.login_to_rate":"Please <a href=\"login\">login</a> to rate movies","movie.login_to_rate_short":"Login to rate","movie.cast_not_available":"Cast information not available.","movie.login_to_favorite":"<a href=\"login\">Log-in</a> to add movie to favourites","movie.explore_clips":"Explore <span>{count}</span> Clips","movie.player_prev":"Previous clip","movie.player_next":"Next clip","movie.player_empty":"Pick a clip below â it plays here. Swipe for the next one.","clip.like":"Like","clip.give_like":"Give Like","clip.comment_placeholder":"What do you think?","clip.download":"Download","clip.download_clip":"Download Clip","clip.watch_full_movie":"Watch Full Movie","clip.find_where_to_watch":"Find where to watch","clip.full_movie":"Full Movie","clip.share":"Share","clip.embed":"Embed","clip.get_embed_code":"Get Embed Code","collection.in_collection":"In \"{name}\"","error.generic":"Error","frontpage.search_title":"Search your favourite movie scene","frontpage.value.title":"Find the exact scene, not just the quote","frontpage.value.lead":"Clip.Cafe indexes every line spoken in movies and TV shows. Search a phrase, watch the moment it's s
273aid, and download the clip in seconds.","frontpage.value.fans.title":"For film lovers","frontpage.value.fans.text":"Track down that line stuck in your head and see it in context, with the scene around it.","frontpage.value.creators.title":"For creators","frontpage.value.creators.text":"Pull clips and GIFs for your video, edit or presentation â HD and subtitle options with PRO.","frontpage.value.filters.title":"Search like a pro","frontpage.value.filters.text":"Narrow results by movie, actor, character, director, writer, genre, year or clip length.","frontpage.popular_clips_title":"Today's Popular Clips","frontpage.spotlight_title":"In the spotlight","frontpage.new_comments":"New comments","frontpage.new_scenes":"New Scenes","frontpage.popular_clips":"Popular clips","frontpage.stats.clips":"clips","frontpage.stats.clips_tooltip":"That's one more than 4 999 999. Crazy ikr","frontpage.stats.phrases":"phrases","frontpage.stats.phrases_tooltip":"Probably more","frontpage.stats.creators":"content creators","frontpage.stats.creators_tooltip":"More than 320 000 accounts in ClipCafe","frontpage.stats.movies":"movies","frontpage.stats.movies_tooltip":"Movies with at least 1 clip","pagination.page":"Page","content.movies_by_year":"Movies by Year","content.movie_quotes_by_year":"Movie quotes by the Year","content.movies_released_from":"All Movies with quotes that were released from year","content.movie_quotes_in_year":"Movie Quotes in {year}","content.movie_quotes_from_year":"Movie Quotes from {year}","content.movies_with_quotes_in_year":"{count} movies with quotes, released in {year}","content.years":"Years","content.statistics":"Statistics","user.recently_viewed":"Recently Viewed","user.watch_history":"Your Watch History","user.login_to_view_history":"Log in to see your recently viewed clips and movies","user.sign_in_google":"Sign in with Google","user.no_clips_viewed":"No clips viewed yet. Start browsing!","user.browse_clips":"Browse Clips","user.no_movies_viewed":"No movies viewed yet.","user.pick_up_where_left":"Pick up where you left off","user.recent_clips":"Recent Clips","user.recent_movies":"Recent Movies","user.page_of":"Page {current} of {total}","user.prev":"Prev","user.next":"Next","user.favorites":"Favorites","user.likes":"Likes","user.profile":"Profile","user.settings":"Settings","user.login_required":"Authentication required","user.your_favorite_movies":"Your Favorite Movies","user.login_to_save_favorites":"Log in to save your favorite movies and create custom collections","user.your_liked_clips":"Your Liked Clips","user.login_to_save_likes":"Log in to save your favorite clips and create custom collections","user.no_liked_clips_yet":"No liked clips yet","user.start_liking_clips":"Start liking clips to build your collection!","user.free_user":"Free User","user.account_settings":"Account Settings","user.view_profile":"View Profile","user.start_watching":"Start watching and reviewing movies!","user.member_since":"Member since","user.comments":"Comments","user.collections":"Collections","user.loading_collection":"Loading collection...","user.no_reviews_yet":"No reviews yet.","user.no_favorite_movies_yet":"No favorite movies yet.","user.no_recent_activity":"No recent activity.","user.payment_successful":"Payment Successful","user.payment_thank_you":"Thank you for your payment! Your transaction has been successfully completed.","user.joined":"Joined","user.days_ago":"{n} days ago","comments.latest":"Latest Comments","comments.anon":"Anon","comments.heading":"Comments","comments.add_comment":"Add a comment","auth.login_create_account":"Login or Create Account","auth.reset_password":"Reset Your Password","auth.set_new_password":"Set New Password","auth.invalid_reset_link":"Invalid or expired reset link. Please request a new password reset.","auth.social_login_only":"This email uses social login only. Please use the Google sign-in button, or click \"Forgot your password?\" to add a password to your account.","auth.google_cancelled":"Google login cancelled or failed.","auth.facebook_cancelled":"Facebook login cancelled or failed.","auth.login_failed_retry":"Login failed. Please try again or c
273ontact support.","auth.google_failed":"Google login failed. Please try again.","auth.facebook_failed":"Facebook login failed. Please try again.","auth.linkedin_failed":"LinkedIn login failed. Please try again.","auth.social_login_failed":"Couldn't login, try other social or email us","video.play":"Play","video.pause":"Pause","video.mute":"Mute","video.unmute":"Unmute","video.enter_fullscreen":"Enter fullscreen","video.exit_fullscreen":"Exit fullscreen","video.audio_subtitles":"Audio / Subtitles","video.current_time":"Current time","video.duration":"Duration","video.seek":"Seek","video.buffered":"buffered","video.embed_share_codes":"Embed & Share Codes","video.share_this_clip":"Share this clip","video.full_transcript":"Full Transcript","video.copy_paste_codes":"Copy and paste these codes to share this clip","video.bbcode_label":"BBCode (for forums)","video.embed_code_label":"Embed Code (HTML iframe)","video.direct_link":"Direct Link","video.click_to_copy":"Click any field to copy to clipboard","payment.thank_you":"Thank you :) Payment was successful","payment.successful":"Payment was Successful!","payment.something_wrong":"Something went wrong","payment.not_received":"Payment not received","payment.pro_plans":"ClipCafe PRO Plans & Pricing","payment.secure_stripe":"Secure payment via Stripe","payment.cancel_anytime":"Cancel anytime","payment.fair_use_link":"<a href=\"https://medium.com/@clipdotcafe/avoid-copyright-strikes-how-to-use-small-movie-clips-legally-on-social-media-like-youtube-and-6888798256da\" target=\"_blank\" rel=\"noopener noreferrer\" style=\"color:#ff892e;text-decoration:underline;\">Fair-use guide</a>","payment.try_pro_free":"Try PRO for 7 days for free","payment.get_pro_crypto":"Get PRO with Crypto","payment.welcome_to_pro":"Welcome to PRO!","payment.welcome_message":"Welcome to {plan}, {name}!","payment.success_message":"Your payment was successful and your premium features are now active.","payment.unlocked":"You've unlocked:","payment.what_next":"What would you like to do next?","payment.continue_watching":"Continue Watching","payment.continue_watching_desc":"Pick up where you left off with your recently viewed clips","payment.browse_clips":"Browse Clips","payment.browse_clips_desc":"Explore our collection of movie clips and quotes","payment.popular_clips":"Popular Clips","payment.popular_clips_desc":"See what other users are watching and downloading","payment.view_profile":"View Profile","payment.view_profile_desc":"Check your account, downloads, and collections","upload.page_title":"Upload a Movie Clip","utility.offer_completed":"Offer completed :)","activity.commented_on":"commented on","activity.liked":"liked","activity.reviewed":"reviewed","activity.favourited":"favourited","modal.confirm":"Confirm","modal.cancel":"Cancel","modal.continue":"Continue","modal.login_required":"Login Required","modal.login":"Log in","modal.enter_text":"Enter text...","modal.submit":"Submit","modal.write_note":"Write a note...","modal.save":"Save","modal.success":"Success!","modal.error":"Error","modal.ok":"OK","modal.collection_options":"Collection Options","modal.rename_collection":"Rename Collection","modal.change_privacy":"Change Privacy","modal.delete_collection":"Delete Collection","modal.collection_privacy":"Collection Privacy","modal.privacy_choose":"Choose who can see this collection","modal.privacy_private":"Private","modal.privacy_private_desc":"Only you can see this collection","modal.privacy_public":"Public","modal.privacy_public_desc":"Anyone with the link can view and share","modal.add":"Add","modal.remove":"Remove","modal.create":"Create","modal.new_collection":"New collection","modal.search_collections":"Search collections...","modal.no_collections_yet":"You don't have any {type} collections yet.","modal.create_collection":"Create {type} Collection","modal.new_collection_name":"New {type} collection name","modal.collections":"Collections","user.start_favoriting_movies":"Start favoriting movies to build your collection!","user.browse_movies":"Browse Movies","user.favorite_movies":"Favorite Movies","user.recent_activity":"Recent Activity","collection.remove_selected":"Remove Selected","collection.remove_from_favorites_confirm":"Remove this movie from favorites?","collection.removed_from_favorites":"Removed from favorites","collection.note_clip":"Add a note about this clip","collection.note_movie":"Add a note about this movie","collection.remove_from_likes_confirm":"Remove this clip from likes?","collection.removed_from_likes":"Removed from likes","collection.filtering_by_tag":"Filtering by #{tag}","collection.back_to_collections":"Back to Collections","activity.liked_clip_from":"Liked a clip from","activity.commented_clip_from":"Commented on a clip from","settings.login_required":"Please log in to access this page","settings.subscription":"Subscription","settings.active_subscription_renews":"Active subscription (renews {date})","settings.active_subscription_monthly":"Active subscription (renews monthly)","settings.manage_subscriptions":"Manage Subscriptions","settings.payment_history":"Payment History","settings.date":"Date","settings.package":"Package","settings.price":"Price","settings.invoice":"Invoice","settings.payment_issue":"Payment Issue","settings.payment_failed_message":"Your last payment failed. We're retrying, but please update your payment method to avoid losing access.","settings.update_payment_method":"Update Payment Method","settings.subscription_status":"Subscription Status","settings.current_plan":"Current Plan","settings.status":"Status","settings.upgrade_for_hd":"Upgrade for HD downloads and more features!","settings.patreon_connection":"Patreon Connection","settings.patreon_id":"Patreon ID","settings.patreon_active":"Active Patron","settings.patreon_inactive":"Inactive","settings.manage_on_patreon":"Manage on Patreon","settings.disconnect_patreon":"Disconnect Patreon","settings.disconnect_patreon_confirm":"Are you sure you want to disconnect your Patreon account? You will lose PRO access if it was provided through Patreon.","patreon.thanks_title":"Thanks for being an awesome Patron!","patreon.your_id":"Your Patreon ID","patreon.our_patreon":"Our Patreon","patreon.status_not_active":"Not active","patreon.get_pro_message":"Get PRO by supporting us on Patreon","patreon.subscribe_button":"Subscribe on Patreon","patreon.recheck_hint":"Already pledging on Patreon? Re-check your pledge to activate PRO right away.","patreon.recheck_button":"Re-check my pledge","settings.preferences":"Preferences","settings.playback_controls":"Playback Controls","settings.autoplay_video":"Autoplay Video","settings.autoplay_tooltip":"Automatically play the video when you visit a clip page.","settings.mute_on_hover":"Mute on Hover","settings.mute_tooltip":"Mute audio when hovering over video thumbnails.","settings.loop_playback":"Loop Playback","settings.loop_tooltip":"Automatically replay the video when it ends.","settings.preferred_language":"Preferred Language","settings.language_description":"Set
273s the default audio and subtitle language for clips (where available).","settings.ui_language":"Website Language","settings.ui_language_description":"Choose the language for the website interface.","settings.api_keys":"API Keys","settings.documentation":"Documentation","settings.api_key":"API Key","settings.created":"Created","settings.requests":"Requests","settings.downloads":"Downloads","settings.delete_api_key_confirm":"Are you sure you want to delete this API Key?","payment.continue_to_clip":"Continue to the clip","payment.contact_support":"If all of the transactions got confirmed and PRO is still not activated, then contact us through <a href=\"https://discord.gg/kyKmte9CPp\">Discord</a> or email us: [email protected]","payment.login_required":"Login Required","payment.login_to_download":"Sign in or create an account to unlock downloads","payment.login_signup":"LOGIN / SIGN UP","payment.limit_reached":"Daily Download Limit Reached","payment.limit_reached_message":"You've used all {limit} free downloads for today. Your limit resets at midnight â or upgrade to PRO for {prolimit} HD downloads a day.","payment.unlock_hd":"Unlock HD Downloads","payment.unlock_hd_message":"You're one step away from downloading unlimited HD clips with advanced editing features","payment.what_you_get":"What You Get with PRO","payment.hd_quality":"HD Quality","payment.downloads_high_quality":"downloads in high quality","payment.convert_to":"Convert to","payment.edit_videos":"Edit videos","payment.edit_features":"Crop, cut, change speed, add subtitles","payment.bulk_download":"Bulk download","payment.multiple_clips":"multiple clips at once","payment.view_all_plans":"VIEW ALL PLANS & PRICING","payment.subscribed_to":"You are subscribed to <span style=\"color: #ff892e;\">{plan}</span>","payment.manage_subscription_desc":"Update payment method, download invoices, or cancel anytime securely via Stripe.","payment.monthly":"Monthly","payment.yearly":"Yearly","payment.save_percent":"Save {percent}%","payment.no_questions":"no questions asked","payment.immediate_access":"All plans include immediate access","auth.welcome_back":"Welcome Back","auth.sign_in_continue":"Sign in to continue to Clip.Cafe","auth.checkout_title":"Complete your {plan} purchase","auth.checkout_subtitle":"Sign in or create your account â you'll go straight to secure checkout.","auth.continue_with_google":"Continue with Google","auth.or":"or","auth.email_address":"Email Address","auth.password":"Password","auth.enter_password":"Enter your password","auth.password_requirements":"Password requirements","auth.req_length":"8+ characters","auth.req_uppercase":"Uppercase letter","auth.req_lowercase":"Lowercase letter","auth.req_number":"Number","auth.tos_notice":"By continuing, you agree to our <a href=\"termsandconditions/\" target=\"_blank\">Terms of Service</a> and <a href=\"privacypolicy/\" target=\"_blank\">Privacy Policy</a>.","auth.password_required":"Please enter your password","auth.session_expired":"Your session expired while this page was open. Refreshingâ¦","auth.network_error":"Connection problem. Check your internet and try again.","auth.login_success_redirecting":"Login successful! Redirectingâ¦","auth.incorrect_password":"Incorrect password. Try again, or use the âForgot your password?â link below.","auth.activate_account_first":"Please check your email and activate your account before logging in.","auth.too_many_attempts":"Too many failed attempts. Please try again in {minutes} minutes.","auth.too_many_registrations":"Too many new accounts have been created from your network recently. Please try again later, or continue with Google.","auth.captcha_failed":"We could not verify that you are human. Please complete the check and try again, or continue with Google.","auth.password_policy":"Your password needs at least 8 characters, including an uppercase letter, a lowercase letter and a number.","auth.password_policy_new_account":"There's no account for this email yet, so signing in here will create one. Pick a password with at least 8 characters, including an uppercase letter, a lowercase letter and a number.","auth.social_login_set_password":"This email was registered with {provider}. Click âForgot your password?â below to set a password you can sign in with.","auth.continue":"Continue","auth.sign_in":"Sign in","auth.create_account":"Create account","auth.step_returning":"Welcome back â enter your password to sign in.","auth.step_new":"No account for this email yet. Pick a password and we'll create one.","auth.step_social_google":"This email signs in with Google â use the Continue with Google button above.","auth.use_password_instead":"I have a password","auth.sign_in_create":"Sign In / Create Account","auth.forgot_password":"Forgot your password?","auth.invalid_email":"Please enter a valid email address","auth.toggle_password":"Toggle password visibility","auth.enter_new_password":"Enter your new password","auth.reenter_password":"Re-enter your password","auth.new_password":"New Password","auth.confirm_password":"Confirm Password","auth.password_must_have":"Password must have:","game.guess_the_movie":"Guess The Movie","game.your_name":"Your Name","gtm.meta_desc":"Watch a clip and Guess The Movie! Great way to discover new movies","gtm.hero_lead":"A real mov
273ie clip plays, with sound. Name the film, and see how far your three Oscars take you.","gtm.cta_play":"Play now","gtm.cta_discord":"Add to Discord","gtm.how_title":"How it works","gtm.how_watch_h":"Watch","gtm.how_watch_p":"A real clip from one of {n} films plays, with sound. Famous films come first; it gets harder the longer you last.","gtm.how_type_h":"Type","gtm.how_type_p":"Type the title and pick it from the list. A film never repeats in a run. A miss, or a skip, costs one of your three Oscars.","gtm.how_score_h":"How you score","gtm.how_score_p":"A right answer scores up to {base} points, and a little more the sooner you get it. Answer within {fast} seconds after a miss and you win an Oscar back.","gtm.stat_films":"Films","gtm.stat_clips":"Clips","gtm.stat_servers":"Servers","gtm.stats_aria":"Numbers","gtm.hints_title":"Seven hints, one use each","gtm.hints_p":"You start with three at random. Tapping one spends it. A right answer with fewer than three in hand earns a new one.","gtm.hint_director":"Director","gtm.hint_summary":"Summary","gtm.hint_writer":"Writer","gtm.hint_released":"Released","gtm.hint_poster":"Poster","gtm.hint_poster_long":"Poster (blurred)","gtm.hint_genres":"Genres","gtm.hint_first":"First letter","gtm.hint_open":"Open the {name} hint","gtm.scores_title":"High scores","gtm.scores_all":"All high scores","gtm.discord_h":"Play it in your Discord","gtm.discord_p":"Run /gtm play: real scenes as GIFs, four title buttons and a clock. Lobbies, scheduled screenings, levels 1â99 with badges from Super 8 to Golden Reel, and server leaderboards.","gtm.discord_running":"Running in {n} servers","gtm.daily_h":"The Daily Clip","gtm.daily_p":"One movie puzzle a day, the same for everyone. Keep a streak, climb the leaderboard, come back tomorrow.","gtm.daily_cta":"Play todayâs puzzle","gtm.faq_title":"Questions","gtm.faq_q1":"Is it free?","gtm.faq_a1":"Yes. No account, no signup.","gtm.faq_q2":"Where do the clips come from?","gtm.faq_a2":"Clip.Cafeâs library of {clips} clips from {films} films.","gtm.faq_q3":"How is my score worked out?","gtm.faq_a3":"Up to {base} points for a right answer; the sooner you get it, the more it is worth.","gtm.faq_q4":"Can I play with friends?","gtm.faq_a4":"Yes: add the Discord bot and run /gtm play in your server.","gtm.faq_q5":"Do films repeat?","gtm.faq_a5":"Never within one run.","gtm.video_aria":"The clip","gtm.play_clip":"Play clip","gtm.exit":"Exit game","gtm.sheet_aria":"Your answer","gtm.hud_aria":"{alive} of {max} Oscars, clip {clip}, score {score}","gtm.skip_label":"Skip this clip (costs an Oscar)","gtm.oscar_lost":"Oscar lost","gtm.input_label":"Type the filmâs title","gtm.input_ph":"Type the filmâs titleâ¦","gtm.go":"Answer","gtm.suggest_aria":"Matching films","gtm.no_matches":"No matching films","gtm.hints_group":"Hints","gtm.close":"Close","gtm.skip_note":"Tap an Oscar to skip this clip. It costs one.","gtm.unmute":"Sound is off. Tap to unmute","gtm.copied":"Link copied","gtm.err_generic":"Something went wrong. Please try again.","gtm.err_session":"This run has expired.","gtm.err_no_clips":"No clips are available right now.","gtm.video_failed":"This clip didn't load. Tap the picture to retry, or skip it.","gtm.hint_empty":"There's nothing to show for this film, so you keep the hint.","gtm.right":"Thatâs right","gtm.wrong":"Nope!","gtm.skipped":"You used your Oscar.","gtm.oscars_left.one":"One Oscar left.","gtm.oscars_left.other":"{n} Oscars left.","gtm.you_typed":"You typed {answer}","gtm.right_answer_is":"Right answer is","gtm.fast_bonus":"Fast answer: Oscar back","gtm.new_hint":"New hint unlocked","gtm.score":"Score","gtm.next_clip":"Next clip","gtm.watch_clip":"Watch this clip","gtm.share":"Share","gtm.with_cast":"with {names}","gtm.and":"and","gtm.f_writers":"Writers","gtm.f_released":"Released","gtm.f_imdb":"IMDb","gtm.f_metascore":"Metascore","gtm.the_end":"The End","gtm.clips_solved.one":"{n} clip solved · your score","gtm.clips_solved.other":"{n} clips solved · your score","gtm.name_label":"Your name for the high scores","gtm.name_ph":"Your name","gtm.submit_score":"Submit your score","gtm.submit_note":"Submit to join the top {n}","gtm.new_game":"New game","gtm.last_clip":"The one that ended it","gtm.hs_page_title":"Guess The Movie - HighScores","gtm.hs_title":"High scores","gtm.hs_order":"Order","gtm.hs_best":"Best score","gtm.hs_newest":"Newest","gtm.hs_empty":"No scores yet. Be the first.","gtm.hs_note":"Top {n} of all time. Play a run and submit yours at The End.","gtm.hs_note_newest":"The {n} newest runs. Play a run and submit yours at The End.","daily.media_label":"Mystery movie clip","daily.play_pause":"Play or pause the clip","daily.type_movie":"Type a movie titleâ¦","daily.skip":"Skip","daily.archive":"Archive","daily.stats":"Statistics","daily.how_to_play":"How to play","daily.archive_title":"Past Daily Clips","daily.play_today":"Play today's clip","daily.you_got_it":"You got it!","daily.it_was":"It was","daily.lost_title":"So close!","daily.share":"Share","daily.copied":"Copied!","daily.watch_scene":"Watch the full scene","daily.try_hard":"Try Hard Mode","daily.hard_mode":"Hard Mode","daily.hard_label":"HARD","daily.hard_
273intro":"A different movie, revealed the slow way: the frame sharpens, then the scene plays, and a dossier fills in with a fact every miss. 6 guesses.","daily.back_to_normal":"Back","daily.next_clip_in":"Next clip in","daily.stats_played":"Played","daily.stats_win_pct":"Win %","daily.stats_streak":"Streak","daily.stats_max_streak":"Max streak","daily.stats_distribution":"Guess distribution","daily.earlier":"earlier","daily.later":"later","daily.higher":"higher","daily.lower":"lower","daily.pct_tail":"of players solved it in {n} or fewer","daily.col_rating":"Rating","daily.col_box":"Box office","daily.col_studio":"Studio","daily.col_director":"Director","daily.col_cast":"Cast","daily.exact":"Exact","daily.partial":"Partial","daily.no_match":"No match","daily.different":"Different","daily.none":"None","daily.n_shared":"{n} shared","daily.new_clue":"New clue","daily.with_sound":"Full scene, with sound","daily.feed_label":"Your guesses and unlocked clues","daily.correct_label":"Correct","daily.skipped_label":"Skipped","daily.skip_desc":"You traded a guess for a clip and an extra fact","daily.clue_year_genre":"Year & genres","daily.clue_clip":"2-second clip","daily.clue_quote":"A line from the scene","daily.board_label":"What we know so far","daily.board_title":"What we know about the film","daily.lbl_year":"Release year","daily.lbl_genre":"Genres","daily.lbl_rated":"Certificate","daily.lbl_runtime":"Runtime","daily.lbl_country":"Country","daily.lbl_character":"Characters","daily.lbl_cast":"Cast member","daily.lbl_director":"Director","daily.objective":"Guess the movie. Every miss unlocks another clip and another fact.","daily.guess_n_of_m":"Guess {n} of {m}","daily.n_wins":"{n} wins","daily.n_played":"{n} played","daily.board_pending":"The leaderboard switches on once the first puzzles are generated.","daily.board_empty_today":"Nobody has finished today's clip yet. Be the first.","daily.board_empty":"No ranked players yet.","daily.board_avg_min":"Minimum 5 wins to be ranked.","daily.board_error":"Could not load the leaderboard.","daily.clue_barcode":"The sceneâs colour signature","daily.clue_barcode_alt":"A strip of colour, one band per moment of the scene","daily.clue_barcode_desc":"Every band is one moment of the scene, averaged to a single colour.","daily.clue_scene2":"A different scene","daily.clue_scene2_desc":"Another moment from the same film â not the one you are guessing.","daily.clue_cast":"One cast member","daily.leaderboard":"Leaderboard","daily.rank":"Rank","daily.avg_guesses":"Avg guesses","daily.sign_in":"Sign in","daily.signin_pitch":"Sign in to save your streak and join the leaderboard.","daily.synced":"{n} past games added to your account","daily.streak_milestone":"{n}-day streak!","daily.yesterday_was":"Yesterday was","daily.yesterday_unplayed":"You haven't played yesterday's clip.","daily.play_it":"Play it","daily.more_puzzles":"Play past clips","daily.play_next":"Play next clip","daily.clips_left":"Clips left to play: {n}","daily.all_caught_up":"You've played every clip so far.","xp.level":"Level {n}","xp.to_next":"{xp} XP to level {n}","xp.max_level":"Max level","xp.level_up":"Level up!","xp.signin_keep":"Sign in to keep {xp}","xp.saved":"{xp} saved to your account","daily.profile":"Profile","daily.profile_title":"Your Daily Clip","daily.profile_guest":"Sign in to keep your XP, earn medals and see every answer you've given.","daily.xp_total":"{xp} XP earned","daily.play_streak":"Play streak: {n}","daily.xp_bonus":"+{pct}% XP","daily.medals":"Medals","daily.medals_earned":"{n} of {m} earned","daily.tier_bronze":"Bronze","daily.tier_silver":"Silver","daily.tier_gold":"Gold","daily.medal_maxed":"Every tier earned","daily.medal_next":"Next: {tier}","daily.badges":"Badges","daily.history":"Your answers","daily.history_empty":"No finished clips yet. Your answers will collect here.","daily.your_guesses":"Your guesses","daily.newer":"Newer","daily.older":"Older","daily.medal_level":"Rising star","daily.medal_level_desc":"Account level","daily.medal_finished":"Regular","daily.medal_finished_desc":"Clips finished","daily.medal_days":"Devoted","daily.medal_days_desc":"Different days played","daily.medal_win_streak":"On a roll","daily.medal_win_streak_desc":"Best winning streak, in days","daily.medal_first_guess":"Sharpshooter","daily.medal_first_guess_desc":"Solved on the first guess","daily.medal_clutch":"Clutch","daily.medal_clutch_desc":"Solved on the last guess","daily.medal_hard_wins":"Hard boiled","daily.medal_hard_wins_desc":"Hard Mode clips solved","daily.medal_binge":"Binge watcher","daily.medal_binge_desc":"Most clips finished in one day","daily.medal_archive":"Archivist","daily.medal_archive_desc":"Archive clips finished","daily.badge_founder":"Founder","daily.badge_founder_desc":"Played in The Daily Clip's first two months","daily.badge_double_feature":"Double feature","daily.badge_double_feature_desc":"Finished Easy and Hard on the same day","daily.badge_completionist":"C
273ompletionist","daily.badge_completionist_desc":"Finished every Easy clip published so far","xp.tier_1":"Super 8","xp.tier_2":"16mm","xp.tier_3":"35mm","xp.tier_4":"70mm","xp.tier_5":"IMAX","xp.tier_6":"Golden Reel","daily.lets_play":"Let's play","daily.board_today":"Today","daily.board_streak":"Streaks","daily.board_wins":"Wins","daily.board_avg":"Best average","daily.mode_normal":"Easy","daily.funnel_pitch":"Try The Daily Clip â one new movie puzzle every day, with streaks and a leaderboard.","daily.funnel_cta":"Play today's clip","daily.offline_retry":"Connection problem â try again","daily.new_puzzle":"A new clip is ready!","daily.play":"Play","daily.help_html":"<h2>How to play</h2><p>Guess the movie in <b>7</b> tries.</p><p>You start with one clip playing — a scene almost nobody has watched. Every guess or skip unlocks another clip from the same film, and they arrive in order of how well known they are — so the scene everyone remembers comes last. Swipe or use the arrows to go back to any clip you have already unlocked.</p><p>The panel under the clip is what we know about the film. It opens with the genres and the year, and gains one more fact every time you miss — the characters, then the director, then one of the cast, and last the runtime, certificate and country. Skipping adds an extra one from the bottom of that list, so a skip buys a fact instead of the comparison a named guess would have given you.</p><p>Every wrong guess also tells you how your film compares with the answer on five things: <b>IMDb rating</b> (higher or lower), <b>box office</b> (bigger or smaller), <b>studio</b>, <b>director</b>, and any <b>cast</b> the two films share.</p><p>A new clip drops every day at midnight UTC. Solved it? Try <b>Hard Mode</b>: a different film, revealed the slow way — a frame that sharpens, then the scene itself, and a dossier that fills in with one fact per miss. 6 guesses.</p>","upload.search_for_movie":"Search for a movie...","aria.search_box":"Search box","aria.search_button":"Search button","aria.user_menu":"User menu","aria.close":"Close","aria.close_window":"Close window","aria.share":"Share","aria.search_in_collection":"Search in collection","aria.subtitle_languages":"Subtitle Languages","collection.options":"Collection options","movie.find_where_to_watch":"Find where to watch","movie.find_where_to_watch_full":"Find out where to watch this movie","pricing.vat_year":"+ VAT / year","pricing.vat_month":"+ VAT / month","pricing.reviews_source":"Read all reviews on Trustpilot â","pricing.hero_subtitle":"HD & 4K downloads from 5M+ clips across 20,000 movies & shows","pricing.reviews_emphasis":"Emphasis ours â reviews are quoted in full.","unsubscribe.title":"Unsubscribe","unsubscribe.done_title":"You're unsubscribed","unsubscribe.done_body":"We won't send you marketing emails again. You'll still get essential account and payment messages.","unsubscribe.failed_title":"That link didn't work","unsubscribe.failed_body":"The unsubscribe link looks incomplete or expired. Email [email protected] and we'll take you off the list by hand.","pricing.months_free_saving":"{months} months free â save ${saved}","pricing.months_free_badge":"{months} MONTHS FREE","pricing.switch_to_annual":"or pay yearly and get {months} months free â","pricing.refund_promise":"Haven't used it? Full refund, no argument. 14 days to ask.","pricing.refund_link":"Read the refund policy","pricing.fair_use_link":"<a href=\"https://medium.com/@clipdotcafe/fair-use-vs-copyright-strikes-a-survival-guide-for-youtubers-in-2026-5315af6d70bc\" target=\"_blank\" rel=\"noopener noreferrer\">Fair-use guide for creators</a>","pricing.equivalent_to":"Equivalent to ${price}/mo","survey.subscribe_question":"One quick question â what made you upgrade?","survey.subscribe_thanks":"Thanks â that genuinely helps us decide what to build next.","survey.opt_hd_quality":"HD / 4K download quality","survey.opt_editing_trim":"Trimming and editing clips","survey.opt_bulk_download":"Bulk downloading","survey.opt_daily_limit":"The free daily limit was too low","survey.opt_support_site":"To support the site","survey.opt_other":"Something else","pricing.per_mo_suffix":"/mo","pricing.billed_yearly":"Billed ${price}/year + VAT","pricing.order_now":"ORDER NOW","pricing.ready_to_upgrade":"Ready to upgrade?","pricing.join_thousands":"Join thousands of users enjoying PRO features","pricing.choose_your_plan":"Cho
273ose Your Plan","faq.title":"Frequently Asked Questions","faq.q1":"What is ClipCafe PRO?","faq.a1":"ClipCafe PRO unlocks advanced features including <span class=\"pro-highlight\">HD/4K downloads</span>, <span class=\"pro-highlight\">format conversion</span>, advanced editing tools, and bulk downloads. Choose your plan: <span class=\"pro-highlight\">PRO</span> for regular use or <span class=\"pro-highlight\">Creator</span> for unlimited access.","faq.q2":"What's the difference between PRO and Creator?","faq.a2_intro":"All plans include HD/4K downloads, editing tools, and format conversion. The difference is limits:","faq.a2_pro":"<strong>PRO ($5/month):</strong> 100 HD/4K clips per day - great for regular content creators","faq.a2_creator":"<strong>Creator ($10/month):</strong> <span class=\"pro-highlight\">Unlimited</span> HD/4K clips + bulk ZIP downloads + priority support","faq.q3":"Do I get immediate access after subscribing?","faq.a3":"Yes! Your PRO features activate <span class=\"pro-highlight\">immediately</span> after payment confirmation. You can start downloading and editing HD/4K clips right away.","faq.q4":"How do daily download limits work?","faq.a4":"Your download limit resets <span class=\"pro-highlight\">daily at midnight UTC</span>. For example, if you have PRO ($5/month) and download 50 clips today, you'll have 50 remaining today and a fresh 100 tomorrow. <span class=\"pro-highlight\">Unused downloads do not roll over</span>.","faq.q5":"What happens if I reach my daily limit?","faq.a5":"Once you reach your daily limit, you'll need to wait until the next day for your limit to reset, or you can upgrade to a higher tier for more downloads. You can still browse, search, and stream clips without limits.","faq.q6":"What quality are the downloads?","faq.a6_intro":"PRO members can download clips in multiple quality levels:","faq.a6_4k":"<strong><span class=\"pro-highlight\">4K (2160p)</span>:</strong> Available on select premium videos","faq.a6_1080p":"<strong>Full HD (1080p):</strong> Available on most videos","faq.a6_720p":"<strong>HD (720p):</strong> Standard HD quality","faq.a6_free":"Free users get <span class=\"pro-highlight\">3 SD downloads per day</span> (426p standard definition). All downloads include <span class=\"pro-highlight\">high-quality audio</span>.","faq.q7":"Can I download multiple clips at once?","faq.a7":"Yes! PRO members have access to bulk download features, allowing you to queue and download multiple clips simultaneously. This saves significant time when working on projects.","faq.q8":"What formats can I convert clips to?","faq.a8_intro":"PRO members can convert clips to multiple formats:","faq.a8_video":"<strong>Video:</strong> MP4, WEBP, AV1, GIF","faq.a8_audio":"<strong>Audio:</strong> MP3, WAV (extract audio from clips)","faq.a8_subtitles":"<strong>Subtitles:</strong> SRT, VTT (download subtitle files separately)","faq.q9":"What editing features are included?","faq.a9_intro":"PRO members have access to advanced editing tools:","faq.a9_crop":"<strong>Crop & Trim:</strong> Cut clips to exact lengths and dimensions","faq.a9_speed":"<strong>Speed Control:</strong> Change playback speed (slow motion or fast forward)","faq.a9_subtitles":"<strong>Subtitle Embedding:</strong> Add or remove subtitles from clips","faq.a9_quality":"<strong>Quality Selection:</strong> Choose your preferred resolution before download","faq.q11":"Do clips include subtitles?","faq.a11":"Most clips include accurate subtitles/transcripts. You can view them while streaming, embed them in downloads, or download subtitle files separately in SRT or VTT format.","faq.q12":"How does billing work?","faq.a12":"PRO and Creator are available monthly or annually. Monthly plans renew on the same day each month; annual plans renew once a year and work out cheaper. Your card is charged automatically and you get an email receipt after each payment.","faq.q13":"What payment methods do you accept?","faq.a13":"We use <strong><span class=\"pro-highlight\">Stripe</span></strong> for secure payment processing - the same payment system trusted by companies like <span class=\"pro-highlight\">Amazon, Google, and Shopify</span>. Stripe accepts all major credit and debit cards (Visa, Mastercard, American Express, Discover), as well as digital wallets like Apple Pay and Google Pay.","faq.a13_badge":"Bank-level encryption & PCI-DSS certified","faq.q14":"Is my payment information secure?","faq.a14":"Absolutely. We use <strong><span class=\"pro-highlight\">Stripe</span></strong>, a <span class=\"pro-highlight\">PCI-DSS Level 1 certified</span> payment processor - the highest level of security in the payment industry. Your credit card information is <span class=\"pro-highlight\">never stored on our servers</span>. All payment data is encrypted and handled directly by Stripe's secure infrastru
273cture, giving you the same level of protection used by major enterprises worldwide.","faq.q15":"Is VAT included in the price?","faq.a15":"The displayed prices ($5 or $48/year for PRO, $10 or $96/year for Creator) are base prices. VAT will be added at checkout based on your location as required by local tax laws. The final amount is shown before you confirm payment.","faq.q16":"Can I cancel anytime?","faq.a16":"Yes, you can cancel your subscription at <span class=\"pro-highlight\">any time</span> with <span class=\"pro-highlight\">no questions asked</span> and <span class=\"pro-highlight\">no cancellation fees</span>. After canceling, you'll retain PRO access until the end of your current billing period.","faq.q17":"How do I manage or cancel my subscription?","faq.a17":"You can manage your subscription by clicking the <strong><span class=\"pro-highlight\">\"Manage Subscription\"</span></strong> button in your account settings (Settings > Subscription tab). Alternatively, use the secure link provided in your subscription confirmation email to access your Stripe billing portal where you can update payment methods, view invoices, or cancel your subscription.","faq.q18":"Can I upgrade my plan?","faq.a18":"Yes! You can upgrade from PRO to Creator at any time. The upgrade takes effect <span class=\"pro-highlight\">immediately</span> and you'll be charged a <span class=\"pro-highlight\">prorated amount</span> for the remaining days in your billing cycle.","faq.q19":"What happens if my payment fails?","faq.a19":"If a payment fails, we'll retry the charge and send you an email notification. You'll have a <span class=\"pro-highlight\">grace period</span> to update your payment method via the \"Manage Subscription\" link. If payment isn't resolved, your subscription will be canceled, but you can resubscribe at any time.","faq.q20":"Do you offer refunds?","faq.a20":"We offer refunds on a case-by-case basis <span class=\"pro-highlight\">within 14 days</span> of purchase if you're not satisfied with the service. Please contact our support team at [email protected] with your account details and reason for the refund request.","faq.q21":"Can I use my subscription on multiple devices?","faq.a21":"Yes! Your PRO subscription is tied to your <span class=\"pro-highlight\">account, not a specific device</span>. You can log in and use all PRO features on <span class=\"pro-highlight\">any device</span> (desktop, tablet, mobile) as long as you're signed into your account.","faq.q22":"Are there any file size limits for downloads?","faq.a22":"<span class=\"pro-highlight\">No file size limits</span> for PRO downloads. Clips can range from a few MB to several hundred MB depending on length and quality (4K files will be larger). Your only limit is the daily download count for your tier.","faq.q23":"Can I share downloaded clips?","faq.a23":"You can use downloaded clips for personal, educational, or fair use purposes. For commercial use or public distribution, please ensure you have proper rights to the content. PRO subscriptions are for individual use and accounts should not be shared. Not sure what counts as fair use? See our guide on <a href=\"https://medium.com/@clipdotcafe/avoid-copyright-strikes-how-to-use-small-movie-clips-legally-on-social-media-like-youtube-and-6888798256da\" target=\"_blank\" rel=\"noopener noreferrer\">using small movie clips legally on social media</a>.","faq.q24":"What kind of support do I get?","faq.a24":"All PRO members receive email support. PRO+ members get priority support with faster response times. PRO++ members receive premium support with the highest priority and dedicated assistance.","faq.q25":"How do I contact support?","faq.a25":"You can reach our support team at <a href=\"mailto:[email protected]\">[email protected]</a> or join our Discord community at <a href=\"https://rebrand.ly/clipcafediscord2\" target=\"_blank\">discord.gg/clipcafe</a> for community support and updates.","faq.q26":"Still have questions?","faq.a26":"If you have any other questions not covered here, please don't hesitate to contact us at <a href=\"mailto:[email protected]\">[email protected]</a>. We're happy to help you choose the right plan and answer any concerns!","download.preview_not_available":"Preview not available","download.can_still_download":"You can still configure and download the clip","download.start":"Start","download.end":"End","download.duration":"Duration","download.full_clip":"Full Clip","download.format":"Format","download.format_mp4":"MP4 (Video)","download.format_hevc":"MP4 HEVC (Smaller)","download.format_webm":"WebM (Small)","download.format_gif":"GIF (Animation)","download.format_mp3":"MP3 (Audio)","download.format_wav":"WAV (Audio)","download.format_srt":"SRT (Subtitles)","download.format_vtt":"VTT (Subtitles)","download.requires_pro":"Requires ClipCafe Pro","download.gif_options":"GIF Options","download.gif_loop":"Lo
273op","download.gif_loop_forever":"Loop Forever","download.gif_colors_max":"Max (256)","download.gif_colors_high":"High (128)","download.gif_colors_med":"Med (64)","download.gif_colors_low":"Low (32)","download.gif_style_smooth":"Smooth","download.gif_style_retro":"Retro","download.gif_style_clean":"Clean","download.quality":"Quality","download.quality_original":"Original","download.aspect":"Aspect / Crop","download.aspect_original":"Original framing","download.aspect_9x16":"Vertical 9:16","download.aspect_4x5":"Portrait 4:5","download.aspect_1x1":"Square 1:1","download.aspect_16x9":"Widescreen 16:9","download.aspect_4x3":"Classic 4:3","download.quality_sd":"SD (426p)","download.speed":"Speed","download.speed_slow":"0.5x (Slow)","download.speed_normal":"1x (Normal)","download.speed_fast":"2x (Fast)","download.speed_custom":"Custom...","download.burn_subtitles":"Burn Subtitles","download.burn_into_video":"Burn into video","download.subtitle_language":"Subtitle Language","download.audio_track":"Audio Track","download.language":"Language","download.button":"Download","download.daily_downloads":"Daily downloads:","download.pro_features":"PRO Features:","download.upgrade_unlock":"Upgrade to unlock all features.","download.shortcuts":"Shortcuts","download.keyboard_shortcuts":"Keyboard Shortcuts","download.video_playback":"Video Playback","download.play_pause":"Play/Pause","download.seek":"Seek","download.jump_start_end":"Jump to start/end","download.reset_clip":"Reset clip","download.mute_unmute":"Mute/Unmute","download.toggle_subtitles":"Toggle subtitles","download.timeline_editing":"Timeline Editing","download.set_in_out":"Set In/Out points","download.jump_in_out":"Jump to In/Out","download.adjust_start":"Adjust start","download.adjust_end":"Adjust end","download.format_quality":"Format & Quality","download.select_quality":"Select quality","download.cycle_formats":"Cycle formats","download.audio_mode":"Audio mode","download.subtitle_mode":"Subtitle mode","download.actions":"Actions","download.close_dialog":"Close dialog","download.show_help":"Show this help","report.title":"Report Issue","report.subtitle":"Found something wrong with this clip?","report.description":"Help us maintain quality content. Report issues such as:","report.issue_subtitles":"Incorrect or missing subtitles","report.issue_info":"Wrong movie or scene information","report.issue_quality":"Video quality issues","report.issue_inappropriate":"Inappropriate content","report.issue_copyright":"Copyright violations","report.submit":"Report to Moderators","package.feature_100_clips":"100 HD/4K clips per day","package.feature_unlimited_clips":"<strong>Unlimited</strong> HD/4K clips","package.feature_editing":"All editing features","package.feature_conversion":"Format conversion â GIF, MP3, SRT + 4 more","package.feature_bulk":"Bulk downloads","package.feature_bulk_zip":"Bulk ZIP downloads","package.feature_email_support":"Email support","package.feature_priority_support":"Priority support","package.cta_start_pro":"START WITH PRO","package.cta_get_creator":"GET CREATOR","package.badge_best_value":"BEST VALUE","clip.about_this_clip":"About this clip","clip.more_from":"More from {movie}","clip.duration":"Duration","clip.duration_seconds":"{duration} seconds","clip.views":"Views","clip.timestamp_in_movie":"Timestamp in Movie","clip.uploaded":"Uploaded","clip.season":"Season","clip.episode":"Episode","clip.genres":"Genres","clip.production":"Production","clip.hd_strip_text":"Better quality available for this clip.","clip.hd_strip_cta":"Get PRO","clip.hd_strip_dismiss":"Dismiss","clip.movie_summary":"Movie Summary","clip.actors":"Actors","clip.available_in_languages":"Available in <strong>{count} languages</strong>","clip.watch_hd_get_pro":"To watch in HD, get","comments.add_comment_placeholder":"Add a comment...","comments.submit":"Comment","comments.join_conversation":"Join the conversation","comments.login_to_comment":"Log in or create an account to leave a comment","comments.login":"Log In","comments.login_to_collections":"Please <a href=\"login/\" class=\"whiteLink\">log in</a> to add to collections.","report.submitted":"Report Submitted","report.thank_you_message":"Thank y
273ou for helping us maintain quality content. Our moderation team will review your report shortly.","report.return_home":"Return to Home","error.review_spam":"Review contains spam content","error.rating_saved":"Rating saved successfully","error.database_error":"Database error","error.too_many_requests":"Too many requests","error.trial_used":"You already used your trial. <a href=\"/order\">Get PRO</a>","upload.missing_fields":"Missing required fields","upload.upload_failed":"Failed to upload file","upload.upload_success":"Clip uploaded successfully","upload.file_too_large":"File size exceeds maximum limit of 100MB","payment.banner_issue":"Payment Issue:","payment.banner_message":"Your last payment failed. Your subscription is still active while we retry.","user.anonymous":"Anonymous","auth.no_account_found":"No account found with that email address","auth.too_many_resets":"Too many reset requests. Please try again later.","auth.database_error":"Database error occurred","auth.email_sent_set_password":"We've sent you an email to set your password","auth.email_sent_reset":"Password reset email sent successfully","auth.email_send_failed":"Failed to send email","auth.invalid_or_expired_token":"Invalid or expired reset token","auth.password_too_short":"Password must be at least 8 characters long","auth.password_updated":"Password updated successfully","auth.password_update_failed":"Failed to update password","collection.untitled":"Collection","search.placeholder":"Search a quote or a movie","nav.new_badge":"NEW","nav.search_tooltip":"Search for Movie quote","player.audio":"Audio","player.subtitles":"Subtitles","player.subtitles_off":"Off","player.preferred_lang_set":"Preferred language set to {lang}","player.audio_language":"Audio language","player.subtitle_language":"Subtitle language","player.audio_label":"Audio: {lang}","download.preparing":"Preparing download...","download.download_started":"Download started!","download.processing_video":"Processing video...","download.processing_video_time":"Processing video... {seconds}s","download.starting_download":"Starting download...","download.downloading_progress":"Downloading {size} MB ({percent}%)","download.downloading_size":"Downloading {size} MB...","download.download_complete":"Download complete!","download.error_retry":"Error - Click to retry","limit.title":"Daily Download Limit Reached","limit.reached":"You have reached your daily download limit of {limit} downloads.","limit.current_today":"Current downloads today:","limit.reset_in":"Your limit will reset in:","limit.calculating":"Calculating...","limit.upgrade_prompt":"Upgrade for higher daily limits:","limit.plan_limit":"{plan}: {count} downloads per day","limit.plan_unlimited":"{plan}: unlimited downloads per day","limit.upgrade_now":"Upgrade Now","limit.refresh":"Refresh Limits","limit.refreshing":"Refreshing...","limit.refreshed":"Limits Refreshed!","limit.downloads_available":"Great! You now have {count} downloads available. You can close this dialog and continue downloading.","limit.still_at_limit":"Limits refreshed, but you are still at your daily limit. Your subscription may need time to process.","limit.refresh_failed":"Failed to refresh limits. Please try again.","limit.reset_now":"Now! You can try downloading again.","bulk.already_in_progress":"Bulk download already in progress. Please wait for it to complete or cancel it first.","bulk.confirm_page":"This will download all clips on this page from \"{movie}\"{details}.","bulk.confirm_all":"This will download all {count} clips from \"{movie}\" one by one.","bulk.each_counts":"Each clip counts towards your daily download limit.","bulk.pause_resume_cancel":"You can pause/resume or cancel at any time.","bulk.continue_confirm":"Continue with bulk download?","bulk.title":"Bulk Download in Progress","bulk.downloading_from":"Downloading clips from \"{movie}\"","bulk.loading_list":"Loading clip list... ({current} / {total})","bulk.stats":"Downloaded: {downloaded} | Failed: {failed} | Remaining: {remaining}","bulk.pause":"Pause","bulk.resume":"Resume","bulk.cancel":"Cancel","bulk.background_note":"Downloads continue in background. Keep tab open for best results.","bulk.status_paused":"Paused","bulk.status_rate_limit":"Rate limit reached","bulk.status_downloading":"Downloading","bulk.partial_warning":"You can only download {count} more clips today.","bulk.partial_confirm":"Continue with partial download?","bulk.error_starting":"Error starting bulk download: {error}","bulk.button_text":"Bulk Download","bulk.loading":"Loading...","bulk.resuming":"Resuming...","pro.required_title":"PRO Subscription Required","pro.bulk_premium":"Bulk download is a premium feature available to PRO subscribers only.","pro.benefits_title":"PRO Benefits:","pro.benefit_plan_limit":"{plan}: {count} HD/4K downloads per day + bulk downloads","pro.benefit_plan_unlimited":"{plan}: unlimited HD/4K downloads + bulk ZIP downloads","pro.benefit_bulk_included":"Bulk downloads on every paid plan","pro.benefit_hd":"HD Quality downloads","pro.get_pro":"Get PRO","common.close":"Close","movie.rating_submitted":"Rating Submitted!","movie.thank_you_rating":"Thank y
273ou for rating this movie","movie.your_review_label":"Your Review:","clip.screenshot":"Screenshot","download.audio_muted":"Audio muted","download.audio_unmuted":"Audio unmuted","video.formats_require_pro":"Some formats require PRO","video.speed_requires_pro":"Speed options require PRO","bulk.all_completed":"All downloads completed!","bulk.complete_title":"Bulk Download Complete!","bulk.successfully_downloaded":"Successfully downloaded:","bulk.failed_downloads":"Failed downloads:","bulk.close_dialog":"You can close this dialog now.","apikeys.login_required":"Log in to see your API-Keys","apikeys.closed_title":"The Clip.Cafe API is closed","apikeys.closed_body":"The API is no longer offered and new keys are not issued. No subscription includes API access.","apikeys.title":"Your API-Keys","apikeys.generate":"Generate new key","apikeys.documentation":"Documentation","apikeys.col_key":"API-Key","apikeys.col_date":"Date created","apikeys.col_tier":"Tier","apikeys.col_requests":"Requests","apikeys.col_downloads":"Downloads","apikeys.col_delete":"Delete","apikeys.confirm_generate":"Generate a new API key?","apikeys.confirm_delete":"Are you sure you want to delete this API key? This action cannot be undone.","collection.login_to_search":"+ Login to search in your collections","collection.create_collection":"+ Create movie collection","collection.create_to_search":"+ Create movie collection to search within","collection.movies_count":"{count} movies","movie.unknown_movie":"Unknown Movie","comment.login_required":"Please log in to comment.","comment.clip_not_found":"Clip not found.","comment.rate_limited":"Too many comment attempts. Please wait before posting again.","comment.spam_blocked":"Comment contains spam content and was blocked.","comment.too_short":"Comment is too short (minimum 4 characters).","comment.fields_required":"Comment and clip ID are required.","video.pro_required_hd":"Need PRO account for HD quality","video.pro_feature_required":"PRO Feature Required","video.pro_subtitle_burn":"Burning non-English subtitles into video requires a PRO subscription.","video.pro_subtitle_download":"Downloading subtitles in languages other than English requires a PRO subscription.","video.upgrade_to_pro":"Upgrade to PRO","video.go_back":"Go Back","video.file_not_found":"Video File Not Found","video.file_unavailable":"The video file is temporarily unavailable. This issue has been logged.","video.download_link_expired":"This download link has expired. Please refresh the page and try again.","lang_detect.title":"Language Detected","lang_detect.message":"We noticed your browser is set to {language}. The site has been switched to match your preference.","lang_detect.continue":"Continue in {language}","lang_detect.switch_english":"Switch to English","daily.board_next":"Next miss reveals","daily.lbl_quote":"A line from the scene","daily.about":"About the same","daily.clue_scene3_desc":"The most-watched scene from this film.","daily.frame_alt":"A frame from the mystery movie clip","daily.seo_desc_today":"Guess the movie from one clip. You start with a scene almost nobody knows, and every miss unlocks another clip from the same film. Free, new every day.","daily.seo_desc_dated":"Play The Daily Clip #{no} from {date}. Guess the movie in {n} tries: you start with a scene almost nobody knows, and every miss unlocks another clip from the same film. Free, no sign-up.","daily.seo_desc_dated_stats":"The Daily Clip #{no} from {date}: {players} players took it on, {pct}% solved it, and the winners needed {avg} guesses on average. Play it yourself in {n} tries.","daily.seo_desc_archive":"Every past Daily Clip puzzle â {n} movie clips to guess, one per day. Pick any date and play it in full, free and with no sign-up.","daily.seo_desc_leaderboard":"The Daily Clip leaderboard â longest streaks, most wins, best average and today's fastest solvers in the daily movie guessing game.","daily.seo_stats_line":"{players} players have tried this one. {pct}% got it, in {avg} guesses on average.","daily.archive_intro":"Every Daily Clip published so far â {n} puzzles. Each one plays exactly like today's: {g} guesses, and every miss reveals a little more of the film.","daily.about_h2":"About The Daily Clip","daily.about_p1":"One movie scene, seven guesses, a new puzzle every day at midnight UTC. The clip is drawn from the Clip.Cafe library of film scenes, so the answer is always a real film with a real scene behind it â and when you finish you can watch that scene in full.","daily.about_p2":"C
273ome back tomorrow to build a streak, or dig into the archive and play every puzzle you have missed. Sign in and your streak, wins and average follow you across devices and onto the leaderboard.","daily.reel_label":"Clips unlocked so far","daily.reel_slide":"Clip {n} of {m}","daily.reel_prev":"Previous clip","daily.reel_next":"Next clip","search.name_fallback_notice":"clips from movies, cast and characters matching “{word}” — no exact match in the dialogue.","find.name_fallback_notice":"No exact match for what you typed â showing clips from movies, cast and characters with a matching or similar name.","search.fuzzy_fallback_notice":"clips matching a close spelling of “{word}” — nothing says it exactly as typed.","search.mixed_fallback_notice":"clips matching “{word}” read as a quote plus a movie, cast or character name â nothing says all of it.","search.title_fallback_notice":"clips from the movie “{word}”.","find.title_fallback_notice":"Showing clips from the movie {name}.","find.mixed_fallback_notice":"No clip says all of that â read as a quote plus a movie, cast or character name.","find.rate_limited":"Too many searches â please wait {secs}s and try again.","daily.give_up":"Give up","daily.give_up_confirm":"Give up and see the answer?","daily.give_up_yes":"Show me the answer","daily.give_up_no":"Keep playing","daily.streak_chip":"Current streak: {n}","daily.coach_guess":"Recognise it? Type the movie here.","daily.coach_skip":"No idea yet? Skip â it buys the next clip and an extra fact.","daily.coach_dismiss":"Dismiss","daily.pct_lost":"of players also missed this one","review.prompt_title":"Like what we're doing?","review.prompt_stars_hint":"Opens Trustpilot","review.prompt_star_label":"Rate {count} out of 5","review.prompt_later":"Maybe later","review.prompt_close":"Close","review.prompt_thanks":"Thank you! Opening Trustpilotâ¦","review.prompt_body":"A star rating helps us keep improving Clip.Cafe.","lang.en":"English","lang.fr":"French","lang.es":"Spanish","lang.de":"German","lang.it":"Italian","lang.pt":"Portuguese","lang.nl":"Dutch","lang.pl":"Polish","lang.ro":"Romanian","lang.hu":"Hungarian","lang.bg":"Bulgarian","lang.cs":"Czech","lang.sk":"Slovak","lang.sl":"Slovenian","lang.hr":"Croatian","lang.sr":"Serbian","lang.bs":"Bosnian","lang.mk":"Macedonian","lang.sq":"Albanian","lang.el":"Greek","lang.tr":"Turkish","lang.uk":"Ukrainian","lang.ru":"Russian","lang.be":"Belarusian","lang.sv":"Swedish","lang.da":"Danish","lang.no":"Norwegian","lang.fi":"Finnish","lang.is":"Icelandic","lang.ja":"Japanese","lang.ko":"Korean","lang.zh":"Chinese","lang.th":"Thai","lang.vi":"Vietnamese","lang.id":"Indonesian","lang.ms":"Malay","lang.tl":"Filipino","lang.my":"Burmese","lang.km":"Khmer","lang.lo":"Lao","lang.hi":"Hindi","lang.ta":"Tamil","lang.te":"Telugu","lang.bn":"Bengali","lang.mr":"Marathi","lang.gu":"Gujarati","lang.kn":"Kannada","lang.ml":"Malayalam","lang.pa":"Punjabi","lang.or":"Odia","lang.as":"Assamese","lang.ur":"Urdu","lang.ne":"Nepali","lang.si":"Sinhala","lang.ar":"Arabic","lang.fa":"Persian","lang.he":"Hebrew","lang.ku":"Kurdish","lang.sw":"Swahili","lang.af":"Afrikaans","lang.am":"Amharic","lang.zu":"Zulu","lang.ca":"Catalan","lang.eu":"Basque","lang.gl":"Galician","lang.cy":"Welsh","lang.ga":"Irish","lang.gd":"Scottish Gaelic","lang.et":"Estonian","lang.lv":"Latvian","lang.lt":"Lithuanian","lang.ka":"Georgian","lang.hy":"Armenian","lang.az":"Azerbaijani","lang.kk":"Kazakh","lang.uz":"Uzbek","lang.tg":"Tajik","lang.mn":"Mongolian"};window.CURRENT_LANG = "en";window.LANG_AUTO_DETECTED=false;window.I18N_LANGUAGES={"en":{"name":"English","nativeName":"English","flag":"gb","dir":"ltr"},"es":{"name":"Spanish","nativeName":"Español","flag":"es","dir":"ltr"},"pt":{"name":"Portuguese","nativeName":"Português","flag":"br","dir":"ltr"},"fr":{"name":"French","nativeName":"Français","flag":"fr","dir":"ltr"},"de":{"name":"German","nativeName":"Deutsch","flag":"de","dir":"ltr"},"it":{"name":"Italian","nativeName":"Italiano","flag":"it","dir":"ltr"},"tr":{"name":"Turkish","nativeName":"Türkçe","flag":"tr","dir":"ltr"},"zh":{"name":"Chinese","nativeName":"䏿","flag":"cn","dir":"ltr"},"ja":{"name":"Japanese","nativeName":"æ¥æ¬èª","flag":"jp","dir":"ltr"},"ko":{"name":"Korean","nativeName":"íêµì´","flag":"kr","dir":"ltr"},"id":{"name":"Indonesian","nativeName":"Bahasa Indonesia","flag":"id","dir":"ltr"}
273,"ar":{"name":"Arabic","nativeName":"Ø§ÙØ¹Ø±Ø¨ÙØ©","flag":"sa","dir":"ltr"}};(function(){try{var ls=localStorage.getItem("preferred_lang");if(!ls||ls===CURRENT_LANG){if(CURRENT_LANG)localStorage.setItem("preferred_lang",CURRENT_LANG);return}if(/[?&]lang=/.test(location.search)){localStorage.setItem("preferred_lang",CURRENT_LANG);return}if(sessionStorage.getItem("_lr"))return;sessionStorage.setItem("_lr","1");document.cookie="preferred_lang="+ls+";path=/;max-age=31536000;SameSite=Lax"+(location.protocol==="https:"?";Secure":"");location.reload()}catch(e){}})();</script>
273<script src="js/i18n.js?i=1770154920" defer></script>
273<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/hls.min.js" defer></script>
273<script>window.LANG_CONFIG = {"labels":{"en":"English","fr":"French","es":"Spanish","de":"German","it":"Italian","pt":"Portuguese","nl":"Dutch","pl":"Polish","ro":"Romanian","hu":"Hungarian","bg":"Bulgarian","cs":"Czech","sk":"Slovak","sl":"Slovenian","hr":"Croatian","sr":"Serbian","bs":"Bosnian","mk":"Macedonian","sq":"Albanian","el":"Greek","tr":"Turkish","uk":"Ukrainian","ru":"Russian","be":"Belarusian","sv":"Swedish","da":"Danish","no":"Norwegian","fi":"Finnish","is":"Icelandic","ja":"Japanese","ko":"Korean","zh":"Chinese","th":"Thai","vi":"Vietnamese","id":"Indonesian","ms":"Malay","tl":"Filipino","my":"Burmese","km":"Khmer","lo":"Lao","hi":"Hindi","ta":"Tamil","te":"Telugu","bn":"Bengali","mr":"Marathi","gu":"Gujarati","kn":"Kannada","ml":"Malayalam","pa":"Punjabi","or":"Odia","as":"Assamese","ur":"Urdu","ne":"Nepali","si":"Sinhala","ar":"Arabic","fa":"Persian","he":"Hebrew","ku":"Kurdish","sw":"Swahili","af":"Afrikaans","am":"Amharic","zu":"Zulu","ca":"Catalan","eu":"Basque","gl":"Galician","cy":"Welsh","ga":"Irish","gd":"Scottish Gaelic","et":"Estonian","lv":"Latvian","lt":"Lithuanian","ka":"Georgian","hy":"Armenian","az":"Azerbaijani","kk":"Kazakh","uz":"Uzbek","tg":"Tajik","mn":"Mongolian"},"aliases":{"eng":"en","enu":"en","fra":"fr","fre":"fr","spa":"es","spn":"es","esp":"es","deu":"de","ger":"de","ita":"it","por":"pt","pob":"pt","ptu":"pt","rus":"ru","jpn":"ja","jap":"ja","kor":"ko","zho":"zh","chi":"zh","cmn":"zh","yue":"zh","ara":"ar","hin":"hi","nld":"nl","dut":"nl","pol":"pl","tur":"tr","swe":"sv","dan":"da","nor":"no","nob":"no","nno":"no","nn":"no","nb":"no","fin":"fi","ces":"cs","cze":"cs","ell":"el","gre":"el","heb":"he","tha":"th","vie":"vi","ind":"id","msa":"ms","may":"ms","ukr":"uk","ron":"ro","rum":"ro","hun":"hu","bul":"bg","srp":"sr","hrv":"hr","bos":"bs","slv":"sl","slk":"sk","fil":"tl","tgl":"tl","lao":"lo","tam":"ta","tel":"te","mar":"mr","ben":"bn","nep":"ne","sin":"si","fas":"fa","per":"fa","cat":"ca","glg":"gl","eus":"eu","baq":"eu","cym":"cy","gle":"ga","gla":"gd","mkd":"mk","mac":"mk","sqi":"sq","alb":"sq","bel":"be","isl":"is","ice":"is","mya":"my","bur":"my","khm":"km","guj":"gu","kan":"kn","mal":"ml","pan":"pa","ori":"or","asm":"as","urd":"ur","kur":"ku","swa":"sw","afr":"af","amh":"am","zul":"zu","est":"et","lav":"lv","lit":"lt","kat":"ka","geo":"ka","hye":"hy","arm":"hy","aze":"az","kaz":"kk","uzb":"uz","tgk":"tg","mon":"mn"},"flags":{"en":"gb","fr":"fr","es":"es","de":"de","it":"it","pt":"pt","nl":"nl","pl":"pl","ro":"ro","hu":"hu","bg":"bg","cs":"cz","sk":"sk","sl":"si","hr":"hr","sr":"rs","bs":"ba","mk":"mk","sq":"al","el":"gr","tr":"tr","uk":"ua","ru":"ru","be":"by","sv":"se","da":"dk","no":"no","fi":"fi","is":"is","ja":"jp","ko":"kr","zh":"cn","th":"th","vi":"vn","id":"id","ms":"my","tl":"ph","my":"mm","km":"kh","lo":"la","hi":"in","ta":"in","te":"in","bn":"in","mr":"in","gu":"in","kn":"in","ml":"in","pa":"in","or":"in","as":"in","ur":"pk","ne":"np","si":"lk","ar":"sa","fa":"ir","he":"il","ku":"iq","sw":"ke","af":"za","am":"et","zu":"za","ca":"es","eu":"es","gl":"es","cy":"gb","ga":"ie","gd":"gb","et":"ee","lv":"lv","lt":"lt","ka":"ge","hy":"am","az":"az","kk":"kz","uz":"uz","tg":"tj","mn":"mn"}};window.PRO_PLANS = [{"name":"PRO","downloads":100,"unlimited":false},{"name":"Creator","downloads":9999,"unlimited":true}];window.isLoggedIn = false;window.USER_PREFERRED_LANG = "";</script>
273<script src="js/autocomplete-unified.js?i=1780551707" defer></script>
273<script src="js/search-select.js?i=1769240009" defer></script>
273<script src="js/player-ui.js?i=1789148030" defer></script>
273<script src="js/ui-telemetry.js?i=1790426671" defer></script>
273<script onload="initMain();" src="js/main_min.js?i=1790426701" defer></script>
273 274 275
275<script> 276 if (typeof startunder !== 'function') { var startunder = function() { return true; } } 277 if (typeof initAds !== 'function') { var initAds = function() { return true; } } 278 </script>
278 279 280
280<script> 281 function initMain(){ 282 var lazyLoadInstance = new LazyLoad({ 283 elements_selector: ".lazyImg", 284 threshold: 700, 285 class_error: "lazyImgError" 286 }); 287 288 if(getCookie('floater')){ 289 290 } 291 292 293 294 if(typeof showLangDetectedDialog==='function')showLangDetectedDialog(); 295 } 296 297 window.addEventListener('load', () => { 298 registerSW(); 299 }); 300 301 // Register the Service Worker 302 async function registerSW() { 303 if ('serviceWorker' in navigator) { 304 try { 305 await navigator.serviceWorker.register('/serviceworker.js'); 306 } 307 catch (e) { 308 // Silent fail - SW is optional for functionality 309 } 310 } 311 } 312 313 314 </script>
314 315 316 317
317<script> 318 319 function toggleNavDropdown(event, id) { 320 event.preventDefault(); 321 event.stopPropagation(); 322 323 var dropdown = document.getElementById(id); 324 var allDropdowns = document.getElementsByClassName('nav-dropdown'); 325 var isCurrentlyOpen = dropdown.classList.contains('show'); 326 327 // Close all dropdowns first 328 for (var i = 0; i < allDropdowns.length; i++) { 329 allDropdowns[i].classList.remove('show'); 330 } 331 332 // Re-open if it wasn't open 333 if (!isCurrentlyOpen && dropdown) { 334 dropdown.classList.add('show'); 335 } 336 } 337 338 // Close dropdowns when clicking outside 339 document.addEventListener('click', function(e) { 340 if (!e.target.closest('.nav-dropdown-wrapper')) { 341 var dropdowns = document.getElementsByClassName('nav-dropdown'); 342 for (var i = 0; i < dropdowns.length; i++) { 343 dropdowns[i].classList.remove('show'); 344 } 345 } 346 }); 347 348 // Toggle mobile language menu 349 function toggleMobileLangMenu() { 350 var switcher = document.querySelector('.mobile-lang-switcher'); 351 if (switcher) { 352 switcher.classList.toggle('open'); 353 } 354 } 355 356 // Switch language by setting cookie + localStorage and reloading 357 function switchLanguage(lang) { 358 // Fired BEFORE the cookie is rewritten, and it is the only signal that separates a 359 // deliberate choice from Accept-Language detection: I18n::init() writes the DETECTED 360 // language into preferred_lang on the very first request, so from then on the cookie 361 // proves only that the visitor has been here, never that anyone picked anything. 362 // CCTrack.event() sends keepalive, which is what survives the reload two lines down. 363 try { 364 var from = window.CURRENT_LANG || ''; 365 if (window.CCTrack && from !== lang) { 366 window.CCTrack.event('ui_language_switched', { from: from, to: lang }); 367 } 368 } catch(e) {} 369 document.cookie = 'preferred_lang=' + lang + ';path=/;max-age=31536000;SameSite=Lax' + (location.protocol === 'https:' ? ';Secure' : ''); 370 try { localStorage.setItem('preferred_lang', lang); } catch(e) {} 371 window.location.reload(); 372 } 373 </script>
373 374 </head> 375 <body class="preload"><a href="https://clip.cafe/cdn-cgi/content?id=4snpvcUq5TNUAGlOlNRXFFhy39r896Qty7krE4vSIpM-1790913533.8056014-1.2.1.1-7IXDOkfur1sgHC6JeW84oi_zGxvhTXJAi06aaINtsvOInu7nOvWJWvNBghJ8ZLx1" aria-hidden="true" rel="nofollow noopener" style="display: none !important; visibility: hidden !important"></a> 376 <!-- WalkStreet Banner --> 377 <div id="walkstreet-banner" style="display:none;"> 378 <a href="https://walkstreetgame.com/?utm_source=clipcafe&utm_medium=banner&utm_campaign=topbar&utm_content=battery_friendly" target="_blank" rel="noopener" id="walkstreet-link"> 379 <img class="ws-banner-icon" src="img/walkstreet-icon.png" width="46" height="46" alt="WalkStreet"> 380 <span class="ws-banner-body"> 381 <span class="ws-banner-text"><b>A GPS game that won't kill your battery.</b> WalkStreet plays in your pocket with the screen off â walk real streets, claim real buildings, and build an empire without draining your phone or your attention.</span> 382 <span class="banner-cta">Play WalkStreet</span> 383 </span> 384 </a> 385 <button id="walkstreet-close" aria-label="Close banner">Ã</button> 386 </div> 387
387<script> 388 (function(){ 389 // Check if banner was dismissed 390 try { 391 if(!localStorage.getItem('hide_walkstreet_banner')){ 392 var banner = document.getElementById('walkstreet-banner'); 393 if(banner){ 394 banner.style.display = 'flex'; 395 // Delayed slide-up entrance 396 setTimeout(function(){ 397 banner.classList.add('ws-show'); 398 document.body.classList.add('has-banner'); 399 }, 1200); 400 401 // Close handler â slide out, then hide 402 document.getElementById('walkstreet-close').addEventListener('click', function(e){ 403 e.preventDefault(); 404 banner.classList.remove('ws-show'); 405 document.body.classList.remove('has-banner'); 406 setTimeout(function(){ banner.style.display = 'none'; }, 400); 407 localStorage.setItem('hide_walkstreet_banner', '1'); 408 }); 409 } 410 } 411 } catch(e) {} 412 })(); 413 </script>
413 414 415 416 417
417<script> 418 // Remove preload class after page loads to enable transitions 419 window.addEventListener('load', function() { 420 document.body.classList.remove('preload'); 421 try { sessionStorage.removeItem('_lr'); } catch(e) {} 422 }); 423 </script>
423 424 425 <form id="searchForm" name="searchForm" onsubmit="event.preventDefault(); searchNow(event);" action="/" method="GET"> 426 427 <header class="page-header"> 428 <nav> 429 <div class="trigger-menu-wrapper"> 430 431 <a class="logo" href="/" title="Go to homepage"><img src="img/clipcafe-logo.svg" alt="Clip Cafe logo" height="30" width="35"> <span>ClipCafe</span></a> 432 <a href="https://www.help99.co/our-initiatives#active-campaigns" rel="noopener nofollow" title="Help Ukraine" class="uaflag"></a> 433 434 <div class="hidefrommobile"> 435 436 <a class="glowwhite login-link" href="login/" aria-label="Login" title="Login"> 437 <i class="bi bi-person-circle login-icon" aria-hidden="true"></i><span class="login-text">Login</span> 438 </a> 439 440 <div class="nav-dropdown-wrapper"> 441 <span class="nav-link glowwhite" style="cursor:pointer" onclick="toggleNavDropdown(event, 'browse-dropdown')">Browse <span class="user-dropdown-arrow" style="font-size: 10px;">â¼</span></span> 442 <div class="nav-dropdown" id="browse-dropdown"> 443 <a href="spotlight/" class="nav-dropdown-item"> 444 <span class="nav-dropdown-icon"><i class="bi bi-camera-reels-fill"></i></span> 445 <div class="nav-dropdown-info"> 446 <span class="nav-dropdown-title">Spotlight</span> 447 <span class="nav-dropdown-desc">Curated highlights</span> 448 </div> 449 </a><a href="categories/" class="nav-dropdown-item"> 450 <span class="nav-dropdown-icon"><i class="bi bi-grid-fill"></i></span> 451 <div class="nav-dropdown-info"> 452 <span class="nav-dropdown-title">Genres</span> 453 <span class="nav-dropdown-desc">Browse by category</span> 454 </div> 455 </a><a href="movies-by-year" class="nav-dropdown-item"> 456 <span class="nav-dropdown-icon"><i class="bi bi-calendar-event-fill"></i></span> 457 <div class="nav-dropdown-info"> 458 <span class="nav-dropdown-title">Years</span> 459 <span class="nav-dropdown-desc">Browse by year</span> 460 </div> 461 </a> 462 </div> 463 </div> 464 465 <a class="glowwhite" href="https://discord.gg/kyKmte9CPp" target="_blank" rel="noopener" title="Discord"> 466 Discord 467 </a> 468 469 <div class="nav-dropdown-wrapper"> 470 <span class="nav-link glowwhite" style="cursor:pointer;position:relative" onclick="toggleNavDropdown(event, 'games-dropdown')">Games<span class="badge-new-pulse">NEW</span></span> 471 <div class="nav-dropdown" id="games-dropdown"> 472 <a href="https://gtm.clip.cafe/" class="nav-dropdown-item"> 473 <span class="nav-dropdown-icon">ð¬</span> 474 <div class="nav-dropdown-info"> 475 <span class="nav-dropdown-title">Guess The Movie</span> 476 <span class="nav-dropdown-desc">The classic movie quiz</span> 477 </div> 478 </a><a href="https://daily.clip.cafe/" class="nav-dropdown-item"> 479 <span class="nav-dropdown-icon">ð¿</span> 480 <div class="nav-dropdown-info"> 481 <span class="nav-dropdown-title nav-dropdown-title-new">The Daily Clip<span class="badge-new-pulse">NEW</span></span> 482 <span class="nav-dropdown-desc">New puzzle every day!</span> 483 </div> 484 </a><a href="https://clipcafe.games/" class="nav-dropdown-item" target="_blank" rel="noopener">
485 <span class="nav-dropdown-icon">ð</span> 486 <div class="nav-dropdown-info"> 487 <span class="nav-dropdown-title">Party Game</span> 488 <span class="nav-dropdown-desc">Multiplayer fun!</span> 489 </div> 490 </a> 491 </div> 492 </div> 493 494 <a class="get-pro-btn" href="pro" title="Unlock HD downloads and premium features"><i class="bi bi-star-fill"></i> Upgrade</a> 495 496 </div> 497 498 <!-- Mobile top bar: Upgrade pill + user menu. Search and the drawer toggle live in the bottom dock. --> 499 <a class="get-pro-btn get-pro-btn-top hidefrompc" href="pro" title="Unlock HD downloads and premium features"><i class="bi bi-star-fill"></i> Upgrade</a> 500 <div class="hidefrompc"> 501 <a class="glowwhite login-link" href="login/" aria-label="Login" title="Login"> 502 <i class="bi bi-person-circle login-icon" aria-hidden="true"></i><span class="login-text">Login</span> 503 </a> 504 </div> 505 506 507 <input type="checkbox" id="searchToggle"> 508 <div class="search-bar" id="nav"> 509 510 511 <label for="searchToggle" class="searchButtonClose"> 512 <img src="img/close.svg" height="35" width="35" alt="Close"> 513 </label> 514 515 516 <div id="searchbox"> 517 518 <input type="search" class="buttonWhite searchField" id="searchinclips" name="s" value="" aria-label="Search box" dir="ltr" spellcheck=false autocomplete="off" autocapitalize="off" maxlength="2048" tabindex="1"> 519 <input type="hidden" name="usersearch" value="1"> 520 <button type="submit" aria-label="Search button"><img src="img/search.svg" height="25" width="25" alt="Search button"></button> 521 </div> 522 523 524 525 526 </div> 527 528 529 </div> 530 531 532 <div class="mobile-dock" role="navigation" aria-label="Menu"> 533 <div class="dock-sheet" id="dockGamesSheet"> 534 <a href="https://gtm.clip.cafe/" class="nav-dropdown-item"> 535 <span class="nav-dropdown-icon">ð¬</span> 536 <div class="nav-dropdown-info"> 537 <span class="nav-dropdown-title">Guess The Movie</span> 538 <span class="nav-dropdown-desc">The classic movie quiz</span> 539 </div> 540 </a><a href="https://daily.clip.cafe/" class="nav-dropdown-item"> 541 <span class="nav-dropdown-icon">ð¿</span> 542 <div class="nav-dropdown-info"> 543 <span class="nav-dropdown-title nav-dropdown-title-new">The Daily Clip<span class="badge-new-pulse">NEW</span></span> 544 <span class="nav-dropdown-desc">New puzzle every day!</span> 545 </div> 546 </a><a href="https://clipcafe.games/" class="nav-dropdown-item" target="_blank" rel="noopener"> 547 <span class="nav-dropdown-icon">ð</span> 548 <div class="nav-dropdown-info"> 549 <span class="nav-dropdown-title">Party Game</span> 550 <span class="nav-dropdown-desc">Multiplayer fun!</span> 551 </div> 552 </a> 553 </div> 554 <a class="dock-item" id="dockHome" href="/"> 555 <i class="bi bi-house-door-fill dock-icon" aria-hidden="true"></i> 556 <span class="dock-label">Home</span> 557 </a> 558 <label class="dock-item" id="dockSearch" for="searchToggle" title="Search for Movie quote" onclick="setTimeout(() => { document.getElementById('searchinclips').focus();}, 100);">
559 <span class="dock-count" id="dockSearchCount" hidden></span> 560 <i class="bi bi-search dock-icon" aria-hidden="true"></i> 561 <span class="dock-label">Search</span> 562 </label> 563 <button type="button" class="dock-item" id="dockGames" data-new-games="daily" aria-expanded="false" aria-controls="dockGamesSheet"> 564 <span class="dock-icon-wrap"><span class="dock-new-dot"></span><i class="bi bi-controller dock-icon" aria-hidden="true"></i></span> 565 <span class="dock-label">Games</span> 566 </button> 567 <button type="button" class="dock-item dock-menu" aria-label="Open Menu"> 568 <i class="bi bi-list dock-icon" aria-hidden="true"></i> 569 <span class="dock-label">Menu</span> 570 </button> 571 </div> 572 573 <div class="menu"> 574 <div class="menu-inner"> 575 576 <li class="mobile-lang-switcher"><div class="mobile-lang-current" onclick="toggleMobileLangMenu()"><span class="mobile-lang-label"><i class="bi bi-globe2"></i> Language</span><span class="mobile-lang-value"><img src="https://flagcdn.com/w40/gb.png" width="20" height="15" alt="" style="border-radius: 2px; vertical-align: middle;"> English <span class="mobile-lang-arrow">â¼</span></span></div><div class="mobile-lang-options" id="mobile-lang-options"><a href="#" onclick="switchLanguage('en'); return false;" class="mobile-lang-option active"><img src="https://flagcdn.com/w40/gb.png" width="20" height="15" alt="" style="border-radius: 2px;"> English <span style="color: #ff892e;">â</span></a><a href="#" onclick="switchLanguage('es'); return false;" class="mobile-lang-option"><img src="https://flagcdn.com/w40/es.png" width="20" height="15" alt="" style="border-radius: 2px;"> Español</a><a href="#" onclick="switchLanguage('pt'); return false;" class="mobile-lang-option"><img src="https://flagcdn.com/w40/br.png" width="20" height="15" alt="" style="border-radius: 2px;"> Português</a><a href="#" onclick="switchLanguage('fr'); return false;" class="mobile-lang-option"><img src="https://flagcdn.com/w40/fr.png" width="20" height="15" alt="" style="border-radius: 2px;"> Français</a><a href="#" onclick="switchLanguage('de'); return false;" class="mobile-lang-option"><img src="https://flagcdn.com/w40/de.png" width="20" height="15" alt="" style="border-radius: 2px;"> Deutsch</a><a href="#" onclick="switchLanguage('it'); return false;" class="mobile-lang-option"><img src="https://flagcdn.com/w40/it.png" width="20" height="15" alt="" style="border-radius: 2px;"> Italiano</a><a href="#" onclick="switchLanguage('tr'); return false;" class="mobile-lang-option"><img src="https://flagcdn.com/w40/tr.png" width="20" height="15" alt="" style="border-radius: 2px;"> Türkçe</a><a href="#" onclick="switchLanguage('zh'); return false;" class="mobile-lang-option"><img src="https://flagcdn.com/w40/cn.png" width="20" height="15" alt="" style="border-radius: 2px;"> 䏿</a><a href="#" onclick="switchLanguage('ja'); return false;" class="mobile-lang-option"><img src="https://flagcdn.com/w40/jp.png" width="20" height="15" alt="" style="border-radius: 2px;"> æ¥æ¬èª</a><a href="#" onclick="switchLanguage('ko'); return false;" class="mobile-lang-option"><img src="https://flagcdn.com/w40/kr.png" width="20" height="15" alt="" style="border-radius: 2px;"> íêµì´</a><a href="#" onclick="switchLanguage('id'); return false;" class="mobile-lang-option"><img src="https://flagcdn.com/w40/id.png" width="20" height="15" alt="" style="border-radius: 2px;"> Bahasa Indonesia</a><a href="#" onclick="switchLanguage('ar'); return false;" class="mobile-lang-option"><img src="https://flagcdn.com/w40/sa.png" width="20" height="15" alt="" style="border-radius: 2px;"> Ø§ÙØ¹Ø±Ø¨ÙØ©</a></div></li> 577 578 <div class="menu-section"> 579 <div class="menu-sec-title">Browse</div> 580 <a href="spotlight/" class="nav-dropdown-item"> 581 <span class="nav-dropdown-icon"><i class="bi bi-camera-reels-fill"></i></span> 582 <div class="nav-dropdown-info">
583 <span class="nav-dropdown-title">Spotlight</span> 584 <span class="nav-dropdown-desc">Curated highlights</span> 585 </div> 586 </a><a href="categories/" class="nav-dropdown-item"> 587 <span class="nav-dropdown-icon"><i class="bi bi-grid-fill"></i></span> 588 <div class="nav-dropdown-info"> 589 <span class="nav-dropdown-title">Genres</span> 590 <span class="nav-dropdown-desc">Browse by category</span> 591 </div> 592 </a><a href="movies-by-year" class="nav-dropdown-item"> 593 <span class="nav-dropdown-icon"><i class="bi bi-calendar-event-fill"></i></span> 594 <div class="nav-dropdown-info"> 595 <span class="nav-dropdown-title">Years</span> 596 <span class="nav-dropdown-desc">Browse by year</span> 597 </div> 598 </a> 599 </div> 600 601 <div class="menu-section"> 602 <div class="menu-sec-title">Games</div> 603 <a href="https://gtm.clip.cafe/" class="nav-dropdown-item"> 604 <span class="nav-dropdown-icon">ð¬</span> 605 <div class="nav-dropdown-info"> 606 <span class="nav-dropdown-title">Guess The Movie</span> 607 <span class="nav-dropdown-desc">The classic movie quiz</span> 608 </div> 609 </a><a href="https://daily.clip.cafe/" class="nav-dropdown-item"> 610 <span class="nav-dropdown-icon">ð¿</span> 611 <div class="nav-dropdown-info"> 612 <span class="nav-dropdown-title nav-dropdown-title-new">The Daily Clip<span class="badge-new-pulse">NEW</span></span> 613 <span class="nav-dropdown-desc">New puzzle every day!</span> 614 </div> 615 </a><a href="https://clipcafe.games/" class="nav-dropdown-item" target="_blank" rel="noopener"> 616 <span class="nav-dropdown-icon">ð</span> 617 <div class="nav-dropdown-info"> 618 <span class="nav-dropdown-title">Party Game</span> 619 <span class="nav-dropdown-desc">Multiplayer fun!</span> 620 </div> 621 </a> 622 </div> 623 624 <div class="menu-section"> 625 <div class="menu-sec-title">Community</div> 626 <a href="https://discord.gg/kyKmte9CPp" target="_blank" rel="noopener" class="nav-dropdown-item"> 627 <span class="nav-dropdown-icon"><i class="bi bi-discord"></i></span> 628 <div class="nav-dropdown-info"> 629 <span class="nav-dropdown-title">Discord</span> 630 <span class="nav-dropdown-desc">Chat, requests & support</span> 631 </div> 632 </a> 633 </div> 634 635 <a class="get-pro-btn-mobile" href="pro" title="Unlock HD downloads and premium features"><i class="bi bi-star-fill"></i> Upgrade</a> 636 637 <div class="trustpilot-badge m-33-a"> 638 <a href="https://www.trustpilot.com/review/clip.cafe" target="_blank"> 639 <div class="badge-content"> 640 <div class="badge-score">4.6</div> 641 <div class="badge-rating">Excellent</div> 642 <div class="badge-stars">â â â â â</div> 643 </div> 644 </a> 645 </div> 646 647 </div> 648 </div> 649 650 651 652 <div class="searchFilters"> 653 654 655 <label for="onlyCaption"> 656 <input name="onlyCaption" type="checkbox" id="onlyCaption" checked> 657 Scene Description 658 </label> 659 660 661 <label for="onlyTranscript"> 662 <input name="onlyTranscript" type="checkbox" id="onlyTranscript" checked> 663 Transcript 664 </label> 665 666 667 668 <input name="title" data-query="send/frontpagefilter=1&movie=1" class="searchFilter searchField" type="text" placeholder="Movie" value="" aria-label="Movie" autocomplete="off"> 669 670 <input name="actor" data-query="send/frontpagefilter=1&actor=1" class="searchFilter searchField" type="text" placeholder="Actor" value="" aria-label="Actor" autocomplete="off"> 671 672 <input name="character" data-query="send/frontpagefilter=1&character=1" class="searchFilter searchField" type="text" placeholder="Character" value="" aria-label="Character" autocomplete="off"> 673 674 <input name="director" data-query="send/frontpagefilter=1&director=1" class="searchFilter searchField" type="text" placeholder="Director" value="" aria-label="Director" autocomplete="off"> 675 676 <input name="writer" data-query="send/frontpagefilter=1&writer=1" class="searchFilter searchField" type="text" placeholder="Writer" value="" aria-label="Writer" autocomplete="off"> 677 678 <select name="genre" class="searchFilter searchField" aria-label="Genre"><option value="">All Genres</option><option value="action">Action</option><option value="adult">Adult</option><option value="adventure">Adventure</option><option value="animation">Animation</option><option value="biography">Biography</option><option value="comedy">Comedy</option><option value="crime">
678Crime</option><option value="documentary">Documentary</option><option value="drama">Drama</option><option value="family">Family</option><option value="fantasy">Fantasy</option><option value="film-noir">Film-Noir</option><option value="history">History</option><option value="horror">Horror</option><option value="music">Music</option><option value="musical">Musical</option><option value="mystery">Mystery</option><option value="news">News</option><option value="reality-tv">Reality-TV</option><option value="romance">Romance</option><option value="sci-fi">Sci-Fi</option><option value="short">Short</option><option value="sport">Sport</option><option value="talk-show">Talk-Show</option><option value="thriller">Thriller</option><option value="war">War</option><option value="western">Western</option></select> 679 680 <select name="type" class="searchFilter searchField" aria-label="Movies or TV series"><option value="" selected>Movies & TV</option><option value="movie">Movies only</option><option value="tv">TV series only</option></select><select name="rated" class="searchFilter searchField" aria-label="Content rating"><option value="" selected>Any Rating</option><option value="family">Family (G · PG)</option><option value="teen">Teen (PG-13)</option><option value="mature">Mature (R · TV-MA)</option></select><select name="audio" class="searchFilter searchField" aria-label="Audio language"><option value="">Any audio language</option><option value="ar">ð¸ð¦ Arabic</option><option value="hy">ð¦ð² Armenian</option><option value="az">ð¦ð¿ Azerbaijani</option><option value="eu">ðªð¸ Basque</option><option value="be">ð§ð¾ Belarusian</option><option value="bn">ð®ð³ Bengali</option><option value="bs">ð§ð¦ Bosnian</option><option value="bg">ð§ð¬ Bulgarian</option><option value="my">ð²ð² Burmese</option><option value="ca">ðªð¸ Catalan</option><option value="zh">ð¨ð³ Chinese</option><option value="hr">ðð· Croatian</option><option value="cs">ð¨ð¿ Czech</option><option value="da">ð©ð° Danish</option><option value="nl">ð³ð± Dutch</option><option value="en">ð¬ð§ English</option><option value="et">ðªðª Estonian</option><option value="tl">ðµð Filipino</option><option value="fi">ð«ð® Finnish</option><option value="fr">ð«ð· French</option><option value="gl">ðªð¸ Galician</option><option value="ka">ð¬ðª Georgian</option><option value="de">ð©ðª German</option><option value="el">ð¬ð· Greek</option><option value="gu">ð®ð³ Gujarati</option><option value="he">ð®ð± Hebrew</option><option value="hi">ð®ð³ Hindi</option><option value="hu">ððº Hungarian</option><option value="id">ð®ð© Indonesian</option><option value="it">ð®ð¹ Italian</option><option value="ja">ð¯ðµ Japanese</option><option value="kn">ð®ð³ Kannada</option><option value="kk">ð°ð¿ Kazakh</option><option value="km">ð°ð Khmer</option><option value="ko">ð°ð· Korean</option><option value="lv">ð±ð» Latvian</option><option value="lt">ð±ð¹ Lithuanian</option><option value="ms">ð²ð¾ Malay</option><option value="ml">ð®ð³ Malayalam</option><option value="mr">ð®ð³ Marathi</option><option value="ne">ð³ðµ Nepali</option><option value="no">ð³ð´ Norwegian</option><option value="or">ð®ð³ Odia</option><option value="fa">ð®ð· Persian</option><option value="pl">ðµð± Polish</option><option value="pt">ðµð¹ Portuguese</option><option value="pa">ð®ð³ Punjabi</option><option value="ro">ð·ð´ Romanian</option><option value="ru">ð·ðº Russian</option><option value="sr">ð·ð¸ Serbian</option><option value="si">ð±ð° Sinhala</option><option value="sk">ð¸ð° Slovak</option><option value="sl">ð¸ð® Slovenian</option><option value="es">ðªð¸ Spanish</option><option value="sv">ð¸ðª Swedish</option><option value="ta">ð®ð³ Tamil</option><option value="te">ð®ð³ Telugu</option><option value="th">ð¹ð Thai</option><option value="tr">ð¹ð· Turkish</option><option value="uk">ðºð¦ Ukrainian</option><option value="ur">ðµð° Urdu</option><option value="uz">ðºð¿ Uzbek</option><option value="vi">ð»ð³ Vietnamese</option></select><select name="subs" class="searchFilter searchField" aria-label="Subtitle language"><option value="">Any subtitle language</option><option value="ar">ð¸ð¦ Arabic</option><option value="hy">ð¦ð² Armenian</option><option value="az">ð¦ð¿ Azerbaijani</option><option value="eu">ðªð¸ Basque</option><option value="be">ð§ð¾ Belarusian</option><option value="bn">ð®ð³ Bengali</option><option value="bs">ð§ð¦ Bosnian</option><option value="bg">ð§ð¬ Bulgarian</option><option value="my">ð²ð² Burmese</option><option value="ca">ðªð¸ Catalan</option><option value="zh">ð¨ð³ Chinese</option><option value="hr">ðð· Croatian</option><option value="cs">ð¨ð¿ Czech</option><option value="da">ð©ð° Danish</option><option value="nl">ð³ð± Dutch</option><option value="en">ð¬ð§ English</option><option value="et">ðªðª Estonian</option><option value="tl">ðµð Filipino</option><option value="fi">ð«ð® Finnish</option><option value="fr">ð«ð· French</option><option value="gl">ðªð¸ Galician</option><option value="ka">ð¬ðª Georgian</option><option value="de">ð©ðª German</option><option value="el">ð¬ð· Greek</option><option value="gu">ð®ð³ Gujarati</option><option value="he">ð®ð± Hebrew</option><option value="hi">ð®ð³ Hindi</option><option value="hu">ððº Hungarian</option><option value="id">ð®ð© Indonesian</option><option value="it">ð®ð¹ Italian</option><option value="ja">ð¯ðµ Japanese</option><option value="kn">
680ð®ð³ Kannada</option><option value="kk">ð°ð¿ Kazakh</option><option value="km">ð°ð Khmer</option><option value="ko">ð°ð· Korean</option><option value="lv">ð±ð» Latvian</option><option value="lt">ð±ð¹ Lithuanian</option><option value="ms">ð²ð¾ Malay</option><option value="ml">ð®ð³ Malayalam</option><option value="mr">ð®ð³ Marathi</option><option value="ne">ð³ðµ Nepali</option><option value="no">ð³ð´ Norwegian</option><option value="or">ð®ð³ Odia</option><option value="fa">ð®ð· Persian</option><option value="pl">ðµð± Polish</option><option value="pt">ðµð¹ Portuguese</option><option value="pa">ð®ð³ Punjabi</option><option value="ro">ð·ð´ Romanian</option><option value="ru">ð·ðº Russian</option><option value="sr">ð·ð¸ Serbian</option><option value="si">ð±ð° Sinhala</option><option value="sk">ð¸ð° Slovak</option><option value="sl">ð¸ð® Slovenian</option><option value="es">ðªð¸ Spanish</option><option value="sv">ð¸ðª Swedish</option><option value="ta">ð®ð³ Tamil</option><option value="te">ð®ð³ Telugu</option><option value="th">ð¹ð Thai</option><option value="tr">ð¹ð· Turkish</option><option value="uk">ðºð¦ Ukrainian</option><option value="ur">ðµð° Urdu</option><option value="uz">ðºð¿ Uzbek</option><option value="vi">ð»ð³ Vietnamese</option></select><select name="sl" class="searchFilter searchField" aria-label="Search in"><option value="">Search in: any language</option><option value="ar">ð¸ð¦ Arabic</option><option value="hy">ð¦ð² Armenian</option><option value="az">ð¦ð¿ Azerbaijani</option><option value="eu">ðªð¸ Basque</option><option value="be">ð§ð¾ Belarusian</option><option value="bn">ð®ð³ Bengali</option><option value="bs">ð§ð¦ Bosnian</option><option value="bg">ð§ð¬ Bulgarian</option><option value="my">ð²ð² Burmese</option><option value="ca">ðªð¸ Catalan</option><option value="zh">ð¨ð³ Chinese</option><option value="hr">ðð· Croatian</option><option value="cs">ð¨ð¿ Czech</option><option value="da">ð©ð° Danish</option><option value="nl">ð³ð± Dutch</option><option value="en">ð¬ð§ English</option><option value="et">ðªðª Estonian</option><option value="tl">ðµð Filipino</option><option value="fi">ð«ð® Finnish</option><option value="fr">ð«ð· French</option><option value="gl">ðªð¸ Galician</option><option value="ka">ð¬ðª Georgian</option><option value="de">ð©ðª German</option><option value="el">ð¬ð· Greek</option><option value="gu">ð®ð³ Gujarati</option><option value="he">ð®ð± Hebrew</option><option value="hi">ð®ð³ Hindi</option><option value="hu">ððº Hungarian</option><option value="id">ð®ð© Indonesian</option><option value="it">ð®ð¹ Italian</option><option value="ja">ð¯ðµ Japanese</option><option value="kn">ð®ð³ Kannada</option><option value="kk">ð°ð¿ Kazakh</option><option value="km">ð°ð Khmer</option><option value="ko">ð°ð· Korean</option><option value="lv">ð±ð» Latvian</option><option value="lt">ð±ð¹ Lithuanian</option><option value="ms">ð²ð¾ Malay</option><option value="ml">ð®ð³ Malayalam</option><option value="mr">ð®ð³ Marathi</option><option value="ne">ð³ðµ Nepali</option><option value="no">ð³ð´ Norwegian</option><option value="or">ð®ð³ Odia</option><option value="fa">ð®ð· Persian</option><option value="pl">ðµð± Polish</option><option value="pt">ðµð¹ Portuguese</option><option value="pa">ð®ð³ Punjabi</option><option value="ro">ð·ð´ Romanian</option><option value="ru">ð·ðº Russian</option><option value="sr">ð·ð¸ Serbian</option><option value="si">ð±ð° Sinhala</option><option value="sk">ð¸ð° Slovak</option><option value="sl">ð¸ð® Slovenian</option><option value="es">ðªð¸ Spanish</option><option value="sv">ð¸ðª Swedish</option><option value="ta">ð®ð³ Tamil</option><option value="te">ð®ð³ Telugu</option><option value="th">ð¹ð Thai</option><option value="tr">ð¹ð· Turkish</option><option value="uk">ðºð¦ Ukrainian</option><option value="ur">ðµð° Urdu</option><option value="uz">ðºð¿ Uzbek</option><option value="vi">ð»ð³ Vietnamese</option></select><select name="sort" class="searchFilter searchField" aria-label="Sort results"><option value="" selected>Sort: Relevance</option><option value="views">Sort: Most viewed</option><option value="newest">Sort: Newest</option><option value="shortest">Sort: Shortest first</option><option value="longest">Sort: Longest first</option></select> 681 682 <select name="collection" id="searchFilterCollection" class="searchFilter searchField" aria-label="Search in collection" style="display:none;"> 683 <option value="">All Movies</option> 684 </select> 685 686 <div class="inline-block"> 687 <input name="yearStart" class="searchFilter searchField" type="text" placeholder="Year (from)" value="" aria-label="Year (from)" autocomplete="off"> 688 - 689 <input name="yearEnd" class="searchFilter searchField" type="text" placeholder="Year (to)" value="" aria-label="Year (to)" autocomplete="off"> 690 </div> 691 692 <div class="inline-block"> 693 <input name="durationStart" class="searchFilter searchField" type="text" placeholder="Length (seconds)" value="" aria-label="Length (seconds)" autocomplete="off"> 694 - 695 <input name="durationEnd" class="searchFilter searchField" type="text" placeholder="Length (seconds)" value="" aria-label="Length (seconds)" autocomplete="off"> 696 </div> 697 698 </div> 699 700 </nav> 701 </header> 702 <input type="hidden" name="ss" value="s"> 703 </form> 704 705 706 707 708 709 710 711 712
712<script> 713 714 var plyrloaded = false; 715 var plyrloadingstarted = false; 716 717 718 </script>
718 719 720 721 722 <main id="main-cont"> 723 724 725 726 727 728 <style> 729 /* Login Page Styles - Modern Glassmorphism */ 730 .login-container { 731 min-height: 70vh; 732 display: flex; 733 align-items: center; 734 justify-content: center; 735 padding: 40px 20px; 736 } 737 738 .login-wrapper { 739 width: 100%; 740 max-width: 420px; 741 } 742 743 .login-card { 744 background: rgba(255, 255, 255, 0.05); 745 backdrop-filter: blur(20px); 746 -webkit-backdrop-filter: blur(20px); 747 border: 1px solid rgba(255, 255, 255, 0.1); 748 border-radius: 24px; 749 padding: 40px 32px; 750 box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3); 751 } 752 753 .login-header { 754 text-align: center; 755 margin-bottom: 32px; 756 } 757 758 .login-header h1 { 759 font-size: 28px; 760 font-weight: 600; 761 color: #fff; 762 margin: 0 0 8px 0; 763 padding: 0; 764 display: block; 765 grid-template-columns: none; 766 text-shadow: none; 767 -webkit-text-stroke: 0; 768 } 769 770 .login-header h1::before, 771 .login-header h1::after { 772 display: none; 773 } 774 775 .login-header p { 776 color: rgba(255, 255, 255, 0.6); 777 font-size: 14px; 778 margin: 0; 779 } 780 781 /* Checkout context â only rendered when pendingCheckoutIntent() says a purchase is in 782 flight. It restates the plan and price the visitor just clicked so the account step 783 reads as part of the purchase rather than an unexplained detour. Mobile first: this is 784 a phone-majority site and the row must not wrap at 320px, so the name and price sit on 785 one flex line with the qualifier allowed to drop under the number. */ 786 .checkout-intent { 787 display: flex; 788 align-items: baseline; 789 justify-content: space-between; 790 gap: 12px; 791 flex-wrap: wrap; 792 padding: 14px 16px; 793 margin-bottom: 24px; 794 border: 1px solid rgba(255, 152, 0, 0.35); 795 border-radius: 12px; 796 background: rgba(255, 152, 0, 0.08); 797 } 798 799 .checkout-intent-plan { 800 font-size: 15px; 801 font-weight: 600; 802 color: #fff; 803 } 804 805 .checkout-intent-price { 806 font-size: 18px; 807 font-weight: 700; 808 color: #ff9800; 809 white-space: nowrap; 810 } 811 812 .checkout-intent-price small { 813 display: block; 814 font-size: 11px; 815 font-weight: 400; 816 color: rgba(255, 255, 255, 0.55); 817 white-space: normal; 818 } 819 820 .checkout-intent-trust { 821 text-align: center; 822 font-size: 12px; 823 color: rgba(255, 255, 255, 0.5); 824 margin: -12px 0 24px 0; 825 } 826 827 /* Global Alert Message */ 828 .login-alert { 829 padding: 14px 16px; 830 border-radius: 12px; 831 margin-bottom: 24px; 832 font-size: 14px; 833 display: flex; 834 align-items: center; 835 gap: 10px; 836 animation: alertSlideIn 0.3s ease-out; 837 } 838 839 .login-alert.error { 840 background: rgba(239, 68, 68, 0.15); 841 border: 1px solid rgba(239, 68, 68, 0.3); 842 color: #fca5a5; 843 } 844 845 .login-alert.success { 846 background: rgba(34, 197, 94, 0.15); 847 border: 1px solid rgba(34, 197, 94, 0.3); 848 color: #86efac; 849 } 850 851 .login-alert.hidden { 852 display: none; 853 } 854 855 @keyframes alertSlideIn { 856 from { 857 opacity: 0; 858 transform: translateY(-10px); 859 } 860 to { 861 opacity: 1; 862 transform: translateY(0); 863 } 864 } 865 866 /* Social Login Button (Google) */ 867 .social-login-section { 868 margin-bottom: 24px; 869 } 870 871 .google-btn { 872 width: 100%; 873 display: flex; 874 align-items: center; 875 justify-content: center; 876 gap: 12px; 877 padding: 14px 20px; 878 background: #fff; 879 border: none; 880 border-radius: 12px; 881 font-size: 15px; 882 font-weight: 500; 883 color: #333; 884 cursor: pointer; 885 transition: all 0.2s ease; 886 text-decoration: none; 887 } 888 889 .google-btn:hover { 890 background: #f5f5f5; 891 transform: translateY(-1px); 892 box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); 893 } 894 895 .google-btn:active { 896 transform: translateY(0); 897 } 898 899 .google-btn img {
900 width: 20px; 901 height: 20px; 902 } 903 904 /* Divider */ 905 .login-divider { 906 display: flex; 907 align-items: center; 908 margin: 28px 0; 909 gap: 16px; 910 } 911 912 .login-divider::before, 913 .login-divider::after { 914 content: ""; 915 flex: 1; 916 height: 1px; 917 background: rgba(255, 255, 255, 0.15); 918 } 919 920 .login-divider span { 921 color: rgba(255, 255, 255, 0.5); 922 font-size: 13px; 923 text-transform: uppercase; 924 letter-spacing: 1px; 925 } 926 927 /* Form Styles */ 928 .login-form { 929 display: flex; 930 flex-direction: column; 931 gap: 20px; 932 } 933 934 .form-group { 935 position: relative; 936 } 937 938 .form-group label { 939 display: block; 940 color: rgba(255, 255, 255, 0.8); 941 font-size: 13px; 942 font-weight: 500; 943 margin-bottom: 8px; 944 transition: color 0.2s ease; 945 } 946 947 .form-group input { 948 width: 100%; 949 padding: 14px 16px; 950 background: rgba(255, 255, 255, 0.08); 951 border: 1px solid rgba(255, 255, 255, 0.12); 952 border-radius: 10px; 953 color: #fff; 954 font-size: 15px; 955 transition: all 0.2s ease; 956 outline: none; 957 } 958 959 .form-group input::placeholder { 960 color: rgba(255, 255, 255, 0.35); 961 } 962 963 .form-group input:focus { 964 background: rgba(255, 255, 255, 0.12); 965 border-color: rgba(255, 137, 46, 0.5); 966 box-shadow: 0 0 0 3px rgba(255, 137, 46, 0.1); 967 } 968 969 .form-group input.input-error { 970 border-color: rgba(239, 68, 68, 0.5); 971 } 972 973 .form-group input.input-success { 974 border-color: rgba(34, 197, 94, 0.5); 975 } 976 977 .field-feedback { 978 font-size: 12px; 979 margin-top: 6px; 980 min-height: 18px; 981 transition: all 0.2s ease; 982 } 983 984 .field-feedback.error { 985 color: #fca5a5; 986 } 987 988 .field-feedback.success { 989 color: #86efac; 990 } 991 992 /* Says which branch the form is in â sign-in, sign-up, or "you signed up with Google" â 993 once api-account-check.php has resolved the address. */ 994 .step-hint { 995 font-size: 13px; 996 line-height: 1.45; 997 color: rgba(255, 255, 255, 0.75); 998 background: rgba(255, 255, 255, 0.05); 999 border-left: 2px solid rgba(255, 255, 255, 0.25); 1000 border-radius: 8px; 1001 padding: 10px 12px; 1002 margin-bottom: 16px; 1003 } 1004 1005 .step-hint.social { 1006 border-left-color: #86efac; 1007 } 1008 1009 .link-btn { 1010 display: block; 1011 width: 100%; 1012 margin: -8px 0 16px; 1013 padding: 0; 1014 background: none; 1015 border: 0; 1016 color: rgba(255, 255, 255, 0.5); 1017 font-size: 13px; 1018 text-align: center; 1019 cursor: pointer; 1020 } 1021 1022 .link-btn:hover { 1023 color: rgba(255, 255, 255, 0.8); 1024 } 1025 1026 /* Password visibility toggle */ 1027 .password-wrapper { 1028 position: relative; 1029 } 1030 1031 .password-toggle { 1032 position: absolute; 1033 right: 14px; 1034 top: 50%; 1035 transform: translateY(-50%); 1036 background: none; 1037 border: none; 1038 color: rgba(255, 255, 255, 0.5); 1039 cursor: pointer; 1040 padding: 4px; 1041 display: flex; 1042 align-items: center; 1043 justify-content: center; 1044 transition: color 0.2s ease; 1045 } 1046 1047 .password-toggle:hover { 1048 color: rgba(255, 255, 255, 0.8); 1049 } 1050 1051 .password-wrapper input { 1052 padding-right: 48px; 1053 } 1054 1055 /* Consent notice. 1056 Replaced a checkbox whose touch target was 18px, whose <label> was almost entirely 1057 target="_blank" links (so a tap aimed at the box usually opened a new tab), and whose 1058 "please accept" tooltip was position:absolute + white-space:nowrap â it overflowed a 320px 1059 viewport in every language whose phrasing is longer than English. Static text has no touch 1060 target and no positioning to get wrong. */ 1061 .tos-notice { 1062 color: rgba(255, 255, 255, 0.45); 1063 font-size: 12px; 1064 line-height: 1.5; 1065 text-align: center; 1066 margin: 14px 0 0 0; 1067 } 1068 1069 .tos-notice a { 1070 color: rgba(255, 255, 255, 0.7); 1071 text-decoration: underline; 1072 /* The links sit inside 12px body text, so give them a comfortable tap slop without 1073 disturbing the line box. */ 1074 padding: 2px 1px; 1075 } 1076 1077 .tos-notice a:hover { 1078 color: #ff892e; 1079 } 1080 1081 1082 /* Turnstile slot. No `display` in the base rule, and an explicit [hidden] guard, because 1083 css/style.css carries no global [hidden] override â only css/daily.css does, and that is 1084 not loaded here. Any display value set here would out-specify the UA rule and paint the 1085 widget on every sign-in. Same trap as .clip-hd-strip[hidden] in style.css. */ 1086 .turnstile-slot { 1087 /* No margin of its own: with appearance:interaction-only the slot is usually populated by 1088 an invisible widget, and a fixed margin would open a phantom gap above the button on 1089 every create-account step. When Cloudflare does show the checkbox, the widget brings 1090 its own height. */ 1091 margin: 0; 1092 min-height: 0; 1093 } 1094 .turnstile-slot[hidden] { 1095 display: none; 1096 } 1097 1098 /* Submit Button */ 1099 .submit-btn { 1100 width: 100%; 1101 padding: 16px; 1102 background: linear-gradient(135deg, #ff892e 0%, #ff6b00 100%); 1103 border: none; 1104 border-radius: 12px; 1105 color: #fff; 1106 font-size: 16px; 1107 font-weight: 600; 1108 cursor: pointer; 1109 transition: all 0.3s ease; 1110 position: relative; 1111 overflow: hidden; 1112 } 1113 1114 .submit-btn:hover:not(:disabled) { 1115 transform: translateY(-2px); 1116 box-shadow: 0 8px 24px rgba(255, 137, 46, 0.35); 1117 } 1118 1119 .submit-btn:active:not(:disabled) { 1120 transform: translateY(0); 1121 } 1122 1123 .submit-btn:disabled { 1124 opacity: 0.5;
1125 cursor: not-allowed; 1126 } 1127 1128 .submit-btn.loading { 1129 pointer-events: none; 1130 } 1131 1132 .submit-btn .btn-text { 1133 transition: opacity 0.2s ease; 1134 } 1135 1136 .submit-btn.loading .btn-text { 1137 opacity: 0; 1138 } 1139 1140 .submit-btn .btn-loader { 1141 position: absolute; 1142 top: 50%; 1143 left: 50%; 1144 transform: translate(-50%, -50%); 1145 width: 24px; 1146 height: 24px; 1147 border: 3px solid rgba(255, 255, 255, 0.3); 1148 border-top-color: #fff; 1149 border-radius: 50%; 1150 opacity: 0; 1151 transition: opacity 0.2s ease; 1152 } 1153 1154 .submit-btn.loading .btn-loader { 1155 opacity: 1; 1156 animation: spin 0.8s linear infinite; 1157 } 1158 1159 @keyframes spin { 1160 to { transform: translate(-50%, -50%) rotate(360deg); } 1161 } 1162 1163 /* Forgot Password Link */ 1164 .forgot-link { 1165 text-align: center; 1166 margin-top: 8px; 1167 } 1168 1169 .forgot-link a { 1170 color: rgba(255, 255, 255, 0.5); 1171 font-size: 13px; 1172 text-decoration: none; 1173 transition: color 0.2s ease; 1174 } 1175 1176 .forgot-link a:hover { 1177 color: rgba(255, 255, 255, 0.8); 1178 } 1179 1180 /* Password Requirements */ 1181 .password-requirements { 1182 background: rgba(255, 255, 255, 0.05); 1183 border-radius: 8px; 1184 padding: 12px; 1185 margin-top: 8px; 1186 } 1187 1188 .password-requirements p { 1189 color: rgba(255, 255, 255, 0.5); 1190 font-size: 11px; 1191 margin: 0 0 8px 0; 1192 text-transform: uppercase; 1193 letter-spacing: 0.5px; 1194 } 1195 1196 .password-requirements ul { 1197 list-style: none; 1198 padding: 0; 1199 margin: 0; 1200 display: grid; 1201 grid-template-columns: 1fr 1fr; 1202 gap: 6px 12px; 1203 } 1204 1205 .password-requirements li { 1206 color: rgba(255, 255, 255, 0.4); 1207 font-size: 12px; 1208 display: flex; 1209 align-items: center; 1210 gap: 6px; 1211 transition: color 0.2s ease; 1212 } 1213 1214 .password-requirements li.valid { 1215 color: #86efac; 1216 } 1217 1218 .password-requirements li::before { 1219 content: "â"; 1220 font-size: 8px; 1221 } 1222 1223 .password-requirements li.valid::before { 1224 content: "â"; 1225 } 1226 1227 /* Mobile Responsive */ 1228 @media (max-width: 480px) { 1229 .login-card { 1230 padding: 32px 24px; 1231 border-radius: 20px; 1232 } 1233 1234 .login-header h1 { 1235 font-size: 24px; 1236 } 1237 1238 .password-requirements ul { 1239 grid-template-columns: 1fr; 1240 } 1241 } 1242 </style> 1243 1244 <div class="login-container"> 1245 <div class="login-wrapper"> 1246 <div class="login-card"> 1247 <div class="login-header"> 1248 <h1>Welcome Back</h1> 1249 <p>Sign in to continue to Clip.Cafe</p> 1250 </div> 1251 1252 1253 <!-- Global Alert (for AJAX responses) --> 1254 <div id="loginAlert" class="login-alert hidden" role="alert"></div> 1255 1256 <!-- Legacy message support --> 1257 1258 1259 <!-- Google Login Section --> 1260 <div class="social-login-section"> 1261 <button type="button" class="google-btn" id="googleLoginBtn"> 1262 <img src="img/social/googleIcon.jpg" alt="Google"> 1263 <span>Continue with Google</span> 1264 </button> 1265 </div> 1266 1267 <!-- Divider --> 1268 <div class="login-divider"> 1269 <span>or</span> 1270 </div> 1271 1272 <!-- Email/Password Form --> 1273 <form id="loginForm" class="login-form" method="POST" action="https://clip.cafe/" novalidate> 1274 <div class="form-group"> 1275 <label for="loginEmail">Email Address</label> 1276 <input 1277 type="email" 1278 id="loginEmail" 1279 name="email" 1280 placeholder="[email protected]" 1281 autocomplete="email" 1282 required 1283 > 1284 <div id="emailFeedback" class="field-feedback"></div> 1285 </div> 1286 1287 <!-- Filled by the JS once the address is resolved. Empty and hidden in the 1288 server response, so a browser with no JS simply never sees it. --> 1289 <div id="stepHint" class="step-hint" style="display: none;"></div> 1290 <button type="button" class="link-btn" id="usePasswordLink" style="display: none;">I have a password</button> 1291 1292 <!-- NOT hidden server-side. The two-step flow is applied by the script below, 1293 so a browser that never runs it gets the one-step form this page has always 1294 been: email, password, submit, and the server decides. --> 1295 <div class="form-group" id="passwordGroup"> 1296 <label for="loginPassword">Password</label> 1297 <div class="password-wrapper"> 1298 <input 1299 type="password" 1300 id="loginPassword" 1301 name="password" 1302 placeholder="Enter your password" 1303 autocomplete="current-password" 1304 required 1305 > 1306 <button type="button" class="password-toggle" id="togglePassword" aria-label="Toggle password visibility"> 1307 <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> 1308 <path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z" id="eyePath"></path> 1309 <circle cx="12" cy="12" r="3" id="eyeCircle"></circle> 1310 <line x1="1" y1="1" x2="23" y2="23" id="eyeLine" style="display:none"></line> 1311 </svg> 1312 </button> 1313 </div> 1314 <div id="passwordFeedback" class="field-feedback"></div> 1315 1316 <!-- Password Requirements (shown on focus for new users) --> 1317 <div id="passwordReqs" class="password-requirements" style="display: none;"> 1318 <p>Password requirements</p> 1319 <ul> 1320 <li id="req-length">8+ characters</li> 1321 <li id="req-upper">Uppercase letter</li> 1322 <li id="req-lower">Lowercase letter</li> 1323 <li id="req-number">Number</li> 1324 </ul> 1325 </div> 1326 </div> 1327 1328 <!-- Turnstile mounts here, and ONLY for someone about to create an account: 1329 the probe has to have answered "new", or "unknown", which can still turn 1330 out to be a registration once the server looks. A returning user signing 1331 in never renders it, never fetches the Cloudflare script, and never waits 1332 on it. Stays empty and inert unless TURNSTILE_SITE_KEY is set. --> 1333 <div class="turnstile-slot" id="turnstileSlot" hidden></div> 1334 1335 <!-- Submit Button. 1336 Deliberately NOT `disabled`: a dead button cannot fire an event, so it can 1337 never tell the user why it is dead. Every rejection now happens on submit 1338 with a message attached. See the note above updatePasswordMeter() in the JS. --> 1339 <button type="submit" class="submit-btn" id="submitBtn">
1340 <span class="btn-text" id="submitBtnText">Sign In / Create Account</span> 1341 <div class="btn-loader"></div> 1342 </button> 1343 1344 <!-- Consent by notice, not by checkbox. The checkbox this replaced gated the 1345 Google button too, had an 18px touch target, and lived inside a <label> 1346 that was almost entirely target="_blank" links â so most taps aimed at it 1347 opened a new tab instead. Its value was never persisted (myusers has no 1348 tos column and registerlogin() never read the posted tos field), so this notice 1349 carries exactly the same legal weight with none of the failure modes. --> 1350 <p class="tos-notice">By continuing, you agree to our <a href="termsandconditions/" target="_blank">Terms of Service</a> and <a href="privacypolicy/" target="_blank">Privacy Policy</a>.</p> 1351 1352 <!-- Forgot Password --> 1353 <div class="forgot-link"> 1354 <a href="https://clip.cafe/forgot-password" id="forgotPasswordLink">Forgot your password?</a> 1355 </div> 1356 1357 <!-- Hidden fields --> 1358 <input type="hidden" name="registerlogin" value="1"> 1359 <input type="hidden" name="csrf" value="2e3a1e182ba5a85d1be6d87188c87851a8b7919bfa7beb494e8e8f1c009e23e6"> 1360 <input type="hidden" name="ajax" value="1"> 1361 </form> 1362 </div> 1363 </div> 1364 </div> 1365 1366
1366<script> 1367 (function() { 1368 "use strict"; 1369 1370 // Server-injected, so there is exactly one definition of each of these in the codebase. 1371 const POLICY = {"minLength":8,"patterns":{"upper":"[A-Z]","lower":"[a-z]","number":"[0-9]"}}; 1372 const STRINGS = {"invalidEmail":"Please enter a valid email address","passwordEmpty":"Please enter your password","sessionExpired":"Your session expired while this page was open. Refreshingâ¦","networkError":"Connection problem. Check your internet and try again.","loginFailed":"Login failed. Please try again or contact support.","redirecting":"Login successful! Redirectingâ¦","btnContinue":"Continue","btnSignIn":"Sign in","btnCreate":"Create account","btnDefault":"Sign In \/ Create Account","stepReturning":"Welcome back â enter your password to sign in.","stepNew":"No account for this email yet. Pick a password and we\u0027ll create one.","stepSocial":"This email signs in with Google â use the Continue with Google button above.","socialOther":"This email was registered with {provider}. Click âForgot your password?â below to set a password you can sign in with.","captchaFailed":"We could not verify that you are human. Please complete the check and try again, or continue with Google."}; 1373 const BASE = "https://clip.cafe/";
1374 const TURNSTILE_KEY = "0x4AAAAAAE64kW9DFrt3pWA7"; 1375 const TURNSTILE_ACTION = "register"; 1376 1377 // DOM Elements 1378 const form = document.getElementById("loginForm"); 1379 const emailInput = document.getElementById("loginEmail"); 1380 const passwordInput = document.getElementById("loginPassword"); 1381 const submitBtn = document.getElementById("submitBtn"); 1382 const emailFeedback = document.getElementById("emailFeedback"); 1383 const passwordFeedback = document.getElementById("passwordFeedback"); 1384 const alertBox = document.getElementById("loginAlert"); 1385 const passwordReqs = document.getElementById("passwordReqs"); 1386 const togglePassword = document.getElementById("togglePassword"); 1387 const googleBtn = document.getElementById("googleLoginBtn"); 1388 const passwordGroup = document.getElementById("passwordGroup"); 1389 const stepHint = document.getElementById("stepHint"); 1390 const usePasswordLink = document.getElementById("usePasswordLink"); 1391 const submitBtnText = document.getElementById("submitBtnText"); 1392 1393 // Password requirement elements 1394 const reqLength = document.getElementById("req-length"); 1395 const reqUpper = document.getElementById("req-upper"); 1396 const reqLower = document.getElementById("req-lower"); 1397 const reqNumber = document.getElementById("req-number"); 1398 1399 const emailPattern = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/; 1400 const classPatterns = { 1401 upper: new RegExp(POLICY.patterns.upper), 1402 lower: new RegExp(POLICY.patterns.lower), 1403 number: new RegExp(POLICY.patterns.number) 1404 }; 1405 1406 // Best-effort analytics. Analytics lives in js/main.js, which is deferred, so it is 1407 // undefined while this script parses but defined long before anyone can click anything. 1408 function track(eventName, data) { 1409 try { 1410 if (typeof Analytics !== "undefined") Analytics.track(eventName, data || {}); 1411 } catch (e) { /* tracking must never block a login */ } 1412 } 1413 1414 // Validate Email 1415 function validateEmail() { 1416 const value = emailInput.value.trim(); 1417 if (!value) { 1418 emailInput.classList.remove("input-error", "input-success"); 1419 emailFeedback.textContent = ""; 1420 emailFeedback.className = "field-feedback"; 1421 return false; 1422 } 1423 if (!emailPattern.test(value)) { 1424 emailInput.classList.add("input-error"); 1425 emailInput.classList.remove("input-success"); 1426 emailFeedback.textContent = STRINGS.invalidEmail; 1427 emailFeedback.className = "field-feedback error"; 1428 return false; 1429 } 1430 emailInput.classList.remove("input-error"); 1431 emailInput.classList.add("input-success"); 1432 emailFeedback.textContent = ""; 1433 emailFeedback.className = "field-feedback success"; 1434 return true; 1435 } 1436 1437 // Password strength meter â ADVISORY ONLY. 1438 // 1439 // This updates the checklist so somebody creating an account can see what is required. It 1440 // does NOT decide whether the form may be submitted. This one form is both the sign-in and 1441 // the sign-up form, and 259,321 of 473,356 accounts still hold pre-bcrypt MD5 passwords 1442 // chosen years before these rules existed. Gating submission on the rules meant those users 1443 // faced a permanently disabled button with no error text. The server knows whether a POST is 1444 // a login or a registration; the browser does not, so the browser does not get a vote. 1445 function updatePasswordMeter() { 1446 const value = passwordInput.value; 1447 1448 const lengthOk = value.length >= POLICY.minLength; 1449 const upperOk = classPatterns.upper.test(value); 1450 const lowerOk = classPatterns.lower.test(value); 1451 const numberOk = classPatterns.number.test(value); 1452 1453 reqLength.classList.toggle("valid", lengthOk); 1454 reqUpper.classList.toggle("valid", upperOk); 1455 reqLower.classList.toggle("valid", lowerOk); 1456 reqNumber.classList.toggle("valid", numberOk); 1457 1458 const meetsPolicy = lengthOk && upperOk && lowerOk && numberOk; 1459 1460 // Collapse the checklist once it is satisfied. On a small phone those four rows are the 1461 // difference between the submit button being on screen and being below the fold. 1462 if (meetsPolicy) passwordReqs.style.display = "none"; 1463 1464 if (!value) { 1465 passwordInput.classList.remove("input-error", "input-success"); 1466 passwordFeedback.textContent = ""; 1467 passwordFeedback.className = "field-feedback"; 1468 } else { 1469 // No red state for a short password: an existing user typing a correct legacy 1470 // password is not making a mistake, and marking their field as an error was the 1471 // visual half of the bug. 1472 passwordInput.classList.remove("input-error"); 1473 passwordInput.classList.toggle("input-success", meetsPolicy); 1474 passwordFeedback.textContent = ""; 1475 passwordFeedback.className = "field-feedback"; 1476 } 1477 } 1478 1479 function showAlert(message, type) { 1480 alertBox.textContent = message; 1481 alertBox.className = "login-alert " + type; 1482 alertBox.scrollIntoView({ behavior: "smooth", block: "nearest" }); 1483 } 1484 1485 function hideAlert() { 1486 alertBox.className = "login-alert hidden"; 1487 } 1488 1489 function rejectWith(message, field, reason) { 1490 showAlert(message, "error"); 1491 submitBtn.classList.remove("loading"); 1492 track("login_blocked_client", { reason: reason }); 1493 if (field) field.focus(); 1494 } 1495 1496 // ---- Two steps: resolve the address, THEN ask for a password -------------------------- 1497 // 1498 // One form has always served both signing in and creating an account, and it could not tell 1499 // which it was doing, so it asked for both fields at once and let the server sort it out. 1500 // When the address turned out to be unknown the server took the registration branch and 1501 // answered someone who believed they were signing in with password rules: 486 times across 1502 // 388 sessions in the 5 days to 2026-09-02, of which only 101 sessions went on to create an
1503 // account. Asking first is what makes every string on this page able to be true. 1504 // 1505 // The probe NEVER gates the login. api-account-check.php answers "unknown" for a stale CSRF 1506 // token, a throttled IP, a Redis or database problem, and this code answers "unknown" for a 1507 // network failure or a timeout â and "unknown" is precisely the one-step form that existed 1508 // before, so the worst outcome of the whole mechanism is the behaviour it replaced. 1509 const PROVIDER_NAMES = { google: "Google", facebook: "Facebook", linkedin: "LinkedIn" }; 1510 1511 let probedEmail = null; // the address api-account-check.php last answered for 1512 let probedStatus = null; // "password" | "social" | "new" | "unknown" 1513 1514 // Turnstile, armed only on the branch that can create an account. 1515 // 1516 // The whole point is that signing in is untouched: a returning user never loads the 1517 // Cloudflare script, never mounts a widget and never waits on a token. arm() is called 1518 // from showPasswordStep() for "new" and for "unknown" â "unknown" is included because it 1519 // is the probe failure fallback, and the server may still take the registration branch 1520 // for it. Everything here degrades to doing nothing: no site key, a blocked script, an 1521 // adblocked iframe. When that happens the server answers captcha_required and the submit 1522 // handler mounts the widget and asks for one more try, which is the only path that can 1523 // still reach a real person. 1524 // 1525 // appearance:"interaction-only" keeps it invisible for the large majority whose challenge 1526 // solves in the background, and reveals itself only when Cloudflare actually wants a tap. 1527 const Captcha = (function() { 1528 const slot = document.getElementById("turnstileSlot"); 1529 let scriptPromise = null; 1530 let widgetId = null; 1531 let currentToken = ""; 1532 1533 function available() { 1534 return !!TURNSTILE_KEY && !!slot; 1535 } 1536 1537 function loadScript() { 1538 if (scriptPromise) return scriptPromise; 1539 scriptPromise = new Promise(function(resolve, reject) { 1540 const s = document.createElement("script"); 1541 s.src = "https://challenges.cloudflare.com/turnstile/v0/api.js?render=explicit"; 1542 s.async = true; 1543 s.defer = true; 1544 s.onload = resolve; 1545 s.onerror = function() { 1546 // Forget the rejection. A memoised failed promise would be handed back to 1547 // every later caller, so one flaky load w
1547ould permanently disable the 1548 // widget â including the captcha_required retry, whose whole job is to 1549 // rescue the person this just happened to. 1550 scriptPromise = null; 1551 s.remove(); 1552 reject(new Error("turnstile blocked")); 1553 }; 1554 document.head.appendChild(s); 1555 }); 1556 return scriptPromise; 1557 } 1558 1559 // Idempotent: called on every entry to the create-account step, mounts once. A widget 1560 // that is already mounted is just un-parked (see park()). 1561 async function arm() { 1562 if (!available()) return; 1563 if (widgetId !== null) { slot.hidden = false; return; } 1564 try { 1565 await loadScript(); 1566 } catch (err) { 1567 return; 1568 } 1569 if (!window.turnstile || widgetId !== null) return; 1570 slot.hidden = false; 1571 let id = null; 1572 try { 1573 id = window.turnstile.render(slot, { 1574 sitekey: TURNSTILE_KEY, 1575 action: TURNSTILE_ACTION, 1576 appearance: "interaction-only", 1577 theme: "dark", 1578 callback: function(t) { currentToken = t || ""; }, 1579 "expired-callback": function() { currentToken = ""; }, 1580 "error-callback": function() { currentToken = ""; } 1581 }); 1582 } catch (err) { 1583 id = null; 1584 } 1585 // Cloudflare documents the return as "the widget ID" and says nothing about failure. 1586 // Accepting anything non-null would make armed() true for a widget that never 1587 // mounted (an undefined return), and then: token() waits its full timeout, "new" 1588 // is refused with a message about a challenge that is not on screen, and the retry 1589 // returns early here because widgetId is "set". Only a non-empty string counts. 1590 widgetId = (typeof id === "string" && id !== "") ? id : null; 1591 if (widgetId === null) slot.hidden = true; 1592 } 1593 1594 // Hide a mounted widget while the form is on a branch that cannot register â a 1595 // returning account, a Google account, back at the email step. Nothing is torn down, 1596 // so a later arm() is instant; this only stops a checkbox that Cloudflare chose to 1597 // show lingering above the sign-in button of an account it has nothing to do with. 1598 function park() { 1599 if (slot) slot.hidden = true; 1600 } 1601 1602 function armed() { 1603 return widgetId !== null; 1604 } 1605 1606 // Tokens are single-use, so this is called after every rejected submit â otherwise the 1607 // second attempt replays a token Cloudflare has already retired and fails as a 1608 // duplicate, which looks to the user like the site refusing them twice for no reason. 1609 function reset() { 1610 currentToken = ""; 1611 if (widgetId === null || !window.turnstile) return; 1612 try { window.turnstile.reset(widgetId); } catch (err) {} 1613 } 1614 1615 // Wait briefly for a background solve. Resolves "" if the challenge needs a tap the 1616 // user has not given yet, and the caller turns that into a message rather than a hang. 1617 async function token(waitMs) { 1618 if (!armed()) return ""; 1619 const deadline = Date.now() + (waitMs || 0); 1620 while (!currentToken && Date.now() < deadline) { 1621 await new Promise(function(r) { setTimeout(r, 150); }); 1622 } 1623 return currentToken; 1624 } 1625 1626 return { available: available, arm: arm, park: park, armed: armed, reset: reset, token: token }; 1627 })(); 1628 1629 function setHint(text, isSocial) { 1630 // textContent, not innerHTML: these strings are translations, but the branch below
1631 // splices a provider name into one of them and this element must never become a sink. 1632 stepHint.textContent = text; 1633 stepHint.className = isSocial ? "step-hint social" : "step-hint"; 1634 stepHint.style.display = "block"; 1635 } 1636 1637 function showEmailStep() { 1638 probedEmail = null; 1639 probedStatus = null; 1640 Captcha.park(); 1641 passwordGroup.style.display = "none"; 1642 passwordReqs.style.display = "none"; 1643 stepHint.style.display = "none"; 1644 usePasswordLink.style.display = "none"; 1645 submitBtn.style.display = ""; 1646 submitBtnText.textContent = STRINGS.btnContinue; 1647 } 1648 1649 // focusField is false when the reveal was not something the user just asked for (an 1650 // autofill landing after parse), because moving the caret out from under someone who may 1651 // be mid-keystroke in the email field is worse than the field arriving unfocused. 1652 // armCaptcha is false only from the autofill path: a password manager filling step one 1653 // means saved credentials, i.e. almost certainly a returning account, and "unknown" there 1654 // is "we have not asked yet", not "the probe failed". Arming on it would fetch the 1655 // Cloudflare script for the commonest successful sign-in there is. The submit handler 1656 // still probes and still arms if the answer turns out to be "new". 1657 function showPasswordStep(status, focusField, armCaptcha) { 1658 probedStatus = status; 1659 passwordGroup.style.display = ""; 1660 usePasswordLink.style.display = "none"; 1661 submitBtn.style.display = ""; 1662 passwordInput.setAttribute("autocomplete", status === "new" ? "new-password" : "current-password"); 1663 1664 // The checklist describes the rules for SETTING a password, so exactly one person sees 1665 // it: whoever is about to set one. Showing it to a returning user is the same mistake 1666 // that left 259k legacy accounts staring at a disabled button. 1667 passwordReqs.style.display = status === "new" ? "block" : "none"; 1668 1669 // Both branches that can end in a new account. Fired here rather than on submit so the 1670 // background solve runs while the password is being typed and has finished by the time 1671 // it matters; "password" and "social" never reach it. 1672 if ((status === "new" || status === "unknown") && armCaptcha !== false) { 1673 Captcha.arm(); 1674 } else { 1675 Captcha.park(); 1676 } 1677 1678 if (status === "new") { 1679 submitBtnText.textContent = STRINGS.btnCreate; 1680 setHint(STRINGS.stepNew, false); 1681 } else if (status === "password") { 1682 submitBtnText.textContent = STRINGS.btnSignIn; 1683 setHint(STRINGS.stepReturning, false); 1684 } else { 1685 // Unknown: say nothing we cannot back up, and put the old label back. 1686 submitBtnText.textContent = STRINGS.btnDefault; 1687 stepHint.style.display = "none"; 1688 } 1689 1690 if (focusField !== false) passwordInput.focus(); 1691 } 1692 1693 function showSocialStep(provider) { 1694 probedStatus = "social"; 1695 Captcha.park(); 1696 passwordGroup.style.display = "none"; 1697 passwordReqs.style.display = "none"; 1698 // Nothing for the submit button to do here â the action is the Google button above, 1699 // or the link below for the rare account that also holds a password. 1700 submitBtn.style.display = "none"; 1701 usePasswordLink.style.display = "block"; 1702 1703 if (provider === "google") { 1704 setHint(STRINGS.stepSocial, true); 1705 } else { 1706 // Google is the only provider with a button on this page, so a Facebook or LinkedIn 1707 // account is pointed at the password-reset link instead of at a control that is not 1708 // there. 487 accounts are Facebook-only; none are LinkedIn-only. 1709 setHint(STRINGS.socialOther.replace("{provider}", PROVIDER_NAMES[provider] || "your provider"), true); 1710 } 1711 } 1712 1713 async function probeEmail(email) { 1714 const controller = new AbortController(); 1715 // A slow answer must not hold the form hostage; 4s then fall back to the old flow. 1716 const timer = setTimeout(function() { controller.abort(); }, 4000); 1717 try { 1718 const body = new FormData(); 1719 body.append("email", email); 1720 body.append("csrf", form.elements.csrf ? form.elements.csrf.value : ""); 1721 const res = await fetch(BASE + "api-account-check.php", { 1722 method: "POST", 1723 body: body, 1724 headers: { "X-Requested-With": "XMLHttpRequest" }, 1725 signal: controller.signal 1726 }); 1727 const data = await res.json(); 1728 return (data && data.status) ? data : { status: "unknown", provider: null }; 1729 } catch (err) { 1730 return { status: "unknown", provider: null }; 1731 } finally { 1732 clearTimeout(timer); 1733 } 1734 } 1735 1736 usePasswordLink.addEventListener("click", function() { 1737 showPasswordStep("password"); 1738 }); 1739 1740 // Toggle Password Visibility 1741 togglePassword.addEventListener("click", function() { 1742 const type = passwordInput.type === "password" ? "text" : "password"; 1743 passwordInput.type = type; 1744 document.getElementById("eyeLine").style.display = type === "text" ? "block" : "none"; 1745 }); 1746 1747 // Show password requirements on focus, unless the password already satisfies them â or the 1748 // probe has told us this is a returning account, in which case the rules do not apply to 1749 // this person at all and putting them on screen is how they end up feeling refused. 1750 passwordInput.addEventListener("focus", function() { 1751 if (probedStatus === "password") return; 1752 if (passwordInput.value && classPatterns.upper.test(passwordInput.value) 1753 && classPatterns.lower.test(passwordInput.value) 1754 && classPatterns.number.test(passwordInput.value) 1755 && passwordInput.value.length >= POLICY.minLength) { 1756 return; 1757 } 1758 passwordReqs.style.display = "block"; 1759 }); 1760 1761 emailInput.addEventListener("input", validateEmail); 1762 emailInput.addEventListener("blur", validateEmail); 1763 passwordInput.addEventListener("input", updatePasswordMeter); 1764
1765 // Editing the address after it has been resolved invalidates every claim on screen â the 1766 // "welcome back" line, the button label, whether the checklist belongs there â so go back 1767 // to step one rather than leave the form asserting something about a different account. 1768 emailInput.addEventListener("input", function() { 1769 if (probedEmail !== null && emailInput.value.trim() !== probedEmail) { 1770 showEmailStep(); 1771 } 1772 }); 1773 1774 // Google Login Handler. 1775 // No longer gated on a consent checkbox. It used to return early with nothing but a shake 1776 // animation near the bottom of the form, which silently killed the button that carries ~85% 1777 // of all successful logins. 1778 googleBtn.addEventListener("click", function() { 1779 track("login_google_clicked", {}); 1780 window.location.href = BASE + "auth.php?google=1&login=1"; 1781 }); 1782 1783 // Form Submit via AJAX 1784 form.addEventListener("submit", async function(e) { 1785 e.preventDefault(); 1786 1787 if (!validateEmail()) { 1788 rejectWith(STRINGS.invalidEmail, emailInput, "invalid_email"); 1789 return; 1790 } 1791 1792 const typedEmail = emailInput.value.trim(); 1793 1794 // Step one. Resolve the address, then decide what this form is for. 1795 if (probedEmail !== typedEmail) { 1796 submitBtn.classList.add("loading"); 1797 hideAlert(); 1798 const probe = await probeEmail(typedEmail); 1799 submitBtn.classList.remove("loading"); 1800 1801 probedEmail = typedEmail; 1802 track("login_email_probed", { status: probe.status }); 1803 1804 if (probe.status === "social") { 1805 showSocialStep(probe.provider); 1806 return; 1807 } 1808 1809 showPasswordStep(probe.status); 1810 1811 // Stop here so they can type the password we have just asked for. The exception is 1812 // a field a password manager has already filled: making that person press the 1813 // button twice would be a regression for the commonest successful path there is. 1814 if (!passwordInput.value) return; 1815 } 1816 1817 // Presence, not strength. See updatePasswordMeter(). 1818 if (!passwordInput.value) { 1819 rejectWith(STRINGS.passwordEmpty, passwordInput, "empty_password"); 1820 return; 1821 } 1822 1823 submitBtn.classList.add("loading"); 1824 hideAlert(); 1825 1826 const body = new FormData(form); 1827 1828 // Turnstile, and ONLY on a branch that can create an account. Keying this off 1829 // Captcha.armed() alone was wrong: the widget stays mounted after the address is 1830 // edited, so somebody who mistyped their address, armed it, then corrected it to 1831 // their real one was refused a SIGN-IN by a challenge sign-in does not use â the one 1832 // path this feature promised not to touch. probedStatus is what says which branch 1833 // this is; armed() only says whether a widget happens to exist. 1834 // 1835 // Turnstile renders inside the form and injects cf-turnstile-response itself, so 1836 // FormData has usually collected the token already; the rest of this only fills gaps. 1837 if (probedStatus === "new" || probedStatus === "unknown") { 1838 // Submitted before the mount finished. Waiting beats spending a round trip on a 1839 // request the server would answer with captcha_required. 1840 if (!Captcha.armed()) await Captcha.arm(); 1841 1842 if (Captcha.armed() && !body.get("cf-turnstile-response")) { 1843 const captchaToken = await Captcha.token(5000); 1844 if (captchaToken) { 1845 body.set("cf-turnstile-response", captchaToken); 1846 } else if (probedStatus === "new") { 1847 // Known to be a registration, and Cloudflare wants a tap it has not had. 1848 // interaction-only means the widget is on screen by now, so point at it 1849 // rather than submit a request the server is certain to refuse. 1850 submitBtn.classList.remove("loading"); 1851 showAlert(STRINGS.captchaFailed, "error"); 1852 track("signup_blocked_client", { reason: "captcha_incomplete" }); 1853 return; 1854 } 1855 // "unknown" deliberately falls through unblocked: the probe failed, so this 1856 // may well be a login, and refusing it here would break sign-in for someone
1857 // whose only mistake was a flaky network. The server is the only party that 1858 // knows which branch it took, and it answers captcha_required if it matters. 1859 } 1860 } 1861 1862 try { 1863 const response = await fetch(BASE, { 1864 method: "POST", 1865 body: body, 1866 headers: { "X-Requested-With": "XMLHttpRequest" } 1867 }); 1868 1869 // index.php answers a stale CSRF token with a plain-text 403, not JSON. The old code 1870 // let response.json() throw, then resubmitted the form without the ajax flag â which 1871 // hit the same 403 and rendered it as a blank white page. Read the body defensively 1872 // and tell the user something true instead. 1873 let data = null; 1874 try { 1875 data = await response.json(); 1876 } catch (parseError) { 1877 data = null; 1878 } 1879 1880 if (!data) { 1881 submitBtn.classList.remove("loading"); 1882 if (response.status === 403) { 1883 // Stale CSRF token: the session expired while this page sat open. Nothing 1884 // the user can do but reload, so do it for them and carry the email over. 1885 showAlert(STRINGS.sessionExpired, "error"); 1886 track("login_blocked_client", { reason: "csrf_expired" }); 1887 try { sessionStorage.setItem("login_email", emailInput.value.trim()); } catch (err) {} 1888 setTimeout(function() { window.location.reload(); }, 2500); 1889 } else { 1890 showAlert(STRINGS.loginFailed, "error"); 1891 track("login_blocked_client", { reason: "bad_response_" + response.status }); 1892 } 1893 return; 1894 } 1895 1896 if (data.success) { 1897 showAlert(data.message || STRINGS.redirecting, "success"); 1898 try { sessionStorage.removeItem("login_email"); } catch (err) {} 1899 setTimeout(function() { 1900 window.location.href = data.redirect || BASE; 1901 }, 500); 1902 } else { 1903 // captcha_required is the server saying it took the registration branch and 1904 // found no usable token â a probe that answered "unknown", a page that was 1905 // open before the widget mounted, a blocked script. Mount it now and let them 1906 // try once more; without this the person is simply stuck forever. 1907 if (data.captcha_required) await Captcha.arm(); 1908 1909 // Every rejection retires the token, so the next attempt needs a fresh one. 1910 Captcha.reset(); 1911 1912 showAlert(data.message || STRINGS.loginFailed, "error"); 1913 submitBtn.classList.remove("loading"); 1914 } 1915 } catch (err) { 1916 // Genuine network failure. Resubmitting the form here would only produce the blank 1917 // page described above, so say what happened and leave the typed values in place. 1918 showAlert(STRINGS.networkError, "error"); 1919 submitBtn.classList.remove("loading"); 1920 } 1921 }); 1922 1923 // Autofill recovery. 1924 // 1925 // Browsers fill saved credentials asynchronously, and Safari/iOS in particular masks the 1926 // value from scripts until the user interacts with the page. A one-shot check at parse time 1927 // therefore reads "" for a field that visibly contains a password. That used to leave the 1928 // submit button disabled on a form the user could see was full. The button is no longer 1929 // disabled, so this is now only about keeping the checklist and the email state honest. 1930 function syncFromAutofill() { 1931 if (emailInput.value) validateEmail(); 1932 if (passwordInput.value) { 1933 updatePasswordMeter(); 1934 // A manager filled the password while we were still on step one. Hiding a field the 1935 // browser has already filled is worse than showing one we have not justified yet, 1936 // so reveal it and let the submit handler resolve the address on the way past. 1937 if (passwordGroup.style.display === "none") showPasswordStep("unknown", false, false); 1938 } 1939 } 1940 1941 // Applied from script, never from the server response: a browser that fails to run this 1942 // must still get the working one-step form the page has always rendered. 1943 if (!passwordInput.value) showEmailStep(); 1944 1945 syncFromAutofill(); 1946 setTimeout(syncFromAutofill, 250); 1947 window.addEventListener("pageshow", syncFromAutofill); 1948 form.addEventListener("focusin", syncFromAutofill, { once: true }); 1949 1950 // Restore the email after a forced reload from an expired CSRF token. 1951 try { 1952 const savedEmail = sessionStorage.getItem("login_email"); 1953 if (savedEmail && !emailInput.value) { 1954 emailInput.value = savedEmail; 1955 validateEmail(); 1956 } 1957 sessionStorage.removeItem("login_email"); 1958 } catch (err) { /* private mode */ } 1959
1960 // Update forgot password link with current email 1961 const forgotLink = document.getElementById("forgotPasswordLink"); 1962 function updateForgotLink() { 1963 const email = emailInput.value.trim(); 1964 forgotLink.href = email && emailPattern.test(email) 1965 ? BASE + "forgot-password?email=" + encodeURIComponent(email) 1966 : BASE + "forgot-password"; 1967 } 1968 emailInput.addEventListener("change", updateForgotLink); 1969 emailInput.addEventListener("blur", updateForgotLink); 1970 updateForgotLink(); 1971 })(); 1972 </script>
1972 1973 1974 1975 1976 1977 </main> 1978 1979 1980 1981
1981<script>(function(d, w, c){w.BrevoConversationsID = '64b5a57d072c447de967a09b';w[c] = w[c] || function(){ (w[c].q = w[c].q || []).push(arguments); };w.ccLoadBrevoChat = function(cb){var s = d.getElementById('brevo-convo-script');if (s) { if (cb) cb(); return; }s = d.createElement('script'); s.id = 'brevo-convo-script'; s.async = true;s.src = 'https://conversations-widget.brevo.com/brevo-conversations.js';if (cb) s.onload = function(){ setTimeout(cb, 800); };(d.head || d.documentElement).appendChild(s);};w.ccOpenSupportChat = function(){try { w.ccLoadBrevoChat(function(){ try { w[c]('openChat', true); } catch(e) {} }); } catch(e) {}};w.ccLoadBrevoChat();})(document, window, 'BrevoConversations');</script>
1981 1982 1983 1984 <footer class="text-center" id="footer"> 1985 1986 <p> 1987 <a href="https://rebrand.ly/reddit-clipcafe" title="Our Reddit community"><img data-src="img/reddit.svg" height="50" width="50" alt="Reddit community" class="lazyImg"></a> 1988 <a href="https://discord.gg/kyKmte9CPp" title="Our Discord Channel"><img data-src="img/discord2.svg" height="50" width="50" alt="Discord Channel" class="lazyImg"></a> 1989 <a href="https://rebrand.ly/twitter-clipcafe" title="Our Twitter"><img data-src="img/twitter.svg" height="50" width="50" alt="Twitter" class="lazyImg"></a> 1990 </p> 1991 1992 <div class="text-center m-33-a"> 1993 <div class="trustpilot-badge"> 1994 <a href="https://www.trustpilot.com/review/clip.cafe" target="_blank" rel="noopener"> 1995 1996 <div class="badge-content"> 1997 <div class="badge-score">4.5</div> 1998 <div class="badge-rating">Excellent</div> 1999 <div class="badge-stars">â â â â â</div> 2000 </div> 2001 </a> 2002 </div> 2003</div> 2004 2005 <div class="footer-lang-switcher"><a href="#" onclick="switchLanguage('en'); return false;" class="footer-lang-link active"><img src="https://flagcdn.com/w40/gb.png" width="20" height="15" alt="English" style="border-radius: 2px; vertical-align: middle;"> English</a> <span class="footer-lang-sep">|</span> <a href="#" onclick="switchLanguage('es'); return false;" class="footer-lang-link"><img src="https://flagcdn.com/w40/es.png" width="20" height="15" alt="Spanish" style="border-radius: 2px; vertical-align: middle;"> Español</a> <span class="footer-lang-sep">|</span> <a href="#" onclick="switchLanguage('pt'); return false;" class="footer-lang-link"><img src="https://flagcdn.com/w40/br.png" width="20" height="15" alt="Portuguese" style="border-radius: 2px; vertical-align: middle;"> Português</a> <span class="footer-lang-sep">|</span> <a href="#" onclick="switchLanguage('fr'); return false;" class="footer-lang-link"><img src="https://flagcdn.com/w40/fr.png" width="20" height="15" alt="French" style="border-radius: 2px; vertical-align: middle;"> Français</a> <span class="footer-lang-sep">|</span> <a href="#" onclick="switchLanguage('de'); return false;" class="footer-lang-link"><img src="https://flagcdn.com/w40/de.png" width="20" height="15" alt="German" style="border-radius: 2px; vertical-align: middle;"> Deutsch</a> <span class="footer-lang-sep">|</span> <a href="#" onclick="switchLanguage('it'); return false;" class="footer-lang-link"><img src="https://flagcdn.com/w40/it.png" width="20" height="15" alt="Italian" style="border-radius: 2px; vertical-align: middle;"> Italiano</a> <span class="footer-lang-sep">|</span> <a href="#" onclick="switchLanguage('tr'); return false;" class="footer-lang-link"><img src="https://flagcdn.com/w40/tr.png" width="20" height="15" alt="Turkish" style="border-radius: 2px; vertical-align: middle;"> Türkçe</a> <span class="footer-lang-sep">|</span> <a href="#" onclick="switchLanguage('zh'); return false;" class="footer-lang-link"><img src="https://flagcdn.com/w40/cn.png" width="20" height="15" alt="Chinese" style="border-radius: 2px; vertical-align: middle;"> 䏿</a> <span class="footer-lang-sep">|</span> <a href="#" onclick="switchLanguage('ja'); return false;" class="footer-lang-link"><img src="https://flagcdn.com/w40/jp.png" width="20" height="15" alt="Japanese" style="border-radius: 2px; vertical-align: middle;"> æ¥æ¬èª</a> <span class="footer-lang-sep">|</span> <a href="#" onclick="switchLanguage('ko'); return false;" class="footer-lang-link"><img src="https://flagcdn.com/w40/kr.png" width="20" height="15" alt="Korean" style="border-radius: 2px; vertical-align: middle;"> íêµì´</a> <span class="footer-lang-sep">|</span> <a href="#" onclick="switchLanguage('id'); return false;" class="footer-lang-link"><img src="https://flagcdn.com/w40/id.png" width="20" height="15" alt="Indonesian" style="border-radius: 2px; vertical-align: middle;"> Bahasa Indonesia</a> <span class="footer-lang-sep">|</span> <a href="#" onclick="switchLanguage('ar'); return false;" class="footer-lang-link"><img src="https://flagcdn.com/w40/sa.png" width="20" height="15" alt="Arabic" style="border-radius: 2px; vertical-align: middle;"> Ø§ÙØ¹Ø±Ø¨ÙØ©</a></div> 2006 2007 <div class="footer-links-row"> 2008 Movie Quote Database with Video Clips | 2009 <a href="./spotlight/">Spotlight</a> | 2010 <a href="./categories/">Genres</a> | 2011 <a href="./movies-by-year">Years</a> | 2012 <a href="./aboutus/">About Us</a> | 2013 <a href="./privacypolicy/">Privacy Policy</a> | 2014 <a href="./refundpolicy/">Refund Policy</a> | 2015 <a href="./termsandconditions/">Terms & Conditions</a> | 2016 <a href="./allsitemaps.xml">Sitemap</a> | 2017 <a href="./dmca/">DMCA</a> | 2018 <a href="#" onclick="ccOpenSupportChat();return false;">
2018Report a bug</a> | 2019 info<img src="img/e.svg" class="v-sub" height="20" width="20" alt="@">clip.cafe | 1337 LLC, Charlestown,Nevis 2020 </div> 2021 2022 2023 All movie names, images, videos are registered trademarks and/or copyrights of their respective holders | Site is protected by reCAPTCHA. <a href="https://policies.google.com/privacy" target="_blank" rel="noopener noreferrer">Google Privacy Policy</a> and 2024 <a href="https://policies.google.com/terms" target="_blank" rel="noopener noreferrer">Terms of Service</a> apply. 2025 2026 </footer> 2027 2028
2028<script> 2029 2030 </script>
2030 2031 2032 <!-- Security Cleanup Script --> 2033
2033<script src="security-cleanup.js?v=1769240009"></script>
2033 2034 2035 2036 2037 2038 2039 2040
2040<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:'a440ca924df67236',t:'MTc5MDkxMzUzMw=='};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>
2040<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"0eaf7b9cdd604b0a9b725aebbca431a8","r":1,"spa":2}' crossorigin="anonymous"></script>
2040 2041</body> 2042</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.