Digital Tower – Expert Business Analyst & Digital
*{margin:0;padding:0;box-sizing:border-box}
:root{
--gold:#C9A84C;--gold-light:#E8C96A;--gold-pale:#F5E6B8;
--black:#0A0A0A;--dark:#0d0d0d;--dark2:#1A1A1A;--dark3:#242424;
--text:#E8E8E8;--muted:#888;--border:rgba(201,168,76,.2);
--font-t:'Playfair Display',serif;--font-b:'DM Sans',sans-serif;
}
html{scroll-behavior:smooth}
body{background:var(--black);color:var(--text);font-family:var(--font-b);-webkit-font-smoothing:antialiased;overflow-x:hidden}
/* CURSOR */
.dt-cursor{width:20px;height:20px;border:1px solid rgba(201,168,76,.6);border-radius:50%;position:fixed;pointer-events:none;z-index:99999;transition:transform .1s;mix-blend-mode:screen}
.dt-cursor-dot{width:4px;height:4px;background:var(--gold);border-radius:50%;position:fixed;pointer-events:none;z-index:99999;transform:translate(-50%,-50%)}
/* NAV */
.dt-nav{position:sticky;top:0;z-index:9999;background:rgba(7,7,7,.93);border-bottom:1px solid var(--border);backdrop-filter:blur(16px);transition:box-shadow .3s}
.dt-nav.scrolled{box-shadow:0 4px 40px rgba(201,168,76,.07)}
.dt-nav-inner{max-width:1140px;margin:0 auto;padding:.9rem 2rem;display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap}
.dt-nav-logo img{height:44px;width:auto;mix-blend-mode:lighten;transition:opacity .2s}
.dt-nav-logo img:hover{opacity:.85}
.dt-nav-links{display:flex;gap:2.5rem;list-style:none}
.dt-nav-links a{color:var(--muted);font-size:.76rem;letter-spacing:2px;text-transform:uppercase;text-decoration:none;position:relative;transition:color .2s}
.dt-nav-links a::after{content:'';position:absolute;bottom:-4px;left:0;width:0;height:1px;background:var(--gold);transition:width .3s}
.dt-nav-links a:hover{color:var(--gold)}
.dt-nav-links a:hover::after{width:100%}
.dt-nav-cta{background:var(--gold);color:var(--black);padding:.55rem 1.4rem;font-size:.75rem;font-weight:500;letter-spacing:1.5px;text-transform:uppercase;text-decoration:none;transition:background .25s;position:relative;overflow:hidden}
.dt-nav-cta::before{content:'';position:absolute;top:0;left:-100%;width:100%;height:100%;background:rgba(255,255,255,.15);transition:left .3s}
.dt-nav-cta:hover::before{left:100%}
.dt-nav-cta:hover{background:var(--gold-light)}
.dt-nav-hamburger{display:none;background:none;border:1px solid var(--border);color:var(--gold);padding:.4rem .75rem;font-size:1.1rem;cursor:pointer}
/* HERO */
.dt-hero-wrap{position:relative;min-height:100vh;display:flex;align-items:center;border-bottom:1px solid var(--border);overflow:hidden;background:#070707}
#radarCanvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:0}
.dt-hero-wrap::after{content:'';position:absolute;inset:0;background:radial-gradient(ellipse 75% 75% at 65% 50%,transparent 30%,rgba(7,7,7,.7) 65%,rgba(7,7,7,.97) 100%);z-index:1;pointer-events:none}
.dt-hero{max-width:1140px;margin:0 auto;padding:6rem 2rem;display:grid;grid-template-columns:1.1fr .9fr;gap:5rem;align-items:center;position:relative;z-index:2}
.dt-hero-badge{display:inline-flex;align-items:center;gap:.75rem;border:1px solid rgba(201,168,76,.5);color:var(--gold);font-size:.65rem;letter-spacing:3px;text-transform:uppercase;padding:.45rem 1.1rem;margin-bottom:2rem;animation:fadeSlideDown .8s ease both;background:rgba(201,168,76,.05)}
.dt-hero-badge::before{content:'';width:6px;height:6px;background:var(--gold);border-radius:50%;animation:blink 1.8s ease-in-out infinite}
@keyframes blink{0%,100%{opacity:1;box-shadow:0 0 6px var(--gold)}50%{opacity:.15;box-shadow:none}}
@keyframes fadeSlideDown{from{opacity:0;transform:translateY(-16px)}to{opacity:1;transform:translateY(0)}}
.dt-hero-title{font-family:var(--font-t);font-size:clamp(2.2rem,5vw,3.6rem);line-height:1.1;color:#fff;margin-bottom:1.5rem;overflow:hidden}
.dt-hero-title .line{display:block;animation:revealLine .9s cubic-bezier(.16,1,.3,1) both}
.dt-hero-title .line:nth-child(1){animation-delay:.3s}
.dt-hero-title .line:nth-child(2){animation-delay:.5s;color:var(--gold)}
@keyframes revealLine{from{opacity:0;transform:translateY(110%)}to{opacity:1;transform:translateY(0)}}
.dt-hero-desc{color:var(--muted);line-height:1.9;font-size:.97rem;margin-bottom:2.5rem;animation:fadeUp .9s ease .7s both;max-width:520px}
.dt-hero-btns{display:flex;gap:1rem;flex-wrap:wrap;animation:fadeUp .9s ease .8s both}
@keyframes fadeUp{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}
/* HUD radar */
.dt-radar-hud{position:absolute;bottom:2.5rem;left:2rem;z-index:3;display:flex;flex-direction:column;gap:.5rem;animation:fadeUp 1s ease 1.2s both}
.dt-hud-line{font-size:.65rem;letter-spacing:2.5px;text-transform:uppercase;color:rgba(201,168,76,.5);display:flex;align-items:center;gap:.6rem;font-family:'DM Sans',sans-serif}
.dt-hud-dot{width:5px;height:5px;border-radius:50%;background:var(--gold);animation:blink 2s ease-in-out infinite}
.dt-hud-dot.delay{animation-delay:.6s}
.dt-hud-dot.delay2{animation-delay:1.2s}
/* BUTTONS */
.dt-btn-primary{display:inline-block;background:var(--gold);color:var(--black);padding:.9rem 2rem;font-weight:500;font-size:.78rem;letter-spacing:2px;text-transform:uppercase;text-decoration:none;position:relative;overflow:hidden;transition:all .25s;border:none;cursor:pointer}
.dt-btn-primary:hover{background:var(--gold-light)}
.dt-btn-secondary{display:inline-block;background:rgba(201,168,76,.06);color:var(--gold);border:1px solid rgba(201,168,76,.4);padding:.9rem 2rem;font-size:.78rem;letter-spacing:2px;text-transform:uppercase;text-decoration:none;transition:all .25s}
.dt-btn-secondary:hover{background:rgba(201,168,76,.12);border-color:var(--gold)}
/* STATS */
.dt-hero-stats{display:flex;flex-direction:column;gap:1rem;animation:fadeUp .9s ease .6s both}
.dt-stat-card{background:rgba(10,10,10,.7);border:1px solid var(--border);padding:1.4rem 1.75rem;display:flex;align-items:center;gap:1.5rem;transition:all .3s;position:relative;overflow:hidden;backdrop-filter:blur(8px)}
.dt-stat-card::before{content:'';position:absolute;left:0;top:0;width:3px;height:0;background:var(--gold);transition:height .4s}
.dt-stat-card:hover{border-color:rgba(201,168,76,.5);transform:translateX(6px)}
.dt-stat-card:hover::before{height:100%}
.dt-stat-num{font-family:var(--font-t);font-size:2.6rem;color:var(--gold);font-weight:700;line-height:1;min-width:90px}
.dt-stat-label{font-size:.78rem;color:var(--muted);letter-spacing:1px;line-height:1.5}
/* UTILS */
.dt-divider{height:1px;background:linear-gradient(90deg,transparent,var(--gold),transparent);opacity:.2}
.dt-section{max-width:1140px;margin:0 auto;padding:5.5rem 2rem;position:relative;z-index:1}
.dt-section-header{text-align:center;margin-bottom:4rem}
.dt-tag{display:inline-block;font-size:.66rem;letter-spacing:4px;text-transform:uppercase;color:var(--gold);margin-bottom:1rem}
.dt-h2{font-family:var(--font-t);font-size:clamp(1.7rem,3.5vw,2.5rem);line-height:1.2;color:#fff;font-weight:700}
.dt-lead{color:var(--muted);line-height:1.85;font-size:.95rem}
.dt-pill{display:inline-block;font-size:.65rem;letter-spacing:1.5px;text-transform:uppercase;border:1px solid var(--border);color:var(--gold);padding:.25rem .85rem;transition:all .2s}
/* REVEAL */
.reveal{opacity:0;transform:translateY(30px);transition:opacity .7s ease,transform .7s ease}
.reveal.visible{opacity:1;transform:translateY(0)}
.reveal-left{opacity:0;transform:translateX(-30px);transition:opacity .7s ease,transform .7s ease}
.reveal-left.visible{opacity:1;transform:translateX(0)}
.reveal-right{opacity:0;transform:translateX(30px);transition:opacity .7s ease,transform .7s ease}
.reveal-right.visible{opacity:1;transform:translateX(0)}
.delay-1{transition-delay:.1s}.delay-2{transition-delay:.2s}.delay-3{transition-delay:.3s}.delay-4{transition-delay:.4s}
/* SERVICES */
.dt-services-bg{background:var(--dark)}
.dt-services-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:2px;background:var(--border)}
.dt-service-card{background:var(--dark2);padding:2.75rem 2.25rem;position:relative;overflow:hidden;transition:background .3s}
.dt-service-card::after{content:'';position:absolute;bottom:0;left:0;width:0;height:2px;background:var(--gold);transition:width .4s}
.dt-service-card:hover{background:var(--dark3)}
.dt-service-card:hover::after{width:100%}
.dt-service-card:hover .dt-pill{border-color:rgba(201,168,76,.5);background:rgba(201,168,76,.06)}
.dt-service-num{font-family:var(--font-t);font-size:3.5rem;color:rgba(201,168,76,.1);font-weight:700;line-height:1;margin-bottom:1.25rem;transition:color .3s}
.dt-service-card:hover .dt-service-num{color:rgba(201,168,76,.25)}
.dt-service-card h3{font-family:var(--font-t);font-size:1.1rem;color:#fff;margin-bottom:.85rem;font-weight:400}
.dt-service-card .dt-lead{font-size:.87rem;margin-bottom:1.75rem}
.dt-service-tags{display:flex;flex-wrap:wrap;gap:.5rem}
/* ABOUT */
.dt-about-grid{display:grid;grid-template-columns:1fr 1.6fr;gap:5rem;align-items:center}
.dt-about-visual{background:var(--dark2);border:1px solid var(--border);padding:3.5rem 2rem;text-align:center;position:relative;overflow:hidden}
.dt-about-visual::before{content:'';position:absolute;top:-50%;left:-50%;width:200%;height:200%;background:radial-gradient(circle at center,rgba(201,168,76,.04) 0%,transparent 60%);animation:rotateBg 12s linear infinite}
@keyframes rotateBg{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}
.dt-about-initial{font-family:var(--font-t);font-size:7rem;color:var(--gold);opacity:.2;line-height:1;font-weight:700;transition:opacity .3s}
.dt-about-visual:hover .dt-about-initial{opacity:.35}
.dt-about-name{font-family:var(--font-t);font-size:1.6rem;color:#fff;margin-top:1.25rem;font-weight:700}
.dt-about-role{font-size:.65rem;letter-spacing:4px;text-transform:uppercase;color:var(--gold);margin-top:.5rem}
.dt-competences{display:flex;flex-wrap:wrap;gap:.65rem;margin-top:2rem}
.dt-competence{background:rgba(201,168,76,.06);border:1px solid var(--border);color:var(--gold-pale);font-size:.7rem;padding:.4rem 1rem;letter-spacing:1px;transition:all .2s}
.dt-competence:hover{background:rgba(201,168,76,.14);border-color:rgba(201,168,76,.5);transform:translateY(-2px)}
/* TARIFS */
.dt-tarifs-bg{background:var(--dark)}
.dt-pricing-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:2px;background:var(--border)}
.dt-pricing-card{background:var(--dark2);padding:2.75rem 2rem;display:flex;flex-direction:column;position:relative;transition:background .3s,transform .3s}
.dt-pricing-card:hover{background:var(--dark3);transform:translateY(-4px)}
.dt-pricing-card.featured{background:var(--dark3)}
.dt-pricing-card.featured::before{content:'RECOMMANDÉ';position:absolute;top:0;left:50%;transform:translate(-50%,-1px);background:var(--gold);color:var(--black);font-size:.58rem;letter-spacing:2.5px;padding:.3rem 1.1rem;font-weight:500;white-space:nowrap}
.dt-pricing-tier{font-size:.66rem;letter-spacing:3px;text-transform:uppercase;color:var(--gold);margin-bottom:1rem}
.dt-pricing-price{font-family:var(--font-t);font-size:2rem;color:#fff;line-height:1.2}
.dt-pricing-price span{font-size:.88rem;color:var(--muted);font-family:var(--font-b)}
.dt-pricing-sep{height:1px;background:var(--border);margin:1.25rem 0}
.dt-pricing-desc{font-size:.84rem;color:var(--muted);line-height:1.7;margin-bottom:1.75rem;flex:1}
.dt-pricing-features{list-style:none;margin-bottom:2rem}
.dt-pricing-features li{font-size:.84rem;color:var(--text);padding:.55rem 0;border-bottom:1px solid rgba(255,255,255,.04);display:flex;gap:.85rem;align-items:flex-start}
.dt-pricing-features li::before{content:'—';color:var(--gold);flex-shrink:0}
/* CONTACT */
.dt-contact-grid{display:grid;grid-template-columns:1fr 1.6fr;gap:5rem;align-items:start}
.dt-contact-detail{display:flex;gap:1rem;align-items:center;margin-bottom:1rem;transition:transform .2s}
.dt-contact-detail:hover{transform:translateX(6px)}
.dt-contact-dot{width:7px;height:7px;background:var(--gold);flex-shrink:0;transition:transform .2s}
.dt-contact-detail:hover .dt-contact-dot{transform:scale(1.5)}
.dt-contact-detail span{font-size:.87rem;color:var(--muted)}
.dt-form{display:flex;flex-direction:column;gap:1.25rem}
.dt-form-row{display:grid;grid-template-columns:1fr 1fr;gap:1.25rem}
.dt-form-group{display:flex;flex-direction:column;gap:.5rem}
.dt-form-label{font-size:.66rem;letter-spacing:2.5px;text-transform:uppercase;color:var(--gold)}
.dt-form-group input,.dt-form-group select,.dt-form-group textarea{background:var(--dark2);border:1px solid var(--border);color:var(--text);padding:.85rem 1rem;font-family:var(--font-b);font-size:.9rem;outline:none;transition:border-color .2s,background .2s;width:100%;-webkit-appearance:none;appearance:none}
.dt-form-group input::placeholder,.dt-form-group textarea::placeholder{color:var(--muted);opacity:.6}
.dt-form-group input:focus,.dt-form-group select:focus,.dt-form-group textarea:focus{border-color:var(--gold);background:#1f1f1f}
.dt-form-group select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%23C9A84C' fill='none' stroke-width='1.5' stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 1rem center;padding-right:2.5rem;cursor:pointer}
.dt-form-group select option{background:#1A1A1A;color:var(--text)}
.dt-form-group textarea{resize:vertical;min-height:130px}
.dt-form-confirm{display:none;background:rgba(201,168,76,.08);border:1px solid var(--gold);color:var(--gold-pale);padding:1rem 1.25rem;font-size:.88rem;line-height:1.7}
/* FOOTER */
.dt-footer{background:var(--dark);border-top:1px solid var(--border)}
.dt-footer-inner{max-width:1140px;margin:0 auto;padding:2.5rem 2rem;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:1rem}
.dt-footer-logo img{height:34px;width:auto;mix-blend-mode:lighten;opacity:.8;transition:opacity .2s}
.dt-footer-logo img:hover{opacity:1}
.dt-footer-copy{font-size:.73rem;color:var(--muted)}
.dt-footer-links{display:flex;gap:1.5rem;list-style:none}
.dt-footer-links a{font-size:.73rem;color:var(--muted);text-decoration:none;letter-spacing:1px;transition:color .2s}
.dt-footer-links a:hover{color:var(--gold)}
/* RESPONSIVE */
@media(max-width:900px){
.dt-hero{grid-template-columns:1fr;gap:3rem;padding:4rem 1.5rem 3rem}
.dt-services-grid,.dt-pricing-grid{grid-template-columns:1fr}
.dt-about-grid,.dt-contact-grid{grid-template-columns:1fr;gap:2.5rem}
.dt-form-row{grid-template-columns:1fr}
.dt-nav-links{display:none;flex-direction:column;gap:1rem;width:100%;padding:1rem 0}
.dt-nav-links.open{display:flex}
.dt-nav-hamburger{display:block}
#radarCanvas{opacity:.35}
.dt-radar-hud{display:none}
}
@media(min-width:901px){.dt-nav-hamburger{display:none}}
Business Analyst · Expert Digital
Sécurisez votre
trajectoire digitale
Analyse de besoins, expression métier, architecture web et identité visuelle — un pilotage expert pour transformer vos ambitions en réalité digitale mesurable.
0%
Orienté résultats business concrets
0
Pôles d'expertise complémentaires
0°
Vision digitale intégrée
Radar actif — scanning en cours
Fréquence : 2.4 GHz · portée 360°
Cibles détectées : opportunités business
01
Audit & Analyse des besoins Diagnostic complet de vos processus métier. Expression formalisée des besoins (cahier des charges, user stories). Plan d'action priorisé pour une rentabilité maximale.
Audit Expression besoin Stratégie
02
Création de site internet Conception de sites web vitrine, e-commerce ou applicatifs. UX/UI pensée pour la conversion. Développement optimisé SEO et performances techniques.
Web UX / UI SEO
03
Identité visuelle & branding Création de logo, charte graphique et kit de marque complet. Une identité cohérente et mémorable qui reflète votre positionnement marché.
Logo Charte graphique Branding
04
Formation & accompagnement Formations sur mesure en outils digitaux, méthodes agiles et analyse métier. Montée en compétence durable de vos équipes.
Formation Agile Accompagnement
.dt-about-monogram{position:relative;display:flex;align-items:center;justify-content:center;padding:3.5rem 2rem}
.dt-about-monogram svg{width:200px;height:200px;filter:drop-shadow(0 0 32px rgba(201,168,76,.18))}
.dt-about-monogram::before{content:'';position:absolute;top:-50%;left:-50%;width:200%;height:200%;background:radial-gradient(circle at center,rgba(201,168,76,.05) 0%,transparent 65%);animation:rotateBg 14s linear infinite;pointer-events:none}
.dt-about-ring{position:absolute;width:240px;height:240px;border:1px solid rgba(201,168,76,.12);border-radius:50%;animation:pulsRing 3s ease-in-out infinite}
.dt-about-ring2{position:absolute;width:280px;height:280px;border:1px solid rgba(201,168,76,.06);border-radius:50%;animation:pulsRing 3s ease-in-out infinite .8s}
@keyframes pulsRing{0%,100%{transform:scale(1);opacity:.6}50%{transform:scale(1.04);opacity:1}}
.dt-about-card{background:var(--dark2);border:1px solid var(--border);padding:3.5rem 2.5rem;position:relative;overflow:hidden;display:flex;flex-direction:column;gap:0;align-items:center}
.dt-about-card::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,transparent,var(--gold),transparent)}
/* Piliers équipe */
.dt-pillars{display:grid;grid-template-columns:repeat(3,1fr);gap:2px;background:var(--border);margin-top:2.5rem}
.dt-pillar{background:var(--dark2);padding:1.5rem 1.25rem;text-align:center;transition:background .25s}
.dt-pillar:hover{background:var(--dark3)}
.dt-pillar-icon{font-size:1.4rem;margin-bottom:.75rem;display:block}
.dt-pillar-title{font-family:var(--font-t);font-size:.95rem;color:#fff;margin-bottom:.4rem;font-weight:400}
.dt-pillar-desc{font-size:.78rem;color:var(--muted);line-height:1.6}
Business Analysts & Accompagnement au changement
Qui sommes-nous
Une équipe qui fait le lien entre besoin business et faisabilité digitale
Chez Digital Tower, nous sommes une équipe de Business Analysts et experts en accompagnement au changement , passionnés par la transformation des organisations.
Notre force : savoir traduire des besoins métier complexes en solutions digitales concrètes et faisables. Nous faisons le pont entre vos équipes business, vos contraintes techniques et vos ambitions digitales.
Chaque mission commence par l'écoute, s'ancre dans l'analyse et se conclut par des livrables actionnables — du cahier des charges à la mise en production.
Analyse métier Expression des besoins Conduite du changement UX / UI Design Développement Web SEO & Performance Branding & Logo Méthodes Agiles Formation
Nouveau — diagnostic gratuit
Vous ne savez pas par où commencer ?
Répondez à notre questionnaire intelligent en 5 minutes et recevez une analyse personnalisée de vos besoins digitaux générée par notre expertise Business Analyst.
Lancer mon diagnostic gratuit →
◈
Besoin business
Nous captons et formalisons vos enjeux métier avec précision — cahiers des charges, user stories, process maps.
⟷
Le lien stratégique
Nous évaluons la faisabilité, arbitrons les priorités et traduisons les besoins en solutions digitales réalistes.
◎
Faisabilité digitale
Nous livrons des solutions web, des identités visuelles et des formations alignées sur vos contraintes réelles.
Découverte
Sur devis / mission
Idéal pour un besoin ponctuel ou une première collaboration ciblée.
Audit initial (2h d'échange) Rapport de recommandations 1 livrable au choix Support email 15 jours Demander un devis
Expertise
Sur devis / projet
Accompagnement complet : analyse, conception et mise en œuvre pour une transformation durable.
Audit & expression des besoins Création site web ou identité visuelle Accompagnement sur mesure Révisions illimitées incluses Support prioritaire 30 jours Demander un devis
Formation
Sur devis / session
Formations inter/intra-entreprise, personnalisées selon vos objectifs et contraintes.
Programme 100% sur mesure Supports de formation inclus Présentiel ou distanciel Certification possible Demander un devis
/* RADAR */
(function(){
var canvas=document.getElementById('radarCanvas'),ctx=canvas.getContext('2d');
var W,H,cx,cy,R,angle=0,blips=[];
function resize(){
W=canvas.width=canvas.offsetWidth||window.innerWidth;
H=canvas.height=canvas.offsetHeight||window.innerHeight;
cx=W*0.62; cy=H*0.5; R=Math.min(W,H)*0.42;
blips=[];
for(var i=0;i.6});
}
}
resize(); window.addEventListener('resize',resize);
function draw(){
ctx.clearRect(0,0,W,H);
var grd=ctx.createRadialGradient(cx,cy,0,cx,cy,R);
grd.addColorStop(0,'rgba(201,168,76,.04)');grd.addColorStop(.6,'rgba(201,168,76,.015)');grd.addColorStop(1,'rgba(201,168,76,0)');
ctx.beginPath();ctx.arc(cx,cy,R,0,Math.PI*2);ctx.fillStyle=grd;ctx.fill();
[.25,.5,.75,1].forEach(function(f){ctx.beginPath();ctx.arc(cx,cy,R*f,0,Math.PI*2);ctx.strokeStyle='rgba(201,168,76,'+(f===1?.18:.09)+')';ctx.lineWidth=f===1?1:.5;ctx.stroke()});
[0,Math.PI/4,Math.PI/2,Math.PI*3/4].forEach(function(a){ctx.beginPath();ctx.moveTo(cx+Math.cos(a)*R,cy+Math.sin(a)*R);ctx.lineTo(cx-Math.cos(a)*R,cy-Math.sin(a)*R);ctx.strokeStyle='rgba(201,168,76,.07)';ctx.lineWidth=.5;ctx.stroke()});
for(var i=0;i<72;i++){var a2=(i/72)*Math.PI*2,inner=i%9===0?R-10:i%3===0?R-6:R-3;ctx.beginPath();ctx.moveTo(cx+Math.cos(a2)*inner,cy+Math.sin(a2)*inner);ctx.lineTo(cx+Math.cos(a2)*R,cy+Math.sin(a2)*R);ctx.strokeStyle='rgba(201,168,76,'+(i%9===0?.25:.1)+')';ctx.lineWidth=i%9===0?1:.5;ctx.stroke()}
var tl=Math.PI*.55,steps=80;
for(var s=0;s<steps;s++){var a3=angle-(s/steps)*tl;ctx.beginPath();ctx.moveTo(cx,cy);ctx.arc(cx,cy,R*.98,a3,a3+tl/steps);ctx.lineTo(cx,cy);ctx.fillStyle='rgba(201,168,76,'+(1-s/steps)*.22+')';ctx.fill()}
ctx.beginPath();ctx.moveTo(cx,cy);ctx.lineTo(cx+Math.cos(angle)*R,cy+Math.sin(angle)*R);
var sg=ctx.createLinearGradient(cx,cy,cx+Math.cos(angle)*R,cy+Math.sin(angle)*R);sg.addColorStop(0,'rgba(201,168,76,0)');sg.addColorStop(.4,'rgba(201,168,76,.3)');sg.addColorStop(1,'rgba(201,168,76,.9)');ctx.strokeStyle=sg;ctx.lineWidth=2;ctx.stroke();
ctx.beginPath();ctx.arc(cx,cy,4,0,Math.PI*2);ctx.fillStyle='#C9A84C';ctx.fill();
ctx.beginPath();ctx.arc(cx,cy,10,0,Math.PI*2);ctx.strokeStyle='rgba(201,168,76,.3)';ctx.lineWidth=1;ctx.stroke();
blips.forEach(function(b){
var diff=((angle-b.a)%(Math.PI*2)+Math.PI*2)%(Math.PI*2);
if(diff<.06){b.alive=true;b.age=0}
if(!b.alive)return;
b.age+=.012;
var life=Math.max(0,1-b.age*.38);
if(life.3){var s2=8;ctx.beginPath();ctx.moveTo(b.x-s2,b.y);ctx.lineTo(b.x+s2,b.y);ctx.moveTo(b.x,b.y-s2);ctx.lineTo(b.x,b.y+s2);ctx.strokeStyle='rgba(201,168,76,'+(life*.5)+')';ctx.lineWidth=.75;ctx.stroke()}
});
ctx.font='10px "DM Sans",monospace';ctx.fillStyle='rgba(201,168,76,.2)';
ctx.textAlign='center';ctx.fillText('N',cx,cy-R-8);ctx.fillText('S',cx,cy+R+14);
ctx.textAlign='left';ctx.fillText('E',cx+R+6,cy+4);ctx.textAlign='right';ctx.fillText('O',cx-R-6,cy+4);
ctx.textAlign='left';ctx.fillStyle='rgba(201,168,76,.15)';
['25%','50%','75%','100%'].forEach(function(t,i){ctx.fillText(t,cx+4,cy-R*(i+1)/4-2)});
angle+=.008; if(angle>Math.PI*2)angle-=Math.PI*2;
requestAnimationFrame(draw);
}
draw();
})();
/* CURSEUR */
(function(){
var cur=document.getElementById('dtCursor'),dot=document.getElementById('dtCursorDot'),mx=0,my=0,cx2=0,cy2=0;
document.addEventListener('mousemove',function(e){mx=e.clientX;my=e.clientY;dot.style.left=mx+'px';dot.style.top=my+'px'});
function anim(){cx2+=(mx-cx2)*.12;cy2+=(my-cy2)*.12;cur.style.left=(cx2-10)+'px';cur.style.top=(cy2-10)+'px';requestAnimationFrame(anim)}
anim();
document.querySelectorAll('a,button,.dt-service-card,.dt-stat-card').forEach(function(el){
el.addEventListener('mouseenter',function(){cur.style.transform='scale(2)';cur.style.borderColor='rgba(201,168,76,.9)'});
el.addEventListener('mouseleave',function(){cur.style.transform='scale(1)';cur.style.borderColor='rgba(201,168,76,.6)'});
});
})();
/* NAV SCROLL */
window.addEventListener('scroll',function(){document.getElementById('dtNav').classList.toggle('scrolled',window.scrollY>50)});
/* SCROLL REVEAL */
(function(){
var obs=new IntersectionObserver(function(entries){entries.forEach(function(e){if(e.isIntersecting)e.target.classList.add('visible')})},{threshold:.12});
document.querySelectorAll('.reveal,.reveal-left,.reveal-right').forEach(function(el){obs.observe(el)});
})();
/* COMPTEURS */
(function(){
var obs=new IntersectionObserver(function(entries){
entries.forEach(function(e){
if(!e.isIntersecting)return;
var el=e.target,target=+el.dataset.count,suffix=el.dataset.suffix||'',t0=null,dur=1600;
function step(ts){if(!t0)t0=ts;var p=Math.min((ts-t0)/dur,1);el.textContent=Math.round(p*target)+suffix;if(p<1)requestAnimationFrame(step)}
requestAnimationFrame(step);obs.unobserve(el);
});
},{threshold:.5});
document.querySelectorAll('[data-count]').forEach(function(el){obs.observe(el)});
})();
/* FORMULAIRE */
function dtSubmit(e){
e.preventDefault();
var btn=e.target.querySelector('button[type=submit]');
btn.textContent='Envoi…';btn.disabled=true;
setTimeout(function(){document.getElementById('dtForm').style.display='none';document.getElementById('dtConfirm').style.display='block'},1200);
}
/* MENU MOBILE */
document.querySelectorAll('.dt-nav-links a').forEach(function(a){
a.addEventListener('click',function(){document.querySelector('.dt-nav-links').classList.remove('open')});
});