<!doctype html>
<html lang="fr">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Bull's Nicolas Thuillier 90% 21 gram | Toulouse darts academie</title>
<script type="text/javascript">
window.bubble_session_uid = '1780096840031x379934694036384830';
</script>
<script type="text/javascript">
window.headers_source_maps = [["plugin_main_headers_1658328157117x953686184769617900",232,234],["plugin_page_headers_AAa",235,237],["custom_page_header",239,305],["custom_app_header",306,354]]
</script>
<script type="text/javascript">
function make_proxy(target, name) {
return new Proxy(target, {
get: function(target, prop) {
if (prop in target) {
return target[prop];
}
throw new Error('The variable ' + name + ' is not fully initialized yet');
}
});
}
window.appquery = make_proxy({
app_version: function() { return "live"; },
last_change: function() { return "58445302350";},
}, 'appquery');
window.Lib = new Proxy(function() {}, {
get: function(target, prop) {
if (prop === 'is_skeleton') {
return true;
}
throw new Error('The variable ' + Lib + ' is not fully initialized yet');
},
apply: function() {
return make_proxy({
current_user: function() {
return make_proxy({ id: "1780096840031x379934694036384830" }, 'Lib().current_user');
}
}, 'Lib()');
}
});
</script>
<script type="text/javascript">
function load_error_function (event) {
return window.load_error_log.push({ msg: event.message, error_url: event.filename, line: event.lineno, col: event.colno })
}
window.load_error_log = [];
window.addEventListener('error', load_error_function);
window.disableLoadErrorFunction = function () {
window.removeEventListener('error', load_error_function);
}
</script>
<meta name="referrer" content="origin">
<script type="text/javascript">
if (!window._bubble_page_load_data) {
window._bubble_page_load_data = {}
}
if (!window._bubble_page_load_data.js_execution_timings) {
window._bubble_page_load_data.js_execution_timings = {}
}
window._bubble_page_load_data.js_execution_timings['pre_early_js'] = Date.now();
</script><script type="text/javascript" crossorigin="anonymous" charset="UTF-8" src="/package/early_js/05ae9fe83d6b755291132aab9d325d70918aafd336da1bd91a41a31c8b25734b/early.js"></script><script type="text/javascript">
if (!window._bubble_page_load_data) {
window._bubble_page_load_data = {}
}
if (!window._bubble_page_load_data.js_execution_timings) {
window._bubble_page_load_data.js_execution_timings = {}
}
window._bubble_page_load_data.js_execution_timings['post_early_js'] = Date.now();
</script>
<script type="text/javascript">(function () {
function onWebFontFinish () {
window.google_web_fonts_active = true;
if (window.google_web_fonts_active_cb) {
window.google_web_fonts_active_cb();
}
(function fontface_loaded_snippet (font) {
if (window.fontface_loaded == null) {
window.fontface_loaded = {}
}
if (font != null) {
window.fontface_loaded[font] = true
} else {
window.all_fontface_loaded = true
}
if (window.fontface_webfonts_loaded_cb) {
return window.fontface_webfonts_loaded_cb(font)
}
})()
}
const WebFontConfig = {'google': { families: ["Aoboshi One:400","Balthazar:400","Lato:regular","Lato:regular","Lato:900","Montserrat:regular","Montserrat:500","Montserrat:600","Montserrat:700","Montserrat:800"] },
active: function() {
onWebFontFinish()
},
inactive: function() {
console.log('Failed to load all the fonts');
onWebFontFinish()
},
fontinactive: function(family_name, fvd) {
console.log('fontinactive being called for ' + family_name + ', Google says the fonts didnt render');
onWebFontFinish()
}
}
window.WebFont.load(WebFontConfig);
})();</script>
<script>
(function initialize_data() {
const xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (this.readyState === 4 && this.status === 200) {
const data = JSON.parse(this.responseText);
function init_data() {
data.forEach(function(d) {
Lib().db_instance().initialize_data(d.id, d.data, d.type, d.version);
})
}
if (window.Lib && window.Lib.is_skeleton == null) {
init_data();
} else {
window.Lib_post_load = init_data;
}
}
};
xhr.open("GET", "https://toulousedartsacademie.fr/api/1.1/init/data?location=" + encodeURIComponent(window.location.href), true);
xhr.send();
})();
</script>
<script type="text/javascript">window.gm_key = "AIzaSyBcv6WQA_G3vXVwlV2Ik2m2-vKxl45GT1o";</script>
<script type="text/javascript">window.glrl_key_status = false;</script>
<script type="text/javascript">window.bubble_page_load_id = "1780096840117x464";</script>
<script type="text/javascript">window.bubble_plp_token = "hYAy7F92vOWgvmg7WFuuGFBaiGxWeeZ6SB1UJp0OSVA=";</script>
<script type="text/javascript">window.bubble_is_leanjs = false;</script>
<script type="text/javascript">window.bubble_shim_modules = true;</script>
<link rel="icon" type="image/png" href="https://bd1631dddb9a60cfb51bb8a70d4a9aae.cdn.bubble.io/cdn-cgi/image/w=128,h=,f=auto,dpr=1,fit=contain/f1770881431031x756346930591944600/Favicon%20TDA.png" />
<meta name="fragment" content="!">
<meta name="description" content="Les nouvelles fléchettes Bull Nicolas Thuillier 90 % sont conçues en collaboration avec le joueur professionnel français Nicolas Thuillier. Optimisées pour la précision, la puissance et le contrôle, ces fléchettes sont idéales pour les joueurs exigeants qui recherchent la performance sur le pas de tir.Caractéristiques principales :Corps en tungstène de haute qualité : Fabriquée à partir de 90 % de tungstène de première qualité, cette fléchette offre un équilibre parfait entre durabilité et répartition du poids, garantissant des lancers fluides et réguliers. La densité du tungstène permet d’obtenir des corps plus fins, pour des groupements plus serrés et une réduction des rebonds, vous offrant ainsi un avantage compétitif.Prise en main et contrôle : La fléchette présente un motif de préhension finement travaillé qui améliore le contrôle à chaque lancer. Son corps droit, associé à des zones de préhension annulaires et à des parties sans préhension, lui confère un caractère unique et un équilibre parfait.Polyvalence : Disponible en pointes acier et en pointes souples. La canne Bull Nicolas Thuillier 90 % est proposée en 21 grammes pour les pointes acier et en 18 grammes pour les pointes souples.Conception professionnelle : Créée pour répondre aux exigences du joueur professionnel Nicolas Thuillier, cette fléchette est dotée d’un revêtement PCT turquoise et est livrée avec ses ailettes Player 100 Nicolas Thuillier 90 No.2.">
<meta property="og:title" content="Bull's Nicolas Thuillier 90% 21 gram | Toulouse Darts Academie" />
<meta name="twitter:title" content="Bull's Nicolas Thuillier 90% 21 gram | Toulouse Darts Academie" />
<meta property="og:site_name" content="Toulouse Darts Académie" />
<meta name="twitter:site_name" content="Toulouse Darts Académie" />
<meta property="og:description" content="Les nouvelles fléchettes Bull Nicolas Thuillier 90 % sont conçues en collaboration avec le joueur professionnel français Nicolas Thuillier. Optimisées pour la précision, la puissance et le contrôle, ces fléchettes sont idéales pour les joueurs exigeants qui recherchent la performance sur le pas de tir.Caractéristiques principales :Corps en tungstène de haute qualité : Fabriquée à partir de 90 % de tungstène de première qualité, cette fléchette offre un équilibre parfait entre durabilité et répartition du poids, garantissant des lancers fluides et réguliers. La densité du tungstène permet d’obtenir des corps plus fins, pour des groupements plus serrés et une réduction des rebonds, vous offrant ainsi un avantage compétitif.Prise en main et contrôle : La fléchette présente un motif de préhension finement travaillé qui améliore le contrôle à chaque lancer. Son corps droit, associé à des zones de préhension annulaires et à des parties sans préhension, lui confère un caractère unique et un équilibre parfait.Polyvalence : Disponible en pointes acier et en pointes souples. La canne Bull Nicolas Thuillier 90 % est proposée en 21 grammes pour les pointes acier et en 18 grammes pour les pointes souples.Conception professionnelle : Créée pour répondre aux exigences du joueur professionnel Nicolas Thuillier, cette fléchette est dotée d’un revêtement PCT turquoise et est livrée avec ses ailettes Player 100 Nicolas Thuillier 90 No.2." />
<meta name="twitter:description" content="Les nouvelles fléchettes Bull Nicolas Thuillier 90 % sont conçues en collaboration avec le joueur professionnel français Nicolas Thuillier. Optimisées pour la précision, la puissance et le contrôle, ces fléchettes sont idéales pour les joueurs exigeants qui recherchent la performance sur le pas de tir.Caractéristiques principales :Corps en tungstène de haute qualité : Fabriquée à partir de 90 % de tungstène de première qualité, cette fléchette offre un équilibre parfait entre durabilité et répartition du poids, garantissant des lancers fluides et réguliers. La densité du tungstène permet d’obtenir des corps plus fins, pour des groupements plus serrés et une réduction des rebonds, vous offrant ainsi un avantage compétitif.Prise en main et contrôle : La fléchette présente un motif de préhension finement travaillé qui améliore le contrôle à chaque lancer. Son corps droit, associé à des zones de préhension annulaires et à des parties sans préhension, lui confère un caractère unique et un équilibre parfait.Polyvalence : Disponible en pointes acier et en pointes souples. La canne Bull Nicolas Thuillier 90 % est proposée en 21 grammes pour les pointes acier et en 18 grammes pour les pointes souples.Conception professionnelle : Créée pour répondre aux exigences du joueur professionnel Nicolas Thuillier, cette fléchette est dotée d’un revêtement PCT turquoise et est livrée avec ses ailettes Player 100 Nicolas Thuillier 90 No.2." />
<link rel="image_src" href="https://bd1631dddb9a60cfb51bb8a70d4a9aae.cdn.bubble.io/cdn-cgi/image/w=,h=,f=auto,dpr=1,fit=contain/f1780076158395x952389117805675600/Toulosue%20Darts%20Acad%C3%A9mie%20-%20Logo.png" />
<meta property="og:image" content="https://bd1631dddb9a60cfb51bb8a70d4a9aae.cdn.bubble.io/cdn-cgi/image/w=,h=,f=auto,dpr=1,fit=contain/f1780076158395x952389117805675600/Toulosue%20Darts%20Acad%C3%A9mie%20-%20Logo.png" />
<meta name="twitter:image:src" content="https://bd1631dddb9a60cfb51bb8a70d4a9aae.cdn.bubble.io/cdn-cgi/image/w=,h=,f=auto,dpr=1,fit=contain/f1780076158395x952389117805675600/Toulosue%20Darts%20Acad%C3%A9mie%20-%20Logo.png" />
<meta property="og:url" content="https://toulousedartsacademie.fr/article/1778660607939x405932775946846200" />
<meta property="og:type" content="website" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<script type="text/javascript">window._p = '{"id":"app_starter_2023","no_branding":true,"import_export_csv":true,"custom_domain":true}';</script>
<script type="text/javascript">window.bubble_page_name = "article";</script>
<script type="text/javascript">window.__bubble_module_mode = false;</script>
<link type="text/css" href="/package/run_css/de17b57638afeaa289233ce6f3031d5b0e8a6948a3f9f3bf5e3ed7eaef99328f/toulouse-darts-acadmie/live/article/xfalse/xfalse/run.css" rel="stylesheet">
<script type="text/javascript">
if (!window._bubble_page_load_data) {
window._bubble_page_load_data = {}
}
if (!window._bubble_page_load_data.js_execution_timings) {
window._bubble_page_load_data.js_execution_timings = {}
}
window._bubble_page_load_data.js_execution_timings['pre_run_js'] = Date.now();
</script>
<script type="text/javascript" crossorigin="anonymous" charset="UTF-8" src="/package/pre_run_jquery_js/dee903a9e36db713e4c86d0cdd96d921e37be0c1293ed8dee29e2e4d7713b9ff/pre_run_jquery.js"></script>
<script type="text/javascript" crossorigin="anonymous" charset="UTF-8" src="/package/run_js/d092a54e81bf6ba73b05c3babba90a58ebcc8729648ccca672682f6cc38a0a7c/xtrue/x33/run.js"></script>
<script type="text/javascript">
if (!window._bubble_page_load_data) {
window._bubble_page_load_data = {}
}
if (!window._bubble_page_load_data.js_execution_timings) {
window._bubble_page_load_data.js_execution_timings = {}
}
window._bubble_page_load_data.js_execution_timings['post_run_js'] = Date.now();
</script>
<script type="text/javascript">
if (!window._bubble_page_load_data) {
window._bubble_page_load_data = {}
}
if (!window._bubble_page_load_data.js_execution_timings) {
window._bubble_page_load_data.js_execution_timings = {}
}
window._bubble_page_load_data.js_execution_timings['pre_static_js'] = Date.now();
</script><script type="text/javascript" crossorigin="anonymous" charset="UTF-8" src="/package/static_js/fb7c10c2e059a49a29dba6a1b806c38ec4a148374adbd7253d0920604abe32d1/toulouse-darts-acadmie/live/article/xnull/xfalse/xfalse/xtrue/static.js"></script><script type="text/javascript">
if (!window._bubble_page_load_data) {
window._bubble_page_load_data = {}
}
if (!window._bubble_page_load_data.js_execution_timings) {
window._bubble_page_load_data.js_execution_timings = {}
}
window._bubble_page_load_data.js_execution_timings['post_static_js'] = Date.now();
</script>
<script type="text/javascript">
if (!window._bubble_page_load_data) {
window._bubble_page_load_data = {}
}
if (!window._bubble_page_load_data.js_execution_timings) {
window._bubble_page_load_data.js_execution_timings = {}
}
window._bubble_page_load_data.js_execution_timings['pre_dynamic_js'] = Date.now();
</script><script type="text/javascript" crossorigin="anonymous" charset="UTF-8" src="/package/dynamic_js/e60b8a03d4a31e8bdf2e1d7b3262e5e2e946f939970e6c3394bf459313a52eaa/toulouse-darts-acadmie/live/article/xnull/xfalse/xtrue/fr_fr/xfalse/xfalse/dynamic.js"></script><script type="text/javascript">
if (!window._bubble_page_load_data) {
window._bubble_page_load_data = {}
}
if (!window._bubble_page_load_data.js_execution_timings) {
window._bubble_page_load_data.js_execution_timings = {}
}
window._bubble_page_load_data.js_execution_timings['post_dynamic_js'] = Date.now();
</script>
<script type="text/javascript">window._bubble_page_load_data.js_execution_timings.plugin_js_start_execution = Date.now();</script>
<!-- 1658328157117x953686184769617900 -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/izitoast/1.4.0/css/iziToast.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/izitoast/1.4.0/js/iziToast.min.js" type="text/javascript"></script>
<!-- AAa -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/intl-tel-input@24.5.2/build/css/intlTelInput.css"><script src="https://cdn.jsdelivr.net/npm/intl-tel-input@24.5.2/build/js/intlTelInputWithUtils.min.js"></script>
<script type="text/javascript">window._bubble_page_load_data.js_execution_timings.plugin_js_end_execution = Date.now();</script>
<!-- custom page header -->
<title>Bull's Nicolas Thuillier 90% 21 gram | Boutique Fléchettes Toulouse Darts Académie</title>
<meta name="description" content="Les nouvelles fléchettes Bull Nicolas Thuillier 90 % sont conçues en collaboration avec le joueur professionnel français Nicolas Thuillier. Optimisées pour">
<meta name="keywords" content="Les nouvelles fléchettes Bull Nicolas Thuillier 90 % sont conçues en collaboration avec le joueur professionnel français Nicolas Thuillier. Optimisées pour la précision, la puissance et le contrôle, ces fléchettes sont idéales pour les joueurs exigeants qui recherchent la performance sur le pas de tir.Caractéristiques principales :Corps en tungstène de haute qualité : Fabriquée à partir de 90 % de tungstène de première qualité, cette fléchette offre un équilibre parfait entre durabilité et répartition du poids, garantissant des lancers fluides et réguliers. La densité du tungstène permet d’obtenir des corps plus fins, pour des groupements plus serrés et une réduction des rebonds, vous offrant ainsi un avantage compétitif.Prise en main et contrôle : La fléchette présente un motif de préhension finement travaillé qui améliore le contrôle à chaque lancer. Son corps droit, associé à des zones de préhension annulaires et à des parties sans préhension, lui confère un caractère unique et un équilibre parfait.Polyvalence : Disponible en pointes acier et en pointes souples. La canne Bull Nicolas Thuillier 90 % est proposée en 21 grammes pour les pointes acier et en 18 grammes pour les pointes souples.Conception professionnelle : Créée pour répondre aux exigences du joueur professionnel Nicolas Thuillier, cette fléchette est dotée d’un revêtement PCT turquoise et est livrée avec ses ailettes Player 100 Nicolas Thuillier 90 No.2.">
<link rel="canonical" href="https://toulousedartsacademie.fr/article/1778660607939x405932775946846200">
<meta name="robots" content="index, follow">
<meta http-equiv="Content-Language" content="fr">
<meta name="language" content="fr-FR">
<!-- Open Graph -->
<meta property="og:type" content="product">
<meta property="og:url" content="https://toulousedartsacademie.fr/boutique/1778660607939x405932775946846200">
<meta property="og:title" content="Bull's Nicolas Thuillier 90% 21 gram | Toulouse Darts Académie">
<meta property="og:description" content="Les nouvelles fléchettes Bull Nicolas Thuillier 90 % sont conçues en collaboration avec le joueur professionnel français Nicolas Thuillier. Optimisées pour">
<meta property="og:image" content="//bd1631dddb9a60cfb51bb8a70d4a9aae.cdn.bubble.io/f1778660654779x428678061198805440/bull-s-nicolas-thuillier-90-21-gram.jpg">
<meta property="og:site_name" content="Toulouse Darts Académie">
<meta property="og:locale" content="fr_FR">
<!-- Twitter / X -->
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Bull's Nicolas Thuillier 90% 21 gram | Toulouse Darts Académie">
<meta name="twitter:description" content="Les nouvelles fléchettes Bull Nicolas Thuillier 90 % sont conçues en collaboration avec le joueur professionnel français Nicolas Thuillier. Optimisées pour">
<meta name="twitter:image" content="//bd1631dddb9a60cfb51bb8a70d4a9aae.cdn.bubble.io/f1778660654779x428678061198805440/bull-s-nicolas-thuillier-90-21-gram.jpg">
<!-- JSON-LD Produit Boutique -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"@id": "https://toulousedartsacademie.fr/boutique/1778660607939x405932775946846200",
"name": "Bull's Nicolas Thuillier 90% 21 gram",
"url": "https://toulousedartsacademie.fr/boutique/1778660607939x405932775946846200",
"image": "//bd1631dddb9a60cfb51bb8a70d4a9aae.cdn.bubble.io/f1778660654779x428678061198805440/bull-s-nicolas-thuillier-90-21-gram.jpg",
"description": "Les nouvelles fléchettes Bull Nicolas Thuillier 90 % sont conçues en collaboration avec le joueur professionnel français Nicolas Thuillier. Optimisées pour la précision, la puissance et le contrôle, ces fléchettes sont idéales pour les joueurs exigeants qui recherchent la performance sur le pas de tir.
Caractéristiques principales :
Corps en tungstène de haute qualité : Fabriquée à partir de 90 % de tungstène de première qualité, cette fléchette offre un équilibre parfait entre durabilité et répartition du poids, garantissant des lancers fluides et réguliers. La densité du tungstène permet d’obtenir des corps plus fins, pour des groupements plus serrés et une réduction des rebonds, vous offrant ainsi un avantage compétitif.
Prise en main et contrôle : La fléchette présente un motif de préhension finement travaillé qui améliore le contrôle à chaque lancer. Son corps droit, associé à des zones de préhension annulaires et à des parties sans préhension, lui confère un caractère unique et un équilibre parfait.
Polyvalence : Disponible en pointes acier et en pointes souples. La canne Bull Nicolas Thuillier 90 % est proposée en 21 grammes pour les pointes acier et en 18 grammes pour les pointes souples.
Conception professionnelle : Créée pour répondre aux exigences du joueur professionnel Nicolas Thuillier, cette fléchette est dotée d’un revêtement PCT turquoise et est livrée avec ses ailettes Player 100 Nicolas Thuillier 90 No.2.",
"category": "SportingGoods",
"brand": {
"@type": "Brand",
"name": "Toulouse Darts Académie"
},
"offers": {
"@type": "Offer",
"url": "https://toulousedartsacademie.fr/boutique/1778660607939x405932775946846200",
"priceCurrency": "EUR",
"availability": "https://schema.org/InStock",
"seller": {
"@type": "Organization",
"@id": "https://toulousedartsacademie.fr/#organization",
"name": "Toulouse Darts Académie"
}
}
}
</script>
<!-- custom app meta header -->
<!-- Open Graph -->
<meta property="og:type" content="website">
<meta property="og:title" content="Toulouse Darts Académie | Première académie de fléchettes en France">
<meta property="og:description" content="Club associatif d’intérêt général dédié à la formation, à la compétition et au développement des fléchettes sportives à Toulouse.">
<meta property="og:url" content="https://toulousedartsacademie.fr">
<meta property="og:site_name" content="Toulouse Darts Académie">
<meta property="og:image" content="https://bd1631dddb9a60cfb51bb8a70d4a9aae.cdn.bubble.io/f1772461455250x237969645395305730/Toulouse%20darts%20acad%C3%A9mie.png">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta property="og:locale" content="fr_FR">
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-EHTQT6YGC4"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-EHTQT6YGC4');
</script>
<!-- Twitter Card -->
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Première académie de fléchettes en France – Toulouse">
<meta name="twitter:description" content="Formation, compétitions et développement des darts dans un cadre associatif et inclusif.">
<meta name="twitter:image" content="https://bd1631dddb9a60cfb51bb8a70d4a9aae.cdn.bubble.io/f1772461455250x237969645395305730/Toulouse%20darts%20acad%C3%A9mie.png">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": ["SportsOrganization", "NonprofitOrganization"],
"name": "Toulouse Darts Académie",
"alternateName": "Toulouse Darts",
"url": "https://toulousedartsacademie.fr",
"description": "Association d’intérêt général dédiée au développement, à la promotion et à la pratique des fléchettes sportives à Toulouse.",
"foundingDate": "2026",
"address": {
"@type": "PostalAddress",
"streetAddress": "72 Chemin Carrosse, Apt 1",
"addressLocality": "Toulouse",
"postalCode": "31400",
"addressCountry": "FR"
},
"sport": "Darts",
"areaServed": {
"@type": "Country",
"name": "France"
}
}
</script>
</head>
<body><script type="text/javascript">
window.addEventListener('DOMContentLoaded', function () {
if (window.appquery == null) {
(function() {
const html = `
<div class="error-card">
<div class="error-section">
<div class="error-title">Your browser was unable to load some necessary resources</div>
<div class="error-message">Contact your IT network administrator to allow access to:
• d3dqmih97rcqmh.cloudfront.net
• bd1631dddb9a60cfb51bb8a70d4a9aae.cdn.bubble.io/
• d1muf25xaso8hp.cloudfront.net</div>
</div>
</div>
`
const css = document.createElement('style')
css.type = 'text/css'
css.appendChild(
document.createTextNode(`
.error-overlay {
width: 100%;
height: 100%;
background: rgba(0,0,0,0.30);
overflow: hidden;
display: flex;
justify-content: center;
align-items: flex-start;
position: fixed;
inset: 0;
z-index: 999999;
}
.error-card {
width: 500px;
margin: 40px;
background: white;
box-shadow: 0px 1px 2px rgba(0,0,0,0.10);
border-radius: 8px;
display: flex;
flex-direction: column;
}
.error-section {
padding: 40px;
display: flex;
flex-direction: column;
gap: 12px;
}
.error-title {
color: #1A1A1A;
font-size: 18px;
font-family: Arial, sans-serif;
font-weight: 600;
line-height: 28px;
}
.error-message {
color: #525252;
font-size: 14px;
font-family: Arial, sans-serif;
font-weight: 400;
line-height: 20px;
white-space: pre-wrap;
}
`)
)
document.head.appendChild(css)
const container = document.createElement('div')
container.className = 'error-overlay'
container.innerHTML = html
document.body.appendChild(container)
})()
httpRequest = new XMLHttpRequest();
httpRequest.open('POST', '/user/m', true);
httpRequest.setRequestHeader('Content-Type', 'application/json');
httpRequest.send(JSON.stringify({measures: {page_load_error: 1, url: document.location.href, errors: window.load_error_log}}));
};
});
</script><script>
(function () {
// Inject ripple CSS once
if (!document.getElementById('ripple-style')) {
const style = document.createElement("style");
style.id = "ripple-style";
style.innerHTML = `
.ripple-circle {
position: absolute;
border-radius: 50%;
transform: scale(0);
animation: ripple-animation 600ms linear;
background-color: var(--color_success_default);
pointer-events: none;
}
@keyframes ripple-animation {
to {
transform: scale(4);
opacity: 0;
}
}
`;
document.head.appendChild(style);
}
// Listen to all clicks
document.addEventListener('click', function (e) {
const id = e.target.closest('[id^="anim"]')?.id;
if (!id) return;
const target = document.getElementById(id);
if (!target) return;
// Ensure ripple container is ready
target.style.position = 'relative';
target.style.overflow = 'hidden';
const rect = target.getBoundingClientRect();
const size = Math.max(rect.width, rect.height);
const ripple = document.createElement('span');
ripple.classList.add('ripple-circle');
ripple.style.width = ripple.style.height = size + 'px';
ripple.style.left = (e.clientX - rect.left - size / 2) + 'px';
ripple.style.top = (e.clientY - rect.top - size / 2) + 'px';
ripple.style.zIndex = '999';
target.appendChild(ripple);
setTimeout(() => ripple.remove(), 600);
});
})();
</script><script type="text/javascript">window.addEventListener('DOMContentLoaded', function () {if (window.appquery && window.app == null) {(function() {
const html = `
<div class="error-card">
<div class="error-section">
<div class="error-title">Your browser was unable to load the application</div>
<div class="error-message">We've been notified of the issue. Please try again in a few moments and make sure not to use ad-blockers.</div>
</div>
</div>
`
const css = document.createElement('style')
css.type = 'text/css'
css.appendChild(
document.createTextNode(`
.error-overlay {
width: 100%;
height: 100%;
background: rgba(0,0,0,0.30);
overflow: hidden;
display: flex;
justify-content: center;
align-items: flex-start;
position: fixed;
inset: 0;
z-index: 999999;
}
.error-card {
width: 500px;
margin: 40px;
background: white;
box-shadow: 0px 1px 2px rgba(0,0,0,0.10);
border-radius: 8px;
display: flex;
flex-direction: column;
}
.error-section {
padding: 40px;
display: flex;
flex-direction: column;
gap: 12px;
}
.error-title {
color: #1A1A1A;
font-size: 18px;
font-family: Arial, sans-serif;
font-weight: 600;
line-height: 28px;
}
.error-message {
color: #525252;
font-size: 14px;
font-family: Arial, sans-serif;
font-weight: 400;
line-height: 20px;
white-space: pre-wrap;
}
`)
)
document.head.appendChild(css)
const container = document.createElement('div')
container.className = 'error-overlay'
container.innerHTML = html
document.body.appendChild(container)
})()}});</script>
<img style="display: none;" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" />
</body>
</html>