PageSourceSearch

https://www.portimaosurfclube.pt/

html portimaosurfclube.pt collected 2026-10-08 09:10:47 UTC 112,086 bytes, 1,950 lines download raw bytes

1   
2<!DOCTYPE HTML>
3<html lang="en">
4<head>
5    <meta charset="utf-8">
6    <title id="title">PTMSC - Portimão Surf Clube</title> <meta name="description" content="Discover inclusive surf lessons in Portimão, Algarve with national champion Francisco Canelas. Surf, skate, bodyboard & SUP experiences. Join the community today!" />
7	<meta property="og:url" content="https://www.portimaosurfclube.pt/" />
8	<meta property="og:type" content="website" />
9	<meta property="og:title" content="PTMSC - Portimão Surf Clube" />
10	<meta property="og:description" content="Discover inclusive surf lessons in Portimão, Algarve with national champion Francisco Canelas. Surf, skate, bodyboard & SUP experiences. Join the community today!" />
11	<meta property="fb:app_id" content="1885501691506569">
12	<meta property="fb:admins" content="682149650">
13
14	<link rel="preconnect" href="https://use.typekit.net" crossorigin>
15	<link rel="preconnect" href="https://cloudflarestream.com" crossorigin>
16	
17	<meta property="og:image" content="https://www.portimaosurfclube.pt/_design/PTMSC-open-graph.jpg" />
18<meta name="twitter:card" content="summary_large_image">
19<meta name="twitter:site" content="@portimaosurfclube">
20<meta name="twitter:creator" content="@codeshore">
21<meta name="twitter:title" content="PTMSC - Portimão Surf Clube">
22<meta name="twitter:description" content="Discover inclusive surf lessons in Portimão, Algarve with national champion Francisco Canelas. Surf, skate, bodyboard & SUP experiences. Join the community today!">
23<meta name="twitter:image" content="https://www.portimaosurfclube.pt/_design/PTMSC-open-graph.jpg">
24	<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no, shrink-to-fit=no">
25
26    
26<script src="https://www.portimaosurfclube.pt/_jquery/jquery-3.5.1.min.js"></script>
26
27
28    
28<script src="https://algarve.media/_scroll-reveal/scroll-reveal.js"></script>
28
29    <link href="https://algarve.media/_scroll-reveal/scroll-reveal.css" rel="stylesheet">    
30    
31    <link href="//netdna.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.css" rel="stylesheet">
32	<link href="https://www.portimaosurfclube.pt/_font-awesome/css/all.css" rel="stylesheet">
33    <!--
34	<link href="https://www.portimaosurfclube.pt/_bootstrap/bootstrap.min.css" rel="stylesheet">
35    
35<script src="https://www.portimaosurfclube.pt/_bootstrap/bootstrap.bundle.min.js"></script>
35  
36	-->
37	<link 
38	  href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" 
39	  rel="stylesheet" 
40	  integrity="sha384-sRIl4kxILFvY47J16cr9ZwB07vP4J8+LH7qKQnuqkuIAvNWLzeN8tE5YBujZqJLB" 
41	  crossorigin="anonymous">
42	
42<script 
43	  src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" 
44	  integrity="sha384-FKyoEForCGlyvwx9Hj09JcYn3nv7wiPVlz7YYwJrWVcXK/BmnVDxM+D2scQbITxI" 
45	  crossorigin="anonymous"></script>
45	
46
47	<meta name="apple-mobile-web-app-title" content="PTMSC - Portimão Surf Clube" />
48	<link rel="shortcut icon" href="https://www.portimaosurfclube.pt/_design/favicon/favicon.ico" />
49	<link rel="icon" href="https://www.portimaosurfclube.pt/_design/favicon/majak.svg" type="image/svg+xml" />
50	<link rel="apple-touch-icon" sizes="57x57" href="https://www.portimaosurfclube.pt/_design/favicon/apple-icon-57x57.png">
51	<link rel="apple-touch-icon" sizes="60x60" href="https://www.portimaosurfclube.pt/_design/favicon/apple-icon-60x60.png">
52	<link rel="apple-touch-icon" sizes="72x72" href="https://www.portimaosurfclube.pt/_design/favicon/apple-icon-72x72.png">
53	<link rel="apple-touch-icon" sizes="76x76" href="https://www.portimaosurfclube.pt/_design/favicon/apple-icon-76x76.png">
54	<link rel="apple-touch-icon" sizes="114x114" href="https://www.portimaosurfclube.pt/_design/favicon/apple-icon-114x114.png">
55	<link rel="apple-touch-icon" sizes="120x120" href="https://www.portimaosurfclube.pt/_design/favicon/apple-icon-120x120.png">
56	<link rel="apple-touch-icon" sizes="144x144" href="https://www.portimaosurfclube.pt/_design/favicon/apple-icon-144x144.png">
57	<link rel="apple-touch-icon" sizes="152x152" href="https://www.portimaosurfclube.pt/_design/favicon/apple-icon-152x152.png">
58	<link rel="apple-touch-icon" sizes="180x180" href="https://www.portimaosurfclube.pt/_design/favicon/apple-icon-180x180.png">
59	<link rel="icon" type="image/png" sizes="192x192"  href="https://www.portimaosurfclube.pt/_design/favicon/android-icon-192x192.png">
60	<link rel="icon" type="image/png" sizes="32x32" href="https://www.portimaosurfclube.pt/_design/favicon/favicon-32x32.png">
61	<link rel="icon" type="image/png" sizes="96x96" href="https://www.portimaosurfclube.pt/_design/favicon/favicon-96x96.png">
62	<link rel="icon" type="image/png" sizes="16x16" href="https://www.portimaosurfclube.pt/_design/favicon/favicon-16x16.png">
63	<link rel="manifest" href="https://www.portimaosurfclube.pt/_design/favicon/manifest.json">
64	<meta name="msapplication-TileColor" content="#ffffff">
65	<meta name="msapplication-TileImage" content="https://www.portimaosurfclube.pt/_design/favicon/ms-icon-144x144.png">
66	<meta name="theme-color" content="#ffffff">
67
68		<style>
69		</style>
70	    
71	
72	
72<script type="text/javascript">
73		var waitForFinalEvent = (function () {
74		  var timers = {};
75		  return function (callback, ms, uniqueId) {
76			if (!uniqueId) {
77			  uniqueId = "rockandroll_179145064716677289";
78			}
79			if (timers[uniqueId]) {
80			  clearTimeout (timers[uniqueId]);
81			}
82			timers[uniqueId] = setTimeout(callback, ms);
83		  };
84		})();
85
86		
87	var isMobile = false;		
88	$(function () {
89		isMobile = /iPhone|iPad|iPod|Android|BlackBerry|IEMobile|Opera Mini/i
90			.test(navigator.userAgent);
91
92		if (isMobile || $(window).width() < 992) {
93			$("body").addClass("mobile");
94		} else {
95			$("body").addClass("desktop");
96		}
97	});		
98
99    //alert("Device Type Detected: " + navigator.maxTouchPoints);
100
101		
102		
103    // device detection	
104	/*
105    if() { 
106        isMobile = true;
107		$("body").addClass("mobile");
108    } else {
109		$("body").addClass("desktop");
110	}
111	*/	
112        
113        
114    $(function(){
115
116        $('[data-remove-class]').each(function(){
117            
118            //$(this).parents('div').removeClass($(this).data("remove-class"));
119            //$(this).removeClass($(this).data("remove-class"));
120                        
121        });   
122		
123		
124        $('[data-parent-href]').each(function(){
125            
126            $(this).parent('div').mouseover(function(){
127                $(this).css("cursor","pointer");
128            });
129            
130            $(this).click(function(){
131                window.location=$(this).data("parent-href");
132            });
133            
134        });   
135        
136        $('[data-href]').each(function(){
137            
138            $(this).mouseover(function(){
139                $(this).css("cursor","pointer");
140            });
141            
142            $(this).click(function(){
143                window.location=$(this).data("href");                    
144            });
145            
146        });   
147        
148        // Every time a modal is shown, if it has an autofocus element, focus on it.
149        $('.modal').on('shown.bs.modal', function() {
150          $(this).find('[autofocus]').focus();
151        });
152    });
153    </script>
153
154    
154<script type="text/javascript">
155   var Latinise={};Latinise.latin_map={"Á":"A","Ă":"A","Ắ":"A","Ặ":"A","Ằ":"A","Ẳ":"A","Ẵ":"A","Ǎ":"A","Â":"A","Ấ":"A","Ậ":"A","Ầ":"A","Ẩ":"A","Ẫ":"A","Ä":"A","Ǟ":"A","Ȧ":"A","Ǡ":"A","Ạ":"A","Ȁ":"A","À":"A","Ả":"A","Ȃ":"A","Ā":"A","Ą":"A","Å":"A","Ǻ":"A","Ḁ":"A","Ⱥ":"A","Ã":"A","Ꜳ":"AA","Æ":"AE","Ǽ":"AE","Ǣ":"AE","Ꜵ":"AO","Ꜷ":"AU","Ꜹ":"AV","Ꜻ":"AV","Ꜽ":"AY","Ḃ":"B","Ḅ":"B","Ɓ":"B","Ḇ":"B","Ƀ":"B","Ƃ":"B","Ć":"C","Č":"C","Ç":"C","Ḉ":"C","Ĉ":"C","Ċ":"C","Ƈ":"C","Ȼ":"C","Ď":"D","Ḑ":"D","Ḓ":"D","Ḋ":"D","Ḍ":"D","Ɗ":"D","Ḏ":"D","Dz":"D","Dž":"D","Đ":"D","Ƌ":"D","DZ":"DZ","DŽ":"DZ","É":"E","Ĕ":"E","Ě":"E","Ȩ":"E","Ḝ":"E","Ê":"E","Ế":"E","Ệ":"E","Ề":"E","Ể":"E","Ễ":"E","Ḙ":"E","Ë":"E","Ė":"E","Ẹ":"E","Ȅ":"E","È":"E","Ẻ":"E","Ȇ":"E","Ē":"E","Ḗ":"E","Ḕ":"E","Ę":"E","Ɇ":"E","Ẽ":"E","Ḛ":"E","Ꝫ":"ET","Ḟ":"F","Ƒ":"F","Ǵ":"G","Ğ":"G","Ǧ":"G","Ģ":"G","Ĝ":"G","Ġ":"G","Ɠ":"G","Ḡ":"G","Ǥ":"G","Ḫ":"H","Ȟ":"H","Ḩ":"H","Ĥ":"H","Ⱨ":"H","Ḧ":"H","Ḣ":"H","Ḥ":"H","Ħ":"H","Í":"I","Ĭ":"I","Ǐ":"I","Î":"I","Ï":"I","Ḯ":"I","İ":"I","Ị":"I","Ȉ":"I","Ì":"I","Ỉ":"I","Ȋ":"I","Ī":"I","Į":"I","Ɨ":"I","Ĩ":"I","Ḭ":"I","Ꝺ":"D","Ꝼ":"F","Ᵹ":"G","Ꞃ":"R","Ꞅ":"S","Ꞇ":"T","Ꝭ":"IS","Ĵ":"J","Ɉ":"J","Ḱ":"K","Ǩ":"K","Ķ":"K","Ⱪ":"K","Ꝃ":"K","Ḳ":"K","Ƙ":"K","Ḵ":"K","Ꝁ":"K","Ꝅ":"K","Ĺ":"L","Ƚ":"L","Ľ":"L","Ļ":"L","Ḽ":"L","Ḷ":"L","Ḹ":"L","Ⱡ":"L","Ꝉ":"L","Ḻ":"L","Ŀ":"L","Ɫ":"L","Lj":"L","Ł":"L","LJ":"LJ","Ḿ":"M","Ṁ":"M","Ṃ":"M","Ɱ":"M","Ń":"N","Ň":"N","Ņ":"N","Ṋ":"N","Ṅ":"N","Ṇ":"N","Ǹ":"N","Ɲ":"N","Ṉ":"N","Ƞ":"N","Nj":"N","Ñ":"N","NJ":"NJ","Ó":"O","Ŏ":"O","Ǒ":"O","Ô":"O","Ố":"O","Ộ":"O","Ồ":"O","Ổ":"O","Ỗ":"O","Ö":"O","Ȫ":"O","Ȯ":"O","Ȱ":"O","Ọ":"O","Ő":"O","Ȍ":"O","Ò":"O","Ỏ":"O","Ơ":"O","Ớ":"O","Ợ":"O","Ờ":"O","Ở":"O","Ỡ":"O","Ȏ":"O","Ꝋ":"O","Ꝍ":"O","Ō":"O","Ṓ":"O","Ṑ":"O","Ɵ":"O","Ǫ":"O","Ǭ":"O","Ø":"O","Ǿ":"O","Õ":"O","Ṍ":"O","Ṏ":"O","Ȭ":"O","Ƣ":"OI","Ꝏ":"OO","Ɛ":"E","Ɔ":"O","Ȣ":"OU","Ṕ":"P","Ṗ":"P","Ꝓ":"P","Ƥ":"P","Ꝕ":"P","Ᵽ":"P","Ꝑ":"P","Ꝙ":"Q","Ꝗ":"Q","Ŕ":"R","Ř":"R","Ŗ":"R","Ṙ":"R","Ṛ":"R","Ṝ":"R","Ȑ":"R","Ȓ":"R","Ṟ":"R","Ɍ":"R","Ɽ":"R","Ꜿ":"C","Ǝ":"E","Ś":"S","Ṥ":"S","Š":"S","Ṧ":"S","Ş":"S","Ŝ":"S","Ș":"S","Ṡ":"S","Ṣ":"S","Ṩ":"S","Ť":"T","Ţ":"T","Ṱ":"T","Ț":"T","Ⱦ":"T","Ṫ":"T","Ṭ":"T","Ƭ":"T","Ṯ":"T","Ʈ":"T","Ŧ":"T","Ɐ":"A","Ꞁ":"L","Ɯ":"M","Ʌ":"V","Ꜩ":"TZ","Ú":"U","Ŭ":"U","Ǔ":"U","Û":"U","Ṷ":"U","Ü":"U","Ǘ":"U","Ǚ":"U","Ǜ":"U","Ǖ":"U","Ṳ":"U","Ụ":"U","Ű":"U","Ȕ":"U","Ù":"U","Ủ":"U","Ư":"U","Ứ":"U","Ự":"U","Ừ":"U","Ử":"U","Ữ":"U","Ȗ":"U","Ū":"U","Ṻ":"U","Ų":"U","Ů":"U","Ũ":"U","Ṹ":"U","Ṵ":"U","Ꝟ":"V","Ṿ":"V","Ʋ":"V","Ṽ":"V","Ꝡ":"VY","Ẃ":"W","Ŵ":"W","Ẅ":"W","Ẇ":"W","Ẉ":"W","Ẁ":"W","Ⱳ":"W","Ẍ":"X","Ẋ":"X","Ý":"Y","Ŷ":"Y","Ÿ":"Y","Ẏ":"Y","Ỵ":"Y","Ỳ":"Y","Ƴ":"Y","Ỷ":"Y","Ỿ":"Y","Ȳ":"Y","Ɏ":"Y","Ỹ":"Y","Ź":"Z","Ž":"Z","Ẑ":"Z","Ⱬ":"Z","Ż":"Z","Ẓ":"Z","Ȥ":"Z","Ẕ":"Z","Ƶ":"Z","IJ":"IJ","Œ":"OE","ᴀ":"A","ᴁ":"AE","ʙ":"B","ᴃ":"B","ᴄ":"C","ᴅ":"D","ᴇ":"E","ꜰ":"F","ɢ":"G","ʛ":"G","ʜ":"H","ɪ":"I","ʁ":"R","ᴊ":"J","ᴋ":"K","ʟ":"L","ᴌ":"L","ᴍ":"M","ɴ":"N","ᴏ":"O","ɶ":"OE","ᴐ":"O","ᴕ":"OU","ᴘ":"P","ʀ":"R","ᴎ":"N","ᴙ":"R","ꜱ":"S","ᴛ":"T","ⱻ":"E","ᴚ":"R","ᴜ":"U","ᴠ":"V","ᴡ":"W","ʏ":"Y","ᴢ":"Z","á":"a","ă":"a","ắ":"a","ặ":"a","ằ":"a","ẳ":"a","ẵ":"a","ǎ":"a","â":"a","ấ":"a","ậ":"a","ầ":"a","ẩ":"a","ẫ":"a","ä":"a","ǟ":"a","ȧ":"a","ǡ":"a","ạ":"a","ȁ":"a","à":"a","ả":"a","ȃ":"a","ā":"a","ą":"a","ᶏ":"a","ẚ":"a","å":"a","ǻ":"a","ḁ":"a","ⱥ":"a","ã":"a","ꜳ":"aa","æ":"ae","ǽ":"ae","ǣ":"ae","ꜵ":"ao","ꜷ":"au","ꜹ":"av","ꜻ":"av","ꜽ":"ay","ḃ":"b","ḅ":"b","ɓ":"b","ḇ":"b","ᵬ":"b","ᶀ":"b","ƀ":"b","ƃ":"b","ɵ":"o","ć":"
155c","č":"c","ç":"c","ḉ":"c","ĉ":"c","ɕ":"c","ċ":"c","ƈ":"c","ȼ":"c","ď":"d","ḑ":"d","ḓ":"d","ȡ":"d","ḋ":"d","ḍ":"d","ɗ":"d","ᶑ":"d","ḏ":"d","ᵭ":"d","ᶁ":"d","đ":"d","ɖ":"d","ƌ":"d","ı":"i","ȷ":"j","ɟ":"j","ʄ":"j","dz":"dz","dž":"dz","é":"e","ĕ":"e","ě":"e","ȩ":"e","ḝ":"e","ê":"e","ế":"e","ệ":"e","ề":"e","ể":"e","ễ":"e","ḙ":"e","ë":"e","ė":"e","ẹ":"e","ȅ":"e","è":"e","ẻ":"e","ȇ":"e","ē":"e","ḗ":"e","ḕ":"e","ⱸ":"e","ę":"e","ᶒ":"e","ɇ":"e","ẽ":"e","ḛ":"e","ꝫ":"et","ḟ":"f","ƒ":"f","ᵮ":"f","ᶂ":"f","ǵ":"g","ğ":"g","ǧ":"g","ģ":"g","ĝ":"g","ġ":"g","ɠ":"g","ḡ":"g","ᶃ":"g","ǥ":"g","ḫ":"h","ȟ":"h","ḩ":"h","ĥ":"h","ⱨ":"h","ḧ":"h","ḣ":"h","ḥ":"h","ɦ":"h","ẖ":"h","ħ":"h","ƕ":"hv","í":"i","ĭ":"i","ǐ":"i","î":"i","ï":"i","ḯ":"i","ị":"i","ȉ":"i","ì":"i","ỉ":"i","ȋ":"i","ī":"i","į":"i","ᶖ":"i","ɨ":"i","ĩ":"i","ḭ":"i","ꝺ":"d","ꝼ":"f","ᵹ":"g","ꞃ":"r","ꞅ":"s","ꞇ":"t","ꝭ":"is","ǰ":"j","ĵ":"j","ʝ":"j","ɉ":"j","ḱ":"k","ǩ":"k","ķ":"k","ⱪ":"k","ꝃ":"k","ḳ":"k","ƙ":"k","ḵ":"k","ᶄ":"k","ꝁ":"k","ꝅ":"k","ĺ":"l","ƚ":"l","ɬ":"l","ľ":"l","ļ":"l","ḽ":"l","ȴ":"l","ḷ":"l","ḹ":"l","ⱡ":"l","ꝉ":"l","ḻ":"l","ŀ":"l","ɫ":"l","ᶅ":"l","ɭ":"l","ł":"l","lj":"lj","ſ":"s","ẜ":"s","ẛ":"s","ẝ":"s","ḿ":"m","ṁ":"m","ṃ":"m","ɱ":"m","ᵯ":"m","ᶆ":"m","ń":"n","ň":"n","ņ":"n","ṋ":"n","ȵ":"n","ṅ":"n","ṇ":"n","ǹ":"n","ɲ":"n","ṉ":"n","ƞ":"n","ᵰ":"n","ᶇ":"n","ɳ":"n","ñ":"n","nj":"nj","ó":"o","ŏ":"o","ǒ":"o","ô":"o","ố":"o","ộ":"o","ồ":"o","ổ":"o","ỗ":"o","ö":"o","ȫ":"o","ȯ":"o","ȱ":"o","ọ":"o","ő":"o","ȍ":"o","ò":"o","ỏ":"o","ơ":"o","ớ":"o","ợ":"o","ờ":"o","ở":"o","ỡ":"o","ȏ":"o","ꝋ":"o","ꝍ":"o","ⱺ":"o","ō":"o","ṓ":"o","ṑ":"o","ǫ":"o","ǭ":"o","ø":"o","ǿ":"o","õ":"o","ṍ":"o","ṏ":"o","ȭ":"o","ƣ":"oi","ꝏ":"oo","ɛ":"e","ᶓ":"e","ɔ":"o","ᶗ":"o","ȣ":"ou","ṕ":"p","ṗ":"p","ꝓ":"p","ƥ":"p","ᵱ":"p","ᶈ":"p","ꝕ":"p","ᵽ":"p","ꝑ":"p","ꝙ":"q","ʠ":"q","ɋ":"q","ꝗ":"q","ŕ":"r","ř":"r","ŗ":"r","ṙ":"r","ṛ":"r","ṝ":"r","ȑ":"r","ɾ":"r","ᵳ":"r","ȓ":"r","ṟ":"r","ɼ":"r","ᵲ":"r","ᶉ":"r","ɍ":"r","ɽ":"r","ↄ":"c","ꜿ":"c","ɘ":"e","ɿ":"r","ś":"s","ṥ":"s","š":"s","ṧ":"s","ş":"s","ŝ":"s","ș":"s","ṡ":"s","ṣ":"s","ṩ":"s","ʂ":"s","ᵴ":"s","ᶊ":"s","ȿ":"s","ɡ":"g","ᴑ":"o","ᴓ":"o","ᴝ":"u","ť":"t","ţ":"t","ṱ":"t","ț":"t","ȶ":"t","ẗ":"t","ⱦ":"t","ṫ":"t","ṭ":"t","ƭ":"t","ṯ":"t","ᵵ":"t","ƫ":"t","ʈ":"t","ŧ":"t","ᵺ":"th","ɐ":"a","ᴂ":"ae","ǝ":"e","ᵷ":"g","ɥ":"h","ʮ":"h","ʯ":"h","ᴉ":"i","ʞ":"k","ꞁ":"l","ɯ":"m","ɰ":"m","ᴔ":"oe","ɹ":"r","ɻ":"r","ɺ":"r","ⱹ":"r","ʇ":"t","ʌ":"v","ʍ":"w","ʎ":"y","ꜩ":"tz","ú":"u","ŭ":"u","ǔ":"u","û":"u","ṷ":"u","ü":"u","ǘ":"u","ǚ":"u","ǜ":"u","ǖ":"u","ṳ":"u","ụ":"u","ű":"u","ȕ":"u","ù":"u","ủ":"u","ư":"u","ứ":"u","ự":"u","ừ":"u","ử":"u","ữ":"u","ȗ":"u","ū":"u","ṻ":"u","ų":"u","ᶙ":"u","ů":"u","ũ":"u","ṹ":"u","ṵ":"u","ᵫ":"ue","ꝸ":"um","ⱴ":"v","ꝟ":"v","ṿ":"v","ʋ":"v","ᶌ":"v","ⱱ":"v","ṽ":"v","ꝡ":"vy","ẃ":"w","ŵ":"w","ẅ":"w","ẇ":"w","ẉ":"w","ẁ":"w","ⱳ":"w","ẘ":"w","ẍ":"x","ẋ":"x","ᶍ":"x","ý":"y","ŷ":"y","ÿ":"y","ẏ":"y","ỵ":"y","ỳ":"y","ƴ":"y","ỷ":"y","ỿ":"y","ȳ":"y","ẙ":"y","ɏ":"y","ỹ":"y","ź":"z","ž":"z","ẑ":"z","ʑ":"z","ⱬ":"z","ż":"z","ẓ":"z","ȥ":"z","ẕ":"z","ᵶ":"z","ᶎ":"z","ʐ":"z","ƶ":"z","ɀ":"z","ff":"ff","ffi":"ffi","ffl":"ffl","fi":"fi","fl":"fl","ij":"ij","œ":"oe","st":"st","ₐ":"a","ₑ":"e","ᵢ":"i","ⱼ":"j","ₒ":"o","ᵣ":"r","ᵤ":"u","ᵥ":"v","ₓ":"x"};
156	
157String.prototype.latinise=function(){return this.replace(/[^A-Za-z0-9\[\] ]/g,function(a){return Latinise.latin_map[a]||a})};
158String.prototype.latinize=String.prototype.latinise;
159String.prototype.isLatin=function(){return this==this.latinise()}
160
161</script>
161<link href="https://www.portimaosurfclube.pt/_css/style.css?v=1.0.1.3.4.1791450647" rel="stylesheet"><link href="https://www.portimaosurfclube.pt/_css/custom.css?v=1.0.4" rel="stylesheet">    
162    
162<script type="text/javascript">
163
164        function darken_screen(yesno){
165            if( yesno == true ){
166                document.querySelector('.screen-darken').classList.add('active');
167            }
168            else if(yesno == false){
169                document.querySelector('.screen-darken').classList.remove('active');
170            }
171        }
172
173        function close_offcanvas(){
174            darken_screen(false);
175            document.querySelector('.mobile-offcanvas.show').classList.remove('show');
176            document.body.classList.remove('offcanvas-active');
177        }
178
179        function show_offcanvas(offcanvas_id){
180            darken_screen(true);
181            document.getElementById(offcanvas_id).classList.add('show');
182            document.body.classList.add('offcanvas-active');
183        }
184
185        document.addEventListener("DOMContentLoaded", function(){
186            document.querySelectorAll('[data-trigger]').forEach(function(everyelement){
187
188                let offcanvas_id = everyelement.getAttribute('data-trigger');
189
190                everyelement.addEventListener('click', function (e) {
191                    e.preventDefault();
192                    show_offcanvas(offcanvas_id);
193					$('#whatsapp-chat-widget').fadeOut();
194                });
195            });
196
197            document.querySelectorAll('.btn-close').forEach(function(everybutton){
198
199                everybutton.addEventListener('click', function (e) {
200                    e.preventDefault();
201                    close_offcanvas();
202					$('#whatsapp-chat-widget').fadeIn();
203                });
204            });
205
206            document.querySelector('.screen-darken').addEventListener('click', function(event){
207                close_offcanvas();
208            });
209
210        }); 
211        // DOMContentLoaded  end
212
213		$(document).ready(function(){
214			$('[data-bs-toggle="tooltip"]').tooltip();   
215		});
216		
217		function blinkValidation(input_selector,alert_value) {
218			var input_selector = $(input_selector);
219			var input_selector_label = $(input_selector).next("label");
220			
221			clearInterval(blinkInterval);
222			input_selector_label.removeClass("text-danger");
223
224			alert(alert_value);
225
226			input_selector.focus();
227
228			 var blinkInterval = setInterval(function(){
229				input_selector_label.toggleClass("text-danger");
230			 },500);
231
232			input_selector.on("keyup change",function() {
233				clearInterval(blinkInterval);
234				input_selector_label.removeClass("text-danger");
235			});
236		}
237		
238		
239	</script>
239
240	
240<script src="https://www.portimaosurfclube.pt/_jquery/modernizr-custom.js"></script>
240
241	
242	
242<script>
243        
244        $(function(){
245
246            $('footer a').addClass('thing');
247            //$('.btn').addClass('fade_in_zoom');
248            //$('.btn').addClass('fade_in_zoom');
249            $('.btn').addClass('thing');
250
251            
252            $('footer .fade_in a').removeClass('thing');
253            $('footer .fade_in').addClass('thing-madmax');
254            
255        });
256        
257        
258        function getRandomAB() {
259            const array = new Uint8Array(1);
260            window.crypto.getRandomValues(array);
261            return (array[0] % 2 === 0) ? "_plus" : "_minus";
262            //return Math.random() < 0.5 ? "_plus" : "_minus";
263        }
264
265        function isInViewport(elem) {
266          const rect = elem.get(0).getBoundingClientRect();
267          return (
268            rect.top >= 0 &&
269            rect.bottom <= (window.innerHeight || document.documentElement.clientHeight)
270          );
271        }
272
273        $(window).on('scroll resize', function () {
274
275            $('.anime').each(function () {
276              const $el = $(this);
277
278              // If no class_postfix stored yet, assign one randomly
279              if (!$el.data('classPostfix')) {
280                const class_postfix = getRandomAB();
281                $el.data('classPostfix', class_postfix);
282              }
283
284              const postfix = $el.data('classPostfix');
285              const fullClass = 'in-view' + postfix;
286
287              if (isInViewport($el)) {
288                $el.addClass(fullClass);
289              } else {
290                $el.removeClass(fullClass);
291              }
292            });		
293
294        });
295
296        // Trigger once on page load
297        $(window).trigger('scroll');
298		
299		
300        $(window).resize(function() {
301            console.log($(window).width() + ' x ' + $(window).height());
302        });
303        
304        $(document).ready(function() {
305
306            console.log($(window).width() + ' x ' + $(window).height());
307
308            var scrollHere = '';
309
310            function scrollToClass(scrollHere) {
311                //alert($("#navbar_main").height());
312
313
314                var bleed = $("#navbar_main").height();
315                //if (Modernizr.touchevents) {
316                if(isMobile == true){	
317                  // supported
318                    bleed = 70;
319                } else {
320                  // not-supported
321                    if(bleed >= 120) bleed = 70;
322                }            
323
324
325                var stop = $(scrollHere).offset().top - bleed;
326                var delay = 600;
327                $('body,html').animate({scrollTop: stop}, delay);
328                return false;
329            }
330
331            $("a.start").on("click", function(){
332                scrollToClass(".section-content");
333            });
334
335            $("*[data-scrollto]").each(function(){
336                $(this).click(function(){
337                    //alert($(this).attr('data-scrollto'));
338                    scrollToClass($(this).attr('data-scrollto'));
339                });
340                //return false;
341            });
342
343            $("[data-copy]").on("click", function () {
344                let value = $(this).data("copy");
345                navigator.clipboard.writeText(value).then(() => {
346                    showQueuedAlert('<i class="fal fa-check fa-3x"></i><br><strong>Copied.</strong>','info',4000);
347                });
348                return true;
349            });
350
351            $("[data-copy-calendar]").on("click", function () {
352                let value = $(this).data("copy-calendar");
353                navigator.clipboard.writeText(value).then(() => {
354                    showQueuedAlert('<i class="fal fa-check fa-3x"></i><br><strong>Copied.</strong><br><br>Ready to paste into your favorite calendar app.<br><br><em>Note:</em> For automatic updates, <strong>subscribe to this calendar</strong> instead of <strong>importing the file</strong>.','info',4000);
355                });
356                return true;
357            });
358
359
360        });		
361
362		$(document).ready(function() {
363
364		  function fadeOnAppear(element) {
365			var indx = $(element).index();
366			$(element).animate({
367				opacity: 1
368			}, 500);
369
370		  }
371
372		  let observer_fade = new IntersectionObserver((entries) => {
373			entries.forEach(entry => {
374			  if (entry.isIntersecting) {
375				fadeOnAppear(entry.target);
376				observer_fade.unobserve(entry.target);
377			  }
378			});
379		  }, {
380			threshold: 0.1
381		  });
382
383		  var delayator_fade = 0;	
384		  $('.fade_in').each(function() {
385			delayator_fade += 100;
386			var target = this;
387			setTimeout( function() {
388				observer_fade.observe(target);
389			}, delayator_fade);		  
390		  });
391
392		  var delayator_fade = 0;	
393		  $('.fade_in_nav').each(function() {
394			delayator_fade += 100;
395			var target = this;
396			setTimeout( function() {
397				observer_fade.observe(target);
398			}, delayator_fade);		  
399		  });
400
401		});
402		
403
404		// progress_circle START
405		$(function () {
406		  const observer = new IntersectionObserver(
407			function (entries) {
408			  entries.forEach(entry => {
409				if (entry.isIntersecting) {
410				  // trigger animation when in view
411				  animateCircle($(entry.target));
412				} else {
413				  // reset when out of view
414				  resetCircle($(entry.target));
415				}
416			  });
417			},
418			{ threshold: 0.5 } // 50% visible
419		  );
420
421		  $(".circle").each(function () {
422			observer.observe(this);
423		  });
424
425		  function animateCircle($circle) {
426			var $progress = $circle.find(".progress");
427			var $number = $circle.find(".number");
428			var percent = +$circle.data("percent");
429			var circumference = 2 * Math.PI * 105; // r=105
430			var duration = 1500;
431
432			// Animate stroke
433			$progress.stop(true).animate({ dash: percent }, {
434			  step: function (now) {
435				var offset = circumference - (circumference * now / 100);
436				$progress.css("stroke-dasharray", circumference)
437						 .css("stroke-dashoffset", offset);
438			  },
439			  duration: duration
440			});
441
442			// Animate number
443			$({ val: 0 }).stop(true).animate({ val: percent }, {
444			  duration: duration,
445			  step: function (now) {
446				$number.text(Math.floor(now) + "%");
447			  },
448			  complete: function () {
449				$number.text(percent + "%");
450			  }
451			});
452		  }
453
454		  function resetCircle($circle) {
455			var $progress = $circle.find(".progress");
456			var $number = $circle.find(".number");
457			var circumference = 2 * Math.PI * 105;
458
459			// Reset stroke and number
460			$progress.css("stroke-dasharray", circumference)
461					 .css("stroke-dashoffset", circumference);
462			$number.text("0%");
463		  }
464		});
465		// progress_circle END		
466		
467	</script>
467
468	
469	
469<script>
470		$(function () {
471		  const STORAGE_KEY = 'bootstrap-tabs-state';
472		  const ONE_HOUR = 60 * 60 * 1000;   // ← 1 hour in milliseconds
473
474		  // ==================== SAVE (with 1-hour expiration) ====================
475		  $(document).on('shown.bs.tab', '[data-bs-toggle="tab"], [data-bs-toggle="pill"]', function () {
476			let tabsState = localStorage.getItem(STORAGE_KEY);
477			let json = tabsState ? JSON.parse(tabsState) : {};
478
479			// Support both old and new stored format
480			const currentTabs = (json && json.tabs) ? json.tabs : json;
481
482			const navId = $(this).closest('[role="tablist"]').attr('id');
483			const target = $(this).attr('data-bs-target') || $(this).attr('href');
484
485			if (navId && target) {
486			  currentTabs[navId] = target;
487
488			  // Save with fresh timestamp (resets the 1-hour timer on every change)
489			  localStorage.setItem(STORAGE_KEY, JSON.stringify({
490				tabs: currentTabs,
491				timestamp: Date.now()
492			  }));
493			}
494		  });
495
496		  // ==================== RESTORE on page load (with expiration check) ====================
497		  let tabsState = localStorage.getItem(STORAGE_KEY);
498		  let json = {};                     // final tabs to restore
499		  let timestamp = 0;
500
501		  if (tabsState) {
502			try {
503			  const parsed = JSON.parse(tabsState);
504
505			  if (parsed && parsed.tabs !== undefined) {
506				// New format (with timestamp)
507				json = parsed.tabs || {};
508				timestamp = parsed.timestamp || 0;
509			  } else {
510				// Old format (backward compatibility) → give it 1 hour from now
511				json = parsed || {};
512				timestamp = Date.now();
513			  }
514
515			  // Check if expired
516			  if (Date.now() - timestamp > ONE_HOUR) {
517				localStorage.removeItem(STORAGE_KEY);   // clear expired cache
518				json = {};                              // reset to defaults
519			  }
520			} catch (e) {
521			  localStorage.removeItem(STORAGE_KEY);
522			  json = {};
523			}
524		  }
525
526		  // Restore saved tabs (works for any depth)
527		  Object.keys(json).forEach(navId => {
528			const target = json[navId];
529			const tabEl = document.querySelector(
530			  `#${navId} button[data-bs-target="${target}"], #${navId} a[href="${target}"]`
531			);
532
533			if (tabEl) {
534			  const tab = new bootstrap.Tab(tabEl);
535			  tab.show();
536			}
537		  });
538
539		  // Fallback: activate first button if nothing valid is saved
540		  $('[role="tablist"]').each(function () {
541			const $nav = $(this);
542			const navId = $nav.attr('id');
543			if (navId && !json[navId]) {
544			  const firstBtn = $nav.find('[data-bs-toggle="tab"], [data-bs-toggle="pill"]').first()[0];
545			  if (firstBtn) {
546				new bootstrap.Tab(firstBtn).show();
547			  }
548			}
549		  });
550		});
551	</script>
551
552    
553    <!-- Matomo -->
554        
554<script>
555      var _paq = window._paq = window._paq || [];
556      _paq.push(['trackPageView']);
557      _paq.push(['enableLinkTracking']);
558      (function() {
559        var u = "https://matomo.ptmsc.link/";
560        _paq.push(['setTrackerUrl', u + 'matomo.php']);
561        _paq.push(['setSiteId', '1']);
562        var d = document,
563            g = d.createElement('script'),
564            s = d.getElementsByTagName('script')[0];
565        g.async = true;
566        g.src = u + 'matomo.js';
567        s.parentNode.insertBefore(g, s);
568      })();
569    </script>
569
570        <!-- End Matomo Code -->
571    
572    <link rel="alternate" hreflang="en" href="https://www.portimaosurfclube.pt/">
573<link rel="alternate" hreflang="pt-PT" href="https://www.portimaosurfclube.pt/pt">
574<link rel="alternate" hreflang="x-default" href="https://www.portimaosurfclube.pt/">
575
576<script type="application/ld+json">
577{"@context":"https://schema.org","@graph":[{"@type":["SportsOrganization","EducationalOrganization"],"@id":"https://www.portimaosurfclube.pt/#organization","name":"PTMSC - Portim\u00e3o Surf Clube","alternateName":["Portim\u00e3o Surf Clube","PTMSC"],"legalName":"PTMSC - Portim\u00e3o Surf Clube","url":"https://www.portimaosurfclube.pt/","logo":{"@id":"https://www.portimaosurfclube.pt/#logo"},"image":{"@id":"https://www.portimaosurfclube.pt/#logo"},"description":"Surf, bodyboard, skateboarding and stand up paddle club and academy in Portim\u00e3o, Algarve, founded in 2014 by national surfing champion Francisco Canelas. Inclusive coaching for all ages and abilities, including a Para Surfing programme.","foundingDate":"2014","foundingLocation":{"@id":"https://www.portimaosurfclube.pt/#place"},"founder":{"@id":"https://www.portimaosurfclube.pt/#person-francisco-canelas"},"sport":["Surfing","Bodyboarding","Skateboarding","Stand up paddleboarding","Para surfing"],"location":{"@id":"https://www.portimaosurfclube.pt/#place"},"address":{"@type":"PostalAddress","streetAddress":"Estrada Marina 280","addressLocality":"Portim\u00e3o","addressRegion":"Faro","postalCode":"8500-311","addressCountry":"PT"},"telephone":"+351966559739","email":"[email protected]","sameAs":["https://www.instagram.com/portimaosurfclube/","https://www.facebook.com/portimaosurfclube/","https://www.tripadvisor.com/Attraction_Review-g652081-d19327882-Reviews-Portimao_Surf_Clube-Praia_da_Rocha_Portimao_Faro_District_Algarve.html","https://g.page/r/CeqaZZxMKqUKEBM/"],"knowsAbout":["Surfing","Surf coaching","Bodyboarding","Skateboarding","Stand up paddleboarding","Adaptive surfing","Para surfing","Ocean safety","Surf forecasting"],"knowsLanguage":[{"@type":"Language","name":"English","alternateName":"en"},{"@type":"Language","name":"Portuguese","alternateName":"pt"}],"areaServed":[{"@type":"City","name":"Portim\u00e3o"},{"@type":"Place","name":"Praia da Rocha"},{"@type":"Place","name":"Alvor"},{"@type":"Place","name":"Costa Vicentina"},{"@type":"AdministrativeArea","name":"Algarve"}],"employee":[{"@id":"https://www.portimaosurfclube.pt/#person-francisco-canelas"},{"@id":"https://www.portimaosurfclube.pt/#person-filipe-costa"},{"@id":"https://www.portimaosurfclube.pt/#person-sandro-nobrega"},{"@id":"https://www.portimaosurfclube.pt/#person-emanuel-silva"}],"contactPoint":[{"@type":"ContactPoint","@id":"https://www.portimaosurfclube.pt/#contact-office","contactType":"customer service","telephone":"+351966559739","email":"[email protected]","areaServed":["PT","GB","DE","NL","FR","ES"],"availableLanguage":["English","Portuguese"],"url":"https://www.portimaosurfclube.pt/contacts"},{"@type":"ContactPoint","@id":"https://www.portimaosurfclube.pt/#contact-bookings","contactType":"reservations","telephone":"+351966559739","email":"[email protected]","availableLanguage":["English","Portuguese"],"url":"https://www.portimaosurfclube.pt/book-now"}],"identifier":[{"@type":"PropertyValue","name":"RNAAT - Registo Nacional dos Agentes de Anima\u00e7\u00e3o Tur\u00edstica","value":"158/2021","description":"Tourist activity operator licence issued by Turismo de Portugal."}]},{"@type":["SportsActivityLocation","TouristAttraction"],"@id":"https://www.portimaosurfclube.pt/#place","name":"PTMSC - Portim\u00e3o Surf Clube","url":"https://www.portimaosurfclube.pt/","description":"Surf club and academy at Praia da Rocha, Portim\u00e3o. Club secretariat inside the Santa Catarina fortress on the road to Portim\u00e3o Marina; clubhouse, changing rooms and deck beside the jetty in the Praia da Rocha sports area.","parentOrganization":{"@id":"https://www.portimaosurfclube.pt/#organization"},"image":{"@id":"https://www.portimaosurfclube.pt/#logo"},"address":{"@type":"PostalAddress","streetAddress":"Estrada Marina 280","addressLocality":"Portim\u00e3o","addressRegion":"Faro","postalCode":"8500-311","addressCountry":"PT"},"geo":{"@type":"GeoCoordinates","latitude":37.11663220006592,"longitude":-8.529049578956748},"hasMap":"https://g.page/r/CeqaZZxMKqUKEBM/","telephone":"+351966559739","currenciesAccepted":"EUR","priceRange":"\u20ac20-\u20ac800","openingHoursSpecification":[{"@type":"OpeningHoursSpecification","dayOfWeek":["https://schema.org/Tuesday","https://schema.org/Wednesday","https://schema.org/Thursday","https://schema.org/Friday","https://schema.org/Saturday","https://schema.org/Sunday"],"opens":"09:00","closes":"17:00"}],"isAccessibleForFree":false,"publicAccess":true,"availableLanguage":["English","Portuguese"],"amenityFeature":[{"@type":"LocationFeatureSpecification","name":"Changing rooms","value":true},{"@type":"LocationFeatureSpecification","name":"Equipment storage","value":true},{"@type":"LocationFeatureSpecification","name":"Beach deck","value":true},{"@type":"LocationFeatureSpecification","name":"Adaptive surfing equipment","value":true}],"potentialAction":{"@type":"ReserveAction","name":"Book a lesson","target":{"@type":"EntryPoint","urlTemplate":"https://www.portimaosurfclube.pt/book-now","actionPlatform":["https://schema.org/DesktopWebPlatform","https://schema.org/MobileWebPlatform","https://schema.org/IOSPlatform","https://schema.org/AndroidPlatform"]},"result":{"@type":"Reservation","name":"Lesson booking"}}},{"@type":"WebSite","@id":"https://www.portimaosurfclube.pt/#website","url":"https://www.portimaosurfclube.pt/","name":"PTMSC - Portim\u00e3o Surf Clube","publisher":{"@id":"https://www.portimaosurfclube.pt/#organization"},"inLanguage":["en","pt-PT"]},{"@type":"ImageObject","@id":"https://www.portimaosurfclube.pt/#logo","url":"https://www.portimaosurfclube.pt/img/ptmsc-logo.png","contentUrl":"https://www.portimaosurfclube.pt/img/ptmsc-logo.png","width":512,"height":512},{"@type":"Person","@id":"https://www.portimaosurfclube.pt/#person-francisco-canelas","name":"Francisco Canelas","jobTitle":["Founder","Sports Director","Surf Coach"],"description":"Multi-title Portuguese national surfing champion; founder and sports director of PTMSC - Portim\u00e3o Surf Clube.","worksFor":{"@id":"https://www.portimaosurfclube.pt/#organization"},"affiliation":{"@id":"https://www.portimaosurfclube.pt/#organization"},"knowsAbout":["Surfing","Surf coaching","Competitive surfing"]},{"@type":"Person","@id":"https://www.portimaosurfclube.pt/#person-filipe-costa","name":"Filipe Costa","jobTitle":["Physiotherapist","Bodyboard Coach"],"description":"Physiotherapist behind FisioRider, providing body mechanics, balance, injury prevention and functional training to PTMSC athletes; co-leads the Bodyboard Academy.","worksFor":{"@id":"https://www.portimaosurfclube.pt/#organization"},"affiliation":{"@id":"https://www.portimaosurfclube.pt/#organization"},"knowsAbout":["Sports physiotherapy","Bodyboarding","Adaptive surfing"]},{"@type":"Person","@id":"https://www.portimaosurfclube.pt/#person-sandro-nobrega","name":"Sandro N\u00f3brega","jobTitle":["Bodyboard Coach"],"description":"Coach of the PTMSC Bodyboard Academy.","worksFor":{"@id":"https://www.portimaosurfclube.pt/#organization"},"affiliation":{"@id":"https://www.portimaosurfclube.pt/#organization"},"knowsAbout":["Bodyboarding"]},{"@type":"Person","@id":"https://www.portimaosurfclube.pt/#person-emanuel-silva","name":"Emanuel Silva","jobTitle":["Skateboarding Coach"],"description":"Coach of the PTMSC skateboarding classes, open to students aged 5 and up.","worksFor":{"@id":"https://www.portimaosurfclube.pt/#organization"},"affiliation":{"@id":"https://www.portimaosurfclube.pt/#organization"},"knowsAbout":["Skateboarding"]},{"@type":["WebPage","CollectionPage"],"@id":"https://www.portimaosurfclube.pt/#webpage","url":"https://www.portimaosurfclube.pt/","name":"PTMSC - Inclusive Surf Lessons Algarve | Portimao Surf Clube","isPartOf":{"@id":"https://www.portimaosurfclube.pt/#website"},"about":{"@id":"https://www.portimaosurfclube.pt/#organization"}
577,"inLanguage":"en","description":"Surf, bodyboard, skate and SUP club in Portimao, Algarve. Founded by national champion Francisco Canelas. Lessons for all ages and abilities, including Para Surfing.","breadcrumb":{"@id":"https://www.portimaosurfclube.pt/#breadcrumb"},"translationOfWork":{"@id":"https://www.portimaosurfclube.pt/pt#webpage"}},{"@type":"BreadcrumbList","@id":"https://www.portimaosurfclube.pt/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://www.portimaosurfclube.pt/"}]}]}
578</script>
578
579    
580</head>
581
582
583<body class="home cms_off ">
584	
585<span class="screen-darken"></span>
586<header class="section-header mobile-header d-lg-none hide_in_gallery">
587	
588	        <button data-trigger="navbar_main" class="btn btn-cta text-white p-3 pt-2 pb-2 m-3 float-end shadow" type="button"> <i class="fas fa-bars"></i> </button>
589    
590	<a class="mobile-logo" href="https://www.portimaosurfclube.pt">
591		<img src="https://www.portimaosurfclube.pt/_design/PTMSC_rgb.svg" class="logo_rgb m-3 mt-3 mb-0" width="250" alt="PTMSC - Portimao Surf Clube" fetchpriority="high" decoding="async" loading="eager" />
592	</a>
593</header><!-- section-header.// -->
594	
595	<div class="section-intro">
596	
597
598<div class="">
599	<a href="#" id="" class="start animate__animated animate__bounceInDown animate__delay-1s" style="display:table;text-align:center; font-size: 46px; width: 50px; position:absolute; top: 0px; left:50%; margin-left: -25px; z-index: 1000; color:#fff; cursor:pointer;"><i class="fal fa-chevron-down"></i></a>
600</div>
601<div class="video-background">
602	<div class="video-foreground">
603
604		<!-- You can use styles and CSS on this iframe element where the video player will appear -->
605		<iframe
606		  id="stream-player"
607		  title="Video Stream Player"
608		  src="https://customer-0tzx6lvms3lhg1mn.cloudflarestream.com/0899c4338d462ec662f1264b5bf5dc43/iframe?muted=true&loop=true&autoplay=true&poster=https%3A%2F%2Fcustomer-0tzx6lvms3lhg1mn.cloudflarestream.com%2F0899c4338d462ec662f1264b5bf5dc43%2Fthumbnails%2Fthumbnail.jpg%3Ftime%3D%26height%3D600&controls=false"
609			style="border: none; position: absolute; top: 0; left: 0; height: 100%; width: 100%;"
610			allow="accelerometer; gyroscope; autoplay; encrypted-media; picture-in-picture;"
611			allowfullscreen="true"
612			loading="eager"
613		></iframe>
614
615		
615<script src="https://embed.cloudflarestream.com/embed/sdk.latest.js"></script>
615
616
617		<!-- Your JavaScript code below-->
618		
618<script>
619		
620		var waitForFinalEvent = (function () {
621		  var timers = {};
622		  return function (callback, ms, uniqueId) {
623			if (!uniqueId) {
624			  uniqueId = "XaLotOfFunStartsHereMaybe_17914506471367245448";
625			}
626			if (timers[uniqueId]) {
627			  clearTimeout (timers[uniqueId]);
628			}
629			timers[uniqueId] = setTimeout(callback, ms);
630		  };
631		})();
632
633
634
635			$(function(){
636			
637				var height = $(window).height();
638				$(".start").css({top:0,position:"absolute"}).animate({top:(height - 200)}, 300, function() {
639					//callback
640				});
641			
642			});
643			
644
645
646		    const player = Stream(document.getElementById("stream-player"));
647			player.currentTime = 0;
648
649			player.addEventListener("play", () => {
650				console.log("playing!");
651			});
652						
653			player.play().catch(() => {
654				console.log("playback failed, muting to try again");
655				player.muted = true;
656				player.play();
657			});	
658
659
660
661
662			  $(window).scroll(function(){
663				if($(window).width() > 1024) {
664				
665					waitForFinalEvent(function(){
666
667						//console.log(player);
668						
669						//player.play();
670						var halfViewportHeight = $(window).height() / 4; 
671						if($(document).scrollTop() > halfViewportHeight) {
672							player.pause();
673							//player.currentTime = 0;
674						} else {
675						
676							player.play().catch(() => {
677								console.log("playback failed, muting to try again");
678								player.muted = true;
679								player.play();
680							});			
681						
682						}
683					}, 300, "17914506471296031639d9eb35c18efddd26e6f9a2ae75c2383c ~ * ~ * ~ ~ * ~ * ~");
684				}
685			  });
686
687
688		</script>
688
689		
689<script>
690		
691		
692			var pausemark = 0;
693			document.addEventListener("DOMContentLoaded", function () {
694
695				const video = Stream(document.getElementById("stream-player"));
696				let interval; // Store the interval ID
697				
698				// Function to handle marking every 3 seconds
699				function startMarking() {
700					interval = setInterval(() => {
701						const currentTime = Math.floor(video.currentTime); // Get current time in seconds
702						
703						if (currentTime > 0 && currentTime % 1000000000 === 0) { // Check if divisible 105s
704							//console.log(`Mark at ${currentTime} seconds`);
705							video.pause();
706							video.currentTime = 0;
707							video.play();
708						}
709						
710						if (currentTime > 0 && currentTime % 1 === 0) {
711							//$("#navbar_main").css("opacity",1);
712						}
713						
714					}, 1000); // Check every second
715				}				
716
717				// Start marking when the video starts playing
718				video.addEventListener("play", startMarking);
719
720				// Clear the interval when the video is paused or ends
721				video.addEventListener("pause", () => clearInterval(interval));
722				video.addEventListener("ended", () => clearInterval(interval));
723
724								
725				
726			});
727		</script>
727
728		
729	</div>
730</div>
731<style>
732* {
733  box-sizing: border-box;
734  margin: 0;
735  padding: 0;
736}
737
738.video-background {
739  position: fixed;
740  top: 0; left: 0;
741  width: 100vw;
742  height: 100vh;
743  overflow: hidden;
744  z-index: -1;
745}
746
747.video-foreground,
748.video-background iframe {
749  position: absolute;
750  top: 0; left: 0;
751  width: 100%;
752  height: 100%;
753  border: 0;
754  pointer-events: none;
755}
756
757/* Handle wide screens (landscape) */
758@media (min-aspect-ratio: 16/9) {
759  .video-foreground {
760    width: 100%;
761    height: 300%;
762    top: -100%;
763    left: 0;
764  }
765}
766
767/* Handle tall screens (portrait) */
768@media (max-aspect-ratio: 16/9) {
769  .video-foreground {
770    height: 100%;
771    width: 300%;
772    left: -100%;
773    top: 0;
774  }
775}
776
777@media (max-width: 991px) {
778	.video-foreground {transform: scaleY(1.2);}
779}
780
781XXX#navbar_main {opacity:0;}
782</style>
783<script type="text/javascript">
784
785	$(function(){
786		$(".book_now_mobile").addClass("d-none");
787	});
788	$(window).scroll(function(){
789	
790		//$("#navbar_main").css("opacity",1);
791		
792		if($(window).scrollTop() > 50) {
793			$(".book_now_mobile").removeClass("d-none");
794		} else {
795			$(".book_now_mobile").addClass("d-none");			
796		}
797		
798	});
799
800</script>
800
801
802<div class="container typewrite-wrap">
803    <p class="typewrite" data-period="2000" data-type='["Welcome to PTMSC 🤙","Do you have a question before booking? 🏄","Use our virtual assistant  🤖","Eat, Sleep, SURF, Repeat","Eat, Sleep, BODYBOARD, Repeat","Eat, Sleep, SKATE, Repeat","SUP - Stand Up Paddle","Join Our PTMSC Family","Let’s Surf! 🤙","Let’s Skate! 🤙","Let’s Bodyboard! 🤙","Let’s SUP! 🤙","Portimão Surf Clube"]'>
804      <span class="wrap"></span>
805    </p>
806</div>
807
808<style>
809.typewrite-wrap {
810    position: absolute;
811    top:50%;
812    left:50%;
813    width: 60%;
814    height: 300px;
815    margin-top: -150px;
816    margin-left: -30%;
817    text-align:center;
818    font-size: 100px;
819    line-height: 90px;
820    color:#FFF;
821    font-weight:700;
822    
823    font-family: "lithos-pro", sans-serif;
824    font-weight: 700;
825    font-style: normal;    
826    
827}
828.wrap {
829    border-right: 0.5px solid rgba(255,255,255,1);
830}
831@media all and (max-width: 991px) {
832    .typewrite-wrap {
833        width: 90%;
834        height: 200px;
835        margin-top: -100px;
836        margin-left: -45%;
837        font-size: 46px;
838        line-height: 55px;
839    }
840}
841</style>
842
843<script>
844class TxtType {
845  constructor(el, toRotate, period) {
846    this.toRotate = toRotate;
847    this.el = el;
848    this.loopNum = 0;
849    this.period = parseInt(period, 10) || 2000;
850    this.txt = "";
851    this.isDeleting = false;
852
853    // Pre-split EVERY string into graphemes (handles emojis + skin tones correctly)
854    this.graphemesArray = this.toRotate.map(str => [...str]);
855
856    // Start typing
857    this.tick();
858  }
859
860  tick() {
861    let i = this.loopNum % this.toRotate.length;
862    let fullGraphemes = this.graphemesArray[i];          
863    let targetLength = this.isDeleting 
864      ? fullGraphemes.length - (this.txt.length || 0) - 1   // how many graphemes remain when deleting
865      : this.txt.length + 1;                               // next grapheme count
866
867    // Build displayed text by taking the right number of graphemes
868    this.txt = fullGraphemes.slice(0, Math.max(0, targetLength)).join("");
869
870    this.el.innerHTML = '<span class="wrap">' + this.txt + '</span>';
871
872    let that = this;
873    let delta = 80 - Math.random() * 40;   // slower typing = less visible flicker if any edge case
874
875    if (this.isDeleting) {
876      delta /= 1.5;   // delete a bit faster
877    }
878
879    if (!this.isDeleting && this.txt === this.toRotate[i]) {
880      // Pause at full text
881      delta = this.period;
882      this.isDeleting = true;
883    } else if (this.isDeleting && this.txt === "") {
884      // Switch to next phrase
885      this.isDeleting = false;
886      this.loopNum++;
887      delta = 400;   // longer pause before new string starts (helps visibility)
888    }
889
890    setTimeout(function() {
891      that.tick();
892    }, delta);
893  }
894}
895
896window.onload = function() {
897  let elements = document.getElementsByClassName("typewrite");
898  for (let i = 0; i < elements.length; i++) {
899    let toRotate = elements[i].getAttribute("data-type");
900    let period = elements[i].getAttribute("data-period");
901    if (toRotate) {
902      new TxtType(elements[i], JSON.parse(toRotate), period);
903    }
904  }
905};
906</script>
906
907	</div>
908    
909<!-- ============= COMPONENT ============== -->
910<nav id="navbar_main" class="mobile-offcanvas navbar navbar_ navbar-expand-lg navbar-dark fixed-top  animate__animated animate__fadeIn ">
911 <div class="container-fluid">
912    <div class="offcanvas-header">  
913		<button class="btn btn-close mt-3 text-danger float-end"></button>
914	</div>
915    <a class="fade_in_nav navbar-brand ms-lg-5" href="https://www.portimaosurfclube.pt">
916		<img src="https://www.portimaosurfclube.pt/_design/PTMSC_white.svg" class="logo_white" alt="Portimão Surf Clube" fetchpriority="high" decoding="async" loading="eager" />
917		<img src="https://www.portimaosurfclube.pt/_design/PTMSC_rgb.svg" class="logo_rgb" alt="Portimão Surf Clube" fetchpriority="high" decoding="async" loading="eager" />
918	</a>
919	 
920	<ul class="navbar-nav ms-auto">
921        <li class=" nav-item  fade_in_nav  item_id_964  dropdown    "><a  data-bs-toggle="dropdown"  class="thing nav-link item_id_964  dropdown-toggle dropdown-toggle-main-nav    " href="https://www.portimaosurfclube.pt/about-ptmsc"><span>About</span></a><ul class="dropdown-menu"><li class="d-md-none item_id_1028"><a class="thing dropdown-item item_id_1028 " href="https://www.portimaosurfclube.pt/about-ptmsc/about-ptmsc">About PTMSC</a></li><li class=" item_id_995"><a class="thing dropdown-item item_id_995 " href="https://www.portimaosurfclube.pt/about-ptmsc/where-are-we">Where are we?</a></li><li class=" item_id_996"><a class="thing dropdown-item item_id_996 " href="https://www.portimaosurfclube.pt/about-ptmsc/documents">Documents</a></li><li class=" item_id_1026"><a class="thing dropdown-item item_id_1026 " href="https://www.portimaosurfclube.pt/about-ptmsc/member-registration">Member Registration</a></li><li class=" item_id_1058"><a class="thing dropdown-item item_id_1058 " href="https://www.portimaosurfclube.pt/about-ptmsc/prices-2026">Prices 2026</a></li></ul></li><li class=" nav-item  fade_in_nav  item_id_1015    "><a  class="thing nav-link item_id_1015    " href="https://www.portimaosurfclube.pt/news-and-events"><span>News</span></a></li><li class=" nav-item  fade_in_nav  item_id_982    "><a  class="thing nav-link item_id_982    " href="https://www.portimaosurfclube.pt/surf"><span>Surf</span></a></li><li class=" nav-item  fade_in_nav  item_id_984    "><a  class="thing nav-link item_id_984    " href="https://www.portimaosurfclube.pt/bodyboard"><span>Bodyboard</span></a></li><li class=" nav-item  fade_in_nav  item_id_985    "><a  class="thing nav-link item_id_985    " href="https://www.portimaosurfclube.pt/skate"><span>Skate</span></a></li><li class=" nav-item  fade_in_nav  item_id_983    "><a  class="thing nav-link item_id_983    " href="https://www.portimaosurfclube.pt/paddle"><span>SUP</span></a></li><li class=" nav-item  fade_in_nav  item_id_1112  dropdown    "><a  data-bs-toggle="dropdown"  class="thing nav-link item_id_1112  dropdown-toggle dropdown-toggle-main-nav    " href="https://www.portimaosurfclube.pt/book-now"><span>BOOK NOW</span></a><ul class="dropdown-menu"><li class=" item_id_1113"><a class="thing dropdown-item item_id_1113 " href="https://www.portimaosurfclube.pt/book-now/surf">SURF</a></li><li class=" item_id_1114"><a class="thing dropdown-item item_id_1114 " href="https://www.portimaosurfclube.pt/book-now/sup-stand-up-paddle">SUP - Stand up Paddle</a></li><li class=" item_id_1115"><a class="thing dropdown-item item_id_1115 " href="https://www.portimaosurfclube.pt/book-now/rentals">Rentals</a></li></ul></li><li class="nav-item front_only" ><a href="#" class="fh-trigger book_now rounded-5 nav-link bg-cta ms-md-2 text-center shadow fade_in_nav ps-3 pe-3 pt-4 pb-4 pt-md-2 pb-md-1 btn-chatbot" data-size="half" style="font-size:14px; line-height: 15px; color: #fff !important; font-weight: 600;">BOOK NOW<span style="font-size:8px; letter-spacing: 0.5px; font-weight:300; display:block;">Virtual Assistant</span></a></li><li class="nav-item mt-3 d-table d-md-none"><a class=" rounded-5 nav-link bg-light ms-md-3 text-center shadow fade_in_nav pt-4 pb-4 pt-md-2 pb-md-2" href="https://www.portimaosurfclube.pt/my-account"><i class="fad fa-user-circle me-2"></i>My Account</a></li>
922                <li class="nav-item dropdown fade_in_nav ps-2 pe-2">
923                    <a class="nav-link dropdown-toggle" href="#" id="navbarLang" role="button" data-bs-toggle="dropdown" aria-expanded="false"><i class="fal fa-globe"></i></a>
924                    <ul class="dropdown-menu" aria-labelledby="navbarLang">
925                        <li><a class="dropdown-item" href="https://www.portimaosurfclube.pt" style="background: none; "><img src="https://www.portimaosurfclube.pt/_design/flag_uk.png" alt="English" class="flag me-2" /><small>English</small></a></li>
926                        <li><a class="dropdown-item" href="https://www.portimaosurfclube.pt/pt" style="background: none; filter: grayscale(90%); opacity:.5;"><img src="https://www.portimaosurfclube.pt/_design/flag_pt.png" alt="Português" class="flag me-2" /><small>Português</small></a></li>
927                    </ul>
928                </li>			
929                		<!--
930		<li class="d-table d-lg-none w-100">
931		 <div class="mt-3 social_links_mobile_nav">
932			<span class="row text-center">
933				<a href="https://www.facebook.com/..." target="_blank" class="col"><i class="fab fa-facebook fa-2x"></i></a> 
934				<a href="https://www.instagram.com/..." target="_blank" class=" col"><i class="fab fa-instagram fa-2x"></i></a> 
935			</span>
936
937		</div>
938		</li>
939		-->		
940    </ul>
941	
942		<div class="btn-group flex-wrap" role="group" aria-label="Button group"><a class="d-none d-md-table btn p-4 mt-2 ms-4 me-1 fade_in_nav text-white" href="https://www.portimaosurfclube.pt/my-account"><i class="fal fa-user-circle fa-2x"></i><span class="d-block" style="font-size:10px;">MY ACCOUNT</span></a></div>	 	 
943 </div> <!-- container-fluid.// -->
944</nav>
945<style>
946/* ============ desktop view ============ */
947@media all and (min-width: 992px) {
948	.navbar .nav-item .dropdown-menu { display: none;  }
949	.navbar .nav-item:hover .nav-link{   }
950	.navbar .nav-item:hover .dropdown-menu{ display: block; }
951	.navbar .nav-item .dropdown-menu{ margin-top:0; }
952}	
953/* ============ desktop view .end// ============ */
954	@media (min-width: 992px) { 
955		.flag {margin: 3px; margin-top: -3px;}
956	}
957</style>
958<!-- ============= COMPONENT END// ============== -->
959<script>
960    $(function(){	
961
962		//alert('mobile: ' + isMobile);		
963		
964		if(isMobile !== true) {
965			$('#navbar_main').addClass('navbar-desktop');
966		}
967
968		if(isMobile == true){
969			//$page->navbar_style = 'light';
970			//$page->logo_style = 'white';
971			$('#navbar_main .navbar-brand img').css('display','none');
972			$('#navbar_main .navbar-brand img.logo_rgb').css('display','table');
973			
974			//$('.logo_white').css('display','none');
975			//$('.logo_black').css('display','none');
976			//$('.logo_rgb').css('display','table');
977			//alert('mobile: ' + isMobile);
978		}
979		
980    $(function(){
981        $('.dropdown-toggle-main-nav').click(function(){
982            
983            if (Modernizr.touchevents) {
984              // supported
985				var that = this;
986				//setTimeout(function() {
987				  //
988				//}, 2000);
989			} else {
990              // not-supported
991                window.location=$(this).attr("href");
992            }            
993            
994            
995        });
996    });
997    });
998</script>
vendor: 1 bytes, line 998
998
999<script>
1000	$(window).scroll(function(){
1001		//$('.scroll_padding_fix').css('padding-top','0px');
1002		
1003		
1004		//rotate: -2.5deg;
1005		
1006		
1007		if($(window).width() > 991) {
1008			
1009			if($(document).scrollTop() > 5) {
1010				$("body").addClass("scrolled");
1011				$('body.home .fade_in_nav').removeClass("text-white");
1012			} else {
1013				$("body").removeClass("scrolled");
1014				$('body.home .fade_in_nav').addClass("text-white");
1015			}
1016
1017			if($(document).scrollTop() > 5) {
1018
1019                $("#navbar_main").addClass("liquid-glass");
1020				$("#navbar_main").addClass("m-md-3");
1021				$("#navbar_main").addClass("m-lg-4");
1022				$("#navbar_main").addClass("m-xxl-5");
1023				$("#navbar_main").addClass("rounded-5");
1024			} else {
1025				$("#navbar_main").removeClass("liquid-glass");
1026				$("#navbar_main").removeClass("m-md-3");
1027				$("#navbar_main").removeClass("m-lg-4");
1028				$("#navbar_main").removeClass("m-xxl-5");
1029				$("#navbar_main").removeClass("rounded-5");
1030			}
1031            
1032            
1033			
1034 		} else {
1035			
1036			if($(document).scrollTop() > 5) {
1037				$("body").addClass("scrolled");
1038				$("body.page .mobile-logo").fadeOut();		
1039			} else {
1040				$("body").removeClass("scrolled");
1041				$("body.page .mobile-logo").fadeIn();
1042			}
1043			
1044			if($(document).scrollTop() > 50) {
1045				$("body.home .mobile-header").addClass('bg-white');				
1046			} else {
1047				$("body.home .mobile-header").removeClass('bg-white');				
1048			}
1049
1050            
1051            
1052		}
1053        
1054        
1055        
1056	}); 
1057</script>
1057    
1058    
1059    <section class="section-content">
1060		
1061    <div class="row g-0 justify-content-center"> </div><div class="container-fluid px-0"><div class="row g-0 justify-content-center"><div class="object_parent wireframe "><div id="objectID_1772" class="" style=""><div id="editorID_1772" data-label="CTA container" data-encoded="4d5455334e6a637a4f4463354f55422b5147466b5a476c3061573975595778666157357764585241666b41784e7a51324d6a55774e444579514835414d5463334d673d3d" class="" ><div class="container-fluid">
1062<div class="ps-lg-4 pe-lg-4 pb-lg-4">
1063<div class="row g-lg-5 mt-1 mb-5">
1064<div class="col-md-10 offset-md-1 col-xl-8 offset-xl-2 pt-3 pt-lg-5 fade_in_top">
1065<h1 style="text-align: center;">Welcome to PTMSC<br /><strong>Portim&atilde;o Surf Clube</strong></h1>
1066</div>
1067</div>
1068</div>
1069<div class="bg-dirty">
1070<div class="container">
1071<div class="row g-0 mb-5">
1072<div class=" col-xl-8 offset-xl-2 pt-3 pt-lg-4 pb-3 pb-lg-4">
1073<!-- load_objects --><div class="container"><div class="row g-0 justify-content-center"><div style="" class="object_parent load_objects BOX "><div id="objectID_2043" class="cms-non-editable" style=""><div id="editorID_2043" data-label="Advert" data-encoded="4d5467774d4441794d4441354d45422b5147466b5a476c3061573975595778666157357764585241666b41334e4459304d6a597a4f545241666b41794d44517a" class="" ><div class="Xcard Xrounded-5 Xp-4 pt-3 pb-3 Xshadow-lg fade_in">
1074<div class="sitemap m-md-4">
1075<div class="row g-0">
1076<div class="col-md-6 order-2 order-md-1">
1077<div class="pt-5">
1078<h5>Book without a membership</h5>
1079<h2><a href="../../book-now">BOOK NOW</a></h2>
1080<ul id="SITEMAP_1_menuitem_1112_ul" class="fade_in"><li id="SITEMAP_1_menuitem_1113_li" class="fade_in_bottom"><a id="SITEMAP_1_menuitem_1113" class=" "  href="https://www.portimaosurfclube.pt/book-now/surf" title="SURF">SURF</a> <ul id="main_menuitem_1113_ul" class=""><li id="main_menuitem_1116_li" class=""><a id="main_menuitem_1116" class=" "  href="https://www.portimaosurfclube.pt/book-now/surf/praia-da-rocha-surfing" title="Praia da Rocha Surfing">Praia da Rocha Surfing</a> </li> <li id="main_menuitem_1117_li" class=""><a id="main_menuitem_1117" class=" "  href="https://www.portimaosurfclube.pt/book-now/surf/west-coast-safari" title="West Coast Safari">West Coast Safari</a> </li> </ul></li> <li id="SITEMAP_1_menuitem_1114_li" class="fade_in_bottom"><a id="SITEMAP_1_menuitem_1114" class=" "  href="https://www.portimaosurfclube.pt/book-now/sup-stand-up-paddle" title="SUP - Stand up Paddle">SUP - Stand up Paddle</a> <ul id="main_menuitem_1114_ul" class=""><li id="main_menuitem_1118_li" class=""><a id="main_menuitem_1118" class=" "  href="https://www.portimaosurfclube.pt/book-now/sup-stand-up-paddle/paddle-tour-rocha-beach" title="Paddle Tour Rocha Beach">Paddle Tour Rocha Beach</a> </li> <li id="main_menuitem_1119_li" class=""><a id="main_menuitem_1119" class=" "  href="https://www.portimaosurfclube.pt/book-now/sup-stand-up-paddle/paddle-tour-joao-d-arens" title="Paddle Tour - João D`Arens">Paddle Tour - João D`Arens</a> </li> <li id="main_menuitem_1120_li" class=""><a id="main_menuitem_1120" class=" "  href="https://www.portimaosurfclube.pt/book-now/sup-stand-up-paddle/paddle-tour-alvor-tour" title="Paddle Tour - Alvor Tour">Paddle Tour - Alvor Tour</a> </li> <li id="main_menuitem_1193_li" class=""><a id="main_menuitem_1193" class=" "  href="https://www.portimaosurfclube.pt/book-now/sup-stand-up-paddle/sunrise-paddle" title="Sunrise Paddle">Sunrise Paddle</a> </li> </ul></li> <li id="SITEMAP_1_menuitem_1115_li" class="fade_in_bottom"><a id="SITEMAP_1_menuitem_1115" class=" "  href="https://www.portimaosurfclube.pt/book-now/rentals" title="Rentals">Rentals</a> <ul id="main_menuitem_1115_ul" class=""><li id="main_menuitem_1121_li" class=""><a id="main_menuitem_1121" class=" "  href="https://www.portimaosurfclube.pt/book-now/rentals/rentals-1-hour" title="Rentals 1 Hour">Rentals 1 Hour</a> </li> <li id="main_menuitem_1122_li" class=""><a id="main_menuitem_1122" class=" "  href="https://www.portimaosurfclube.pt/book-now/rentals/rentals-half-day" title="Rentals Half-Day">Rentals Half-Day</a> </li> <li id="main_menuitem_1123_li" class=""><a id="main_menuitem_1123" class=" "  href="https://www.portimaosurfclube.pt/book-now/rentals/rentals-1-day" title="Rentals 1 Day">Rentals 1 Day</a> </li> <li id="main_menuitem_1124_li" class=""><a id="main_menuitem_1124" class=" "  href="https://www.portimaosurfclube.pt/book-now/rentals/rentals-3-days" title="Rentals 3 Days">Rentals 3 Days</a> </li> </ul></li> </ul>
1081</div>
1082</div>
1083<div class="col-md-6 order-1 order-md-2">
1084<div class="rounded-5 shadow-lg fade_in_zoom">
1085<div class="card rounded-5 p-5 shadow-lg bg-dirty fade_in text-center">
1086<a href="https://www.portimaosurfclube.pt/fatumator" class="btn-chatbot"><h2 style="font-size:18px; text-transform: uppercase; font-weight: 700;" class="text-cta">From &quot;I want to surf&quot; to &quot;I&#039;m booked&quot; in 60 seconds</h2><p class="strap small"><em>Just ask our chat — it does the rest.</em></p></a>
1087<a href="#" class="d-table btn-chatbot w-100" data-size="half">
1088<img src="https://www.portimaosurfclube.pt/_chatbot/_fatumatortobe.png" class="w-100 fade_in_zoom">
1089<h5 class="text-center fade_in_top"><strong>Do you have a question before booking?</strong></h5>
1090</a>
1091</div>
1092</div>
1093</div>
1094</div>
1095</div>
1096</div></div></div></div></div></div>
1097<div class="fade_in_zoom">
1098<div class="weather"><div class="row g-3 mb-3"><div class="col-md"><div class="pt-4"><div class="w_day"><img src="https://www.portimaosurfclube.pt/_design/majak.svg" height="25" class="d-table-inline mb-2 me-3" />Thursday</div><div class="date">October 8, 2026</div></div></div><div class="col-md"><div class=""><div class="row g-0"><div class="col-md-3"><div class="pt-md-3"><img src="//cdn.weatherapi.com/weather/64x64/day/113.png" style="display:table; max-width:150px; margin: 0 auto;" alt="Sunny" /></div></div><div class="col-md-9"><div class="pt-4"><div class="temperature">22.7&degC</div><div class="condition">Sunny</div></div></div></div></div></div><div class="col-md"><div class="pt-4 details"><i class="fal fa-wind"></i> 13kph NNE<br><i class="fal fa-humidity"></i> 46 &middot; <i class="fal fa-eye"></i> 10km &middot; UV 1.2<br></div></div></div></div><style>
1099	.weather {color:#011945; text-align:center;}
1100	.weather .w_day {font-size: 33px; line-height: 33px; font-family: stevie-sans, serif; text-transform: uppercase;}
1101	.weather .date {font-size: 16px; line-height: 30px; text-transform: uppercase;}
1102	.weather .temperature {font-size: 33px;line-height: 33px;  font-weight: 500; }
1103	.weather .details {font-size: 14px;line-height: 20px; }
1104	.weather .condition {font-size: 14px;line-height: 16px; }
1105	.weather sup {text-transform:none;}
1106
1107	.weather.mini .date {font-size: 14px; line-height: 20px; text-transform: uppercase;}
1108
1109</style>
1110</div>
1111</div>
1112</div>
1113</div>
1114</div>
1115<div class="container-fluid">
1116<div class="row">
1117<div class="col-md-6 col-xl-4">
1118<div class="p-3 fade_in_bottom">
1119<!-- load_objects --><div class="container"><div class="row g-0 justify-content-center"><div style="" class="object_parent load_objects BOX "><div id="objectID_1773" class="cms-non-editable" style=""><div id="editorID_1773" data-label="SURF" data-encoded="4e4449354e544d324d445133514835415957526b615852706232356862463970626e42316445422b51444d354e7a55334f5463784e45422b514445334e7a4d3d" class="" ><p class="mb-3 mt-3 mt-lg-5" style="text-align: center;"><img src="../_design/PTMSC_rgb.svg" alt="" height="100" /></p>
1120<p style="text-align: justify;">At Portim&atilde;o Surf Clube, our mission is to provide top-quality surf education, guided by our founder and national champion, <strong>Francisco Canelas</strong>. Over the past years, our athletes have achieved regional, national, and international success, proving that our methodology works.</p>
1121<p style="text-align: center;"><strong><a href="../member-registration">Join us</a></strong> for surf, skate or bodyboard lessons in Portim&atilde;o and Costa Vicentina, especially during the summer!</p></div></div></div></div></div>
1122</div>
1123</div>
1124<div class="col-md-6 col-xl-4">
1125<div class="p-3 fade_in_bottom">
1126<!-- load_objects --><div class="container"><div class="row g-0 justify-content-center"><div style="" class="object_parent load_objects BOX "><div id="objectID_1774" class="cms-non-editable" style=""><div id="editorID_1774" data-label="BODYBOARD" data-encoded="4d54497a4d6a49354f446b344d6b422b5147466b5a476c3061573975595778666157357764585241666b41784e6a49304e546b344d546331514835414d5463334e413d3d" class="" ><p class="mb-3 mt-3 mt-lg-5" style="text-align: center;"><img src="../_design/PTMSC_bodyboard.svg" alt="" height="90" /></p>
1127<p style="text-align: justify;">The <strong>PTMSC Bodyboard Academy</strong> is led by two passionate bodyboarders. <strong>Filipe Costa</strong>, a champion athlete and physiotherapist at <strong>FisioRider</strong>, combines functional training for board riders with specialized physiotherapy treatments. Alongside him is <strong>Sandro N&oacute;brega</strong>, with more than 20 years of experience in bodyboarding and co-organizer of the legendary Vau BB Vau Challenge. Both are honorary members of PTMSC and have been key to the growth of bodyboarding in our region.</p></div></div></div></div></div>
1128</div>
1129</div>
1130<div class="col-md-6 col-xl-4">
1131<div class="p-3 fade_in_bottom">
1132<!-- load_objects --><div class="container"><div class="row g-0 justify-content-center"><div style="" class="object_parent load_objects BOX "><div id="objectID_1775" class="cms-non-editable" style=""><div id="editorID_1775" data-label="SKATE" data-encoded="4d5467354f444d314d4455324e45422b5147466b5a476c3061573975595778666157357764585241666b41324d7a51354d6a59334f546c4
11321666b41784e7a6331" class="" ><p class="mb-3 mt-3 mt-lg-5" style="text-align: center;"><img src="../_design/PTMSC_skate.svg" alt="" height="100" /></p>
1133<p style="text-align: justify;">Our main mission is to promote and develop skateboarding through both training and competition. We offer regular classes for athletes from the age of five, providing a structured and motivating environment for young skaters. <strong>Emanuel Silva</strong> is now the primary coach guiding the new generation, helping them build skills and confidence on the board.</p></div></div></div></div></div>
1134</div>
1135</div>
1136</div>
1137</div>
1138<div class="row g-0 border-top">
1139<div class="col-lg-12">
1140<div class="p-3 p-lg-5 fade_in">
1141<h3 style="text-align: center;">Google Reviews</h3>
1142    <style>
1143      #gr-wrap{max-width:760px;margin:0 auto;text-align:center;color:#011945;}
1144      #gr-wrap .gr-summary{display:flex;align-items:center;justify-content:center;gap:.6rem;
1145        margin-bottom:1.75rem;font-size:1rem;}
1146      #gr-wrap .gr-summary .gr-score{font-size:1.4rem;font-weight:700;line-height:1;}
1147      #gr-wrap .gr-summary .gr-stars{color:#fbbc04;letter-spacing:2px;font-size:1.05rem;}
1148      #gr-wrap .gr-summary .gr-count{color:#8a93a6;font-size:.9rem;}
1149
1150      #google-reviews{position:relative;padding:0 3rem;}
1151      #google-reviews .carousel-inner{min-height:230px;}
1152      #google-reviews .carousel-item{transition:opacity .6s ease;}
1153      #google-reviews .review{padding:.5rem 1rem;}
1154      #google-reviews .review-stars{color:#fbbc04;font-size:1.25rem;letter-spacing:3px;margin-bottom:1.1rem;}
1155      #google-reviews .review-text{font-size:1.0rem;line-height:1.35;font-style:italic;
1156        color:#011945;margin-bottom:1.5rem;}
1157      #google-reviews .review-author{display:flex;align-items:center;justify-content:center;
1158        gap:.65rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px;font-size:.95rem;}
1159      #google-reviews .review-author img{width:40px;height:40px;border-radius:50%;object-fit:cover;}
1160      #google-reviews .review-author .meta{text-align:left;}
1161      #google-reviews .review-date{display:block;font-weight:400;text-transform:none;
1162        letter-spacing:0;color:#8a93a6;font-size:.82rem;}
1163
1164      #google-reviews .carousel-control-prev,
1165      #google-reviews .carousel-control-next{width:2.5rem;opacity:.85;color:#011945;}
1166      #google-reviews .carousel-control-prev{left:-.5rem;}
1167      #google-reviews .carousel-control-next{right:-.5rem;}
1168      #google-reviews .carousel-control-prev:hover,
1169      #google-reviews .carousel-control-next:hover{opacity:1;}
1170      #google-reviews .carousel-control-prev i,
1171      #google-reviews .carousel-control-next i{font-size:1.4rem;}
1172
1173      @media (max-width:575px){
1174        #google-reviews{padding:0 1.25rem;}
1175        #google-reviews .carousel-control-prev,
1176        #google-reviews .carousel-control-next{display:none;}
1177      }
1178    </style>
1179
1180    <div id="gr-wrap">
1181            <div class="gr-summary">
1182        <span class="gr-score">4.8</span>
1183        <span class="gr-stars">&#9733;&#9733;&#9733;&#9733;&#9733;</span>
1184        <span class="gr-count">(112 Google reviews)</span>
1185      </div>
1186        <hr>
1187      
1188      <div id="google-reviews" class="carousel slide carousel-fade" data-bs-ride="carousel">
1189        <div class="carousel-inner">
1190                      <div class="carousel-item active ">
1191              <div class="review">
1192                <p class="review-text fade_in">We booked a surf lesson for the afternoon 1st Oct - wet suit and surf board included. Really good instruction, I had some surf experience, partner had non. We both had a fun time and got just about stood up on the boards.
1193Booked in for the next day 2nd October. Different instructor who was also really good. Huge swell/surf and I managed to get stood up on the board - had I just hired a board and gone out myself I likely wouldn’t have. Our instructor were really good.
1194All the staff were friendly and helpful. There is space to leave valuables, and a hot shower for afterwards.<
1194/p>
1195                <div class="review-stars fade_in_bottom" aria-label="5 out of 5">
1196                  &#9733;&#9733;&#9733;&#9733;&#9733;                </div>
1197                <div class="review-author fade_in_zoom">
1198                                      <img src="https://lh3.googleusercontent.com/a/ACg8ocJjbCfEDwO8gJq-aSoQTyvSXvgLqb4eGJVfyYIHRm3fY8X7VQ=s120-c-rp-mo-br100" alt="" loading="lazy">
1199                                    <span class="meta">
1200                    Paul Eastwood                    <span class="review-date">4 days ago</span>
1201                  </span>
1202                </div>
1203              </div>
1204            </div>
1205                      <div class="carousel-item  ">
1206              <div class="review">
1207                <p class="review-text fade_in">Very good experience with Alexander ! Thank you, it was our first time and we want to do surf again ! 🌊</p>
1208                <div class="review-stars fade_in_bottom" aria-label="5 out of 5">
1209                  &#9733;&#9733;&#9733;&#9733;&#9733;                </div>
1210                <div class="review-author fade_in_zoom">
1211                                      <img src="https://lh3.googleusercontent.com/a-/ALV-UjUpTokpyEdpNbMdH6i-zWlqjGq5Ni96BeNdMRC5pKkNQCFz5wo=s120-c-rp-mo-br100" alt="" loading="lazy">
1212                                    <span class="meta">
1213                    Gregoire Baudat                    <span class="review-date">2 days ago</span>
1214                  </span>
1215                </div>
1216              </div>
1217            </div>
1218                      <div class="carousel-item  ">
1219              <div class="review">
1220                <p class="review-text fade_in">We drove approx 40min to anothet beach where the waves were perfect for beginners and had over 2h water time. The teachers were really helpful! However, we were quite a large group for the small part of the beach, but teacher to student ratio was fine. But for the next time please emphasize for first time surfers not to get too close to the others to avoid collidions. Still had a great time, thanks!</p>
1221                <div class="review-stars fade_in_bottom" aria-label="4 out of 5">
1222                  &#9733;&#9733;&#9733;&#9733;&#9734;                </div>
1223                <div class="review-author fade_in_zoom">
1224                                      <img src="https://lh3.googleusercontent.com/a/ACg8ocJ4V-MNwnyGigelNlDVmlA6-NNbujgUhyHy9r4uUVMKgXtyoQ=s120-c-rp-mo-br100" alt="" loading="lazy">
1225                                    <span class="meta">
1226                    Luca                    <span class="review-date">3 days ago</span>
1227                  </span>
1228                </div>
1229              </div>
1230            </div>
1231                      <div class="carousel-item  ">
1232              <div class="review">
1233                <p class="review-text fade_in">I love surfing with this school. They are so friendly and such good instructors. I have been surfing a few years but still always learning. I had lessons with Alexandre and he is great. Such a good teacher. I got rid of old bad habits and got better and better. I really had such a fun time too. I will definitely book with them again when I am back in Portugal 🤙🏄</p>
1234                <div class="review-stars fade_in_bottom" aria-label="5 out of 5">
1235                  &#9733;&#9733;&#9733;&#9733;&#9733;                </div>
1236                <div class="review-author fade_in_zoom">
1237                                      <img src="https://lh3.googleusercontent.com/a-/ALV-UjX9yIrCKH_5PJdEA02e0pas0qfV3OZQtKWCTzzNp3fPgss2J1I=s120-c-rp-mo-br100" alt="" loading="lazy">
1238                                    <span class="meta">
1239                    Chelle Meaks                    <span class="review-date">3 days ago</span>
1240                  </span>
1241                </div>
1242              </div>
1243            </div>
1244                      <div class="carousel-item  ">
1245              <div class="review">
1246                <p class="review-text fade_in">Perfect!!! Such an amazing experience</p>
1247                <div class="review-stars fade_in_bottom" aria-label="5 out of 5">
1248                  &#9733;&#9733;&#9733;&#9733;&#9733;                </div>
1249                <div class="review-author fade_in_zoom">
1250                                      <img src="https://lh3.googleusercontent.com/a/ACg8ocKjkoREtE0hV1gfZTdc4MmnZNPK3cxS9BgO2v00TDBeuvDinw=s120-c-rp-mo-ba12-br100" alt="" loading="lazy">
1251                                    <span class="meta">
1252                    Aizhan Dautova                    <span class="review-date">2 weeks ago</span>
1253                  </span>
1254                </div>
1255              </div>
1256            </div>
1257                      <div class="carousel-item  ">
1258              <div class="review">
1259                <p class="review-text fade_in">Really good lesson with an amazing instructor. For first timers it is perfect, we all manged to stand up and ride some waves 🤙
1260Good for advanced people aswell with great reccomandations to progress</p>
1261                <div class="review-stars fade_in_bottom" aria-label="5 out of 5">
1262                  &#9733;&#9733;&#9733;&#9733;&#9733;                </div>
1263                <div class="review-author fade_in_zoom">
1264                                      <img src="https://lh3.googleusercontent.com/a-/ALV-UjWuv50Cc35hCXTrB0GbVFiDaYRX84Vnw2WaOD5nT0PQMVl0vfAZ=s120-c-rp-mo-br100" alt="" loading="lazy">
1265                                    <span class="meta">
1266                    Corentin                    <span class="review-date">2 weeks ago</span>
1267                  </span>
1268                </div>
1269              </div>
1270            </div>
1271                      <div class="carousel-item  ">
1272              <div class="review">
1273                <p class="review-text fade_in">(Translated by Google) We booked the surf course for our three children. Everything was very straightforward and professional, from registration to the course itself. The staff and surf instructors were cool and easygoing!
1274
1275(Original)
1276Wir haben den Surfkurs für unsere drei Kinder gebucht. Es war alles sehr unkompliziert und kompetent. Von der Anmeldung bis zur Durchführung. Coole und lässige Mitarbeiter und Surflehrer!!</p>
1277                <div class="review-stars fade_in_bottom" aria-label="5 out of 5">
1278                  &#9733;&#9733;&#9733;&#9733;&#9733;                </div>
1279                <div class="review-author fade_in_zoom">
1280                                      <img src="https://lh3.googleusercontent.com/a/ACg8ocLKZfi6DcVv2eYbcETet2nw4l-3x3q6JQsNAJBA_4Zgd2LvEg=s120-c-rp-mo-br100" alt="" loading="lazy">
1281                                    <span class="meta">
1282                    Eva Gruber                    <span class="review-date">2 weeks ago</span>
1283                  </span>
1284                </div>
1285              </div>
1286            </div>
1287                      <div class="carousel-item  ">
1288              <div class="review">
1289                <p class="review-text fade_in">Francisco, my coach, was amazing.  He is ultra qualified (championships in pro surf on his belt) but more importantly he has the biggest, hugest, warmest heart.   Riding back and forth to the beach we went to from Lagos was half the fun!  Everyone at the beach knew him and several were young adults he coached and who also were winning big in competitions.  As for the learning process, I’m sixty five and have only had two lessons before, one of which was 25 years ago. He was so patient and encouraging - I really just love the man.  I can’t recommend Francisco and his club enough.  Go for it!</p>
1290                <div class="review-stars fade_in_bottom" aria-label="5 out of 5">
1291                  &#9733;&#9733;&#9733;&#9733;&#9733;                </div>
1292                <div class="review-author fade_in_zoom">
1293                                      <img src="https://lh3.googleusercontent.com/a-/ALV-UjUy3OdBKSnroXcqjjfjJ_q3vAO7HoHaBXbpPO9gLf_rmdffEzrH=s120-c-rp-mo-ba12-br100" alt="" loading="lazy">
1294                                    <span class="meta">
1295                    Sarah Kerrigan                    <span class="review-date">2 weeks ago</span>
1296                  </span>
1297                </div>
1298              </div>
1299            </div>
1300                      <div class="carousel-item  ">
1301              <div class="review">
1302                <p class="review-text fade_in">Had a great time last year. Hamil and Alexander are great teachers. They made sure i understood correctly. Really loved the 5 days cours I did with them.
1303
1304May the waves treat you well,
1305Vlad</p>
1306                <div class="review-stars fade_in_bottom" aria-label="5 out of 5">
1307                  &#9733;&#9733;&#9733;&#9733;&#9733;                </div>
1308                <div class="review-author fade_in_zoom">
1309                                      <img src="https://lh3.googleusercontent.com/a-/ALV-UjU4ZreeWVV1GcY1_iRJHbyADywz9NpwnYhoFmLztwk2McLUqsQn=s120-c-rp-mo-br100" alt="" loading="lazy">
1310                                    <span class="meta">
1311                    Vlad Morariu                    <span class="review-date">3 weeks ago</span>
1312                  </span>
1313                </div>
1314              </div>
1315            </div>
1316                      <div class="carousel-item  ">
1317              <div class="review">
1318                <p class="review-text fade_in">I had an absolutely amazing experience with Surf Clube Portimão and couldn’t have wished for a better surf lesson!
1319
1320My instructor was fantastic – incredibly kind, patient and encouraging. He explained everything really well, helped me whenever I needed it, and made me feel comfortable and confident in the water from the very beginning. Thanks to his great guidance, I managed to catch many waves and had an absolutely unforgettable time. I had SO much fun! 🌊🏄‍♀️
1321
1322A special thank you also goes to his colleague, who took amazing photos and videos during the lesson. They turned out beautifully and will always remind me of this wonderful day and an unforgettable holiday in Portugal. ❤️
1323
1324I’m truly grateful for this experience and would 100% recommend Surf Clube Portimão to anyone who wants to learn surfing, have fun and create some amazing memories. I would definitely come back! 🌊☀️
1325
1326Thank you so much for an unforgettable day!</p>
1327                <div class="review-stars fade_in_bottom" aria-label="5 out of 5">
1328                  &#9733;&#9733;&#9733;&#9733;&#9733;                </div>
1329                <div class="review-author fade_in_zoom">
1330                                      <img src="https://lh3.googleusercontent.com/a/ACg8ocJaHxHyl1-1eWKn7nZzWiuoReQ93BLppV2uxXJNtvzFNBo6XQ=s120-c-rp-mo-br100" alt="" loading="lazy">
1331                                    <span class="meta">
1332                    Janina Graf                    <span class="review-date">4 weeks ago</span>
1333                  </span>
1334                </div>
1335              </div>
1336            </div>
1337                      <div class="carousel-item  ">
1338              <div class="review">
1339                <p class="review-text fade_in">Our instructor Alexandre and the communication were amazing!
1340
1341My girlfriend and I had planned a group lesson, but in the end it was just the two of us. So Alex gave us a private lesson, but we still paid the same price.
1342
1343Great surf club, we couldn’t have asked for a better first surfing experience!</p>
1344                <div class="review-stars fade_in_bottom" aria-label="5 out of 5">
1345                  &#9733;&#9733;&#9733;&#9733;&#9733;                </div>
1346                <div class="review-author fade_in_zoom">
1347                                      <img src="https://lh3.googleusercontent.com/a/ACg8ocKIijpSIsqQzz8LXjMUFp6wAzQCmOpUQDZ2Y-PlacqFaKCN59I=s120-c-rp-mo-br100" alt="" loading="lazy">
1348                                    <span class="meta">
1349                    renzoseys 2502                    <span class="review-date">1 month ago</span>
1350                  </span>
1351                </div>
1352              </div>
1353            </div>
1354                      <div class="carousel-item  ">
1355              <div class="review">
1356                <p class="review-text fade_in">Unfortunately, we had to cancel our surf lesson due to sickness. Portimão was incredibly flexible with rescheduling and, ultimately, processing our refund! I would highly recommend them for their kindness, excellent customer service, and professional watersports skills.</p>
1357                <div class="review-stars fade_in_bottom" aria-label="5 out of 5">
1358                  &#9733;&#9733;&#9733;&#9733;&#9733;                </div>
1359                <div class="review-author fade_in_zoom">
1360                                      <img src="https://lh3.googleusercontent.com/a-/ALV-UjUB1jq_l32RxaDpc_3agUFo-MtqmS8Vb6CmEemmptl1l6jdVf7r=s120-c-rp-mo-br100" alt="" loading="lazy">
1361                                    <span class="meta">
1362                    Brend Seinen                    <span class="review-date">1 month ago</span>
1363                  </span>
1364                </div>
1365              </div>
1366            </div>
1367                  </div>
1368        <button class="carousel-control-prev" type="button" data-bs-target="#google-reviews" data-bs-slide="prev">
1369          <i class="fal fa-arrow-left"></i><span class="visually-hidden">Previous</span>
1370        </button>
1371        <button class="carousel-control-next" type="button" data-bs-target="#google-reviews" data-bs-slide="next">
1372          <i class="fal fa-arrow-right"></i><span class="visually-hidden">Next</span>
1373        </button>
1374      </div>
1375    </div>
1376    
1377<p class="text-center mt-5"><a class="btn btn-cta rounded-5 p-5 pt-3 pb-3 shadow-lg fade_in_zoom" href="https://g.page/r/CeqaZZxMKqUKEBM/review" target="_blank" rel="noopener"><i class="fab fa-google me-2 "></i>Share Your Experience</a></p>
1378</div>
1379</div>
1380</div>
1381</div></div></div></div><div class="object_parent wireframe "><div id="objectID_1853" class="" style=""><div id="editorID_1853" data-label="Join" data-encoded="4d5449784f544d354e7a4d784e6b422b5147466b5a476c3061573975595778666157357764585241666b41784e44677a4e7a6b344d6a5577514835414d5467314d773d3d" class="" >
1381<div class=" bg-dirty">
1382<div class="row g-0">
1383<div class="col-lg-6 order-2 order-lg-1">
1384<div class="p-3 pt-5 pb-5 p-lg-5 fade_in_top">
1385<h5><strong>PTMSC</strong> - Portim&atilde;o Surf Clube <strong>Membership</strong></h5>
1386<h2>Want to join the club?</h2>
1387<p style="text-align: justify;">Joining <strong>PTMSC - Portim&atilde;o Surf Clube</strong> offers fantastic value for surf enthusiasts, locals, and visitors to the Algarve. As a member, you gain unlimited access to the club's excellent facilities <strong>7 days a week from 9 AM to 5 PM</strong>, providing the perfect base for planning sessions, storing gear, or connecting with the community at their welcoming headquarters near <strong>Praia da Rocha</strong>. Monthly lesson subscribers can enjoy a generous 50% discount on equipment rentals&mdash;including surfboards, bodyboards, SUPs, and more&mdash;making it easier and more affordable to hit the waves regularly without breaking the bank.&nbsp;Plus, you'll receive <strong>exclusive access</strong> to special club events, competitions, workshops, promotions, and member-only gatherings that foster a vibrant surf lifestyle and help you level up your skills. Whether you're a beginner or a seasoned rider, becoming a PTMSC member unlocks these key perks to enhance your time on the water in Portim&atilde;o and along the stunning west coast!</p>
1388<p style="text-align: center;"><a class="btn btn-cta p-4 ps-5 pe-5 shadow rounded-pill mt-3 fade_in_zoom" href="https://www.portimaosurfclube.pt/member-registration"><strong class="text-white">Join PTMSC today!</strong></a></p>
1389</div>
1390</div>
1391<div class="col-lg-6 order1 order-lg-2 fade_in_top">
1392<div><a href="https://www.portimaosurfclube.pt/member-registration"><img class="w-100" src="https://www.portimaosurfclube.pt/_files/content/1Y5A5414-canelas.jpg" alt="Join PTMSC - Portimao Surf Clube TODAY! - Francisco Canelas" /></a></div>
1393</div>
1394</div>
1395</div>
1396</div></div></div></div><div class="object_parent wireframe "><div id="objectID_1777" class="" style=""><div id="editorID_1777" data-label="APT" data-encoded="4e6a59784e5459334d545241666b42685a47527064476c76626d467358326c7563485630514835414d6a41324d5449794e4463304e55422b514445334e7a633d" class="" ><div class="row g-0">
1397<div class="col-lg-6">
1398<div class="fade_in_top">
1399
1400	<div style="position: relative; padding-top: 56.25%;" class="">
1401	  <iframe
1402		src="https://customer-0tzx6lvms3lhg1mn.cloudflarestream.com/05c09dea1c88fee4e1b6c807937eeb30/iframe?muted=true&preload=true&loop=true&poster=https%3A%2F%2Fcustomer-0tzx6lvms3lhg1mn.cloudflarestream.com%2F05c09dea1c88fee4e1b6c807937eeb30%2Fthumbnails%2Fthumbnail.jpg%3Ftime%3D%26height%3D600"
1403		loading="lazy"
1404		style="border: none; position: absolute; top: 0; left: 0; height: 100%; width: 100%;"
1405		allow="accelerometer; gyroscope; autoplay; encrypted-media; picture-in-picture;"
1406		allowfullscreen="true"
1407        class=""
1408	  ></iframe>
1409	</div>
1410	
1411</div>
1412</div>
1413<div class="col-lg-6">
1414<div class="p-3 pt-5 p-lg-5 fade_in_top">
1415<!-- load_objects --><div class="container"><div class="row g-0 justify-content-center"><div style="" class="object_parent load_objects BOX "><div id="objectID_1776" class="cms-non-editable" style=""><div id="editorID_1776" data-label="PADDLE" data-encoded="4d5463324d44637a4f5463314e6b422b5147466b5a476c3061573975595778666157357764585241666b41784d446b794e7a45334d6a5131514835414d5463334e673d3d" class="" ><h5><strong>Stand Up Paddle</strong> (SUP)</h5>
1416<p><a title="Book Now" href="https://fareharbor.com/embeds/book/portimaosurfclube/?full-items=yes&amp;flow=529431" data-fareharbor="book_tour_button_desktop"><img style="display: table-inline; margin-left: auto; margin-right: auto;" src="https://www.portimaosurfclube.pt/_files/content/logo_landscape.svg" width="50%" /></a><a class="" title="Book Now" href="https://fareharbor.com/embeds/book/portimaosurfclube/?full-items=yes&amp;flow=529431" data-fareharbor="book_tour_button_desktop"><img class="" style="float: right; margin-top: -50px;" src="https://www.portimaosurfclube.pt/_files/content/BOOK_NOW_EN.svg" alt="" width="100" height="100" /></a></p>
1417<p style="text-align: justify;">The PTMSC, in partnership with Alvor Paddle Tours, offers unforgettable Stand Up Paddle (SUP) tours in Portim&atilde;o and Alvor, two of the most beautiful destinations in the Algarve. Guided by an experienced local instructor, you will paddle along the stunning coastline, discover hidden caves, and pass through the famous rock arches. The tour also includes relaxing stops at secluded beaches, where you can enjoy yoga and connect with nature. This Stand Up Paddle experience in Portim&atilde;o and Alvor is the ideal activity for travelers seeking adventure, wellness, and breathtaking views of the Algarve coast.</p></div></div></div></div></div>
1418</div>
1419</div>
1420</div></div></div></div>
1420<div class="object_parent wireframe bg-dirty"><div id="objectID_1865" class="" style=""><div id="editorID_1865" data-label="PARA" data-encoded="4d5467334e44557a4e6a45774e6b422b5147466b5a476c3061573975595778666157357764585241666b41784e7a6b7a4d7a4d794e544579514835414d5467324e513d3d" class="" ><div class="row g-0">
1421<div class="col-lg-6 order-2 order-lg-1">
1422<div class="p-3 pt-5 pb-5 p-lg-5 fade_in_top">
1423<!-- load_objects --><div class="container"><div class="row g-0 justify-content-center"><div style="" class="object_parent load_objects BOX "><div id="objectID_1866" class="cms-non-editable" style=""><div id="editorID_1866" data-label="PARA" data-encoded="4d5467794d6a59784f5459324e45422b5147466b5a476c3061573975595778666157357764585241666b417a4e6a59774d4459314e544641666b41784f445932" class="" ><h5><strong>Para Surfing</strong> in Portim&atilde;o</h5>
1424<h2>N&uacute;cleo Para Surfing at Portim&atilde;o Surf Clube</h2>
1425<p style="text-align: justify;">Para Surfing in Portim&atilde;o is the ultimate destination for adaptive surfing and inclusive wave riding in the Algarve, Portugal. At <strong>PTMSC</strong>, we proudly champion para surfing &mdash; a dynamic form of adaptive surfing that empowers athletes with physical challenges to experience the thrill of riding waves at <strong>Praia da Rocha</strong> and beyond. Our para surfing program combines passion, community, and professional support to make surfing truly accessible for all, whether you are an experienced adaptive surfer or trying the sport for the first time. With expert guidance from <strong>FisioRider</strong>, athletes receive tailored physiotherapy, strength and balance training, and surf‑specific preparation &mdash; helping to enhance performance, reduce injury risk, and build confidence in the water.</p>
1426<p>Discover the excitement of inclusive surfing in Portugal, connect with a welcoming surf community, and explore why Portim&atilde;o is fast becoming a leading hub for para surfing and adaptive water sports in Europe.</p>
1427<p><a href="https://www.portimaosurfclube.pt/nucleo-para-surfing">Find out more</a></p></div></div></div></div></div>
1428</div>
1429</div>
1430<div class="col-lg-6 order1 order-lg-2 fade_in_top">
1431<div><img class="w-100" src="https://www.portimaosurfclube.pt/_files/content/nucleodeparasurf.jpg" alt="Para Surfing Portugal, Algarve, Portimao" /></div>
1432</div>
1433</div></div></div></div></div></div>
1434    </section>
1435    	
1436<footer class="pt-5">
1437
1438<div class="container-fluid">
1439	<div class="row">
1440		<div class="col-12">
1441    <style>
1442	
1443	.item-59 img {height: 46px !important;}
1444	
1445	.logo-scroller {
1446	  overflow: hidden;
1447	  width: 100%;
1448	}
1449
1450	.logo-track {
1451	  display: flex;
1452	  align-items: center;
1453	  flex-wrap: nowrap;
1454	  width: max-content;
1455	  animation: scroll 30s linear infinite;
1456	}
1457
1458	.logo-item {
1459	  flex: 0 0 auto;
1460	  display: flex;
1461	  align-items: center;
1462	  justify-content: center;
1463	  padding: 0 1.5rem;
1464	}
1465
1466	/* Base logo size (desktop) */
1467	.logo-item img {
1468	  height: 150px;
1469	  width: auto;
1470	  object-fit: contain;
1471	}
1472
1473	/* Tablet */
1474	@media (max-width: 991px) {
1475	  .logo-item img {
1476		height: 55px;
1477	  }
1478	}
1479
1480	/* Mobile – max 2 logos visible */
1481	@media (max-width: 575px) {
1482	  .logo-item {
1483		padding: 0 1rem;
1484	  }
1485
1486	  .logo-item img {
1487		height: 40px;
1488	  }
1489	}
1490
1491	/* Extra small – effectively 1 logo */
1492	@media (max-width: 400px) {
1493	  .logo-item {
1494		padding: 0 0.75rem;
1495	  }
1496
1497	  .logo-item img {
1498		height: 200px;
1499	  }
1500	}
1501
1502	@keyframes scroll {
1503	  0%   { transform: translateX(0); }
1504	  100% { transform: translateX(-50%); }
1505	}
1506
1507	/* Accessibility */
1508	@media (prefers-reduced-motion: reduce) {
1509	  .logo-track {
1510		animation: none;
1511	  }
1512	}
1513
1514	@media (hover: hover) {
1515	  .logo-scroller:hover .logo-track {
1516		animation-play-state: paused;
1517	  }
1518	}
1519
1520	@media (max-width: 575px) {
1521	  .logo-track {
1522		animation-duration: 45s;
1523	  }
1524	}
1525
1526	</style>
1527
1528
1529	<!-- Seamless Infinite Logo Slider -->
1530	<div class="logo-scroller">
1531		<div class="logo-track">
1532		<div class="logo-item fade_in item-1"><a href="http://alvorpaddletours.com/" target="_blank"><img src="https://www.portimaosurfclube.pt/_files/menu/993/1-logos-apt-white.png" alt="Alvor Paddle Tours" class="" /></a></div><div class="logo-item fade_in item-2"><img src="https://www.portimaosurfclube.pt/_files/menu/993/2-logos-clube-02-1.png" alt="" class="" /></div><div class="logo-item fade_in item-3"><img src="https://www.portimaosurfclube.pt/_files/menu/993/3-logos-clube-02-3.png" alt="" class="" /></div><div class="logo-item fade_in item-4"><img src="https://www.portimaosurfclube.pt/_files/menu/993/4-logos-clube-11-02.png" alt="" class="" /></div><div class="logo-item fade_in item-5"><img src="https://www.portimaosurfclube.pt/_files/menu/993/5-logos-clube1-02.png" alt="" class="" /></div><div class="logo-item fade_in item-6"><a href="https://www.secretspot98.com" target="_blank"><img src="https://www.portimaosurfclube.pt/_files/menu/993/6-logos-clube52424-02.png" alt="Secret Spot 98" class="" /></a></div><div class="logo-item fade_in item-7"><a href="https://www.kayak.es/" target="_blank"><img src="https://www.portimaosurfclube.pt/_files/menu/993/7-logos-kayak-white.png" alt="KAYAK" class="" /></a></div><div class="logo-item fade_in item-59"><a href="https://algarve.pro/" target="_blank"><img src="https://www.portimaosurfclube.pt/_files/menu/993/59-ap-natural.png" alt="ALGARVE PRO" class="" /></a></div><div class="logo-item fade_in item-1"><a href="http://alvorpaddletours.com/" target="_blank"><img src="https://www.portimaosurfclube.pt/_files/menu/993/1-logos-apt-white.png" alt="Alvor Paddle Tours" class="" /></a></div><div class="logo-item fade_in item-2"><img src="https://www.portimaosurfclube.pt/_files/menu/993/2-logos-clube-02-1.png" alt="" class="" /></div><div class="logo-item fade_in item-3"><img src="https://www.portimaosurfclube.pt/_files/menu/993/3-logos-clube-02-3.png" alt="" class="" /></div><div class="logo-item fade_in item-4"><img src="https://www.portimaosurfclube.pt/_files/menu/993/4-logos-clube-11-02.png" alt="" class="" /></div><div class="logo-item fade_in item-5"><img src="https://www.portimaosurfclube.pt/_files/menu/993/5-logos-clube1-02.png" alt="" class="" /></div><div class="logo-item fade_in item-6"><a href="https://www.secretspot98.com" target="_blank"><img src="https://www.portimaosurfclube.pt/_files/menu/993/6-logos-clube52424-02.png" alt="Secret Spot 98" class="" /></a></div><div class="logo-item fade_in item-7"><a href="https://www.kayak.es/" target="_blank"><img src="https://www.portimaosurfclube.pt/_files/menu/993/7-logos-kayak-white.png" alt="KAYAK" class="" /></a></div><div class="logo-item fade_in item-59"><a href="https://algarve.pro/" target="_blank"><img src="https://www.portimaosurfclube.pt/_files/menu/993/59-ap-natural.png" alt="ALGARVE PRO" class="" /></a></div>
1533		</div>
1534	</div>
1535
1536</div>
1537	</div>
1538</div>
1539<hr />
1540<div class="container">
1541
1542	<div class="row">
1543        
1544        <div class="col-xl-6">
1545        
1546            <div class="row">
1547                <div class="col-md">
1548                    <div class="p-5 p-md-1 pt-3">
1549                        <div class="m-5 m-md-3 ps-3 pe-3"><img src="https://www.portimaosurfclube.pt/_design/portimao-surf-clube-light.svg?x" class="w-100" alt="Portimao Surf Clube" /></div>
1550                    </div>
1551                </div>
1552
1553                <div class="col-12 col-md">
1554                    <div class="p-3 text-center mb-5">
1555                        <p><strong>
1555PARTNERSHIP</strong><br><em>EM PARCERIA</em></p>
1556                        <p class="ps-5 pe-5 ms-5 me-5 ms-md-0 me-md-0"><a href="https://www.alvorpaddletours.com" target="_blank"><img src="https://www.portimaosurfclube.pt/_design/logo_square.svg" class="w-100" alt="Alvor Paddle Tours (SUP Portimao/Alvor)" /></a></p>               
1557                    </div>
1558                </div>
1559
1560                <div class="col-12 col-md">
1561                    <div class="text-center">
1562                        <p class="d-none d-md-table p-3"><a href="https://www.portimaosurfclube.pt/contacts/vcard" download><img src="https://ptmsc.link/qrcodes/SIcvEB.svg" class="w-100" /></a></p>
1563                    </div>
1564                </div>
1565
1566            </div>
1567            
1568            <div class="ps-5 pe-5 ps-md-0 pe-md-0">
1569            <div class="row g-0">
1570                <div class="col-12 col-md">
1571                <div class="p-3">
1572                    <a class="" href="https://apps.apple.com/us/app/ptmsc/id6771550266" target="_blank" rel="noopener"><img class="w-100" src="../_design/app_icon_apple.svg" alt="" /></a>
1573                </div>
1574                </div>
1575                <div class="col-12 col-md">
1576                <div class="p-3">
1577                    <a href="https://play.google.com/store/apps/details?id=pt.portimaosurfclube.ptmsc" target="_blank" rel="noopener"><img class="w-100" src="../_design/app_icon_google.svg" alt="" /></a>
1578                </div>
1579                </div>
1580                <div class="col-12 col-md">
1581                <div class="p-3 d-none">
1582                    <a class="" href="https://www.portimaosurfclube.pt/_app_ptmsc/index.php" target="_blank" rel="noopener"><img class="w-100" src="../_design/app_icon_pwa.png" alt="" /></a>
1583                </div>
1584                </div>
1585            </div>
1586            </div>
1587            
1588		</div>
1589        
1590        <div class="col-xl-6">
1591        
1592            <div class="row">
1593
1594                <div class="col-md">
1595                    <div class="pt-3 text-center text-md-start ps-md-5 mb-5">
1596                        <h5><strong>Information</strong><br><em>Informação</em></h5>
1597                        <ul id="KOOmenuitem_406_ul" class=""><li id="KOOmenuitem_1194_li" class="fade_in_left"><a id="KOOmenuitem_1194" class=" "  href="https://www.portimaosurfclube.pt/contacts" title="Contacts">Contacts</a> </li> <li id="KOOmenuitem_818_li" class="fade_in_left"><a id="KOOmenuitem_818" class=" "  href="https://www.portimaosurfclube.pt/faq" title="FAQ">FAQ</a> </li> <li id="KOOmenuitem_542_li" class="fade_in_left"><a id="KOOmenuitem_542" class=" "  href="https://www.portimaosurfclube.pt/sitemap" title="Sitemap">Sitemap</a> </li> <li id="KOOmenuitem_578_li" class="fade_in_left"><a id="KOOmenuitem_578" class=" "  href="https://www.portimaosurfclube.pt/privacy-policy" title="Privacy Policy">Privacy Policy</a> </li> <li id="KOOmenuitem_971_li" class="fade_in_left"><a id="KOOmenuitem_971" class=" "  href="https://www.portimaosurfclube.pt/terms-and-conditions" title="Terms &amp; Conditions">Terms &amp; Conditions</a> </li> <li id="KOOmenuitem_972_li" class="fade_in_left"><a id="KOOmenuitem_972" class=" "  href="https://www.portimaosurfclube.pt/complaints-book" title="Complaints book">Complaints book</a> </li> <li id="KOOmenuitem_1110_li" class="fade_in_left"><a id="KOOmenuitem_1110" class=" "  href="https://www.portimaosurfclube.pt/ptmsc-app-installation" title="PTMSC Mobile APP">PTMSC Mobile APP</a> </li> </ul>
1598                    </div>
1599                </div>
1600
1601                <div class="col-md">
1602                    <div class="pt-3 text-center text-md-start">
1603                        <h5><strong>CONTACTS</strong><br><em>CONTACTOS</em></h5>
1604                        <p class="lead"><i class="fab fa-whatsapp me-1"></i><a href="https://wa.me/15558734337?text="><strong>Virtual Assistant</strong><br>+1 (555) 873-4337<br><small>Get Instant Answer</small></a></p>
1605                        <p><i class="fab fa-whatsapp me-1"></i><a href="tel:+351966559739"><strong>Office</strong>+351 966 559 739<br><small>Usually reply within an hour</small></a></p>
1606                        <!--<p>&#xF8FF;
1606 <a href="imessage:[email protected]">[email protected]</a></p>-->
1607                        <p><i class="fa fa-envelope me-1"></i><a href="/cdn-cgi/l/email-protection#0a63646c654a7a65787e63676b65797f786c69667f686f247a7e"><span class="__cf_email__" data-cfemail="5c35323a331c2c332e2835313d332f292e3a3f30293e39722c28">[email&#160;protected]</span></a></p>
1608                        <p><a href="https://maps.app.goo.gl/a6mUXcwsPU2tvyX36" target="_blank" rel="noopener"><i class="fal fa-map-marker-alt me-2"></i>PTMSC<br>Portim&atilde;o Surf Clube<br>Estrada Marina 280,<br>8500-311 Portim&atilde;o</a></p>
1609                        <p>
1610                            <a href="https://wa.me/15558734337?text=" target="_blank" class="m-2" title="WhatsApp"><i class="fab fa-whatsapp fa-3x"></i></a>
1611                            <!--<a href="https://wa.me/351966559739?text=" target="_blank" class="m-2" title="WhatsApp"><i class="fab fa-whatsapp fa-3x"></i></a>-->
1612                            <a href="https://www.instagram.com/portimaosurfclube/" target="_blank" class="m-2" title="Instagram"><i class="fab fa-instagram fa-3x"></i></a>
1613                            <a href="https://www.facebook.com/portimaosurfclube/" target="_blank" class="m-2" title="Facebook"><i class="fab fa-facebook fa-3x"></i></a>
1614                            <a href="https://www.tripadvisor.com/Attraction_Review-g652081-d19327882-Reviews-Portimao_Surf_Clube-Praia_da_Rocha_Portimao_Faro_District_Algarve.html" target="_blank" class="m-2" title="Tripadvisor"><i class="fab fa-tripadvisor fa-3x"></i></a>
1615                        </p>
1616                    </div>
1617                </div>
1618
1619            </div>
1620            
1621		</div>
1622        
1623        
1624	</div>
1625</div>
1626<hr>
1627<div class="container p-md-5">
1628	<div class="row g-0">
1629		<div class="col-md-3 text-center text-md-start pb-5">
1630			<p>&copy; 2026 PTMSC<br>Portim&atilde;o Surf Clube</p>		
1631		</div>
1632		<div class="col-md-6 text-center pb-5">
1633			<p><a href="https://www.visitportugal.com/en/node/435605" target="_blank"><img src="https://www.portimaosurfclube.pt/_design/Turismo_de_portugal_light.svg" width="120" alt="Turismo de PORTUGAL" /></a></p>
1634			<p>RNAAT 158 / 2021</p>		
1635		</div>
1636		<div class="col-md-3 pb-5 text-center text-md-end">
1637			<small><a href="https://algarve.pro" target="_blank" style="font-size:10px;"><img src="https://www.portimaosurfclube.pt/_design/AP-natural.png" width="53" alt="ALGARVE PRO" /><br>Powered by <strong class="d-none">ALGARVE.PRO</strong></a></small>
1638		</div>
1639	</div>
1640	<hr>
1641	<p style="font-size:11px;" class="text-center">Developed by <strong>ALGARVE.PRO</strong> All images on this website are protected by copyright. Unauthorized use is prohibited.</p>
1642</div>
1643</footer>
1644
1645    <link  rel="stylesheet" href="https://www.portimaosurfclube.pt/_chatbot/chatbot.css?1791450647">
vendor: 113 bytes, lines 1645-1646
1645
1646    <script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>
1646<script src="https://www.portimaosurfclube.pt/_chatbot/chatbot.js?1791450647"></script>
1646    
1647    
1648<!-- WhatsApp Widget -->
1649<div id="whatsapp-chat-widget">
1650  <div class="whatsapp-button" onclick="toggleWhatsAppChat()">
1651    <i class="fab fa-whatsapp"></i>
1652  </div>
1653
1654  <div class="whatsapp-chat-box" id="whatsapp-chat-box">
1655    <div class="chat-header">
1656      <img src="https://www.portimaosurfclube.pt/_design/PTMSC_rgb.svg" class="agent" alt="Agent">
1657      <div>
1658        <strong>Portimao Surf Clube</strong><br>
1659        <span>Typically replies in a few minutes</span>
1660      </div>
1661      <div class="close-chat" onclick="toggleWhatsAppChat()">×</div>
1662    </div>
1663
1664    <div class="chat-body">
1665      <p>Hello 👋<br>How can we help you today?</p>
1666    </div>
1667
1668    <div class="chat-footer">
1669      <input type="text" id="whatsapp-msg" placeholder="Type your message..." />
1670      <button onclick="sendWhatsAppMessage()">Send</button>
1671    </div>
1672  </div>
1673</div>
1674<style>
1675
1676#whatsapp-chat-widget {
1677  position: fixed;
1678  bottom: 23px;
1679  right: 100px;
1680  font-family: stevie-sans, sans-serif;
1681  z-index: 10000;
1682}
1683
1684.agent {
1685	background: #fff; border-radius: 50%; padding: 5px;
1686}
1687
1688.whatsapp-button {
1689  display: block;
1690  color: #fff; 
1691  background: #EF4529; 
1692  border-radius: 10px;
1693  width: 60px;
1694  height: 60px;
1695  line-height: 60px;
1696  font-size:40px;
1697  text-align: center; 
1698}
1699
1700.whatsapp-chat-box {
1701  display: none;
1702  width: 300px;
1703  background: white;
1704  border-radius: 10px;
1705  box-shadow: 0 8px 20px rgba(0, 0, 0, 0.2) !important;
1706  overflow: hidden;
1707  flex-direction: column;
1708  animation: slideUp 0.3s ease;
1709}
1710
1711.chat-header {
1712  display: flex;
1713  align-items: center;
1714  gap: 10px;
1715  background: #EF4529;
1716  color: white;
1717  padding: 10px;
1718  position: relative;
1719}
1720
1721.chat-header img {
1722  width: 40px;
1723  height: 40px;
1724  border-radius: 10px;
1725}
1726
1727.close-chat {
1728  position: absolute;
1729  right: 10px;
1730  top: 10px;
1731  cursor: pointer;
1732  font-size: 20px;
1733}
1734
1735.chat-body {
1736  padding: 15px;
1737  background: #f0f0f0;
1738  font-size: 16px;
1739  color: #333;
1740}
1741
1742.chat-footer {
1743  display: flex;
1744  border-top: 1px solid #ddd;
1745  padding: 10px;
1746  background: white;
1747}
1748
1749.chat-footer input {
1750  flex: 1;
1751  border: none;
1752  padding: 8px;
1753  font-size: 14px;
1754  border: 1px solid #ccc;
1755  border-radius: 4px;
1756}
1757
1758.chat-footer button {
1759  margin-left: 8px;
1760  background: #EF4529;
1761  color: white;
1762  border: none;
1763  padding: 8px 12px;
1764  border-radius: 4px;
1765  cursor: pointer;
1766}
1767
1768@media (max-width: 480px) {
1769    #whatsapp-chat-widget {
1770      bottom: 15px;
1771    }
1772  .whatsapp-chat-box {
1773    width: 100% !important;
1774    bottom: 0;
1775    right: 0;
1776    left: 0;
1777    flex-direction: column;
1778  }
1779
1780  .chat-header, .chat-body, .chat-footer {
1781    padding: 15px;
1782  }
1783
1784  .whatsapp-button {
1785    bottom: 20px;
1786    right: 20px;
1787  }
1788  
1789	.chat-footer input {
1790	  flex: 1;
1791	  border: none;
1792	  padding: 8px;
1793	  font-size: 16px; 
1794	  border: 1px solid #ccc;
1795	  border-radius: 4px;
1796	}  
1797	
1798}
1799
1800
1801@keyframes slideUp {
1802  from {
1803    transform: translateY(100px);
1804    opacity: 0;
1805  }
1806  to {
1807    transform: translateY(0);
1808    opacity: 1;
1809  }
1810}
1811</style>
1812<script>
1813  function toggleWhatsAppChat() {
1814    const box = document.getElementById("whatsapp-chat-box");
1815    const button = document.querySelector(".whatsapp-button");
1816
1817    const isOpen = box.style.display === "flex";
1818
1819    if (isOpen) {
1820      box.style.display = "none";
1821      button.style.display = "block";
1822    } else {
1823      box.style.display = "flex";
1824      button.style.display = "none";
1825    }
1826  }
1827
1828  function sendWhatsAppMessage() {
1829    const phone = "351966559739"; // Replace with your WhatsApp number
1830    const message = document.getElementById("whatsapp-msg").value.trim();
1831    if (message) {
1832      const encodedMsg = encodeURIComponent(message);
1833      const url = `https://wa.me/${phone}?text=${encodedMsg}`;
1834      window.open(url, "_blank");
1835    }
1836  }
1837</script>
vendor: 1 bytes, line 1837
1837
1838<script type="text/javascript" charset="UTF-8" src="//cdn.cookie-script.com/s/3569319e2ca2a3c0fef84ec85ae628d6.js"></script>
1838<!-- FareHarbor Lightframe API - do not remove - see: https://fareharbor.com/help/website/resources/lightframe-api/ --> 
1838<script src="https://fareharbor.com/embeds/api/v1/?autolightframe=yes" async></script>
1838 
1839            
1839<script>
1840        /* -------------------------------------------------
1841           CONFIGURATION – put your own code inside these
1842           functions. They will be called exactly once per
1843           modal open/close.
1844           ------------------------------------------------- */
1845        function onBeforeModalOpen($link) {
1846            // ------------------------------------------------------------------
1847            // Example: show a spinner, log an analytics event, pause a video…
1848            // ------------------------------------------------------------------
1849            //alert('User clicked the FareHarbor link – preparing modal...');
1850            $('.book_now').html('Please wait<span style="font-size:8px; letter-spacing: 0.5px; font-weight:300; display:block;">FAREHARBOR is opening</span>');
1851
1852            setTimeout(function() {
1853                $('.book_now').html('BOOK NOW<span style="font-size:8px; letter-spacing: 0.5px; font-weight:300; display:block;">without Membership</span>');
1854            }, 2000);
1855
1856
1857            // Example: pause a background video
1858            const video = document.getElementById('heroVideo');
1859            if (video) video.pause();
1860
1861            // Example: add a CSS class that shows a spinner overlay
1862            $link.addClass('loading');          // you can style .loading in CSS
1863        }
1864
1865        function onModalOpened() {
1866            // ------------------------------------------------------------------
1867            // This runs **after** the Lightframe reports that the modal is visible
1868            // ------------------------------------------------------------------
1869            //alert('FareHarbor modal is now open – run post‑open actions');	
1870            // Remove the spinner / loading indicator
1871            $('.book_now').removeClass('loading');
1872
1873            // Example: send an analytics event
1874            if (window.ga) ga('send', 'event', 'FareHarbor', 'modal_open');
1875        }
1876
1877        function onModalClosed() {
1878            // ------------------------------------------------------------------
1879            // Runs when the user dismisses the modal
1880            // ------------------------------------------------------------------
1881            //alert('FareHarbor modal closed');
1882            // Example: resume the background video
1883            const video = document.getElementById('heroVideo');
1884            if (video) video.play();
1885        }
1886
1887        /* -------------------------------------------------
1888           3️⃣  Intercept the click (or pointerdown) on the link
1889           ------------------------------------------------- */
1890        $(document).on('pointerdown', '.fh-trigger', function (e) {
1891            const $link = $(this);
1892
1893            // Run any pre‑open logic you need
1894            onBeforeModalOpen($link);
1895
1896            // Prevent the default navigation for a split‑second.
1897            // We’ll re‑trigger the click after a tiny timeout so the UI
1898            // can repaint (spinner, video pause, etc.).
1899            e.preventDefault();
1900
1901            // Small delay – 120 ms is usually enough for the UI change.
1902            // Adjust if you need a longer “please wait” visual.
1903            setTimeout(() => {
1904                // Dispatch a synthetic click that the Lightframe script will catch.
1905                const clickEvt = new MouseEvent('click', {
1906                    view: window,
1907                    bubbles: true,
1908                    cancelable: true
1909                });
1910                $link[0].dispatchEvent(clickEvt);
1911            }, 120);
1912        });
1913
1914        /* -------------------------------------------------
1915           4️⃣  Listen for messages from the Lightframe (postMessage)
1916           ------------------------------------------------- */
1917        window.addEventListener('message', function (evt) {
1918            // SECURITY: only accept messages from the genuine FareHarbor domain
1919            if (evt.origin !== 'https://fareharbor.com') return;
1920
1921            const data = evt.data;
1922            if (!data || typeof data.type !== 'string') return;
1923
1924            // The Lightframe sends these two message types (per their docs)
1925            if (data.type === 'lightframeOpened') {
1926                onModalOpened();
1927            } else if (data.type === 'lightframeClosed') {
1928                onModalClosed();
1929            }
1930        });
1931
1932        /* -------------------------------------------------
1933           5️⃣  (Optional) Fallback – if FareHarbor creates the
1934                global object, we can also hook into it.
1935           ------------------------------------------------- */
1936        if (window.FareHarborLightframe) {
1937            // Overwrite the callbacks – they will be called in addition
1938            // to the postMessage events, so you won’t miss anything.
1939            window.FareHarborLightframe.onOpen = function () {
1940                onModalOpened();
1941            };
1942            window.FareHarborLightframe.onClose = function () {
1943                onModalClosed();
1944            };
1945        }
1946        </script>
1946	
1947     	    
1948<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v4bc70e2c01a94c73b74392e4234840661791215815920" integrity="sha512-L0ha0OXavK/8okipN9F8BtP84dg9DUhPERbBXzwI6dgTA55d2+yweo3pn5CSFYs45/r8md2+xvUPtTdvTNRfjA==" data-cf-beacon='{"version":"2024.11.0","token":"e0ed61a429c6488c903496ad8f0e49e4","r":1,"spa":2}' crossorigin="anonymous"></script>
vendor: 1 bytes, line 1948
1948
1949<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:'a47403a69eb6d7f1',t:'MTc5MTQ1MDY0NQ=='};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>
1949</body>
1950</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.