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
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
Nos couloirs d'expertise

Des services pensés pour
votre croissance

De l'analyse stratégique à la mise en œuvre digitale, nous couvrons l'ensemble de votre trajectoire 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.

AuditExpression besoinStraté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.

WebUX / UISEO
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é.

LogoCharte graphiqueBranding
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.

FormationAgileAccompagnement
.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}
Digital Tower
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étierExpression des besoinsConduite du changementUX / UI DesignDéveloppement WebSEO & PerformanceBranding & LogoMéthodes AgilesFormation

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.

Investissement

Des formules adaptées à votre projet

Transparence totale. Chaque mission cadrée clairement pour un retour sur investissement mesurable.

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
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
Contact

Parlons de votre projet

Premier échange sans engagement. Réponse garantie sous 24h pour étudier ensemble votre trajectoire digitale.

digitaltower.fr
France — présentiel & à distance
Réponse sous 24h ouvrées garantie
Premier échange 100% gratuit
Sélectionner un serviceAudit & Analyse des besoinsCréation de site internetIdentité visuelle & logoFormationProjet global completAutre
✓ Message envoyé ! Je vous réponds sous 24h ouvrées. À très vite !
/* 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')}); });