1 2<!DOCTYPE html> 3<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=9" /><meta content="Ametys CMS Open source (http://www.ametys.org)" name="generator" /><link href="/skins/uttop/resources/img/favicon.ico" rel="shortcut icon" /><link href="/skins/uttop/resources/img/favicon.gif" type="image/gif" rel="icon" /><meta content="IE=9" http-equiv="X-UA-Compatible" /><title>Coming to ENIT - UTTOP</title><meta charset="utf-8" /><meta content="width=device-width, initial-scale=1.0" name="viewport" /><meta content="Ametys CMS (http://www.ametys.org)" name="author" /><meta content="Ametys CMS (http://www.ametys.org)" name="generator" /><meta content="Ametys v4" name="copyright" /><meta content="en" name="language" /><meta content="15 days" name="revisit-after" /><meta content="UTTOP in figures" name="DC.title" /><meta content="2026-08-19" name="DC.date" /><meta content="Text" name="DC.type" /><meta content="text/html" name="DC.format" /><meta content="defaultWebContent://9e7bb6b7-78ba-4dc5-b4e2-e37f9c454960" name="DC.identifier" /><meta content="en" name="DC.language" /><meta content="en" name="DC.coverage" /><meta content="Welcome to UTTOP" name="DC.title" /><meta content="2026-09-08" name="DC.date" /><meta content="Text" name="DC.type" /><meta content="text/html" name="DC.format" /><meta content="defaultWebContent://5373c37c-c158-484f-a2f3-9d8b9baf5878" name="DC.identifier" /><meta content="en" name="DC.language" /><meta content="en" name="DC.coverage" /><meta content="International events" name="DC.title" /><meta content="2026-08-19" name="DC.date" /><meta content="Text" name="DC.type" /><meta content="text/html" name="DC.format" /><meta content="defaultWebContent://c568c1d4-3fbf-4926-a355-77002b7e9512" name="DC.identifier" /><meta content="en" name="DC.language" /><meta content="en" name="DC.coverage" /><meta content="ENIT" name="DC.contributor" /><!----><!--[if lt IE 9]><link rel="stylesheet" href="/skins/uttop/resources/css/ie.css" type="text/css" media="all" /><![endif]--><!--[if IE 9]><link rel="stylesheet" href="/skins/uttop/resources/css/ie9.css/" type="text/css" media="all" /><![endif]--><link href="/_plugins/web/uttop/en/filter/events/rss.xml" title="News RSS feed for site Ametys, CMS Java Open Source" type="application/rss+xml" rel="alternate" /><link href="/_plugins/web/uttop/en/filter/org.ametys.web.article.RSS/rss.xml" title="Articles RSS feed for site Ametys, CMS Java Open Source" type="application/rss+xml" rel="alternate" /><noscript><div><img alt="" style="border:0" src="https://telemetrie.uttop.fr/piwik.php?idsite=4&rec=1" /></div></noscript><link href="/plugins/cms/dublincore/content.rdf?contentId=defaultWebContent://9e7bb6b7-78ba-4dc5-b4e2-e37f9c454960" rel="meta" /><link href="/plugins/cms/dublincore/content.rdf?contentId=defaultWebContent://5373c37c-c158-484f-a2f3-9d8b9baf5878" rel="meta" /><link href="/plugins/cms/dublincore/content.rdf?contentId=defaultWebContent://c568c1d4-3fbf-4926-a355-77002b7e9512" rel="meta" /><link href="/" title="See the RSS feed for these contents" type="application/rss+xml" rel="alternate" /><link href="/plugins/cms/dublincore/content.rdf?contentId=defaultWebContent://ee2c0486-60be-43a1-861a-7da599783d9d" rel="meta" /><link media="screen" data-donotminimize="true" type="text/css" href="/skins/uttop/resources/css/jquery/jquery-ui-1.9.1.css" rel="stylesheet" /><link type="text/css" rel="stylesheet" href="/_plugins/web/resources-minimized/MjAwMjg1MzAwOQ.css" media="screen" /><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:400,600,700" /><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Lato:700,400" /><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto+Slab:400,700,300,100" /><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Pacifico" /><link type="text/css" rel="stylesheet" href="/_plugins/web/resources-minimized/LTg0MDQxNjExMw.css" /><link data-donotminimize="true" media="all" type="text/css" href="/skins/uttop/resources/css/custom.css" rel="stylesheet" /><link type="text/css" rel="stylesheet" href="/_plugins/web/resources-minimized/MTI5NzUyMTE3Ng.css" media="print" /><link type="text/css" rel="stylesheet" href="/_plugins/web/resources-minimized/LTE1NjkwODkyMTU.css" /><link type="text/css" rel="stylesheet" href="/_plugins/web/resources-minimized/LTEzNDk1Mzc1MzE.css" media="print,handheld,screen" />
3<script type="text/javascript" src="/_plugins/web/resources-minimized/LTk2NDU1MzQzOQ.js"></script>
3<script type="text/javascript"><!-- 4 5 $ = $j = jQuery.noConflict(); 6 7// --></script>
7<script type="text/javascript" src="/_plugins/web/resources-minimized/MTI1MjY1OTk3Ng.js"></script>
7<script type="text/javascript"><!-- 8 9 $j(document).ready(function() { 10 $j().piroBox_ext({ 11 piro_speed: 600, 12 bg_alpha: 0.5, 13 piro_scroll: true, 14 prev_label: 'Previous', 15 next_label: 'Next', 16 close_label: 'Close' 17 }); 18 }); 19 20// --></script>
20<script type="text/javascript" src="/_plugins/web/resources-minimized/Mjc0OTExNzI5.js"></script>
20<script type="text/javascript"><!-- 21 22 mejs.i18n.language('en'); 23 24// --></script>
24<script type="text/javascript"><!-- 25 26 ametysUser = null; 27 28 var _ametysUserCallbacks = []; 29 var _ametysUserRunning = false; 30 31 var _fillUserInputs = function(id, field, callback) 32 { 33 if (this[field]) 34 { 35 var input = document.getElementById(id); 36 if (!input.value) 37 { 38 input.value = this[field]; 39 if (typeof callback == "function") 40 { 41 callback(id, input, this[field]); 42 } 43 } 44 } 45 } 46 47 48 49 function getAmetysUser(callback) 50 { 51 if (ametysUser && typeof(callback) == "function") 52 { 53 callback(ametysUser); 54 } 55 else 56 { 57 if (typeof(callback) == "function") 58 { 59 _ametysUserCallbacks.push(callback); 60 } 61 62 if (!_ametysUserRunning) 63 { 64 _ametysUserRunning = true; 65 66 $j.ajax({ 67 url: "/_plugins/cms/current-user", 68 dataType: "json", 69 error: function(result, status, error) { 70 console.log(error); 71 ametysUser = null; 72 _ametysUserRunning = false; 73 }, 74 success: function(user) { 75 ametysUser = user; 76 77 if (ametysUser) 78 { 79 ametysUser.fill = _fillUserInputs; 80 } 81 82 for (var i=0; i < _ametysUserCallbacks.length; i++) 83 { 84 try 85 { 86 _ametysUserCallbacks[i](ametysUser); 87 } 88 catch(e) 89 { 90 console.error("Failed to invoked callback function " + _ametysUserCallbacks[i].name + ":", e); 91 } 92 } 93 94 _ametysUserRunning = false; 95 } 96 }); 97 } 98 } 99 } 100 101// --></script>
101<script type="text/javascript"><!-- 102 103 ametysCookieConsentListener = []; 104 105 106 function ametysCallCookieConsentListener(accept) 107 { 108 for (var i = 0; i < ametysCookieConsentListener.length; i++) 109 { 110 ametysCookieConsentListener[i].apply(window, [accept]); 111 } 112 } 113 114 115 var ametysCookieExpireDay = 390; 116 117 function ametysRefuseCookieConsent() 118 { 119 $j.cookie('ametysHasConsent', false, {expires: ametysCookieExpireDay, path: '' || '/'}); 120 121 ametysCallCookieConsentListener(false); 122 ametysHideInformCookieConsent(); 123 } 124 125 function ametysAcceptCookieConsent() 126 { 127 $j.cookie('ametysHasConsent', true, {expires: ametysCookieExpireDay, path: '' || '/'}); 128 129 130 ametysHideInformCookieConsent(); 131 } 132 133 function ametysHideInformCookieConsent() 134 { 135 $j("#cookie-banner").hide(); 136 } 137 138 139// --></script>
139<script type="text/javascript" src="/_plugins/web/resources-minimized/MTA5ODA3MDE2Mg.js"></script>
139<script type="text/javascript"><!-- 140 141 AmetysFront.CONTEXT_PATH = ''; 142 AmetysFront.ABSOLUTE_CONTEXT_PATH = 'https://www.uttop.fr'; 143 AmetysFront.URI_PREFIX = ''; 144 AmetysFront.ABSOLUTE_URI_PREFIX = 'https://www.uttop.fr'; 145 AmetysFront.MAX_UPLOAD_SIZE = 10485760 - 1000; // 1000 for request overhead 146 147 AmetysFront.setAppParameter('siteName', 'uttop'); 148 AmetysFront.setAppParameter('sitemapLanguage', 'en'); 149 AmetysFront.setAppParameter('locale', 'en'); 150 151// --></script>
151<script type="text/javascript"><!-- 152 153 var resourcesPath = "/skins/uttop/resources/"; 154 155// --></script>
155<script type="text/javascript" src="/_plugins/web/resources-minimized/NzI2NzU5NjI.js"></script>
155<script type="text/javascript"><!-- 156 157 _artStyleUrlCached = "https://www.uttop.fr/skins/uttop/resources/"; 158 contextPath = "https://www.uttop.fr"; 159 160// --></script>
160<script type="text/javascript" src="/_plugins/web/resources-minimized/LTIwNTQ2Njc5OQ.js"></script>
160<script type="text/javascript"><!-- 161 162 var _paq = _paq || []; 163 164 ametysCookieConsentListener.push(function(accept) { 165 if (accept) 166 { 167 _paq.push(["setDocumentTitle", document.domain + "/" + document.title]); 168 _paq.push(['setConsentGiven']); 169 (function() { 170 var u="https://telemetrie.uttop.fr/"; 171 _paq.push(["setTrackerUrl", u+"piwik.php"]); 172 173 var searchTracking = false; 174 175 var searchKeyword = ""; 176 if (searchKeyword != '') 177 { 178 // Internal search tracking on a search result page 179 _paq.push(["trackSiteSearch", searchKeyword, false, false]); 180 searchTracking = true; 181 } 182 183 184 if (!searchTracking) 185 { 186 _paq.push(["trackPageView"]); 187 } 188 189 _paq.push(["enableLinkTracking"]); 190 _paq.push(["setSiteId", "4"]); 191 var d=document, g=d.createElement("script"), s=d.getElementsByTagName("script")[0]; g.type="text/javascript"; 192 g.defer=true; g.async=true; g.src=u+"piwik.js"; s.parentNode.insertBefore(g,s); 193 })(); 194 } 195 else 196 { 197 _paq.push(['forgetConsentGiven']); 198 } 199 }); 200 201// --></script>
201</head><body class="kopa-home-parallax index"><div class="art-page-wai-links" id="art-page-wai-links"><a href="#content">Go to content</a><a href="#search">Go to search</a><a href="#menu">Go to menu</a></div><header class="kopa-page-header parallax" id="parallax-header"><div id="myHeader" class="kopa-header-bottom "><div class="wrapper clearfix"><div class="logo-box pull-left"><a href="/en/index.html"><img alt="UTTOP" src="/skins/uttop/resources/img/logo-UTTOP.png" /></a></div><div class="lang_links desktop"><ul><li class="lang-item fr"><a title="Voir la page en français" href="/fr/index.html">FR</a></li><li class="lang-item current"><a title="See this page in english" href="/en/index.html">EN</a></li></ul></div><nav class="main-nav pull-right"><ul class="main-menu clearfix"><li class="lang-links"><a href="#">Language</a><ul class="submenu"><li class="lang-item fr"><a title="Voir la page en français" href="/fr/index.html">FR</a></li><li class="lang-item current"><a title="See this page in english" href="/en/index.html">EN</a></li></ul></li><li class=""><a href="/en/uttop-1.html" class="sf-with-ul">UTTOP<span class=""><!--empty--></span></a><ul class="sub-menu"><li><a href="/en/uttop-1/uttop.html">UTTOP</a></li><li><a href="/en/uttop-1/creation-of-uttop.html">Creation of UTTOP</a></li><li><a href="/en/uttop-1/our-programs.html">Our programs</a></li><li><a href="/en/uttop-1/campus-life.html">Campus</a></li><li><a href="/en/uttop-1/go-to-uttop.html">Go to UTTOP </a></li></ul></li><li class=""><a href="/en/enit.html">ENIT<span class=""><!--empty--></span></a></li><li class=""><a href="/en/iut-of-tarbes.html">IUT of Tarbes <span class=""><!--empty--></span></a></li><li class=""><a href="/en/international.html" class="sf-with-ul">INTERNATIONAL<span class=""><!--empty--></span></a><ul class="sub-menu"><li><a href="/en/international/international-events.html">International events</a></li><li><a href="/en/international/call-for-project-proposals.html">Call for project proposals</a></li></ul></li><li class=""><a href="/en/research.html">Research<span class=""><!--empty--></span></a></li><li class=""><a href="/en/corporate-space.html">Corporate space<span class=""><!--empty--></span></a></li><li class="last"><a href="/en/location-information.html" class="sf-with-ul">Campus life<span class=""><!--empty--></span></a><ul class="sub-menu"><li><a href="/en/location-information/leisure-and-students-activities.html">Leisure and student activities</a></li><li><a href="/en/location-information/living-in-tarbes.html">Living in Tarbes</a></li></ul></li><li> | <a class="search-button" href="/en/moteur-de-recherche.html"><img alt="Search..." src="/skins/uttop/resources/img/search-icon.png" /></a></li></ul></nav><nav class="main-nav-mobile clearfix"><a class="pull"><span class="fa fa-align-justify"><!--empty--></span></a><ul class="main-menu-mobile clearfix"><li class="lang-links"><a href="#">Language</a><ul class="submenu"><li class="lang-item fr"><a title="Voir la page en français" href="/fr/index.html">FR</a></li><li class="lang-item current"><a title="See this page in english" href="/en/index.html">EN</a></li></ul></li><li class=""><a href="/en/uttop-1.html" class="sf-with-ul">UTTOP<span class=""><!--empty--></span></a><ul class="sub-menu"><li><a href="/en/uttop-1/uttop.html">UTTOP</a></li><li><a href="/en/uttop-1/creation-of-uttop.html">Creation of UTTOP</a></li><li><a href="/en/uttop-1/our-programs.html">Our programs</a></li><li><a href="/en/uttop-1/campus-life.html">Campus</a></li><li><a href="/en/uttop-1/go-to-uttop.html">Go to UTTOP </a></li></ul></li><li class=""><a href="/en/enit.html">ENIT<span class=""><!--empty--></span></a></li><li class=""><a href="/en/iut-of-tarbes.html">IUT of Tarbes <span class=""><!--empty--></span></a></li><li class=""><a href="/en/international.html" class="sf-with-ul">INTERNATIONAL<span class=""><!--empty--></span></a><ul class="sub-menu"><li><a href="/en/international/international-events.html">International events</a></li><li><a href="/en/international/call-for-project-proposals.html">Call for project proposals</a></li></ul></li><li class=""><a href="/en/research.html">Research<span class=""><!--empty--></span></a></li><li class=""><a href="/en/corporate-space.html">Corporate space<span class=""><!--empty--></span></a></li><li class="last"><a href="/en/location-information.html" class="sf-with-ul">Campus life<span class=""><!--empty--></span></a><ul class="sub-menu"><li><a href="/en/location-information/leisure-and-students-activities.html">Leisure and student activities</a></li><li><a href="/en/location-information/living-in-tarbes.html">Living in Tarbes</a></li></ul></li><li> | <a class="search-button" href="/en/moteur-de-recherche.html"><img alt="Search..." src="/skins/uttop/resources/img/search-icon.png" /></a></li></ul></nav></div></div><div class="wrapper"><div class="search-box col-7"><h1>UNIVERSITY OF TECHNOLOGY<br />TARBES OCCITANIE PYRÉNÉES</h1><form method="get" class="search-form clearfix" action="/en/moteur-de-recherche.html"><input class="search-text" name="textfield" value="Search..." onFocus="if (this.value == this.defaultValue) this.value = '';" onBlur="if (this.value == '') this.value = this.defaultValue;" type="text" /><button class="search-submit" type="submit"><span class="fa fa-search"></span></button><input name="submit-form" type="hidden" /></form><div class="directaccess"><ul><li><a class="btn" href="/en/uttop-1/campus-life.html"><span>Campus</span></a></li><li><a class="btn" href="/en/uttop-1/our-programs.html"><span>Our programs</span></a></li><li><a class="btn" href="/en/iut-of-tarbes.html"><span>IUT of Tarbes </span></a></li><li><a class="btn" href="/en/enit.html"><span>ENIT</span></a></li><li><a class="btn" href="/en/international.html"><span>INTERNATIONAL</span></a></li></ul></div></div></div></header><div id="main-content"><a name="content"></a><section class="kopa-area"><div class="kopa-parallax widget"><div data-ametys-zone="default" id="ametys-cms-zone-default"><div data-ametys-zone-level="1" id="ametys-cms-zone-default-item-N10049" class="first "><div class="ametys-cms-content article view-home"><div style="background-image:url('')" class="parallax clearfix parallax-1"><div class="kopa-bg"><!--empty--></div><div class="wrapper"><div class="widget kopa_widget_text"><h1 class="widget-title">UTTOP in figures</h1><p><section id="uttop-key" aria-label="UTTOP in figures"> 202 <div class="uttop-key__container"> 203 204 <div class="uttop-key__header"> 205 <h2 class="uttop-key__title">UTTOP in figures</h2> 206 207 <p class="uttop-key__lead"> 208 A people-focused university of technology, firmly rooted in its 209 region and closely connected to the professional world. 210 </p> 211 </div> 212 213 <ul class="uttop-key__grid"> 214 215 <li class="uttop-key__item" style="--k-color:#ff99d6">
216 <span class="uttop-key__icon" aria-hidden="true"> 217 <svg viewBox="0 0 48 48" focusable="false"> 218 <circle cx="24" cy="15" r="7"/> 219 <path d="M10 39c0-7.2 6.3-12 14-12s14 4.8 14 12"/> 220 </svg> 221 </span> 222 223 <span class="uttop-key__body"> 224 <span class="uttop-key__num" data-target="2800">0</span> 225 <span class="uttop-key__label">Students</span> 226 </span> 227 </li> 228 229 <li class="uttop-key__item" style="--k-color:#129a7e"> 230 <span class="uttop-key__icon" aria-hidden="true"> 231 <svg viewBox="0 0 48 48" focusable="false"> 232 <circle cx="17" cy="14" r="6"/> 233 <path d="M6 38c0-6.4 5-10.5 11-10.5S28 31.6 28 38"/> 234 <path d="M32 9.5a6 6 0 0 1 0 11.4"/> 235 <path d="M35 28.4c4 1.5 6.4 4.9 6.4 9.6"/> 236 </svg> 237 </span> 238 239 <span class="uttop-key__body"> 240 <span class="uttop-key__num" data-target="360">0</span> 241 <span class="uttop-key__label">Staff members</span> 242 </span> 243 </li> 244 245 <li class="uttop-key__item" style="--k-color:#d4b81f"> 246 <span class="uttop-key__icon" aria-hidden="true"> 247 <svg viewBox="0 0 48 48" focusable="false"> 248 <path d="M24 9L5 18l19 9 19-9z"/> 249 <path d="M13 22.5V33c0 3.3 4.9 6 11 6s11-2.7 11-6V22.5"/> 250 <path d="M40 19v10"/> 251 </svg> 252 </span> 253 254 <span class="uttop-key__body"> 255 <span class="uttop-key__num" data-target="750">0</span> 256 <span class="uttop-key__label">Graduates each year</span> 257 </span> 258 </li> 259 260 <li class="uttop-key__item" style="--k-color:#586ddd"> 261 <span class="uttop-key__icon" aria-hidden="true"> 262 <svg viewBox="0 0 48 48" focusable="false"> 263 <rect x="6" y="15" width="36" height="25" rx="3"/> 264 <path d="M18 15v-4a3 3 0 0 1 3-3h6a3 3 0 0 1 3 3v4"/> 265 <path d="M6 25h36"/> 266 <path d="M21 25v3h6v-3"/> 267 </svg> 268 </span> 269 270 <span class="uttop-key__body"> 271 <span class="uttop-key__num" data-target="3000">0</span> 272 <span class="uttop-key__label">Corporate partners</span> 273 </span> 274 </li> 275 276 </ul> 277 278 </div> 279</section> 280 281<style> 282:root { 283 --uttop-key-white: #ffffff; 284 --uttop-key-deep: #003a58; 285 --uttop-key-text: #16283a; 286 --uttop-key-line: #e3e9ef; 287} 288 289/* ===================================================== 290 CMS WRAPPER 291===================================================== */ 292 293.widget.kopa_widget_text.uttop-key-widget { 294 position: relative !important; 295 z-index: 2 !important; 296 297 margin: 0 !important; 298 padding: 0 !important; 299 300 border: 0 !important; 301 outline: 0 !important; 302 303 background: var(--uttop-key-white) !important; 304 background-color: var(--uttop-key-white) !important; 305 background-image: none !important; 306 307 box-shadow: none !important; 308 text-align: left !important; 309} 310 311.widget.kopa_widget_text.uttop-key-widget > .widget-title, 312.widget.kopa_widget_text.uttop-key-widget > p { 313 display: none !important; 314 315 width: 0 !important; 316 height: 0 !important; 317 318 margin: 0 !important; 319 padding: 0 !important; 320} 321 322#uttop-key, 323#uttop-key *, 324#uttop-key *::before, 325#uttop-key *::after { 326 box-sizing: border-box !important; 327} 328 329/* ===================================================== 330 FULL-WIDTH SECTION 331===================================================== */ 332 333#uttop-key { 334 position: relative !important; 335 z-index: 2 !important; 336 337 display: block !important; 338 339 width: 100vw !important; 340 max-width: none !important; 341 342 margin: 0 calc(50% - 50vw) !important; 343 padding: 100px 0 108px !important; 344 345 border: 0 !important; 346 outline: 0 !important; 347 348 color: var(--uttop-key-text) !important; 349 350 background: var(--uttop-key-white) !important; 351 background-color: var(--uttop-key-white) !important; 352 background-image: none !important; 353 354 box-shadow: none !important; 355 overflow: hidden !important; 356 357 text-align: left !important; 358} 359 360/* ===================================================== 361 CONTAINER 362===================================================== */ 363 364#uttop-key .uttop-key__container { 365 position: relative !important; 366 z-index: 1 !important; 367 368 width: calc(100% - 48px) !important; 369 max-width: 1340px !important; 370 371 margin: 0 auto !important; 372 padding: 0 !important; 373 374 border: 0 !important; 375 background: transparent !important; 376 377 text-align: left !important; 378} 379 380/* ===================================================== 381 HEADER 382===================================================== */ 383 384#uttop-key .uttop-key__header { 385 max-width: 780px !important; 386 387 margin: 0 0 64px !important; 388 padding: 0 !important; 389 390 border: 0 !important; 391 background: transparent !important; 392 393 text-align: left !important; 394} 395 396#uttop-key .uttop-key__title { 397 position: relative !important; 398 399 display: block !important; 400 401 margin: 0 0 22px !important; 402 padding: 0 !important; 403 404 border: 0 !important; 405 background: none !important; 406 407 color: var(--uttop-key-deep) !important; 408 409 font-family: inherit !important; 410 font-size: clamp(2.2rem, 3.4vw, 3rem) !important; 411 font-weight: 700 !important; 412 line-height: 1.14 !important; 413 letter-spacing: -0.015em !important; 414 415 text-align: left !important; 416 text-indent: 0 !important; 417 text-transform: none !important; 418} 419 420#uttop-key .uttop-key__title::before { 421 position: absolute !important; 422 top: -24px !important; 423 left: 0 !important; 424 425 display: block !important; 426 427 width: 58px !important; 428 height: 5px !important; 429 430 border-radius: 100px !important; 431 432 background: linear-gradient( 433 90deg, 434 #129a7e 0%, 435 #45db96 100% 436 ) !important; 437 438 content: "" !important; 439} 440 441#uttop-key .uttop-key__title::after { 442 display: none !important; 443 content: none !important; 444} 445 446#uttop-key .uttop-key__lead { 447 display: block !important; 448 449 margin: 0 !important; 450 padding: 0 !important; 451 452 color: #4a5c6e !important; 453 454 font-size: 1.24rem !important; 455 line-height: 1.7 !important; 456 457 text-align: left !important; 458 text-indent: 0 !important; 459} 460 461/* ===================================================== 462 GRID 463 Internal lines are created by the right and bottom 464 borders of each item. 465===================================================== */ 466 467#uttop-key .uttop-key__grid { 468 display: grid !important; 469 grid-template-columns: repeat(2, minmax(0, 1fr)) !important; 470 gap: 0 !important; 471 472 margin: 0 !important; 473 padding: 0 !important; 474 475 list-style: none !important; 476
477 border-top: 1px solid var(--uttop-key-line) !important; 478 border-left: 1px solid var(--uttop-key-line) !important; 479 480 background: transparent !important; 481 text-align: left !important; 482} 483 484/* ===================================================== 485 ITEM — icon on the left, text on the right 486===================================================== */ 487 488#uttop-key .uttop-key__item { 489 position: relative !important; 490 491 display: flex !important; 492 align-items: center !important; 493 gap: 30px !important; 494 495 min-width: 0 !important; 496 margin: 0 !important; 497 padding: 46px 40px !important; 498 499 border-right: 1px solid var(--uttop-key-line) !important; 500 border-bottom: 1px solid var(--uttop-key-line) !important; 501 502 background: var(--uttop-key-white) !important; 503 text-align: left !important; 504 505 opacity: 0 !important; 506 transform: translateY(22px) !important; 507 508 transition: 509 opacity 0.7s ease, 510 transform 0.7s cubic-bezier(0.22, 1, 0.36, 1), 511 background-color 0.35s ease !important; 512} 513 514#uttop-key .uttop-key__item.is-visible { 515 opacity: 1 !important; 516 transform: translateY(0) !important; 517} 518 519/* Subtle colour overlay on hover */ 520#uttop-key .uttop-key__item::before { 521 position: absolute !important; 522 inset: 0 !important; 523 z-index: 0 !important; 524 525 background: var(--k-color) !important; 526 opacity: 0 !important; 527 528 transition: opacity 0.35s ease !important; 529 530 content: "" !important; 531 pointer-events: none !important; 532} 533 534#uttop-key .uttop-key__item:hover::before { 535 opacity: 0.06 !important; 536} 537 538/* Animated colour bar at the bottom */ 539#uttop-key .uttop-key__item::after { 540 position: absolute !important; 541 bottom: -1px !important; 542 left: 0 !important; 543 z-index: 1 !important; 544 545 width: 100% !important; 546 height: 3px !important; 547 548 background: var(--k-color) !important; 549 550 transform: scaleX(0) !important; 551 transform-origin: left center !important; 552 553 transition: transform 0.4s cubic-bezier(0.22, 1, 0.36, 1) !important; 554 555 content: "" !important; 556} 557 558#uttop-key .uttop-key__item:hover::after { 559 transform: scaleX(1) !important; 560} 561 562/* ===================================================== 563 ICON 564===================================================== */ 565 566#uttop-key .uttop-key__icon { 567 position: relative !important; 568 z-index: 1 !important; 569 570 flex: 0 0 auto !important; 571 572 display: flex !important; 573 align-items: center !important; 574 justify-content: center !important; 575 576 width: 76px !important; 577 height: 76px !important; 578 579 transition: transform 0.4s cubic-bezier(0.22, 1, 0.36, 1) !important; 580} 581 582#uttop-key .uttop-key__item:hover .uttop-key__icon { 583 transform: scale(1.08) !important; 584} 585 586#uttop-key .uttop-key__icon svg { 587 display: block !important; 588 589 width: 100% !important; 590 height: 100% !important; 591 592 fill: none !important; 593 stroke: var(--k-color) !important; 594 stroke-width: 2 !important; 595 stroke-linecap: round !important; 596 stroke-linejoin: round !important; 597} 598 599#uttop-key .uttop-key__icon svg * { 600 fill: none !important; 601 stroke: inherit !important; 602 vector-effect: non-scaling-stroke !important; 603} 604 605/* ===================================================== 606 TEXT BLOCK 607===================================================== */ 608 609#uttop-key .uttop-key__body { 610 position: relative !important; 611 z-index: 1 !important; 612 613 display: block !important; 614 min-width: 0 !important; 615} 616 617#uttop-key .uttop-key__num { 618 display: block !important; 619 620 margin: 0 0 6px !important; 621 padding: 0 !important; 622 623 color: var(--k-color) !important; 624 625 font-size: clamp(2.9rem, 4.6vw, 3.9rem) !important; 626 font-weight: 800 !important; 627 line-height: 0.95 !important; 628 letter-spacing: -0.035em !important; 629 630 font-variant-numeric: tabular-nums !important; 631} 632 633#uttop-key .uttop-key__label { 634 display: block !important; 635 636 margin: 0 !important; 637 638 color: var(--uttop-key-deep) !important; 639 640 font-size: 1.18rem !important; 641 font-weight: 700 !important; 642 line-height: 1.28 !important; 643 letter-spacing: 0.005em !important; 644 645 text-align: left !important; 646 text-transform: uppercase !important; 647} 648 649/* ===================================================== 650 RESPONSIVE 651===================================================== */ 652 653@media (max-width: 1100px) { 654 #uttop-key .uttop-key__item { 655 gap: 24px !important; 656 padding: 38px 30px !important; 657 } 658 659 #uttop-key .uttop-key__icon { 660 width: 64px !important; 661 height: 64px !important; 662 } 663} 664 665@media (max-width: 900px) { 666 #uttop-key { 667 padding: 74px 0 80px !important; 668 } 669 670 #uttop-key .uttop-key__header { 671 margin-bottom: 48px !important; 672 } 673 674 #uttop-key .uttop-key__label { 675 font-size: 1.06rem !important; 676 } 677} 678 679@media (max-width: 620px) { 680 #uttop-key { 681 padding: 54px 0 60px !important; 682 } 683 684 #uttop-key .uttop-key__container { 685 width: calc(100% - 28px) !important; 686 } 687 688 #uttop-key .uttop-key__lead { 689 font-size: 1.08rem !important; 690 } 691 692 #uttop-key .uttop-key__grid { 693 grid-template-columns: 1fr !important; 694 } 695 696 #uttop-key .uttop-key__item { 697 gap: 20px !important; 698 padding: 30px 22px !important; 699 } 700 701 #uttop-key .uttop-key__icon { 702 width: 54px !important; 703 height: 54px !important; 704 } 705 706 #uttop-key .uttop-key__num { 707 font-size: clamp(2.4rem, 11vw, 3.2rem) !important; 708 } 709 710 #uttop-key .uttop-key__label { 711 font-size: 1rem !important; 712 } 713} 714 715@media (prefers-reduced-motion: reduce) { 716 #uttop-key .uttop-key__item, 717 #uttop-key .uttop-key__item::before, 718 #uttop-key .uttop-key__item::after, 719 #uttop-key .uttop-key__icon { 720 opacity: 1 !important; 721 transform: none !important; 722 transition: none !important; 723 } 724 725 #uttop-key .uttop-key__item::before { 726 opacity: 0 !important; 727 } 728 729 #uttop-key .uttop-key__item::after { 730 transform: scaleX(0) !important; 731 } 732} 733</style> 734
735<script> 736(function () { 737 "use strict"; 738 739 var section = document.getElementById("uttop-key"); 740 741 if (!section) { 742 return; 743 } 744 745 /* =================================================== 746 CMS WRAPPER 747 =================================================== */ 748 749 var widget = section.closest(".widget.kopa_widget_text"); 750 751 if (widget) { 752 widget.classList.add("uttop-key-widget"); 753 } 754 755 /* =================================================== 756 FORCE LEFT ALIGNMENT FOR THE HEADER 757 =================================================== */ 758 759 var header = section.querySelector(".uttop-key__header"); 760 761 if (header) { 762 header.style.setProperty("text-align", "left", "important"); 763 764 Array.prototype.forEach.call( 765 header.querySelectorAll("*"), 766 function (node) { 767 node.style.setProperty("text-align", "left", "important"); 768 node.style.setProperty("margin-left", "0", "important"); 769 node.style.setProperty("text-indent", "0", "important"); 770 } 771 ); 772 } 773 774 /* =================================================== 775 ANIMATED COUNTERS 776 =================================================== */ 777 778 function formatNumber(value) { 779 return new Intl.NumberFormat("en-GB").format(value); 780 } 781 782 function easeOutCubic(progress) { 783 return 1 - Math.pow(1 - progress, 3); 784 } 785 786 function animateCounter(element) { 787 var target = 788 parseInt(element.getAttribute("data-target"), 10) || 0; 789 790 var duration = 1600; 791 var start = null; 792 793 function step(timestamp) { 794 if (start === null) { 795 start = timestamp; 796 } 797 798 var progress = Math.min( 799 (timestamp - start) / duration, 800 1 801 ); 802 803 element.textContent = formatNumber( 804 Math.round(target * easeOutCubic(progress)) 805 ); 806 807 if (progress < 1) { 808 window.requestAnimationFrame(step); 809 } 810 } 811 812 window.requestAnimationFrame(step); 813 } 814 815 function fillInstantly(element) { 816 var target = 817 parseInt(element.getAttribute("data-target"), 10) || 0; 818 819 element.textContent = formatNumber(target); 820 } 821 822 /* =================================================== 823 SCROLL REVEAL 824 =================================================== */ 825 826 var items = section.querySelectorAll(".uttop-key__item"); 827 828 var reduceMotion = 829 window.matchMedia && 830 window.matchMedia( 831 "(prefers-reduced-motion: reduce)" 832 ).matches; 833 834 function activate(item, delay) { 835 window.setTimeout(function () { 836 item.classList.add("is-visible"); 837 }, delay); 838 839 var number = item.querySelector(".uttop-key__num"); 840 841 if (!number || number.getAttribute("data-done")) { 842 return; 843 } 844 845 number.setAttribute("data-done", "1"); 846 847 if (reduceMotion) { 848 fillInstantly(number); 849 return; 850 } 851 852 window.setTimeout(function () { 853 animateCounter(number); 854 }, delay); 855 } 856 857 function revealAll() { 858 Array.prototype.forEach.call( 859 items, 860 function (item, index) { 861 activate(item, index * 130); 862 } 863 ); 864 } 865 866 if (!("IntersectionObserver" in window)) { 867 revealAll(); 868 return; 869 } 870 871 var observer = new IntersectionObserver( 872 function (entries) { 873 entries.forEach(function (entry) { 874 if (!entry.isIntersecting) { 875 return; 876 } 877 878 var index = Array.prototype.indexOf.call( 879 items, 880 entry.target 881 ); 882 883 activate(entry.target, index * 130); 884 observer.unobserve(entry.target); 885 }); 886 }, 887 { 888 threshold: 0.35, 889 rootMargin: "0px 0px -80px 0px" 890 } 891 ); 892 893 Array.prototype.forEach.call(items, function (item) { 894 observer.observe(item); 895 }); 896})(); 897</script>
897</p></div></div></div></div></div><div data-ametys-zone-level="1" id="ametys-cms-zone-default-item-N10144" class="even "><div class="ametys-cms-content article view-home"><div style="background-image:url('')" class="parallax clearfix parallax-1"><div class="kopa-bg"><!--empty--></div><div class="wrapper"><div class="widget kopa_widget_text"><h1 class="widget-title">Welcome to UTTOP</h1><p><section id="uttop-hero" aria-label="Welcome to UTTOP"> 898 <div class="uttop-hero__inner"> 899 900 <div class="uttop-hero__head"> 901 <p class="uttop-hero__kicker"> 902 <span aria-hidden="true"></span>Tarbes · Occitanie · Pyrenees 903 </p> 904 905 <h1 class="uttop-hero__title"> 906 Study in France<br><span>at the heart of the Pyrenees</span> 907 </h1> 908 909 <p class="uttop-hero__lead"> 910 University of Technology Tarbes Occitanie Pyrenees 911 </p> 912 </div> 913 914 <form 915 class="uttop-hero__search" 916 method="get" 917 action="/en/search-engine.html" 918 role="search" 919 > 920 <label class="uttop-hero__sr" for="uttop-q"> 921 Search the website 922 </label> 923 924 <div class="uttop-hero__field"> 925 <svg class="uttop-hero__ico" viewBox="0 0 24 24" aria-hidden="true"> 926 <circle cx="11" cy="11" r="7"></circle> 927 <path d="M16.5 16.5 21 21"></path> 928 </svg> 929 930 <input 931 id="uttop-q" 932 class="uttop-hero__input" 933 type="search" 934 name="textfield" 935 autocomplete="off" 936 placeholder="Programs, research, news…" 937 > 938 939 <button class="uttop-hero__go" type="submit"> 940 <span>Search</span> 941 942 <svg viewBox="0 0 24 24" aria-hidden="true"> 943 <path d="M5 12h13"></path> 944 <path d="M12 5l7 7-7 7"></path> 945 </svg> 946 </button> 947 </div> 948 949 <input type="hidden" name="submit-form" value=""> 950 </form> 951 952 <nav class="uttop-hero__quick" aria-label="Quick links"> 953 <ul> 954 <li> 955 <a href="https://www.uttop.fr/en/uttop-1/campus-life.html"> 956 Campus 957 </a> 958 </li> 959 960 <li> 961 <a href="https://www.uttop.fr/en/uttop-1/our-programs.html"> 962 Our programs 963 </a> 964 </li> 965 966 <li> 967 <a href="https://www.uttop.fr/en/international.html"> 968 International 969 </a> 970 </li> 971 </ul> 972 </nav> 973 974 <div class="uttop-hero__schools"> 975 <a 976 class="uttop-hero__school" 977 href="https://www.enit.fr/en/index.html" 978 target="_blank" 979 rel="noopener noreferrer" 980 > 981 <span class="uttop-hero__school-tag"> 982 Engineering school 983 </span> 984 985 <span class="uttop-hero__school-name"> 986 ENIT 987 </span> 988 989 <span class="uttop-hero__school-go"> 990 Discover ENIT → 991 </span> 992 </a> 993 994 <a 995 class="uttop-hero__school" 996 href="https://www.iut-tarbes.fr/" 997 target="_blank" 998 rel="noopener noreferrer" 999 > 1000 <span class="uttop-hero__school-tag"> 1001 University Institute of Technology 1002 </span> 1003 1004 <span class="uttop-hero__school-name"> 1005 IUT of Tarbes 1006 </span> 1007 1008 <span class="uttop-hero__school-go"> 1009 Discover the IUT → 1010 </span> 1011 </a> 1012 </div> 1013 1014 </div> 1015</section> 1016 1017<style> 1018/* ============================================================ 1019 UTTOP HERO — full height, spacious and vertically centred 1020 Colours: blue #005078 / green #129a7e / mint #45db96 1021 yellow #f5d836 / pink #ff99d6 / indigo #586ddd 1022============================================================ */ 1023 1024/* --- 1. Overlay across the entire header --- */ 1025 1026.kopa-page-header.parallax { 1027 position: relative; 1028} 1029 1030.kopa-page-header.parallax::before { 1031 content: ""; 1032 position: absolute; 1033 inset: 0; 1034 z-index: 0; 1035 pointer-events: none; 1036 1037 background: 1038 linear-gradient( 1039 180deg, 1040 rgba(0, 80, 120, 0.32) 0%, 1041 rgba(0, 80, 120, 0.38) 35%, 1042 rgba(0, 80, 120, 0.48) 100% 1043 ), 1044 linear-gradient( 1045 100deg, 1046 rgba(0, 50, 80, 0.28) 0%, 1047 rgba(0, 50, 80, 0.06) 65%, 1048 rgba(0, 50, 80, 0) 100% 1049 ); 1050} 1051 1052.kopa-page-header.parallax > *:not(#myHeader) { 1053 position: relative; 1054 z-index: 1; 1055} 1056 1057.kopa-page-header.parallax > #myHeader { 1058 z-index: 20; 1059} 1060 1061/* --- 2. Full-height, vertically centred hero --- */ 1062 1063#uttop-hero { 1064 --uh-navy: #005078; 1065 --uh-green: #129a7e; 1066 --uh-mint: #45db96; 1067 --uh-yellow: #f5d836; 1068 --uh-pink: #ff99d6; 1069 --uh-indigo: #586ddd; 1070 --uh-max: 1340px; 1071 1072 position: relative; 1073 box-sizing: border-box; 1074 1075 width: 100%; 1076 min-height: calc(100vh - 96px); 1077 1078 display: flex; 1079 align-items: center; 1080 1081 padding: 70px 40px 86px; 1082 1083 color: #fff; 1084 background: none; 1085 1086 font-family: inherit; 1087} 1088 1089#uttop-hero *, 1090#uttop-hero *::before, 1091#uttop-hero *::after { 1092 box-sizing: border-box; 1093} 1094 1095.uttop-hero__inner { 1096 width: 100%; 1097 max-width: var(--uh-max); 1098 1099 margin: 0 auto; 1100} 1101 1102/* --- Heading section --- */ 1103 1104.uttop-hero__head { 1105 max-width: 860px; 1106} 1107 1108.uttop-hero__kicker { 1109 display: flex; 1110 align-items: center; 1111 gap: 13px; 1112 1113 margin: 0 0 22px !important; 1114 padding: 0 !important; 1115 1116 color: var(--uh-mint); 1117 1118 font-size: 0.92rem; 1119 font-weight: 700; 1120 line-height: 1.2 !important; 1121 letter-spacing: 0.18em; 1122 text-transform: uppercase; 1123} 1124 1125.uttop-hero__kicker span { 1126 width: 36px; 1127 height: 2px; 1128 flex: 0 0 36px; 1129 1130 background: var(--uh-mint); 1131} 1132 1133.uttop-hero__title { 1134 margin: 0 0 30px !important; 1135 padding: 0 !important; 1136 1137 color: #fff; 1138 1139 font-size: clamp(2.6rem, 5.6vw, 4.2rem); 1140 font-weight: 800; 1141 line-height: 1.12 !important; 1142 letter-spacing: -0.015em; 1143 1144 text-shadow: 0 2px 18px rgba(0, 20, 35, 0.5); 1145} 1146 1147.uttop-hero__title span { 1148 color: var(--uh-mint); 1149} 1150 1151.uttop-hero__lead { 1152 max-width: 660px; 1153 1154 margin: 0 !important; 1155 padding: 0 !important; 1156 1157 color: rgba(255, 255, 255, 0.93); 1158 1159 font-size: clamp(1.15rem, 1.7vw, 1.4rem); 1160 line-height: 1.7; 1161 1162 text-shadow: 0 1px 12px rgba(0, 20, 35, 0.5); 1163} 1164 1165/* --- Search --- */ 1166 1167.uttop-hero__search { 1168 max-width: 700px; 1169 margin: 48px 0 0; 1170} 1171 1172.uttop-hero__sr { 1173 position: absolute !important; 1174 1175 width: 1px; 1176 height: 1px; 1177 1178 overflow: hidden; 1179 1180 clip: rect(0 0 0 0); 1181 white-space: nowrap; 1182} 1183 1184.uttop-hero__field { 1185 display: flex; 1186 align-items: center; 1187 gap: 12px; 1188 1189 padding: 8px 8px 8px 24px; 1190 1191 background: rgba(255, 255, 255, 0.96); 1192 border-radius: 100px; 1193 1194 box-shadow: 0 14px 38px rgba(0, 20, 35, 0.32); 1195} 1196 1197.uttop-hero__ico { 1198 flex: 0 0 23px; 1199 1200 width: 23px; 1201 height: 23px; 1202 1203 fill: none; 1204 stroke: #7a879a; 1205 stroke-width: 2; 1206 stroke-linecap: round; 1207} 1208 1209.uttop-hero__input { 1210 flex: 1 1 auto; 1211 1212 min-width: 0; 1213 padding: 15px 4px; 1214 1215 border: 0; 1216 color: var(--uh-navy); 1217 background: none; 1218 1219 font-family: inherit; 1220 font-size: 1.12rem; 1221} 1222 1223.uttop-hero__input::placeholder { 1224 color: #93a0b0; 1225} 1226 1227.uttop-hero__input:focus { 1228 outline: none; 1229} 1230 1231.uttop-hero__go { 1232 display: inline-flex; 1233 align-items: center; 1234 gap: 9px; 1235 flex: 0 0 auto; 1236 1237 padding: 15px 30px; 1238 1239 border: 0; 1240 border-radius: 100px; 1241 1242 color: #fff; 1243 background: var(--uh-indigo); 1244 1245 font-family: inherit; 1246 font-size: 1.05rem; 1247 font-weight: 700; 1248 1249 cursor: pointer; 1250 1251 transition: 1252 background 0.2s, 1253 transform 0.2s; 1254} 1255 1256.uttop-hero__go svg { 1257 width: 19px; 1258 height: 19px; 1259 1260 fill: none; 1261 stroke: #fff; 1262 stroke-width: 2.2; 1263 stroke-linecap: round; 1264 stroke-linejoin: round; 1265} 1266 1267.uttop-hero__go:hover { 1268 background: #4657b8; 1269 transform: translateX(2px); 1270} 1271 1272.uttop-hero__field:focus-within { 1273 box-shadow: 1274 0 0 0 3px rgba(88, 109, 221, 0.45), 1275 0 14px 38px rgba(0, 20, 35, 0.32); 1276} 1277 1278/* --- Quick links --- */ 1279 1280.uttop-hero__quick { 1281 margin: 36px 0 0; 1282} 1283 1284.uttop-hero__quick ul { 1285 display: flex; 1286 flex-wrap: wrap; 1287 gap: 13px; 1288 1289 margin: 0; 1290 padding: 0; 1291 1292 list-style: none; 1293} 1294 1295.uttop-hero__quick a { 1296 display: inline-block; 1297 1298 padding: 12px 26px; 1299 1300 border: 1px solid rgba(255, 255, 255, 0.36); 1301 border-radius: 100px; 1302 1303 color: #fff !important; 1304 background: rgba(255, 255, 255, 0.12); 1305 1306 font-size: 1.03rem; 1307 font-weight: 600; 1308 text-decoration: none !important; 1309 1310 backdrop-filter: blur(3px); 1311 1312 transition: 1313 background 0.2s, 1314 border-color 0.2s, 1315 transform 0.2s; 1316} 1317 1318.uttop-hero__quick a:hover { 1319 border-color: var(--uh-green); 1320 background: var(--uh-green); 1321 1322 transform: translateY(-2px); 1323} 1324 1325/* --- ENIT and IUT cards --- */ 1326 1327.uttop-hero__schools { 1328 display: grid; 1329 grid-template-columns: repeat(auto-fit, minmax(310px, 1fr)); 1330 gap: 24px; 1331 1332 max-width: 880px; 1333 margin: 56px 0 0; 1334} 1335 1336.uttop-hero__school { 1337 display: block; 1338 1339 padding: 32px; 1340 1341 border: 1px solid rgba(255, 255, 255, 0.24); 1342 border-radius: 16px; 1343 1344 background: rgba(0, 50, 80, 0.42); 1345 1346 text-decoration: none !important; 1347 1348 backdrop-filter: blur(8px); 1349 1350 transition: 1351 background 0.25s, 1352 border-color 0.25s, 1353 transform 0.25s; 1354} 1355 1356.uttop-hero__school-tag { 1357 display: block; 1358 1359 margin-bottom: 8px; 1360 1361 color: var(--uh-mint); 1362 1363 font-size: 0.84rem; 1364 font-weight: 700; 1365 letter-spacing: 0.1em; 1366 text-transform: uppercase; 1367} 1368 1369.uttop-hero__school-name { 1370 display: block; 1371 1372 margin-bottom: 14px; 1373 1374 color: #fff; 1375 1376 font-size: 1.75rem; 1377 font-weight: 800; 1378} 1379 1380.uttop-hero__school-go { 1381 display: block; 1382 1383 color: rgba(255, 255, 255, 0.88); 1384 1385 font-size: 1.02rem; 1386 font-weight: 600; 1387} 1388 1389.uttop-hero__school:hover { 1390 border-color: var(--uh-green); 1391 background: rgba(0, 80, 120, 0.62); 1392 1393 transform: translateY(-3px); 1394} 1395 1396/* ============================================================ 1397 DISABLE PREVIOUS HEADER CONTENT 1398============================================================ */ 1399 1400.kopa-page-header > .wrapper > .search-box, 1401.kopa-page-header #divine-wrap-row-3.profil-nav { 1402 display: none !important; 1403} 1404 1405.kopa-page-header > .wrapper:not(.clearfix):empty { 1406 display: none !important; 1407} 1408 1409.kopa-page-header.parallax { 1410 padding-bottom: 0 !important; 1411} 1412 1413.uttop-hero-host, 1414.uttop-hero-host > .parallax, 1415.uttop-hero-host > .parallax > .wrapper, 1416.uttop-hero-host .widget.kopa_widget_text { 1417 width: auto !important; 1418 max-width: none !important; 1419 min-height: 0 !important; 1420 1421 margin: 0 !important; 1422 padding: 0 !important; 1423 1424 border: 0 !important; 1425 background: none !important; 1426} 1427 1428.uttop-hero-host .widget-title, 1429.uttop-hero-host > .parallax > .kopa-bg { 1430 display: none !important; 1431} 1432 1433.uttop-hero-host .widget.kopa_widget_text > p:empty { 1434 display: none !important; 1435} 1436 1437/* --- Responsive layout --- */ 1438 1439@media (max-width: 1024px) { 1440 #uttop-hero { 1441 min-height: auto; 1442 padding: 60px 28px 74px; 1443 } 1444 1445 .uttop-hero__title { 1446 font-size: clamp(2.4rem, 5.4vw, 3.4rem); 1447 } 1448} 1449 1450@media (max-width: 768px) { 1451 #uttop-hero { 1452 padding: 48px 20px 60px; 1453 } 1454 1455 .uttop-hero__kicker { 1456 font-size: 0.84rem; 1457 } 1458 1459 .uttop-hero__title { 1460 font-size: clamp(2.1rem, 7vw, 2.8rem); 1461 } 1462 1463 .uttop-hero__lead { 1464 font-size: 1.1rem; 1465 } 1466 1467 .uttop-hero__search { 1468 margin-top: 38px; 1469 } 1470 1471 .uttop-hero__quick { 1472 margin-top: 30px; 1473 } 1474 1475 .uttop-hero__quick a { 1476 padding: 11px 22px; 1477 font-size: 0.96rem; 1478 } 1479 1480 .uttop-hero__schools { 1481 grid-template-columns: 1fr; 1482 gap: 16px; 1483 1484 margin-top: 42px; 1485 } 1486 1487 .uttop-hero__school { 1488 padding: 26px 24px; 1489 } 1490 1491 .uttop-hero__school-name { 1492 font-size: 1.5rem; 1493 } 1494 1495 .uttop-hero__field { 1496 flex-wrap: wrap; 1497 gap: 8px; 1498 1499 padding: 12px; 1500 1501 border-radius: 18px; 1502 } 1503 1504 .uttop-hero__input { 1505 flex: 1 1 100%; 1506 1507 padding: 10px 6px; 1508 1509 font-size: 1.05rem; 1510 } 1511 1512 .uttop-hero__go { 1513 flex: 1 1 100%; 1514 justify-content: center; 1515 } 1516 1517 .uttop-hero__ico { 1518 display: none; 1519 } 1520} 1521 1522/* 1523 * Wide but short screens: spacing is reduced 1524 * without reducing text readability. 1525 */ 1526@media (max-height: 860px) and (min-width: 1025px) { 1527 #uttop-hero { 1528 min-height: auto; 1529 padding: 56px 40px 68px; 1530 } 1531 1532 .uttop-hero__title { 1533 font-size: clamp(2.4rem, 4.6vw, 3.5rem); 1534 } 1535 1536 .uttop-hero__search { 1537 margin-top: 36px; 1538 } 1539 1540 .uttop-hero__quick { 1541 margin-top: 28px; 1542 } 1543 1544 .uttop-hero__schools { 1545 margin-top: 40px; 1546 } 1547 1548 .uttop-hero__school { 1549 padding: 26px 28px; 1550 } 1551} 1552 1553@media (prefers-reduced-motion: reduce) { 1554 #uttop-hero *, 1555 .kopa-page-header.parallax * { 1556 transition: none !important; 1557 } 1558} 1559</style> 1560
1561<script> 1562(function () { 1563 "use strict"; 1564 1565 var hero = document.getElementById("uttop-hero"); 1566 1567 if (!hero || hero.dataset.uhReady === "1") { 1568 return; 1569 } 1570 1571 hero.dataset.uhReady = "1"; 1572 1573 var host = hero.closest(".ametys-cms-content"); 1574 1575 if (host) { 1576 host.classList.add("uttop-hero-host"); 1577 } 1578 1579 var header = document.getElementById("parallax-header"); 1580 var sticky = document.getElementById("myHeader"); 1581 1582 if ( 1583 header && 1584 sticky && 1585 sticky.parentNode === header 1586 ) { 1587 sticky.insertAdjacentElement("afterend", hero); 1588 } 1589 1590 if (host) { 1591 var shell = host.querySelector( 1592 ".widget.kopa_widget_text" 1593 ); 1594 1595 if ( 1596 shell && 1597 !shell.querySelector("#uttop-hero") 1598 ) { 1599 if ( 1600 shell.textContent.replace(/\s/g, "") === "" 1601 ) { 1602 host.style.display = "none"; 1603 } 1604 } 1605 } 1606}()); 1607</script>
1607</p></div></div></div></div></div><div data-ametys-zone-level="1" id="ametys-cms-zone-default-item-N1023F" class="last"><div class="ametys-cms-content article view-home"><div style="background-image:url('')" class="parallax clearfix parallax-1"><div class="kopa-bg"><!--empty--></div><div class="wrapper"><div class="widget kopa_widget_text"><h1 class="widget-title">International events</h1><p><section id="uttop-news" aria-label="UTTOP international events"> 1608 <div class="uttop-news__container"> 1609 1610 <div class="uttop-news__header"> 1611 <!-- The widget's official title will be moved here --> 1612 1613 <a 1614 class="uttop-news__all" 1615 href="https://www.uttop.fr/en/international/international-events.html" 1616 > 1617 All international events → 1618 </a> 1619 </div> 1620 1621 <div id="uttop-news-result"> 1622 <div class="uttop-news__message"> 1623 Loading international events… 1624 </div> 1625 </div> 1626 1627 </div> 1628</section> 1629 1630<style> 1631:root { 1632 --uttop-news-blue: #073b66; 1633 --uttop-news-green: #129a7e; 1634 --uttop-news-white: #ffffff; 1635 --uttop-news-overlap: 26px; 1636} 1637 1638/* ===================================================== 1639 CMS WRAPPER 1640===================================================== */ 1641 1642.widget.kopa_widget_text.uttop-news-widget { 1643 position: relative !important; 1644 z-index: 2 !important; 1645 1646 margin: 0 !important; 1647 padding: 0 !important; 1648 1649 border: 0 !important; 1650 outline: 0 !important; 1651 1652 background: var(--uttop-news-blue) !important; 1653 background-color: var(--uttop-news-blue) !important; 1654 background-image: none !important; 1655 1656 box-shadow: none !important; 1657} 1658 1659.widget.kopa_widget_text.uttop-news-widget > p { 1660 display: none !important; 1661 1662 width: 0 !important; 1663 height: 0 !important; 1664 1665 margin: 0 !important; 1666 padding: 0 !important; 1667} 1668 1669/* ===================================================== 1670 LOCAL RESET 1671===================================================== */ 1672 1673#uttop-news, 1674#uttop-news *, 1675#uttop-news *::before, 1676#uttop-news *::after { 1677 box-sizing: border-box !important; 1678} 1679 1680/* ===================================================== 1681 FULL-WIDTH BLUE SECTION 1682===================================================== */ 1683 1684#uttop-news { 1685 position: relative !important; 1686 z-index: 2 !important; 1687 1688 display: block !important; 1689 1690 width: 100vw !important; 1691 max-width: none !important; 1692 1693 margin: 0 calc(50% - 50vw) !important; 1694 padding: 34px 0 40px !important; 1695 1696 border: 0 !important; 1697 outline: 0 !important; 1698 1699 color: var(--uttop-news-white) !important; 1700 1701 background: var(--uttop-news-blue) !important; 1702 background-color: var(--uttop-news-blue) !important; 1703 background-image: none !important; 1704 1705 box-shadow: none !important; 1706 overflow: visible !important; 1707} 1708 1709/* Only covers the residual strip above the section */ 1710#uttop-news::before { 1711 position: absolute !important; 1712 z-index: -1 !important; 1713 1714 top: calc(-1 * var(--uttop-news-overlap)) !important; 1715 right: 0 !important; 1716 left: 0 !important; 1717 1718 display: block !important; 1719 1720 width: 100% !important; 1721 height: var(--uttop-news-overlap) !important; 1722 1723 margin: 0 !important; 1724 padding: 0 !important; 1725 1726 border: 0 !important; 1727 1728 background: var(--uttop-news-blue) !important; 1729 background-color: var(--uttop-news-blue) !important; 1730 background-image: none !important; 1731 1732 content: "" !important; 1733 pointer-events: none !important; 1734} 1735 1736#uttop-news::after { 1737 display: none !important; 1738 content: none !important; 1739} 1740 1741/* ===================================================== 1742 CONTAINER 1743===================================================== */ 1744 1745#uttop-news .uttop-news__container { 1746 position: relative !important; 1747 z-index: 1 !important; 1748 1749 width: calc(100% - 40px) !important; 1750 max-width: 1120px !important; 1751 1752 margin: 0 auto !important; 1753 padding: 0 !important; 1754 1755 border: 0 !important; 1756 background: transparent !important; 1757} 1758 1759/* ===================================================== 1760 HEADER 1761===================================================== */ 1762 1763.uttop-news__header { 1764 display: flex !important; 1765 align-items: center !important; 1766 justify-content: space-between !important; 1767 gap: 20px !important; 1768 1769 margin: 0 0 22px !important; 1770 padding: 0 !important; 1771 1772 border: 0 !important; 1773 background: transparent !important; 1774} 1775 1776#uttop-news .widget-title { 1777 position: static !important; 1778 1779 display: block !important; 1780 1781 width: auto !important; 1782 1783 margin: 0 !important; 1784 padding: 0 !important; 1785 1786 border: 0 !important; 1787 1788 color: var(--uttop-news-white) !important; 1789 background: transparent !important; 1790 1791 font-family: inherit !important; 1792 font-size: 25px !important; 1793 font-weight: 800 !important; 1794 line-height: 1.25 !important; 1795 text-transform: none !important; 1796 1797 box-shadow: none !important; 1798} 1799 1800#uttop-news .widget-title::before { 1801 position: relative !important; 1802 top: -0.28em !important; 1803 1804 display: inline-block !important; 1805 1806 width: 9px !important; 1807 height: 9px !important; 1808 1809 margin-right: 12px !important; 1810 1811 border-radius: 50% !important; 1812 background: var(--uttop-news-green) !important; 1813
1814 vertical-align: baseline !important; 1815 1816 content: "" !important; 1817} 1818 1819#uttop-news .widget-title::after { 1820 display: none !important; 1821 content: none !important; 1822} 1823 1824/* ===================================================== 1825 ALL EVENTS BUTTON 1826===================================================== */ 1827 1828.uttop-news__all { 1829 flex: 0 0 auto !important; 1830 1831 display: inline-block !important; 1832 1833 padding: 9px 15px !important; 1834 1835 border: 1px solid rgba(255, 255, 255, 0.65) !important; 1836 border-radius: 30px !important; 1837 1838 color: var(--uttop-news-white) !important; 1839 background: var(--uttop-news-blue) !important; 1840 1841 font-size: 11px !important; 1842 font-weight: 700 !important; 1843 line-height: 1.2 !important; 1844 text-decoration: none !important; 1845 1846 transition: 1847 color 0.2s ease, 1848 background-color 0.2s ease !important; 1849} 1850 1851.uttop-news__all:hover, 1852.uttop-news__all:focus { 1853 color: var(--uttop-news-blue) !important; 1854 background: var(--uttop-news-white) !important; 1855} 1856 1857/* ===================================================== 1858 GRID 1859===================================================== */ 1860 1861#uttop-news-result { 1862 display: grid !important; 1863 grid-template-columns: repeat(3, minmax(0, 1fr)) !important; 1864 gap: 16px !important; 1865 1866 width: 100% !important; 1867 min-height: 80px !important; 1868 1869 margin: 0 !important; 1870 padding: 0 !important; 1871 1872 background: transparent !important; 1873} 1874 1875/* ===================================================== 1876 CARDS 1877===================================================== */ 1878 1879.uttop-news__card { 1880 display: flex !important; 1881 flex-direction: column !important; 1882 1883 min-width: 0 !important; 1884 1885 margin: 0 !important; 1886 padding: 0 !important; 1887 1888 overflow: hidden !important; 1889 1890 border: 1px solid rgba(255, 255, 255, 0.24) !important; 1891 border-radius: 10px !important; 1892 1893 background: var(--uttop-news-blue) !important; 1894 background-color: var(--uttop-news-blue) !important; 1895 background-image: none !important; 1896 1897 box-shadow: 0 5px 14px rgba(0, 20, 45, 0.18) !important; 1898 1899 transition: 1900 transform 0.2s ease, 1901 box-shadow 0.2s ease !important; 1902} 1903 1904.uttop-news__card:hover { 1905 transform: translateY(-3px) !important; 1906 box-shadow: 0 9px 19px rgba(0, 20, 45, 0.24) !important; 1907} 1908 1909/* ===================================================== 1910 IMAGES 1911===================================================== */ 1912 1913.uttop-news__image-link { 1914 display: block !important; 1915 1916 width: 100% !important; 1917 aspect-ratio: 16 / 9 !important; 1918 1919 margin: 0 !important; 1920 padding: 0 !important; 1921 1922 overflow: hidden !important; 1923 1924 color: inherit !important; 1925 background: var(--uttop-news-blue) !important; 1926 text-decoration: none !important; 1927} 1928 1929.uttop-news__image-zone { 1930 display: flex !important; 1931 align-items: center !important; 1932 justify-content: center !important; 1933 1934 width: 100% !important; 1935 height: 100% !important; 1936 1937 overflow: hidden !important; 1938 1939 background: var(--uttop-news-blue) !important; 1940} 1941 1942.uttop-news__image { 1943 display: block !important; 1944 1945 width: 100% !important; 1946 height: 100% !important; 1947 1948 margin: 0 !important; 1949 padding: 0 !important; 1950 1951 border: 0 !important; 1952 1953 object-fit: cover !important; 1954 object-position: center 20% !important; 1955 1956 transition: transform 0.3s ease !important; 1957} 1958 1959.uttop-news__card:hover .uttop-news__image { 1960 transform: scale(1.035) !important; 1961} 1962 1963.uttop-news__image-zone--empty::before { 1964 color: rgba(255, 255, 255, 0.2) !important; 1965 1966 font-size: 25px !important; 1967 font-weight: 900 !important; 1968 letter-spacing: 4px !important; 1969 1970 content: "UTTOP" !important; 1971} 1972 1973/* ===================================================== 1974 CARD CONTENT 1975===================================================== */ 1976 1977.uttop-news__content { 1978 display: flex !important; 1979 flex: 1 1 auto !important; 1980 flex-direction: column !important; 1981 1982 min-height: 115px !important; 1983 padding: 14px !important; 1984 1985 background: var(--uttop-news-blue) !important; 1986 background-color: var(--uttop-news-blue) !important; 1987 background-image: none !important; 1988} 1989 1990.uttop-news__title { 1991 display: -webkit-box !important; 1992 1993 margin: 0 0 12px !important; 1994 padding: 0 !important; 1995 1996 overflow: hidden !important; 1997 1998 color: var(--uttop-news-white) !important; 1999 2000 font-size: 14px !important; 2001 font-weight: 800 !important; 2002 line-height: 1.35 !important; 2003 2004 -webkit-box-orient: vertical !important; 2005 -webkit-line-clamp: 3 !important; 2006} 2007 2008.uttop-news__title a { 2009 color: inherit !important; 2010 text-decoration: none !important; 2011} 2012 2013.uttop-news__read { 2014 display: inline-block !important; 2015 2016 margin-top: auto !important; 2017 2018 color: var(--uttop-news-white) !important; 2019 2020 font-size: 10px !important; 2021 font-weight: 800 !important; 2022 text-decoration: none !important; 2023} 2024 2025.uttop-news__read:hover, 2026.uttop-news__title a:hover { 2027 text-decoration: underline !important; 2028} 2029 2030/* ===================================================== 2031 LOADING / ERROR MESSAGE 2032===================================================== */ 2033 2034.uttop-news__message { 2035 grid-column: 1 / -1 !important; 2036 2037 padding: 24px 18px !important; 2038 2039 border: 1px solid rgba(255, 255, 255, 0.28) !important; 2040 border-radius: 10px !important; 2041 2042 color: var(--uttop-news-white) !important; 2043 background: var(--uttop-news-blue) !important; 2044 2045 text-align: center !important; 2046} 2047 2048.uttop-news__message a { 2049 display: inline-block !important; 2050 2051 margin-top: 10px !important; 2052 2053 color: var(--uttop-news-white) !important; 2054 font-weight: 800 !important; 2055} 2056 2057/* ===================================================== 2058 RESPONSIVE 2059===================================================== */ 2060 2061@media (max-width: 850px) { 2062 #uttop-news-result { 2063 grid-template-columns: repeat(2, minmax(0, 1fr)) !important; 2064 } 2065} 2066 2067@media (max-width: 560px) { 2068 #uttop-news { 2069 padding: 30px 0 34px !important; 2070 } 2071 2072 #uttop-news .uttop-news__container { 2073 width: calc(100% - 24px) !important; 2074 } 2075 2076 .uttop-news__header { 2077 display: block !important; 2078 } 2079 2080 .uttop-news__all { 2081 margin-top: 14px !important; 2082 } 2083 2084 #uttop-news-result { 2085 grid-template-columns: 1fr !important; 2086 } 2087} 2088</style> 2089
2090<script> 2091(function () { 2092 "use strict"; 2093 2094 var section = document.getElementById("uttop-news"); 2095 var result = document.getElementById("uttop-news-result"); 2096 2097 if (!section || !result) { 2098 return; 2099 } 2100 2101 /* =================================================== 2102 CONFIGURATION 2103 =================================================== */ 2104 2105 var NEWS_PAGE_URL = 2106 "https://www.uttop.fr/en/international/international-events.html"; 2107 2108 var NEWS_DIRECTORY_URL = 2109 "https://www.uttop.fr/en/international/international-events/"; 2110 2111 var ARTICLE_LIMIT = 6; 2112 2113 /* 2114 * New cache key to invalidate the previous 2115 * incorrectly ordered version. 2116 */ 2117 var CACHE_KEY = 2118 "uttop-international-events-prod-v3"; 2119 2120 var CACHE_DURATION = 15 * 60 * 1000; 2121 2122 /* =================================================== 2123 OFFICIAL WIDGET TITLE 2124 =================================================== */ 2125 2126 var widget = section.closest( 2127 ".widget.kopa_widget_text" 2128 ); 2129 2130 var header = section.querySelector( 2131 ".uttop-news__header" 2132 ); 2133 2134 if (widget) { 2135 widget.classList.add("uttop-news-widget"); 2136 2137 var children = widget.children; 2138 var officialTitle = null; 2139 var childIndex; 2140 2141 for ( 2142 childIndex = 0; 2143 childIndex < children.length; 2144 childIndex += 1 2145 ) { 2146 if ( 2147 children[childIndex].classList.contains( 2148 "widget-title" 2149 ) 2150 ) { 2151 officialTitle = children[childIndex]; 2152 break; 2153 } 2154 } 2155 2156 if (officialTitle && header) { 2157 officialTitle.textContent = 2158 "Latest international events"; 2159 2160 header.insertBefore( 2161 officialTitle, 2162 header.firstChild 2163 ); 2164 } 2165 } 2166 2167 /* =================================================== 2168 UTILITIES 2169 =================================================== */ 2170 2171 function clean(value) { 2172 return String(value || "") 2173 .replace(/<[^>]*>/g, " ") 2174 .replace(/ | /gi, " ") 2175 .replace(/&/gi, "&") 2176 .replace(/"/gi, '"') 2177 .replace(/'|'/gi, "'") 2178 .replace(/\u00a0/g, " ") 2179 .replace(/\s+/g, " ") 2180 .trim(); 2181 } 2182 2183 function absoluteUrl(value, baseUrl) { 2184 if (!value) { 2185 return ""; 2186 } 2187 2188 try { 2189 return new URL(value, baseUrl).href; 2190 } catch (error) { 2191 return ""; 2192 } 2193 } 2194 2195 function normalizeArticleUrl(value) { 2196 var url = absoluteUrl( 2197 value, 2198 NEWS_PAGE_URL 2199 ); 2200 2201 if (!url) { 2202 return ""; 2203 } 2204 2205 url = url.split("#")[0].split("?")[0]; 2206 2207 url = url.replace( 2208 /^http:\/\//i, 2209 "https://" 2210 ); 2211 2212 url = url.replace( 2213 /^https:\/\/uttop\.fr\//i, 2214 "https://www.uttop.fr/" 2215 ); 2216 2217 if ( 2218 url === NEWS_PAGE_URL || 2219 url.indexOf(NEWS_DIRECTORY_URL) !== 0 || 2220 !/\.html$/i.test(url) 2221 ) { 2222 return ""; 2223 } 2224 2225 return url; 2226 } 2227 2228 function getMetaContent(page, selectors) { 2229 var element = page.querySelector(selectors); 2230 2231 if (!element) { 2232 return ""; 2233 } 2234 2235 return clean( 2236 element.getAttribute("content") || 2237 element.getAttribute("datetime") || 2238 element.textContent 2239 ); 2240 } 2241 2242 /* =================================================== 2243 DATE EXTRACTION 2244 Used for sorting only — never displayed. 2245 =================================================== */ 2246 2247 var MONTHS = { 2248 january: 0, 2249 february: 1, 2250 march: 2, 2251 april: 3, 2252 may: 4, 2253 june: 5, 2254 july: 6, 2255 august: 7, 2256 september: 8, 2257 october: 9, 2258 november: 10, 2259 december: 11 2260 }; 2261 2262 function createTimestamp(year, month, day) { 2263 var date = new Date( 2264 Number(year), 2265 Number(month), 2266 Number(day) 2267 ); 2268 2269 return isNaN(date.getTime()) 2270 ? 0 2271 : date.getTime(); 2272 } 2273 2274 function parseEnglishDate(value) { 2275 var text = clean(value).toLowerCase(); 2276 var match; 2277 var nativeTimestamp; 2278 2279 if (!text) { 2280 return 0; 2281 } 2282 2283 /* 2284 * ISO: 2285 * 2026-08-19 2286 * 2026/08/19 2287 */ 2288 match = text.match( 2289 /\b(\d{4})[-\/](\d{1,2})[-\/](\d{1,2})\b/ 2290 ); 2291 2292 if (match) { 2293 return createTimestamp( 2294 match[1], 2295 Number(match[2]) - 1, 2296 match[3] 2297 ); 2298 } 2299 2300 /* 2301 * February 16, 2026 2302 * February 16th, 2026 2303 */ 2304 match = text.match( 2305 /\b(january|february|march|april|may|june|july|august|september|october|november|december)\s+(\d{1,2})(?:st|nd|rd|th)?\s*,?\s*(\d{4})\b/i 2306 ); 2307 2308 if (match) { 2309 return createTimestamp( 2310 match[3], 2311 MONTHS[match[1].toLowerCase()], 2312 match[2] 2313 ); 2314 } 2315 2316 /* 2317 * 16 February 2026 2318 * 16th February 2026 2319 */ 2320 match = text.match( 2321 /\b(\d{1,2})(?:st|nd|rd|th)?\s+(january|february|march|april|may|june|july|august|september|october|november|december)\s+(\d{4})\b/i 2322 ); 2323 2324 if (match) { 2325 return createTimestamp( 2326 match[3], 2327 MONTHS[match[2].toLowerCase()], 2328 match[1] 2329 ); 2330 } 2331 2332 nativeTimestamp = Date.parse(text); 2333 2334 return isNaN(nativeTimestamp) 2335 ? 0 2336 : nativeTimestamp; 2337 } 2338 2339 function findDateInJsonLd(page) { 2340 var scripts = page.querySelectorAll( 2341 'script[type="application/ld+json"]' 2342 ); 2343 2344 for ( 2345 var index = 0; 2346 index < scripts.length; 2347 index += 1 2348 ) {
2349 try { 2350 var parsed = JSON.parse( 2351 scripts[index].textContent 2352 ); 2353 2354 var queue = Array.isArray(parsed) 2355 ? parsed.slice() 2356 : [parsed]; 2357 2358 for ( 2359 var itemIndex = 0; 2360 itemIndex < queue.length; 2361 itemIndex += 1 2362 ) { 2363 var item = queue[itemIndex]; 2364 2365 if (!item || typeof item !== "object") { 2366 continue; 2367 } 2368 2369 if (Array.isArray(item["@graph"])) { 2370 queue = queue.concat(item["@graph"]); 2371 } 2372 2373 /* 2374 * Publication dates are preferred because 2375 * the aim is to display the latest articles. 2376 */ 2377 if (item.datePublished) { 2378 return clean(item.datePublished); 2379 } 2380 2381 if (item.dateCreated) { 2382 return clean(item.dateCreated); 2383 } 2384 2385 if (item.dateModified) { 2386 return clean(item.dateModified); 2387 } 2388 2389 if (item.startDate) { 2390 return clean(item.startDate); 2391 } 2392 } 2393 } catch (error) { 2394 /* Invalid JSON-LD: continue searching */ 2395 } 2396 } 2397 2398 return ""; 2399 } 2400 2401 function getArticleTimestamp(page) { 2402 /* 2403 * Publication metadata takes priority. 2404 */ 2405 var rawDate = getMetaContent( 2406 page, 2407 'meta[property="article:published_time"],' + 2408 'meta[name="datePublished"],' + 2409 'meta[name="publication_date"],' + 2410 'meta[name="DC.date"],' + 2411 'meta[name="dcterms.date"],' + 2412 'meta[name="date"]' 2413 ); 2414 2415 if (!rawDate) { 2416 rawDate = findDateInJsonLd(page); 2417 } 2418 2419 /* 2420 * Then try visible publication-date elements. 2421 */ 2422 if (!rawDate) { 2423 var publicationElement = page.querySelector( 2424 ".publication-date," + 2425 ".content-date," + 2426 ".news-date," + 2427 ".article-date," + 2428 ".published-date," + 2429 "time[datetime]" 2430 ); 2431 2432 if (publicationElement) { 2433 rawDate = clean( 2434 publicationElement.getAttribute( 2435 "datetime" 2436 ) || 2437 publicationElement.textContent 2438 ); 2439 } 2440 } 2441 2442 /* 2443 * Event date as a final structured fallback. 2444 */ 2445 if (!rawDate) { 2446 rawDate = getMetaContent( 2447 page, 2448 'meta[property="event:start_time"],' + 2449 'meta[name="startDate"]' 2450 ); 2451 } 2452 2453 /* 2454 * Final fallback: search inside the article. 2455 */ 2456 if (!rawDate) { 2457 var content = 2458 page.querySelector( 2459 "main," + 2460 "#main-content," + 2461 "article," + 2462 ".ametys-cms-content" 2463 ) || page.body; 2464 2465 if (content) { 2466 var text = clean(content.textContent); 2467 2468 var dateMatch = text.match( 2469 /(?:january|february|march|april|may|june|july|august|september|october|november|december)\s+\d{1,2}(?:st|nd|rd|th)?\s*,?\s*\d{4}/i 2470 ); 2471 2472 if (!dateMatch) { 2473 dateMatch = text.match( 2474 /\d{1,2}(?:st|nd|rd|th)?\s+(?:january|february|march|april|may|june|july|august|september|october|november|december)\s+\d{4}/i 2475 ); 2476 } 2477 2478 if (dateMatch) { 2479 rawDate = dateMatch[0]; 2480 } 2481 } 2482 } 2483 2484 return parseEnglishDate(rawDate); 2485 } 2486 2487 /* =================================================== 2488 ARTICLE URL EXTRACTION 2489 =================================================== */ 2490 2491 function extractArticleUrls(html) { 2492 var parser = new DOMParser(); 2493 2494 var page = parser.parseFromString( 2495 html, 2496 "text/html" 2497 ); 2498 2499 var links = page.querySelectorAll("a[href]"); 2500 var urls = []; 2501 var seen = {}; 2502 2503 Array.prototype.forEach.call( 2504 links, 2505 function (link) { 2506 var url = normalizeArticleUrl( 2507 link.getAttribute("href") 2508 ); 2509 2510 if (!url || seen[url]) { 2511 return; 2512 } 2513 2514 seen[url] = true; 2515 2516 urls.push({ 2517 url: url, 2518 sourceIndex: urls.length 2519 }); 2520 } 2521 ); 2522 2523 return urls; 2524 } 2525 2526 /* =================================================== 2527 ARTICLE TITLE 2528 =================================================== */ 2529 2530 function getArticleTitle(page) { 2531 var title = getMetaContent( 2532 page, 2533 'meta[property="og:title"],' + 2534 'meta[name="twitter:title"],' + 2535 'meta[name="DC.title"]' 2536 ); 2537 2538 if (!title) { 2539 var heading = page.querySelector( 2540 "main h1," + 2541 "#main-content h1," + 2542 "article h1," + 2543 ".ametys-cms-content h1," + 2544 ".content-title," + 2545 "h1" 2546 ); 2547 2548 title = heading 2549 ? clean(heading.textContent) 2550 : ""; 2551 } 2552 2553 if (!title) { 2554 title = clean(page.title).replace( 2555 /\s*[|\-–—]\s*UTTOP.*$/i, 2556 "" 2557 ); 2558 } 2559 2560 return title; 2561 } 2562 2563 /* =================================================== 2564 ARTICLE IMAGE 2565 =================================================== */ 2566 2567 function getArticleImage(page, articleUrl) { 2568 var image = getMetaContent( 2569 page, 2570 'meta[property="og:image"],' + 2571 'meta[name="twitter:image"],' +
2572 'meta[name="twitter:image:src"]' 2573 ); 2574 2575 if (image) { 2576 return absoluteUrl(image, articleUrl); 2577 } 2578 2579 var content = 2580 page.querySelector( 2581 "main," + 2582 "#main-content," + 2583 "article," + 2584 ".ametys-cms-content" 2585 ) || page.body; 2586 2587 if (!content) { 2588 return ""; 2589 } 2590 2591 var images = content.querySelectorAll("img"); 2592 2593 for ( 2594 var index = 0; 2595 index < images.length; 2596 index += 1 2597 ) { 2598 var source = 2599 images[index].getAttribute("data-src") || 2600 images[index].getAttribute("data-original") || 2601 images[index].getAttribute("data-lazy-src") || 2602 images[index].getAttribute("src") || 2603 ""; 2604 2605 source = absoluteUrl( 2606 source, 2607 articleUrl 2608 ); 2609 2610 if ( 2611 source && 2612 !/logo|favicon|sprite|icon|pixel|loader|avatar/i.test( 2613 source 2614 ) 2615 ) { 2616 return source; 2617 } 2618 } 2619 2620 return ""; 2621 } 2622 2623 /* =================================================== 2624 LOAD ONE ARTICLE 2625 =================================================== */ 2626 2627 function loadArticle(item) { 2628 return fetch(item.url, { 2629 credentials: "same-origin", 2630 cache: "default" 2631 }) 2632 .then(function (response) { 2633 if (!response.ok) { 2634 throw new Error( 2635 "Article HTTP " + response.status 2636 ); 2637 } 2638 2639 return response.text(); 2640 }) 2641 .then(function (html) { 2642 var parser = new DOMParser(); 2643 2644 var page = parser.parseFromString( 2645 html, 2646 "text/html" 2647 ); 2648 2649 return { 2650 href: item.url, 2651 title: getArticleTitle(page), 2652 image: getArticleImage( 2653 page, 2654 item.url 2655 ), 2656 2657 /* 2658 * Internal sorting value only. 2659 * It will not be displayed. 2660 */ 2661 timestamp: getArticleTimestamp(page), 2662 2663 sourceIndex: item.sourceIndex 2664 }; 2665 }) 2666 .catch(function (error) { 2667 console.warn( 2668 "Unable to load event:", 2669 item.url, 2670 error 2671 ); 2672 2673 return null; 2674 }); 2675 } 2676 2677 /* =================================================== 2678 SORTING — NEWEST FIRST 2679 =================================================== */ 2680 2681 function sortLatestArticles(articles) { 2682 return articles.sort( 2683 function (articleA, articleB) { 2684 if ( 2685 articleA.timestamp && 2686 articleB.timestamp 2687 ) { 2688 return ( 2689 articleB.timestamp - 2690 articleA.timestamp 2691 ); 2692 } 2693 2694 if ( 2695 articleA.timestamp && 2696 !articleB.timestamp 2697 ) { 2698 return -1; 2699 } 2700 2701 if ( 2702 !articleA.timestamp && 2703 articleB.timestamp 2704 ) { 2705 return 1; 2706 } 2707 2708 /* 2709 * Preserve the CMS order when neither 2710 * article contains a usable date. 2711 */ 2712 return ( 2713 articleA.sourceIndex - 2714 articleB.sourceIndex 2715 ); 2716 } 2717 ); 2718 } 2719 2720 /* =================================================== 2721 CREATE A CARD 2722 =================================================== */ 2723 2724 function createCard(article) { 2725 var card = document.createElement("article"); 2726 card.className = "uttop-news__card"; 2727 2728 var imageLink = document.createElement("a"); 2729 imageLink.className = 2730 "uttop-news__image-link"; 2731 imageLink.href = article.href; 2732 2733 var imageZone = document.createElement("div"); 2734 imageZone.className = 2735 "uttop-news__image-zone"; 2736 2737 if (article.image) { 2738 var image = document.createElement("img"); 2739 2740 image.className = "uttop-news__image"; 2741 image.src = article.image; 2742 image.alt = article.title; 2743 image.loading = "lazy"; 2744 image.decoding = "async"; 2745 2746 image.onerror = function () { 2747 image.remove(); 2748 2749 imageZone.classList.add( 2750 "uttop-news__image-zone--empty" 2751 ); 2752 }; 2753 2754 imageZone.appendChild(image); 2755 } else { 2756 imageZone.classList.add( 2757 "uttop-news__image-zone--empty" 2758 ); 2759 } 2760 2761 imageLink.appendChild(imageZone); 2762 2763 var content = document.createElement("div"); 2764 content.className = "uttop-news__content"; 2765 2766 var title = document.createElement("h3"); 2767 title.className = "uttop-news__title"; 2768 2769 var titleLink = document.createElement("a"); 2770 titleLink.href = article.href; 2771 titleLink.textContent = article.title; 2772 2773 title.appendChild(titleLink); 2774 2775 var read = document.createElement("a"); 2776 read.className = "uttop-news__read"; 2777 read.href = article.href; 2778 read.textContent = "View event →"; 2779 2780 content.appendChild(title); 2781 content.appendChild(read); 2782 2783 card.appendChild(imageLink); 2784 card.appendChild(content); 2785 2786 return card; 2787 } 2788 2789 function displayArticles(articles) { 2790 result.innerHTML = ""; 2791
2792 articles.forEach(function (article) { 2793 result.appendChild( 2794 createCard(article) 2795 ); 2796 }); 2797 } 2798 2799 /* =================================================== 2800 SESSION CACHE 2801 =================================================== */ 2802 2803 function getCachedArticles() { 2804 try { 2805 var cached = JSON.parse( 2806 sessionStorage.getItem(CACHE_KEY) 2807 ); 2808 2809 if ( 2810 !cached || 2811 !cached.date || 2812 !Array.isArray(cached.articles) 2813 ) { 2814 return null; 2815 } 2816 2817 if ( 2818 Date.now() - cached.date > 2819 CACHE_DURATION 2820 ) { 2821 sessionStorage.removeItem(CACHE_KEY); 2822 return null; 2823 } 2824 2825 return cached.articles; 2826 } catch (error) { 2827 return null; 2828 } 2829 } 2830 2831 function saveCachedArticles(articles) { 2832 try { 2833 sessionStorage.setItem( 2834 CACHE_KEY, 2835 JSON.stringify({ 2836 date: Date.now(), 2837 articles: articles 2838 }) 2839 ); 2840 } catch (error) { 2841 /* Cache unavailable: no impact */ 2842 } 2843 } 2844 2845 /* =================================================== 2846 INITIALISATION 2847 =================================================== */ 2848 2849 var cachedArticles = getCachedArticles(); 2850 2851 if ( 2852 cachedArticles && 2853 cachedArticles.length 2854 ) { 2855 cachedArticles = 2856 sortLatestArticles(cachedArticles) 2857 .slice(0, ARTICLE_LIMIT); 2858 2859 displayArticles(cachedArticles); 2860 return; 2861 } 2862 2863 fetch(NEWS_PAGE_URL, { 2864 credentials: "same-origin", 2865 cache: "no-store" 2866 }) 2867 .then(function (response) { 2868 if (!response.ok) { 2869 throw new Error( 2870 "International events page HTTP " + 2871 response.status 2872 ); 2873 } 2874 2875 return response.text(); 2876 }) 2877 .then(function (html) { 2878 var urls = extractArticleUrls(html); 2879 2880 if (!urls.length) { 2881 throw new Error( 2882 "No event links found" 2883 ); 2884 } 2885 2886 return Promise.all( 2887 urls.map(loadArticle) 2888 ); 2889 }) 2890 .then(function (articles) { 2891 articles = articles.filter( 2892 function (article) { 2893 return ( 2894 article && 2895 article.href && 2896 article.title 2897 ); 2898 } 2899 ); 2900 2901 articles = sortLatestArticles(articles) 2902 .slice(0, ARTICLE_LIMIT); 2903 2904 if (!articles.length) { 2905 throw new Error( 2906 "No usable international events found" 2907 ); 2908 } 2909 2910 saveCachedArticles(articles); 2911 displayArticles(articles); 2912 }) 2913 .catch(function (error) { 2914 console.error( 2915 "International events:", 2916 error 2917 ); 2918 2919 result.innerHTML = 2920 '<div class="uttop-news__message">' + 2921 "Unable to load international events.<br>" + 2922 '<a href="' + NEWS_PAGE_URL + '">' + 2923 "View all international events →" + 2924 "</a>" + 2925 "</div>"; 2926 }); 2927})(); 2928</script>
2928</p></div></div></div></div></div></div></div><div class="wrapper"><div class="area-inner home-central-part"><div><div data-ametys-zone="agenda" id="ametys-cms-zone-agenda"><div data-ametys-zone-level="2" id="ametys-cms-zone-agenda-item-N1039C" class="first "></div><div data-ametys-zone-level="2" id="ametys-cms-zone-agenda-item-N103CE" class="even last"><div class="ametys-cms-content article view-main wrapper"><h2 class="art-postheader"><span class="content-title summary">Explore UTTOP</span></h2><p><section id="uttop-links" aria-label="Explore UTTOP"> 2929 <div class="uttop-links__container"> 2930 2931 <h2 class="uttop-links__title"> 2932 <span>Explore UTTOP</span> 2933 </h2> 2934 2935 <div id="uttop-links-grid" class="uttop-links__grid"></div> 2936 2937 </div> 2938</section> 2939 2940<style> 2941/* ===================================================== 2942 VARIABLES 2943===================================================== */ 2944 2945#uttop-links { 2946 --ul-blue: #005078; 2947 --ul-blue-deep: #003a58; 2948 --ul-green: #129a7e; 2949 --ul-white: #ffffff; 2950 --ul-grey: #f5f7f9; 2951 --ul-border: #e3e9ef; 2952 --ul-text: #16283a; 2953 --ul-overlap: 40px; 2954} 2955 2956/* ===================================================== 2957 CENTRAL AREA RESET 2958===================================================== */ 2959 2960.uttop-home-clean, 2961.uttop-home-clean > .area-inner.home-central-part { 2962 background: #ffffff !important; 2963 background-color: #ffffff !important; 2964 background-image: none !important; 2965 2966 border: 0 !important; 2967 box-shadow: none !important; 2968} 2969 2970.uttop-home-clean .alaune-title, 2971.uttop-home-clean .zone-alaune, 2972.uttop-home-clean [data-ametys-zone="alaune"] { 2973 display: none !important; 2974} 2975 2976.uttop-home-clean .indispensables-title, 2977.uttop-home-clean .indispensables_list { 2978 display: none !important; 2979} 2980 2981/* ===================================================== 2982 HOST ARTICLE RESET 2983===================================================== */ 2984 2985.uttop-links-host { 2986 width: auto !important; 2987 max-width: none !important; 2988 2989 margin: 0 !important; 2990 padding: 0 !important; 2991 2992 border: 0 !important; 2993 background: transparent !important; 2994 box-shadow: none !important; 2995} 2996 2997.uttop-links-host > .art-postheader, 2998.uttop-links-host > h2.art-postheader { 2999 display: none !important; 3000} 3001 3002.uttop-links-host > p:empty, 3003.uttop-links-host > .content-richtext-end { 3004 display: none !important; 3005 margin: 0 !important; 3006} 3007 3008.uttop-links-zoneitem { 3009 width: auto !important; 3010 max-width: none !important; 3011 3012 margin: 0 !important; 3013 padding: 0 !important; 3014 3015 border: 0 !important; 3016 background: none !important; 3017} 3018 3019/* ===================================================== 3020 LOCAL RESET 3021===================================================== */ 3022 3023#uttop-links, 3024#uttop-links *, 3025#uttop-links *::before, 3026#uttop-links *::after { 3027 box-sizing: border-box !important; 3028} 3029 3030/* ===================================================== 3031 FULL-WIDTH WHITE SECTION 3032===================================================== */ 3033 3034#uttop-links { 3035 position: relative !important; 3036 z-index: 2 !important; 3037 3038 display: block !important; 3039 3040 --ul-pull-left: 0px; 3041 --ul-pull-right: 0px; 3042 3043 width: auto !important; 3044 max-width: none !important; 3045 3046 margin-top: 0 !important; 3047 margin-right: var(--ul-pull-right) !important; 3048 margin-bottom: 0 !important; 3049 margin-left: var(--ul-pull-left) !important; 3050 3051 padding: 96px 0 100px !important; 3052 3053 overflow: visible !important; 3054 3055 border: 0 !important; 3056 outline: 0 !important; 3057 3058 color: var(--ul-text) !important; 3059 3060 background: var(--ul-white) !important; 3061 background-color: var(--ul-white) !important; 3062 background-image: none !important; 3063 3064 box-shadow: none !important; 3065 font-family: inherit !important; 3066} 3067 3068/* Covers any residual strip above the section */ 3069#uttop-links::before { 3070 position: absolute !important; 3071 top: calc(-1 * var(--ul-overlap)) !important; 3072 right: 0 !important; 3073 left: 0 !important; 3074 z-index: -1 !important; 3075 3076 display: block !important; 3077 3078 width: 100% !important; 3079 height: var(--ul-overlap) !important; 3080 3081 margin: 0 !important; 3082 padding: 0 !important; 3083 3084 border: 0 !important; 3085 3086 background: var(--ul-white) !important; 3087 background-color: var(--ul-white) !important; 3088 background-image: none !important; 3089 3090 content: "" !important; 3091 pointer-events: none !important; 3092} 3093 3094/* ===================================================== 3095 CONTAINER 3096===================================================== */ 3097 3098#uttop-links .uttop-links__container { 3099 position: relative !important; 3100 z-index: 1 !important; 3101 3102 width: 100% !important; 3103 max-width: 1340px !important; 3104 3105 margin: 0 auto !important; 3106 padding: 0 40px !important; 3107 3108 background: transparent !important; 3109} 3110 3111/* ===================================================== 3112 TITLE 3113===================================================== */ 3114 3115#uttop-links .uttop-links__title { 3116 display: flex !important; 3117 align-items: center !important; 3118 gap: 18px !important; 3119 3120 margin: 0 0 50px !important; 3121 padding: 0 !important; 3122 3123 border: 0 !important; 3124 3125 color: var(--ul-blue-deep) !important; 3126 background: none !important; 3127 3128 font-size: clamp(2.1rem, 3.2vw, 2.85rem) !important; 3129 font-weight: 700 !important; 3130 line-height: 1.15 !important; 3131 letter-spacing: -0.01em !important; 3132 3133 text-align: left !important; 3134 text-transform: none !important; 3135} 3136 3137#uttop-links .uttop-links__title::before { 3138 flex: 0 0 auto !important; 3139 3140 width: 15px !important; 3141 height: 15px !important; 3142 3143 border-radius: 50% !important; 3144 background: var(--ul-green) !important; 3145 3146 content: "" !important; 3147} 3148 3149#uttop-links .uttop-links__title::after {
3150 content: none !important; 3151} 3152 3153/* ===================================================== 3154 GRID 3155===================================================== */ 3156 3157#uttop-links .uttop-links__grid { 3158 display: grid !important; 3159 grid-template-columns: repeat(3, minmax(0, 1fr)) !important; 3160 gap: 30px !important; 3161 3162 margin: 0 !important; 3163 padding: 0 !important; 3164 3165 list-style: none !important; 3166} 3167 3168/* ===================================================== 3169 CARD 3170===================================================== */ 3171 3172#uttop-links .uttop-links__card { 3173 position: relative !important; 3174 3175 display: flex !important; 3176 flex-direction: column !important; 3177 align-items: center !important; 3178 justify-content: center !important; 3179 gap: 24px !important; 3180 3181 min-height: 245px !important; 3182 padding: 42px 26px !important; 3183 3184 overflow: hidden !important; 3185 3186 border: 1px solid var(--ul-border) !important; 3187 border-radius: 18px !important; 3188 3189 color: var(--ul-blue-deep) !important; 3190 background: var(--ul-grey) !important; 3191 3192 text-align: center !important; 3193 text-decoration: none !important; 3194 3195 transition: 3196 transform 0.3s cubic-bezier(0.22, 1, 0.36, 1), 3197 box-shadow 0.3s ease, 3198 background-color 0.3s ease, 3199 border-color 0.3s ease !important; 3200} 3201 3202#uttop-links .uttop-links__card::after { 3203 position: absolute !important; 3204 bottom: 0 !important; 3205 left: 0 !important; 3206 3207 width: 100% !important; 3208 height: 5px !important; 3209 3210 background: var(--ul-green) !important; 3211 3212 transform: scaleX(0) !important; 3213 transform-origin: left center !important; 3214 3215 transition: 3216 transform 0.34s cubic-bezier(0.22, 1, 0.36, 1) !important; 3217 3218 content: "" !important; 3219} 3220 3221#uttop-links .uttop-links__card:hover, 3222#uttop-links .uttop-links__card:focus-visible { 3223 border-color: #cdd8e3 !important; 3224 3225 background: var(--ul-white) !important; 3226 3227 box-shadow: 0 18px 38px rgba(0, 80, 120, 0.15) !important; 3228 3229 transform: translateY(-8px) !important; 3230} 3231 3232#uttop-links .uttop-links__card:hover::after, 3233#uttop-links .uttop-links__card:focus-visible::after { 3234 transform: scaleX(1) !important; 3235} 3236 3237#uttop-links .uttop-links__card:focus-visible { 3238 outline: 3px solid var(--ul-green) !important; 3239 outline-offset: 3px !important; 3240} 3241 3242/* ===================================================== 3243 ICON 3244===================================================== */ 3245 3246#uttop-links .uttop-links__icon { 3247 display: flex !important; 3248 align-items: center !important; 3249 justify-content: center !important; 3250 3251 width: 92px !important; 3252 height: 92px !important; 3253 3254 border: 1px solid var(--ul-border) !important; 3255 border-radius: 50% !important; 3256 3257 background: var(--ul-white) !important; 3258 3259 transition: 3260 background-color 0.3s ease, 3261 border-color 0.3s ease, 3262 transform 0.3s cubic-bezier(0.22, 1, 0.36, 1) !important; 3263} 3264 3265#uttop-links .uttop-links__card:hover .uttop-links__icon, 3266#uttop-links .uttop-links__card:focus-visible .uttop-links__icon { 3267 border-color: rgba(18, 154, 126, 0.25) !important; 3268 background: rgba(18, 154, 126, 0.1) !important; 3269 3270 transform: scale(1.07) !important; 3271} 3272 3273#uttop-links .uttop-links__icon svg { 3274 display: block !important; 3275 3276 width: 44px !important; 3277 height: 44px !important; 3278 3279 fill: none !important; 3280 stroke: var(--ul-blue) !important; 3281 stroke-width: 1.5 !important; 3282 stroke-linecap: round !important; 3283 stroke-linejoin: round !important; 3284 3285 transition: stroke 0.3s ease !important; 3286} 3287 3288#uttop-links .uttop-links__icon svg * { 3289 fill: none !important; 3290 stroke: inherit !important; 3291 vector-effect: non-scaling-stroke !important; 3292} 3293 3294#uttop-links .uttop-links__card:hover .uttop-links__icon svg, 3295#uttop-links .uttop-links__card:focus-visible .uttop-links__icon svg { 3296 stroke: var(--ul-green) !important; 3297} 3298 3299/* ===================================================== 3300 LABEL 3301===================================================== */ 3302 3303#uttop-links .uttop-links__label { 3304 margin: 0 !important; 3305 3306 color: var(--ul-blue-deep) !important; 3307 3308 font-size: 1.3rem !important; 3309 font-weight: 600 !important; 3310 line-height: 1.35 !important; 3311 letter-spacing: -0.005em !important; 3312 3313 transition: color 0.3s ease !important; 3314} 3315 3316#uttop-links .uttop-links__card:hover .uttop-links__label, 3317#uttop-links .uttop-links__card:focus-visible .uttop-links__label { 3318 color: var(--ul-green) !important; 3319} 3320 3321/* ===================================================== 3322 RESPONSIVE 3323===================================================== */ 3324 3325@media (max-width: 900px) { 3326 #uttop-links { 3327 padding: 68px 0 72px !important; 3328 } 3329 3330 #uttop-links .uttop-links__container { 3331 padding: 0 28px !important; 3332 } 3333 3334 #uttop-links .uttop-links__title { 3335 margin-bottom: 38px !important; 3336 } 3337 3338 #uttop-links .uttop-links__grid { 3339 gap: 24px !important; 3340 } 3341 3342 #uttop-links .uttop-links__card { 3343 min-height: 212px !important; 3344 gap: 20px !important; 3345 padding: 34px 20px !important; 3346 } 3347 3348 #uttop-links .uttop-links__icon { 3349 width: 80px !important; 3350 height: 80px !important; 3351 } 3352 3353 #uttop-links .uttop-links__icon svg { 3354 width: 39px !important; 3355 height: 39px !important; 3356 } 3357 3358 #uttop-links .uttop-links__label { 3359 font-size: 1.18rem !important; 3360 } 3361} 3362 3363@media (max-width: 720px) { 3364 #uttop-links .uttop-links__grid { 3365 grid-template-columns: 1fr !important; 3366 } 3367} 3368 3369@media (max-width: 620px) { 3370 #uttop-links { 3371 padding: 52px 0 56px !important; 3372 } 3373 3374 #uttop-links .uttop-links__container { 3375 padding: 0 20px !important; 3376 } 3377 3378 #uttop-links .uttop-links__grid { 3379 gap: 16px !important; 3380 } 3381 3382 #uttop-links .uttop-links__card { 3383 min-height: 0 !important; 3384 3385 flex-direction: row !important; 3386 justify-content: flex-start !important; 3387 gap: 20px !important; 3388 3389 padding: 24px !important; 3390 3391 border-radius: 16px !important; 3392 3393 text-align: left !important; 3394 } 3395 3396 #uttop-links .uttop-links__icon { 3397 flex: 0 0 auto !important; 3398 3399 width: 68px !important; 3400 height: 68px !important; 3401 } 3402 3403 #uttop-links .uttop-links__icon svg { 3404 width: 33px !important; 3405 height: 33px !important; 3406 } 3407 3408 #uttop-links .uttop-links__label { 3409 font-size: 1.06rem !important; 3410 } 3411} 3412 3413@media (prefers-reduced-motion: reduce) { 3414 #uttop-links .uttop-links__card, 3415 #uttop-links .uttop-links__card::after, 3416 #uttop-links .uttop-links__icon, 3417 #uttop-links .uttop-links__icon svg, 3418 #uttop-links .uttop-links__label { 3419 transition: none !important; 3420 } 3421 3422 #uttop-links .uttop-links__card:hover { 3423 transform: none !important; 3424 } 3425} 3426</style> 3427
3428<script> 3429(function () { 3430 "use strict"; 3431 3432 var section = document.getElementById("uttop-links"); 3433 var grid = document.getElementById("uttop-links-grid"); 3434 3435 if (!section || !grid) { 3436 return; 3437 } 3438 3439 /* =================================================== 3440 ICONS 3441 =================================================== */ 3442 3443 var ICONS = { 3444 discover: 3445 '<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">' + 3446 '<path d="M4 11.5L12 4l8 7.5"/>' + 3447 '<path d="M6 10v10h12V10"/>' + 3448 '<path d="M10 20v-5.5h4V20"/>' + 3449 "</svg>", 3450 3451 programmes: 3452 '<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">' + 3453 '<path d="M12 7C10.3 5.6 7.7 5 4 5.2v12.4c3.7-.2 6.3.4 8 1.8"/>' + 3454 '<path d="M12 7c1.7-1.4 4.3-2 8-1.8v12.4c-3.7-.2-6.3.4-8 1.8"/>' + 3455 '<path d="M12 7v12.4"/>' + 3456 "</svg>", 3457 3458 campus: 3459 '<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">' + 3460 '<circle cx="9" cy="8" r="3"/>' + 3461 '<path d="M3.5 19.5c0-3 2.5-5 5.5-5s5.5 2 5.5 5"/>' + 3462 '<path d="M16 5.3a3 3 0 0 1 0 5.4"/>' + 3463 '<path d="M17.5 14.9c1.9.7 3 2.4 3 4.6"/>' + 3464 "</svg>" 3465 }; 3466 3467 /* =================================================== 3468 LINKS 3469 =================================================== */ 3470 3471 var LINKS = [ 3472 { 3473 label: "Discover UTTOP", 3474 href: "https://www.uttop.fr/en/uttop-1/go-to-uttop.html", 3475 icon: "discover" 3476 }, 3477 { 3478 label: "Explore Our Programmes", 3479 href: "https://www.uttop.fr/en/uttop-1/our-programs.html", 3480 icon: "programmes" 3481 }, 3482 { 3483 label: "Experience Campus Life", 3484 href: "https://www.uttop.fr/en/uttop-1/campus-life.html", 3485 icon: "campus" 3486 } 3487 ]; 3488 3489 /* =================================================== 3490 FIND THE PAGE WRAPPER 3491 =================================================== */ 3492 3493 function findHomeWrapper() { 3494 var node = section.parentNode; 3495 3496 while (node && node !== document.body) { 3497 if ( 3498 node.querySelector && 3499 ( 3500 node.querySelector(".indispensables_list") || 3501 node.querySelector(".area-inner.home-central-part") 3502 ) 3503 ) { 3504 return node; 3505 } 3506 3507 node = node.parentNode; 3508 } 3509 3510 var centralArea = document.querySelector( 3511 ".area-inner.home-central-part" 3512 ); 3513 3514 if (centralArea) { 3515 return centralArea.parentNode || centralArea; 3516 } 3517 3518 return null; 3519 } 3520 3521 /* =================================================== 3522 CLEAN THE HOST ARTICLE 3523 =================================================== */ 3524 3525 function markHost() { 3526 var article = section.closest(".ametys-cms-content"); 3527 3528 if (article) { 3529 article.classList.add("uttop-links-host"); 3530 } 3531 3532 var zoneItem = section.closest( 3533 "[data-ametys-zone-level]" 3534 ); 3535 3536 if (zoneItem) { 3537 zoneItem.classList.add("uttop-links-zoneitem"); 3538 } 3539 } 3540 3541 /* =================================================== 3542 FULL-WIDTH CALCULATION 3543 =================================================== */ 3544 3545 function applyFullWidth() { 3546 section.style.setProperty( 3547 "--ul-pull-left", 3548 "0px" 3549 ); 3550 3551 section.style.setProperty( 3552 "--ul-pull-right", 3553 "0px" 3554 ); 3555 3556 var rect = section.getBoundingClientRect(); 3557 var documentWidth = 3558 document.documentElement.clientWidth; 3559 3560 var pullLeft = -rect.left; 3561 var pullRight = -(documentWidth - rect.right); 3562 3563 section.style.setProperty( 3564 "--ul-pull-left", 3565 pullLeft + "px" 3566 ); 3567 3568 section.style.setProperty( 3569 "--ul-pull-right", 3570 pullRight + "px" 3571 ); 3572 } 3573 3574 /* =================================================== 3575 BUILD A CARD 3576 =================================================== */ 3577 3578 function buildCard(item) { 3579 var card = document.createElement("a"); 3580 3581 card.className = "uttop-links__card"; 3582 card.href = item.href; 3583 3584 var icon = document.createElement("span"); 3585 icon.className = "uttop-links__icon"; 3586 icon.innerHTML = ICONS[item.icon]; 3587 3588 var label = document.createElement("span"); 3589 label.className = "uttop-links__label"; 3590 label.textContent = item.label; 3591 3592 card.appendChild(icon); 3593 card.appendChild(label); 3594 3595 return card; 3596 } 3597 3598 /* =================================================== 3599 RENDER 3600 =================================================== */ 3601 3602 function render() { 3603 markHost(); 3604 3605 var wrapper = findHomeWrapper(); 3606 3607 if (wrapper) { 3608 wrapper.classList.add("uttop-home-clean"); 3609 } 3610 3611 var fragment = document.createDocumentFragment(); 3612 3613 LINKS.forEach(function (item) { 3614 fragment.appendChild(buildCard(item)); 3615 }); 3616 3617 grid.innerHTML = ""; 3618 grid.appendChild(fragment); 3619 3620 section.style.removeProperty("display"); 3621 3622 applyFullWidth(); 3623 } 3624 3625 /* =================================================== 3626 RESIZE HANDLING 3627 =================================================== */ 3628 3629 var resizeTimer = null; 3630 3631 function onResize() { 3632 if (resizeTimer) { 3633 window.clearTimeout(resizeTimer); 3634 } 3635 3636 resizeTimer = window.setTimeout( 3637 applyFullWidth, 3638 140 3639 ); 3640 } 3641 3642 window.addEventListener("resize", onResize); 3643 window.addEventListener( 3644 "orientationchange", 3645 onResize 3646 ); 3647 3648 /* =================================================== 3649 INITIALISATION 3650 =================================================== */ 3651 3652 render(); 3653 3654 if (document.readyState === "loading") { 3655 document.addEventListener( 3656 "DOMContentLoaded", 3657 render 3658 ); 3659 } else { 3660 window.setTimeout(render, 120); 3661 } 3662 3663 window.addEventListener("load", function () { 3664 window.setTimeout(applyFullWidth, 60); 3665 }); 3666})(); 3667</script>
3667</p><div class="content-richtext-end"><!--empty--></div></div></div></div></div><div><div class="widget "><h2 class="widget-title style1 indispensables-title">Direct access</h2><ul class="indispensables_list"><li><div class="picto"><a href="/en/uttop-1/go-to-uttop.html"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" style="enable-background:new 0 0 512 512;" viewBox="0 0 512 512" y="0px" x="0px" id="Capa_1" version="1.1"> 3668 <path d="M498.791,161.127c-17.545-17.546-46.094-17.545-63.645,0.004c-5.398,5.403-39.863,39.896-45.128,45.166V87.426 c0-12.02-4.681-23.32-13.181-31.819L334.412,13.18C325.913,4.68,314.612,0,302.592,0H45.018c-24.813,0-45,20.187-45,45v422 c0,24.813,20.187,45,45,45h300c24.813,0,45-20.187,45-45V333.631L498.79,224.767C516.377,207.181,516.381,178.715,498.791,161.127 z M300.019,30c2.834,0,8.295-0.491,13.18,4.393l42.426,42.427c4.76,4.761,4.394,9.978,4.394,13.18h-60V30z M360.018,467 c0,8.271-6.728,15-15,15h-300c-8.271,0-15-6.729-15-15V45c0-8.271,6.729-15,15-15h225v75c0,8.284,6.716,15,15,15h75v116.323 c0,0-44.254,44.292-44.256,44.293l-21.203,21.204c-1.646,1.646-2.888,3.654-3.624,5.863l-21.214,63.64 c-1.797,5.39-0.394,11.333,3.624,15.35c4.023,4.023,9.968,5.419,15.35,3.624l63.64-21.213c2.209-0.736,4.217-1.977,5.863-3.624 l1.82-1.82V467z M326.378,312.427l21.213,21.213l-8.103,8.103l-31.819,10.606l10.606-31.82L326.378,312.427z M368.8,312.422 l-21.213-21.213c11.296-11.305,61.465-61.517,72.105-72.166l21.213,21.213L368.8,312.422z M477.573,203.558l-15.463,15.476 l-21.213-21.213l15.468-15.481c5.852-5.849,15.366-5.848,21.214,0C483.426,188.19,483.457,197.673,477.573,203.558z" /> 3669 <path d="M285.018,150h-210c-8.284,0-15,6.716-15,15s6.716,15,15,15h210c8.284,0,15-6.716,15-15S293.302,150,285.018,150z" /> 3670 <path d="M225.018,210h-150c-8.284,0-15,6.716-15,15s6.716,15,15,15h150c8.284,0,15-6.716,15-15S233.302,210,225.018,210z" /> 3671 <path d="M225.018,270h-150c-8.284,0-15,6.716-15,15s6.716,15,15,15h150c8.284,0,15-6.716,15-15S233.302,270,225.018,270z" /> 3672 <path d="M225.018,330h-150c-8.284,0-15,6.716-15,15s6.716,15,15,15h150c8.284,0,15-6.716,15-15S233.302,330,225.018,330z" /> 3673 <path d="M285.018,422h-90c-8.284,0-15,6.716-15,15s6.716,15,15,15h90c8.284,0,15-6.716,15-15S293.302,422,285.018,422z" /> 3674 </svg></a></div><div class="pageTitle"><a href="/en/uttop-1/go-to-uttop.html">Go to UTTOP </a></div></li><li><div class="picto"><a href="/en/uttop-1/our-programs.html"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" style="enable-background:new 0 0 682.7 682.7;" viewBox="0 0 682.7 682.7" y="0px" x="0px" id="svg9" version="1.1"> 3675 <path d="M144.3,72.1v97.6H0v348.6c0,50.8,41.3,92.1,92.1,92.1h498.4c50.8,0,92.1-41.3,92.1-92.1V72.1H144.3z M40,518.4V209.8h104.3 v308.6c0,28.7-23.4,52.1-52.1,52.1S40,547.1,40,518.4z M642.7,518.4c0,28.7-23.4,52.1-52.1,52.1H168.1 c10.2-14.8,16.2-32.8,16.2-52.1V169.8v-57.6h458.4V518.4z" /> 3676 <path d="M433.5,321.3H224.3v209.2h209.2V321.3z M393.5,490.5H264.3V361.3h129.2V490.5z" /> 3677 <rect height="40" width="378.4" y="152.1" x="224.3" /> 3678 <rect height="40" width="123.1" y="490.5" x="479.6" /> 3679 <rect height="40" width="123.1" y="405.9" x="479.6" /> 3680 <rect height="40" width="123.1" y="321.3" x="479.6" /> 3681 <rect height="40" width="378.4" y="236.7" x="224.3" /> 3682 </svg></a></div><div class="pageTitle"><a href="/en/uttop-1/our-programs.html">Our programs</a></div></li><li><div class="picto"><a href="/en/uttop-1/campus-life.html"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" style="enable-background:new 0 0 334.938 334.938;" viewBox="0 0 334.938 334.938" y="0px" x="0px" id="Capa_1" version="1.1"> 3683 <path d="M113.117,75.057c20.693,0,37.528-16.835,37.528-37.528S133.81,0,113.117,0c-20.694,0-37.53,16.835-37.53,37.529 S92.423,75.057,113.117,75.057z M113.117,18c10.768,0,19.528,8.761,19.528,19.529s-8.76,19.528-19.528,19.528 c-10.769,0-19.53-8.76-19.53-19.528S102.348,18,113.117,18z M305.12,278.016l-21.596-65.589c-1.554-4.72-6.641-7.289-11.363-5.733 l-90.316,29.737c-2.268,0.746-4.145,2.363-5.221,4.494c-1.075,2.131-1.26,4.602-0.513,6.869l21.596,65.591 c0.747,2.268,2.363,4.145,4.495,5.221c1.269,0.64,2.659,0.965,4.054,0.965c0.948,0,1.898-0.
3683149,2.815-0.452l90.316-29.739 C304.107,287.825,306.674,282.737,305.12,278.016z M198.613,258.583l-2.591-7.871l73.219-24.107l2.663,8.087l-31.97,25.141 L198.613,258.583z M211.989,299.206l-7.386-22.434l38.054,1.151c2.111,0.06,4.176-0.616,5.835-1.921l29.401-23.121l7.315,22.216 L211.989,299.206z M123.971,150.438L101.54,326.96c-0.081,0.715-0.246,1.404-0.484,2.058c-1.278,3.515-4.648,5.918-8.446,5.918 c-0.07,0-0.141-0.001-0.211-0.002H68.282c-4.971,0-9-4.029-9-9s4.029-9,9-9h16.387l21.446-168.764 c0.626-4.931,5.137-8.416,10.063-7.794C121.108,141.002,124.598,145.507,123.971,150.438z M175.836,324.561 c0.167,1.069,0.135,2.138-0.074,3.161c-0.224,1.109-0.651,2.144-1.241,3.064c-0.893,1.396-2.174,2.556-3.755,3.296 c-0.557,0.262-1.146,0.469-1.759,0.613c-0.689,0.164-1.383,0.243-2.068,0.243c-0.088,0-0.177-0.001-0.265-0.004h-24.05 c-4.971,0-9-4.029-9-9s4.029-9,9-9h11.763l-28.265-83.4c-1.595-4.708,0.928-9.817,5.635-11.413 c4.709-1.595,9.817,0.928,11.413,5.635l32.22,95.072C175.593,323.382,175.744,323.961,175.836,324.561z M75.103,147.651 l-28.386,70.612c-1.412,3.511-4.788,5.646-8.354,5.646c-1.118,0-2.253-0.209-3.354-0.652c-4.612-1.854-6.848-7.096-4.994-11.708 l28.386-70.611c8.601-21.403,19.841-44.58,44.475-48.642c5.717-0.943,38.648-1.004,45.077,0.198 c23.823,4.451,38.565,26.736,50.514,47.274l29.31,50.38c5.762-0.819,11.158-0.598,15.075,1.215 c4.511,2.088,6.475,7.437,4.387,11.948c-2.074,4.48-7.363,6.447-11.854,4.43c-4.607-1.387-21.158,4.259-24.608,7.735 c-2.9,3.908-8.403,4.811-12.405,1.994c-4.065-2.86-5.041-8.475-2.18-12.54c2.273-3.23,7.496-6.713,13.815-9.533l-27.098-46.578 c-10.398-17.873-21.917-35.579-38.263-38.633c-4.264-0.726-34.406-0.83-38.844-0.131C91.898,112.35,83.747,126.142,75.103,147.651z" /> 3684 </svg></a></div><div class="pageTitle"><a href="/en/uttop-1/campus-life.html">Campus life</a></div></li></ul></div></div></div></div></section><div id="logosPartenaires"><div class="wrapper"><ul><li><a target="_blank" href="https://www.enseignementsup-recherche.gouv.fr/fr"><img alt="République Française" src="/skins/uttop/resources/img/partenaires/1-Republique-francaise-logo.png" /></a></li><li><a target="_blank" href="https://www.univ-tlse3.fr"><img alt="Université de Toulouse" src="/skins/uttop/resources/img/partenaires/logo-UT-site.png" /></a></li><li><a target="_blank" href="http://www.cti-commission.fr"><img alt="CTI" src="/skins/uttop/resources/img/partenaires/3-cti.png" class="min" /></a></li><li><a target="_blank" href="https://www.laregion.fr"><img alt="Région Occitanie" src="/skins/uttop/resources/img/partenaires/4-Region Occitanie.jpg" /></a></li><li><a target="_blank" href="https://info.erasmusplus.fr"><img alt="Erasmus plus" src="/skins/uttop/resources/img/partenaires/5-erasmus-plus.jpg" /></a></li><li><a target="_blank" href="https://www.cti-commission.fr/la-cti/demarche-qualite/systeme-qe/eur-ace"><img alt="EUR-ACE" src="/skins/uttop/resources/img/partenaires/8-eurace.png" /></a></li><li><a target="_blank" href="https://www.campusfrance.org/fr/le-label-bienvenue-en-france"><img alt="Label Bienvenue en France" src="/skins/uttop/resources/img/partenaires/9-Label Bienvenue en France.jpg" /></a></li><li><a target="_blank" href="https://travail-emploi.gouv.fr/formation-professionnelle/acteurs-cadre-et-qualite-de-la-formation-professionnelle/article/qualiopi-marque-de-certification-qualite-des-prestataires-de-formation"><img alt="Qualiopi" src="/skins/uttop/resources/img/partenaires/qualiopi.png" /></a></li></ul></div></div><section class="footer-section"><div class="wrapper row"><div id="kopa-widget-contact-information-2" class="kopa-contact-widget col-md-6 col-xs-12"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" style="enable-background:new 0 0 512 512;" viewBox="0 0 512 512" y="0px" x="0px" id="Capa_1" version="1.1"> 3685 <path d="M256,0C156.748,0,76,80.748,76,180c0,33.534,9.289,66.26,26.869,94.652l142.885,230.257 c2.737,4.411,7.559,7.091,12.745,7.091c0.04,0,0.079,0,0.119,0c5.231-0.041,10.063-2.804,12.75-7.292L410.611,272.22 C427.221,244.428,436,212.539,436,180C436,80.748,355.252,0,256,0z M384.866,256.818L258.272,468.186l-129.905-209.34 C113.734,235.214,105.8,207.95,105.8,180c0-82.71,67.49-150.2,150.2-150.2S406.1,97.29,406.1,180 C406.1,207.121,398.689,233.688,384.866,256.818z" /> 3686 <path d="M256,90c-49.626,0-90,40.374-90,90c0,49.309,39.717,90,90,90c50.903,0,90-41.233,90-90C346,130.374,305.626,90,256,90z M256,240.2c-33.257,0-60.2-27.033-60.2-60.2c0-33.084,27.116-60.2,60.2-60.2s60.1,27.116,60.1,60.2 C316.1,212.683,289.784,240.2,256,240.2z" /> 3687 </svg><h3 class="widget-title">Contact</h3><address><p><span class="media-body">47, avenue d'Azereix - BP 1629 - 65016 Tarbes CEDEX<br /></span><a href="tel:"></a>+33 (0)5 62 44 27 00</p></address></div></div></section><footer id="kopa-page-footer"><div class="wrapper clearfix"><nav class="pull-right" id="footer-nav" style="visibility: visible;"><ul id="footer-menu" class="clearfix"><li><a href="/en/legal-notice.html">Legal Notice</a></li><li><a href="/en/personal-data.html">Personal Data</a></li></ul></nav></div><p style="display: block;" id="back-top"><a href="#top"></a></p></footer></div>
3687<script type="text/javascript"><!-- 3688 3689 (function() { // anonymous function for scope purposes 3690 // Show the information banner to the top of the page 3691 function showBanner() 3692 { 3693 if (ametysCookieConsentListener.length > 0) 3694 { 3695 3696 3697 var html = '<div class="cookiebanner-wrapper" id="cookie-banner">' 3698 + '<div class="cookiebanner">' 3699 + '<div class="cookiebanner-info">' 3700 + "By continuing to browse this site, you're accepting the use of cookies to collect anonymous visitor statistics." 3701 + ' ' 3702 + '</div>' 3703 + '<div class="cookiebanner-buttons">' 3704 + '<a href="javascript:ametysAcceptCookieConsent()" class="cookiebanner-accept">' 3705 + "OK" 3706 + '</a>' 3707 + ' ' 3708 + '<a href="javascript:ametysRefuseCookieConsent()" class="cookiebanner-refuse">' 3709 + "Refuse" 3710 + '</a>' 3711 3712 3713 + '</div>' 3714 + '</div>' 3715 + '</div>'; 3716 3717 $j(document.body).prepend(html).addClass('cookiebanner-visible'); 3718 } 3719 } 3720 3721 // Get the Internet Explorer version, return -1 if not IE 3722 function getInternetExplorerVersion() { 3723 var rv = -1; 3724 if ($j.browser.msie) 3725 { 3726 rv = $j.browser.version; 3727 } 3728 3729 return rv; 3730 } 3731 3732 // Check the navigator value DoNotTrack to know if the signal is activated and equal to 1 3733 function notToTrack() { 3734 if ( (navigator.doNotTrack && (navigator.doNotTrack=='yes' || navigator.doNotTrack=='1')) 3735 || ( navigator.msDoNotTrack && navigator.msDoNotTrack == '1') ) { 3736 var isIE = (getInternetExplorerVersion()!=-1) 3737 if (!isIE){ 3738 return true; 3739 } 3740 return false; 3741 } 3742 } 3743 3744 // If the signal equals 0, consent is true 3745 function isToTrack() { 3746 if ( navigator.doNotTrack && (navigator.doNotTrack=='no' || navigator.doNotTrack==0 )) { 3747 return true; 3748 } 3749 } 3750 3751 function getMobileAppConsent() 3752 { 3753 var searchParams = new URLSearchParams(window.location.search); 3754 if (searchParams.has('Ametys-MobileApp-Tracking-Consent')) 3755 { 3756 return searchParams.get('Ametys-MobileApp-Tracking-Consent') == 'true'; 3757 } 3758 return null; 3759 } 3760 3761 let mobileAppConsent = getMobileAppConsent(); // already autorised or refused from mobile app ? 3762 if (mobileAppConsent === true) 3763 { 3764 ametysAcceptCookieConsent(); 3765 } 3766 else if (mobileAppConsent === false) 3767 { 3768 ametysRefuseCookieConsent(); 3769 } 3770 else 3771 { 3772 var consentCookie = $j.cookie('ametysHasConsent'); 3773 if (consentCookie == null) 3774 { 3775 // The user has no cookies, we show the banner. 3776 if (notToTrack()) 3777 { 3778 // Internet explorer DoNotTrack is not activated. Do not ask for consent and just opt him out 3779 ametysCallCookieConsentListener(false); 3780 } 3781 else if (isToTrack()) 3782 { 3783 // Internet explorer DoNotTrack is activated. Do not ask for consent and just opt him in 3784 ametysCallCookieConsentListener(true); 3785 } 3786 else 3787 { 3788 3789 ametysCallCookieConsentListener(true); 3790 3791 3792 // Otherwise ask the user 3793 $j(window).on("load", showBanner); 3794 } 3795 } 3796 else 3797 { 3798 ametysCallCookieConsentListener(consentCookie == 'true'); 3799 } 3800 } 3801 })(); 3802 3803// --></script>
3803</body></html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.