PageSourceSearch

https://www.portimaosurfclube.pt/news-and-events

html portimaosurfclube.pt collected 2026-10-08 09:10:48 UTC 80,120 bytes, 1,366 lines download raw bytes

1   
2<!DOCTYPE HTML>
3<html lang="en">
4<head>
5    <meta charset="utf-8">
6    <title id="title">PTMSC News & Events</title> <meta name="description" content="Stay updated with Portimão Surf Clube! Get competition results, training news, event details, and club announcements. Connect with the athletes and surf spirit." />
7	<meta property="og:url" content="https://www.portimaosurfclube.pt/news-and-events" />
8	<meta property="og:type" content="website" />
9	<meta property="og:title" content="PTMSC News & Events" />
10	<meta property="og:description" content="Stay updated with Portimão Surf Clube! Get competition results, training news, event details, and club announcements. Connect with the athletes and surf spirit." />
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 News & Events">
22<meta name="twitter:description" content="Stay updated with Portimão Surf Clube! Get competition results, training news, event details, and club announcements. Connect with the athletes and surf spirit.">
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_17914506481843935172";
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.1791450648" 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/news-and-events">
573<link rel="alternate" hreflang="x-default" href="https://www.portimaosurfclube.pt/news-and-events">
574
575<script type="application/ld+json">
576{"@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/news-and-events#webpage","url":"https://www.portimaosurfclube.pt/news-and-events","name":"News and Events - PTMSC","isPartOf":{"@id":"https://www.portimaosurfclube.pt/#website"},"about":{"@id":"https://www.portimaosurfclube.pt/#organization"}
576,"inLanguage":"en","description":"Competitions, workshops and club news from Portimao Surf Clube.","breadcrumb":{"@id":"https://www.portimaosurfclube.pt/news-and-events#breadcrumb"}},{"@type":"BreadcrumbList","@id":"https://www.portimaosurfclube.pt/news-and-events#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://www.portimaosurfclube.pt/"},{"@type":"ListItem","position":2,"name":"News","item":"https://www.portimaosurfclube.pt/news-and-events"}]}]}
577</script>
577
578    
579</head>
580
581
582<body class="page cms_off ">
583	
584<span class="screen-darken"></span>
585<header class="section-header mobile-header d-lg-none hide_in_gallery">
586	
587	        <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>
588    
589	<a class="mobile-logo" href="https://www.portimaosurfclube.pt">
590		<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" />
591	</a>
592</header><!-- section-header.// -->
593    
594<!-- ============= COMPONENT ============== -->
595<nav id="navbar_main" class="mobile-offcanvas navbar navbar_ navbar-expand-lg navbar-dark fixed-top ">
596 <div class="container-fluid">
597    <div class="offcanvas-header">  
598		<button class="btn btn-close mt-3 text-danger float-end"></button>
599	</div>
600    <a class="fade_in_nav navbar-brand ms-lg-5" href="https://www.portimaosurfclube.pt">
601		<img src="https://www.portimaosurfclube.pt/_design/PTMSC_white.svg" class="logo_white" alt="Portimão Surf Clube" fetchpriority="high" decoding="async" loading="eager" />
602		<img src="https://www.portimaosurfclube.pt/_design/PTMSC_rgb.svg" class="logo_rgb" alt="Portimão Surf Clube" fetchpriority="high" decoding="async" loading="eager" />
603	</a>
604	 
605	<ul class="navbar-nav ms-auto">
606        <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   active   "><a  class="thing nav-link item_id_1015   active   " 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>
607                <li class="nav-item dropdown fade_in_nav ps-2 pe-2">
608                    <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>
609                    <ul class="dropdown-menu" aria-labelledby="navbarLang">
610                        <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>
611                        <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>
612                    </ul>
613                </li>			
614                		<!--
615		<li class="d-table d-lg-none w-100">
616		 <div class="mt-3 social_links_mobile_nav">
617			<span class="row text-center">
618				<a href="https://www.facebook.com/..." target="_blank" class="col"><i class="fab fa-facebook fa-2x"></i></a> 
619				<a href="https://www.instagram.com/..." target="_blank" class=" col"><i class="fab fa-instagram fa-2x"></i></a> 
620			</span>
621
622		</div>
623		</li>
624		-->		
625    </ul>
626	
627		<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 " 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>	 	 
628 </div> <!-- container-fluid.// -->
629</nav>
630<style>
631/* ============ desktop view ============ */
632@media all and (min-width: 992px) {
633	.navbar .nav-item .dropdown-menu { display: none;  }
634	.navbar .nav-item:hover .nav-link{   }
635	.navbar .nav-item:hover .dropdown-menu{ display: block; }
636	.navbar .nav-item .dropdown-menu{ margin-top:0; }
637}	
638/* ============ desktop view .end// ============ */
639	@media (min-width: 992px) { 
640		.flag {margin: 3px; margin-top: -3px;}
641	}
642</style>
643<!-- ============= COMPONENT END// ============== -->
644<script>
645    $(function(){	
646
647		//alert('mobile: ' + isMobile);		
648		
649		if(isMobile !== true) {
650			$('#navbar_main').addClass('navbar-desktop');
651		}
652
653		if(isMobile == true){
654			//$page->navbar_style = 'light';
655			//$page->logo_style = 'white';
656			$('#navbar_main .navbar-brand img').css('display','none');
657			$('#navbar_main .navbar-brand img.logo_rgb').css('display','table');
658			
659			//$('.logo_white').css('display','none');
660			//$('.logo_black').css('display','none');
661			//$('.logo_rgb').css('display','table');
662			//alert('mobile: ' + isMobile);
663		}
664		
665    $(function(){
666        $('.dropdown-toggle-main-nav').click(function(){
667            
668            if (Modernizr.touchevents) {
669              // supported
670				var that = this;
671				//setTimeout(function() {
672				  //
673				//}, 2000);
674			} else {
675              // not-supported
676                window.location=$(this).attr("href");
677            }            
678            
679            
680        });
681    });
682    });
683</script>
vendor: 1 bytes, line 683
683
684<script>
685	$(window).scroll(function(){
686		//$('.scroll_padding_fix').css('padding-top','0px');
687		
688		
689		//rotate: -2.5deg;
690		
691		
692		if($(window).width() > 991) {
693			
694			if($(document).scrollTop() > 5) {
695				$("body").addClass("scrolled");
696				$('body.home .fade_in_nav').removeClass("text-white");
697			} else {
698				$("body").removeClass("scrolled");
699				$('body.home .fade_in_nav').addClass("text-white");
700			}
701
702			if($(document).scrollTop() > 5) {
703
704                $("#navbar_main").addClass("liquid-glass");
705				$("#navbar_main").addClass("m-md-3");
706				$("#navbar_main").addClass("m-lg-4");
707				$("#navbar_main").addClass("m-xxl-5");
708				$("#navbar_main").addClass("rounded-5");
709			} else {
710				$("#navbar_main").removeClass("liquid-glass");
711				$("#navbar_main").removeClass("m-md-3");
712				$("#navbar_main").removeClass("m-lg-4");
713				$("#navbar_main").removeClass("m-xxl-5");
714				$("#navbar_main").removeClass("rounded-5");
715			}
716            
717            
718			
719 		} else {
720			
721			if($(document).scrollTop() > 5) {
722				$("body").addClass("scrolled");
723				$("body.page .mobile-logo").fadeOut();		
724			} else {
725				$("body").removeClass("scrolled");
726				$("body.page .mobile-logo").fadeIn();
727			}
728			
729			if($(document).scrollTop() > 50) {
730				$("body.home .mobile-header").addClass('bg-white');				
731			} else {
732				$("body.home .mobile-header").removeClass('bg-white');				
733			}
734
735            
736            
737		}
738        
739        
740        
741	}); 
742</script>
742    
743    
744    <section class="section-content">
745		
746    <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_1828" class="" style=""><div id="editorID_1828" data-label="Intro" data-encoded="4d7a6b304d7a67774f545535514835415957526b615852706232356862463970626e42316445422b514445774e544d794d7a45304e6a6441666b41784f444934" class="" ><div class="container pt-5 pt-md-0 mt-5 mt-md-0">
747<div class="row">
748<div class="col-lg-10 offset-lg-1">
749<div class="p-3 p-lg-5 fade_in">
750<!-- load_objects --><div class="container"><div class="row g-0 justify-content-center"><div style="" class="object_parent load_objects BOX "><div id="objectID_1829" class="cms-non-editable" style=""><div id="editorID_1829" data-label="Intro Text" data-encoded="4d54557a4d7a59314e7a59304e55422b5147466b5a476c3061573975595778666157357764585241666b41784e7a6b794d7a677a4f544d31514835414d5467794f513d3d" class="" ><h5 style="text-align: center;">Welcome to the News &amp; Events section of Portim&atilde;o Surf Clube!</h5>
751<h1 style="text-align: center;"><strong>PTMSC</strong><br />News &amp; Events</h1>
752<p style="text-align: justify;">Here you&rsquo;ll find everything that&rsquo;s happening in and around the club &mdash; from competition results and training updates, to community activities, special events and important announcements. Stay connected with the surf, the athletes and the spirit of our club!</p></div></div></div></div></div>
753</div>
754</div>
755</div>
756</div></div></div></div><div class="object_parent wireframe "><div id="objectID_1831" class="" style=""><div id="editorID_1831" data-label="Content 1" data-encoded="4f4467794d544d784d7a5977514835415957526b615852706232356862463970626e42316445422b5144457a4d44517a4d7a41784d6a6841666b41784f444d78" class="" ><div class="row g-0">
757<div class="col-lg-12">
758<div class="p-3 p-lg-5 Xfade_in">
759<div class="articles row row-cols-1 row-cols-sm-2 row-cols-md-3 g-5" data-masonry='{"percentPosition": true }'><div class="fade_in_top col published"><div class="card rounded-5 h-100 border-0 shadow-sm ">
760					  <a href="https://www.portimaosurfclube.pt/news-and-events/national-club-championship-2026.htm"><img class="card-img-top rounded-top-5" src="https://www.portimaosurfclube.pt/_files/article/32/98-snapinsta-to_670442822_18583310251048370_4239956382848000740_n.jpg" alt="National Club Championship 2026"></a>
761					  <div class="card-body p-lg-4 bg-dirty rounded-bottom-5">
762						<h3 style="font-size: 33px; text-transform: none;"><a style="text-decoration:none;" href="https://www.portimaosurfclube.pt/news-and-events/national-club-championship-2026.htm">National Club Championship 2026</a></h3>
763						<p class="card-text">A Huge Thank You to Our Athletes</p>
764					  </div>
765					</div></div><div class="fade_in_top col published"><div class="card rounded-5 h-100 border-0 shadow-sm ">
766					  <a href="https://www.portimaosurfclube.pt/news-and-events/circuito-nacional-de-bodyboard-esperan-as-3-etapa-forma-o-e-competi-o.htm"><img class="card-img-top rounded-top-5" src="https://www.portimaosurfclube.pt/_files/article/15/33-589109165_18542064451005336_463134215024475136_n.jpg" alt="Circuito Nacional de Bodyboard Esperanças - 3.ª Etapa Formação e Competição"></a>
767					  <div class="card-body p-lg-4 bg-dirty rounded-bottom-5">
768						<h3 style="font-size: 33px; text-transform: none;"><a style="text-decoration:none;" href="https://www.portimaosurfclube.pt/news-and-events/circuito-nacional-de-bodyboard-esperan-as-3-etapa-forma-o-e-competi-o.htm">Circuito Nacional de Bodyboard Esperanças - 3.ª Etapa Formação e Competição</a></h3>
769						<p class="card-text">The country’s best young athletes will compete in multiple categories</p>
770					  </div>
771					</div></div><div class="fade_in_top col published"><div class="card rounded-5 h-100 border-0 shadow-sm ">
772					  <a href="https://www.portimaosurfclube.pt/news-and-events/iii-feira-do-mar.htm"><img class="card-img-top rounded-top-5" src="https://www.portimaosurfclube.pt/_files/article/14/32-cartaz_feiradomar2025.jpg" alt="III Feira do Mar"></a>
773					  <div class="card-body p-lg-4 bg-dirty rounded-bottom-5">
774						<h3 style="font-size: 33px; text-transform: none;"><a style="text-decoration:none;" href="https://www.portimaosurfclube.pt/news-and-events/iii-feira-do-mar.htm">III Feira do Mar</a></h3>
775						<p class="card-text">Enjoy music, animation and a relaxed atmosphere, typical of this celebration near the sea</p>
776					  </div>
777					</div></div><div class="fade_in_top col published"><div class="card rounded-5 h-100 border-0 shadow-sm ">
778					  <a href="https://www.portimaosurfclube.pt/news-and-events/vau-challenge-2021.htm"><img class="card-img-top rounded-top-5" src="https://www.portimaosurfclube.pt/_files/article/13/30-new_vauchallengeaction2.jpg" alt="Vau Challenge 2021"></a>
779					  <div class="card-body p-lg-4 bg-dirty rounded-bottom-5">
780						<h3 style="font-size: 33px; text-transform: none;"><a style="text-decoration:none;" href="https://www.portimaosurfclube.pt/news-and-events/vau-challenge-2021.htm">Vau Challenge 2021</a></h3>
781						<p class="card-text">The Vau Challenge took place this weekend at Praia do Vau, located in Portimão.</p>
782					  </div>
783					</div></div><div class="fade_in_top col published"><div class="card rounded-5 h-100 border-0 shadow-sm ">
784					  <a href="https://www.portimaosurfclube.pt/news-and-events/portim-o-surf-club-10th-anniversary-gala-dinner.htm"><img class="card-img-top rounded-top-5" src="https://www.portimaosurfclube.pt/_files/article/17/35-jantar.jpg" alt="Portimão Surf Club 10th Anniversary Gala Dinner!"></a>
785					  <div class="card-body p-lg-4 bg-dirty rounded-bottom-5">
786						<h3 style="font-size: 33px; text-transform: none;"><a style="text-decoration:none;" href="https://www.portimaosurfclube.pt/news-and-events/portim-o-surf-club-10th-anniversary-gala-dinner.htm">Portimão Surf Club 10th Anniversary Gala Dinner!</a></h3>
787						<p class="card-text">PTMSC 10th Anniversary - Aladino Hall of the Hotel Algarve Casino, in Praia da Rocha</p>
788					  </div>
789					</div></div><div class="fade_in_top col published"><div class="card rounded-5 h-100 border-0 shadow-sm ">
790					  <a href="https://www.portimaosurfclube.pt/news-and-events/portim-o-surf-fest.htm"><img class="card-img-top rounded-top-5" src="https://www.portimaosurfclube.pt/_files/article/16/34-ptm-surf-fest.jpg" alt="PORTIMÃO SURF FEST"></a>
791					  <div class="card-body p-lg-4 bg-dirty rounded-bottom-5">
792						<h3 style="font-size: 33px; text-transform: none;"><a style="text-decoration:none;" href="https://www.portimaosurfclube.pt/news-and-events/portim-o-surf-fest.htm">PORTIMÃO SURF FEST</a></h3>
793						<p class="card-text">Surfing, Art, Music and two high competition events</p>
794					  </div>
795					</div></div><div class="fade_in_top col published"><div class="card rounded-5 h-100 border-0 shadow-sm ">
796					  <a href="https://www.portimaosurfclube.pt/news-and-events/game-of-skateboarding-on-miniramp.htm"><img class="card-img-top rounded-top-5" src="https://www.portimaosurfclube.pt/_files/article/20/40-poster-miniramp25.jpg" alt="GAME OF SKATEBOARDING ON MINIRAMP"></a>
797					  <div class="card-body p-lg-4 bg-dirty rounded-bottom-5">
798						<h3 style="font-size: 33px; text-transform: none;"><a style="text-decoration:none;" href="https://www.portimaosurfclube.pt/news-and-events/game-of-skateboarding-on-miniramp.htm">GAME OF SKATEBOARDING ON MINIRAMP</a></h3>
799						<p class="card-text">The miniramp of the Ribeirinha Zone of Portimão</p>
800					  </div>
801					</div></div><div class="fade_in_top col published"><div class="card rounded-5 h-100 border-0 shadow-sm ">
802					  <a href="https://www.portimaosurfclube.pt/news-and-events/praia-da-rocha-receives-the-malta-championship-at-the-end-of-the-year.htm"><img class="card-img-top rounded-top-5" src="https://www.portimaosurfclube.pt/_files/article/19/38-cadamal.jpg" alt="Campeonato da Malta"></a>
803					  <div class="card-body p-lg-4 bg-dirty rounded-bottom-5">
804						<h3 style="font-size: 33px; text-transform: none;"><a style="text-decoration:none;" href="https://www.portimaosurfclube.pt/news-and-events/praia-da-rocha-receives-the-malta-championship-at-the-end-of-the-year.htm">Campeonato da Malta</a></h3>
805						<p class="card-text">Praia da Rocha receives the Malta Championship at the end of the year</p>
806					  </div>
807					</div></div><div class="fade_in_top col published"><div class="card rounded-5 h-100 border-0 shadow-sm ">
808					  <a href="https://www.portimaosurfclube.pt/news-and-events/test-article.htm"><img class="card-img-top rounded-top-5" src="https://www.portimaosurfclube.pt/_files/article/11/28-dedicated-skate-logo.jpg" alt="Nucleo Skate Portimão"></a>
809					  <div class="card-body p-lg-4 bg-dirty rounded-bottom-5">
810						<h3 style="font-size: 33px; text-transform: none;"><a style="text-decoration:none;" href="https://www.portimaosurfclube.pt/news-and-events/test-article.htm">Nucleo Skate Portimão</a></h3>
811						<p class="card-text">Developing Skate in Town - Totally dedicated skate community.</p>
812					  </div>
813					</div></div><div class="fade_in_top col published"><div class="card rounded-5 h-100 border-0 shadow-sm ">
814					  <a href="https://www.portimaosurfclube.pt/news-and-events/another-test-article.htm"><img class="card-img-top rounded-top-5" src="https://www.portimaosurfclube.pt/_files/article/12/29-new_vauchallenge2018.jpg" alt="Vau Challenge 2018"></a>
815					  <div class="card-body p-lg-4 bg-dirty rounded-bottom-5">
816						<h3 style="font-size: 33px; text-transform: none;"><a style="text-decoration:none;" href="https://www.portimaosurfclube.pt/news-and-events/another-test-article.htm">Vau Challenge 2018</a></h3>
817						<p class="card-text">The 5thª edition of the Vau Challenge took place this weekend at Praia do Vau, located in Portimão.</p>
818					  </div>
819					</div></div><div class="fade_in_top col published"><div class="card rounded-5 h-100 border-0 shadow-sm ">
820					  <a href="https://www.portimaosurfclube.pt/news-and-events/this-is-a-new-edition-of-women-surfing-day.htm"><img class="card-img-top rounded-top-5" src="https://www.portimaosurfclube.pt/_files/article/18/36-c6e73cdb-32fd-463f-8916-572defcc0e90-1024x1439.jpg" alt="This is a new edition of Women Surfing Day"></a>
821					  <div class="card-body p-lg-4 bg-dirty rounded-bottom-5">
822						<h3 style="font-size: 33px; text-transform: none;"><a style="text-decoration:none;" href="https://www.portimaosurfclube.pt/news-and-events/this-is-a-new-edition-of-women-surfing-day.htm">This is a new edition of Women Surfing Day</a></h3>
823						<p class="card-text">The Portimão Surf Clube will celebrate International Women’s Day</p>
824					  </div>
825					</div></div></div>
826		<style>
827		XXX.card-title {
828		  min-height: 3rem;
829		}
830		XXX.card-img-top {
831		  object-fit: cover;
832		  height: 200px;
833		}
834		.published {}
835		.unpublished {padding-bottom: 10px;box-shadow: 0px 0px 10px #FCDBDB; margin-bottom: 10px;}
836		.unpublished:before {content:"Draft"; color: red; font-size:14px; display:block; text-align:left; background: #FCDBDB; padding: 10px; }
837		.card {break-inside: avoid;}
838		</style>
839		
839<script src="https://cdn.jsdelivr.net/npm/masonry-layout@4/dist/masonry.pkgd.min.js"></script>
839
840		
840<script src="https://unpkg.com/imagesloaded@4/imagesloaded.pkgd.min.js"></script>
840
841		
841<script>
842		  imagesLoaded( document.querySelector(".articles"), function() {
843			new Masonry(".articles", { percentPosition: true });
844		  });
845		</script>
845
846		<!-- module data -->
847</div>
848</div>
849</div></div></div></div></div></div>
850    </section>
851    	
852<footer class="pt-5">
853
854<div class="container-fluid">
855	<div class="row">
856		<div class="col-12">
857    <style>
858	
859	.item-59 img {height: 46px !important;}
860	
861	.logo-scroller {
862	  overflow: hidden;
863	  width: 100%;
864	}
865
866	.logo-track {
867	  display: flex;
868	  align-items: center;
869	  flex-wrap: nowrap;
870	  width: max-content;
871	  animation: scroll 30s linear infinite;
872	}
873
874	.logo-item {
875	  flex: 0 0 auto;
876	  display: flex;
877	  align-items: center;
878	  justify-content: center;
879	  padding: 0 1.5rem;
880	}
881
882	/* Base logo size (desktop) */
883	.logo-item img {
884	  height: 150px;
885	  width: auto;
886	  object-fit: contain;
887	}
888
889	/* Tablet */
890	@media (max-width: 991px) {
891	  .logo-item img {
892		height: 55px;
893	  }
894	}
895
896	/* Mobile – max 2 logos visible */
897	@media (max-width: 575px) {
898	  .logo-item {
899		padding: 0 1rem;
900	  }
901
902	  .logo-item img {
903		height: 40px;
904	  }
905	}
906
907	/* Extra small – effectively 1 logo */
908	@media (max-width: 400px) {
909	  .logo-item {
910		padding: 0 0.75rem;
911	  }
912
913	  .logo-item img {
914		height: 200px;
915	  }
916	}
917
918	@keyframes scroll {
919	  0%   { transform: translateX(0); }
920	  100% { transform: translateX(-50%); }
921	}
922
923	/* Accessibility */
924	@media (prefers-reduced-motion: reduce) {
925	  .logo-track {
926		animation: none;
927	  }
928	}
929
930	@media (hover: hover) {
931	  .logo-scroller:hover .logo-track {
932		animation-play-state: paused;
933	  }
934	}
935
936	@media (max-width: 575px) {
937	  .logo-track {
938		animation-duration: 45s;
939	  }
940	}
941
942	</style>
943
944
945	<!-- Seamless Infinite Logo Slider -->
946	<div class="logo-scroller">
947		<div class="logo-track">
948		<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>
949		</div>
950	</div>
951
952</div>
953	</div>
954</div>
955<hr />
956<div class="container">
957
958	<div class="row">
959        
960        <div class="col-xl-6">
961        
962            <div class="row">
963                <div class="col-md">
964                    <div class="p-5 p-md-1 pt-3">
965                        <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>
966                    </div>
967                </div>
968
969                <div class="col-12 col-md">
970                    <div class="p-3 text-center mb-5">
971                        <p><strong>
971PARTNERSHIP</strong><br><em>EM PARCERIA</em></p>
972                        <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>               
973                    </div>
974                </div>
975
976                <div class="col-12 col-md">
977                    <div class="text-center">
978                        <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>
979                    </div>
980                </div>
981
982            </div>
983            
984            <div class="ps-5 pe-5 ps-md-0 pe-md-0">
985            <div class="row g-0">
986                <div class="col-12 col-md">
987                <div class="p-3">
988                    <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>
989                </div>
990                </div>
991                <div class="col-12 col-md">
992                <div class="p-3">
993                    <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>
994                </div>
995                </div>
996                <div class="col-12 col-md">
997                <div class="p-3 d-none">
998                    <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>
999                </div>
1000                </div>
1001            </div>
1002            </div>
1003            
1004		</div>
1005        
1006        <div class="col-xl-6">
1007        
1008            <div class="row">
1009
1010                <div class="col-md">
1011                    <div class="pt-3 text-center text-md-start ps-md-5 mb-5">
1012                        <h5><strong>Information</strong><br><em>Informação</em></h5>
1013                        <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>
1014                    </div>
1015                </div>
1016
1017                <div class="col-md">
1018                    <div class="pt-3 text-center text-md-start">
1019                        <h5><strong>CONTACTS</strong><br><em>CONTACTOS</em></h5>
1020                        <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>
1021                        <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>
1022                        <!--<p>&#xF8FF;
1022 <a href="imessage:[email protected]">[email protected]</a></p>-->
1023                        <p><i class="fa fa-envelope me-1"></i><a href="/cdn-cgi/l/email-protection#eb82858d84ab9b84999f82868a84989e998d88879e898ec59b9f"><span class="__cf_email__" data-cfemail="e28b8c848da2928d90968b8f838d91979084818e978087cc9296">[email&#160;protected]</span></a></p>
1024                        <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>
1025                        <p>
1026                            <a href="https://wa.me/15558734337?text=" target="_blank" class="m-2" title="WhatsApp"><i class="fab fa-whatsapp fa-3x"></i></a>
1027                            <!--<a href="https://wa.me/351966559739?text=" target="_blank" class="m-2" title="WhatsApp"><i class="fab fa-whatsapp fa-3x"></i></a>-->
1028                            <a href="https://www.instagram.com/portimaosurfclube/" target="_blank" class="m-2" title="Instagram"><i class="fab fa-instagram fa-3x"></i></a>
1029                            <a href="https://www.facebook.com/portimaosurfclube/" target="_blank" class="m-2" title="Facebook"><i class="fab fa-facebook fa-3x"></i></a>
1030                            <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>
1031                        </p>
1032                    </div>
1033                </div>
1034
1035            </div>
1036            
1037		</div>
1038        
1039        
1040	</div>
1041</div>
1042<hr>
1043<div class="container p-md-5">
1044	<div class="row g-0">
1045		<div class="col-md-3 text-center text-md-start pb-5">
1046			<p>&copy; 2026 PTMSC<br>Portim&atilde;o Surf Clube</p>		
1047		</div>
1048		<div class="col-md-6 text-center pb-5">
1049			<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>
1050			<p>RNAAT 158 / 2021</p>		
1051		</div>
1052		<div class="col-md-3 pb-5 text-center text-md-end">
1053			<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>
1054		</div>
1055	</div>
1056	<hr>
1057	<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>
1058</div>
1059</footer>
1060
1061    <link  rel="stylesheet" href="https://www.portimaosurfclube.pt/_chatbot/chatbot.css?1791450648">
vendor: 113 bytes, lines 1061-1062
1061
1062    <script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>
1062<script src="https://www.portimaosurfclube.pt/_chatbot/chatbot.js?1791450648"></script>
1062    
1063    
1064<!-- WhatsApp Widget -->
1065<div id="whatsapp-chat-widget">
1066  <div class="whatsapp-button" onclick="toggleWhatsAppChat()">
1067    <i class="fab fa-whatsapp"></i>
1068  </div>
1069
1070  <div class="whatsapp-chat-box" id="whatsapp-chat-box">
1071    <div class="chat-header">
1072      <img src="https://www.portimaosurfclube.pt/_design/PTMSC_rgb.svg" class="agent" alt="Agent">
1073      <div>
1074        <strong>Portimao Surf Clube</strong><br>
1075        <span>Typically replies in a few minutes</span>
1076      </div>
1077      <div class="close-chat" onclick="toggleWhatsAppChat()">×</div>
1078    </div>
1079
1080    <div class="chat-body">
1081      <p>Hello 👋<br>How can we help you today?</p>
1082    </div>
1083
1084    <div class="chat-footer">
1085      <input type="text" id="whatsapp-msg" placeholder="Type your message..." />
1086      <button onclick="sendWhatsAppMessage()">Send</button>
1087    </div>
1088  </div>
1089</div>
1090<style>
1091
1092#whatsapp-chat-widget {
1093  position: fixed;
1094  bottom: 23px;
1095  right: 100px;
1096  font-family: stevie-sans, sans-serif;
1097  z-index: 10000;
1098}
1099
1100.agent {
1101	background: #fff; border-radius: 50%; padding: 5px;
1102}
1103
1104.whatsapp-button {
1105  display: block;
1106  color: #fff; 
1107  background: #EF4529; 
1108  border-radius: 10px;
1109  width: 60px;
1110  height: 60px;
1111  line-height: 60px;
1112  font-size:40px;
1113  text-align: center; 
1114}
1115
1116.whatsapp-chat-box {
1117  display: none;
1118  width: 300px;
1119  background: white;
1120  border-radius: 10px;
1121  box-shadow: 0 8px 20px rgba(0, 0, 0, 0.2) !important;
1122  overflow: hidden;
1123  flex-direction: column;
1124  animation: slideUp 0.3s ease;
1125}
1126
1127.chat-header {
1128  display: flex;
1129  align-items: center;
1130  gap: 10px;
1131  background: #EF4529;
1132  color: white;
1133  padding: 10px;
1134  position: relative;
1135}
1136
1137.chat-header img {
1138  width: 40px;
1139  height: 40px;
1140  border-radius: 10px;
1141}
1142
1143.close-chat {
1144  position: absolute;
1145  right: 10px;
1146  top: 10px;
1147  cursor: pointer;
1148  font-size: 20px;
1149}
1150
1151.chat-body {
1152  padding: 15px;
1153  background: #f0f0f0;
1154  font-size: 16px;
1155  color: #333;
1156}
1157
1158.chat-footer {
1159  display: flex;
1160  border-top: 1px solid #ddd;
1161  padding: 10px;
1162  background: white;
1163}
1164
1165.chat-footer input {
1166  flex: 1;
1167  border: none;
1168  padding: 8px;
1169  font-size: 14px;
1170  border: 1px solid #ccc;
1171  border-radius: 4px;
1172}
1173
1174.chat-footer button {
1175  margin-left: 8px;
1176  background: #EF4529;
1177  color: white;
1178  border: none;
1179  padding: 8px 12px;
1180  border-radius: 4px;
1181  cursor: pointer;
1182}
1183
1184@media (max-width: 480px) {
1185    #whatsapp-chat-widget {
1186      bottom: 15px;
1187    }
1188  .whatsapp-chat-box {
1189    width: 100% !important;
1190    bottom: 0;
1191    right: 0;
1192    left: 0;
1193    flex-direction: column;
1194  }
1195
1196  .chat-header, .chat-body, .chat-footer {
1197    padding: 15px;
1198  }
1199
1200  .whatsapp-button {
1201    bottom: 20px;
1202    right: 20px;
1203  }
1204  
1205	.chat-footer input {
1206	  flex: 1;
1207	  border: none;
1208	  padding: 8px;
1209	  font-size: 16px; 
1210	  border: 1px solid #ccc;
1211	  border-radius: 4px;
1212	}  
1213	
1214}
1215
1216
1217@keyframes slideUp {
1218  from {
1219    transform: translateY(100px);
1220    opacity: 0;
1221  }
1222  to {
1223    transform: translateY(0);
1224    opacity: 1;
1225  }
1226}
1227</style>
1228<script>
1229  function toggleWhatsAppChat() {
1230    const box = document.getElementById("whatsapp-chat-box");
1231    const button = document.querySelector(".whatsapp-button");
1232
1233    const isOpen = box.style.display === "flex";
1234
1235    if (isOpen) {
1236      box.style.display = "none";
1237      button.style.display = "block";
1238    } else {
1239      box.style.display = "flex";
1240      button.style.display = "none";
1241    }
1242  }
1243
1244  function sendWhatsAppMessage() {
1245    const phone = "351966559739"; // Replace with your WhatsApp number
1246    const message = document.getElementById("whatsapp-msg").value.trim();
1247    if (message) {
1248      const encodedMsg = encodeURIComponent(message);
1249      const url = `https://wa.me/${phone}?text=${encodedMsg}`;
1250      window.open(url, "_blank");
1251    }
1252  }
1253</script>
vendor: 1 bytes, line 1253
1253
1254<script type="text/javascript" charset="UTF-8" src="//cdn.cookie-script.com/s/3569319e2ca2a3c0fef84ec85ae628d6.js"></script>
1254<!-- FareHarbor Lightframe API - do not remove - see: https://fareharbor.com/help/website/resources/lightframe-api/ --> 
1254<script src="https://fareharbor.com/embeds/api/v1/?autolightframe=yes" async></script>
1254 
1255            
1255<script>
1256        /* -------------------------------------------------
1257           CONFIGURATION – put your own code inside these
1258           functions. They will be called exactly once per
1259           modal open/close.
1260           ------------------------------------------------- */
1261        function onBeforeModalOpen($link) {
1262            // ------------------------------------------------------------------
1263            // Example: show a spinner, log an analytics event, pause a video…
1264            // ------------------------------------------------------------------
1265            //alert('User clicked the FareHarbor link – preparing modal...');
1266            $('.book_now').html('Please wait<span style="font-size:8px; letter-spacing: 0.5px; font-weight:300; display:block;">FAREHARBOR is opening</span>');
1267
1268            setTimeout(function() {
1269                $('.book_now').html('BOOK NOW<span style="font-size:8px; letter-spacing: 0.5px; font-weight:300; display:block;">without Membership</span>');
1270            }, 2000);
1271
1272
1273            // Example: pause a background video
1274            const video = document.getElementById('heroVideo');
1275            if (video) video.pause();
1276
1277            // Example: add a CSS class that shows a spinner overlay
1278            $link.addClass('loading');          // you can style .loading in CSS
1279        }
1280
1281        function onModalOpened() {
1282            // ------------------------------------------------------------------
1283            // This runs **after** the Lightframe reports that the modal is visible
1284            // ------------------------------------------------------------------
1285            //alert('FareHarbor modal is now open – run post‑open actions');	
1286            // Remove the spinner / loading indicator
1287            $('.book_now').removeClass('loading');
1288
1289            // Example: send an analytics event
1290            if (window.ga) ga('send', 'event', 'FareHarbor', 'modal_open');
1291        }
1292
1293        function onModalClosed() {
1294            // ------------------------------------------------------------------
1295            // Runs when the user dismisses the modal
1296            // ------------------------------------------------------------------
1297            //alert('FareHarbor modal closed');
1298            // Example: resume the background video
1299            const video = document.getElementById('heroVideo');
1300            if (video) video.play();
1301        }
1302
1303        /* -------------------------------------------------
1304           3️⃣  Intercept the click (or pointerdown) on the link
1305           ------------------------------------------------- */
1306        $(document).on('pointerdown', '.fh-trigger', function (e) {
1307            const $link = $(this);
1308
1309            // Run any pre‑open logic you need
1310            onBeforeModalOpen($link);
1311
1312            // Prevent the default navigation for a split‑second.
1313            // We’ll re‑trigger the click after a tiny timeout so the UI
1314            // can repaint (spinner, video pause, etc.).
1315            e.preventDefault();
1316
1317            // Small delay – 120 ms is usually enough for the UI change.
1318            // Adjust if you need a longer “please wait” visual.
1319            setTimeout(() => {
1320                // Dispatch a synthetic click that the Lightframe script will catch.
1321                const clickEvt = new MouseEvent('click', {
1322                    view: window,
1323                    bubbles: true,
1324                    cancelable: true
1325                });
1326                $link[0].dispatchEvent(clickEvt);
1327            }, 120);
1328        });
1329
1330        /* -------------------------------------------------
1331           4️⃣  Listen for messages from the Lightframe (postMessage)
1332           ------------------------------------------------- */
1333        window.addEventListener('message', function (evt) {
1334            // SECURITY: only accept messages from the genuine FareHarbor domain
1335            if (evt.origin !== 'https://fareharbor.com') return;
1336
1337            const data = evt.data;
1338            if (!data || typeof data.type !== 'string') return;
1339
1340            // The Lightframe sends these two message types (per their docs)
1341            if (data.type === 'lightframeOpened') {
1342                onModalOpened();
1343            } else if (data.type === 'lightframeClosed') {
1344                onModalClosed();
1345            }
1346        });
1347
1348        /* -------------------------------------------------
1349           5️⃣  (Optional) Fallback – if FareHarbor creates the
1350                global object, we can also hook into it.
1351           ------------------------------------------------- */
1352        if (window.FareHarborLightframe) {
1353            // Overwrite the callbacks – they will be called in addition
1354            // to the postMessage events, so you won’t miss anything.
1355            window.FareHarborLightframe.onOpen = function () {
1356                onModalOpened();
1357            };
1358            window.FareHarborLightframe.onClose = function () {
1359                onModalClosed();
1360            };
1361        }
1362        </script>
1362	
1363     	    
1364<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 1364
1364
1365<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:'a47403b50caed7f1',t:'MTc5MTQ1MDY0Nw=='};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>
1365</body>
1366</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.