148 lines
13 KiB
HTML
148 lines
13 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="fr">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||
<title>{{PAGE_TITLE}}</title>
|
||
<link href="https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700;800;900&family=IBM+Plex+Mono:wght@400;500;600;700&display=swap" rel="stylesheet">
|
||
<style>
|
||
:root{--bg:#080a10;--sf:rgba(255,255,255,.03);--bd:rgba(255,255,255,.06);--tx:#eef0f4;--t2:rgba(255,255,255,.5);--t3:rgba(255,255,255,.22);--ac:#4f7df9;--cy:#22d3ee;--gr:#10b981;--or:#f59e0b;--pu:#a78bfa;--pk:#f472b6}
|
||
*{margin:0;padding:0;box-sizing:border-box}
|
||
html,body{height:100%;overflow:hidden;font-family:'Outfit',system-ui;background:var(--bg);color:var(--tx)}
|
||
.dk{position:relative;width:100vw;height:100vh}
|
||
.sl{position:absolute;inset:0;opacity:0;pointer-events:none;transition:opacity .7s cubic-bezier(.4,0,.2,1);display:flex;flex-direction:column;overflow:hidden}
|
||
.sl.on{opacity:1;pointer-events:all}
|
||
.gl{background:var(--sf);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid var(--bd);border-radius:14px}
|
||
.gl2{background:var(--sf);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border:1px solid var(--bd);border-radius:8px}
|
||
.nv{position:fixed;bottom:10px;left:50%;transform:translateX(-50%);z-index:200;display:flex;align-items:center;gap:5px;background:rgba(8,10,16,.9);backdrop-filter:blur(20px);border:1px solid var(--bd);border-radius:100px;padding:4px 12px}
|
||
.dot{width:7px;height:7px;border-radius:50%;background:rgba(255,255,255,.1);border:none;cursor:pointer;transition:.3s}
|
||
.dot.on{background:var(--cy);box-shadow:0 0 10px rgba(34,211,238,.5)}
|
||
.abtn{background:none;border:1px solid var(--bd);color:var(--t3);border-radius:50%;width:22px;height:22px;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:10px;transition:.3s}
|
||
.abtn:hover{border-color:var(--cy);color:var(--cy)}
|
||
@keyframes pu{0%,100%{opacity:1}50%{opacity:.3}}
|
||
@keyframes cntUp{0%{opacity:0;transform:scale(.6) translateY(30px)}60%{transform:scale(1.02) translateY(-4px)}100%{opacity:1;transform:scale(1) translateY(0)}}
|
||
@keyframes fUp{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}
|
||
@keyframes glw{0%,100%{box-shadow:0 0 15px rgba(34,211,238,.15)}50%{box-shadow:0 0 25px rgba(34,211,238,.3)}}
|
||
.s1{background:var(--bg);justify-content:center;align-items:center;text-align:center;padding:20px;position:relative}
|
||
.s1::before{content:'';position:absolute;inset:0;background:radial-gradient(ellipse 50% 42% at 50% 40%,rgba(79,125,249,.09),transparent),radial-gradient(ellipse 30% 22% at 72% 72%,rgba(34,211,238,.06),transparent)}
|
||
.s1-g{position:absolute;inset:0;background-image:linear-gradient(rgba(79,125,249,.025) 1px,transparent 1px),linear-gradient(90deg,rgba(79,125,249,.025) 1px,transparent 1px);background-size:28px 28px;mask-image:radial-gradient(ellipse 42% 42% at 50% 50%,#000,transparent)}
|
||
.s1-hd{position:absolute;top:12px;left:14px;right:14px;display:flex;align-items:center;gap:7px;z-index:3}
|
||
.s1-av{width:38px;height:38px;border-radius:10px;object-fit:cover;border:1.5px solid var(--bd)}
|
||
.s1-br b{font-size:11px;font-weight:800}.s1-br small{font-size:6.5px;letter-spacing:1.8px;color:var(--cy);font-weight:600;display:block}
|
||
.s1-lv{margin-left:auto;display:flex;align-items:center;gap:3px;font-size:7.5px;font-weight:700;color:var(--gr);padding:2px 9px;border-radius:100px;border:1px solid rgba(16,185,129,.15);background:rgba(16,185,129,.06)}
|
||
.s1-lv::before{content:'';width:4px;height:4px;border-radius:50%;background:var(--gr);animation:pu 2s infinite}
|
||
.s1-n{font-family:'IBM Plex Mono';font-size:clamp(4.5rem,13vw,8.5rem);font-weight:700;background:linear-gradient(155deg,var(--ac),var(--cy));-webkit-background-clip:text;-webkit-text-fill-color:transparent;line-height:.85;z-index:1;animation:cntUp 1.1s cubic-bezier(.16,1,.3,1) both}
|
||
.s1-lb{font-size:clamp(.7rem,1.8vw,1rem);font-weight:500;color:var(--t2);letter-spacing:3px;text-transform:uppercase;margin-top:3px;z-index:1;animation:fUp .7s .3s both}
|
||
.s1-tt{font-size:clamp(.9rem,2.5vw,1.5rem);font-weight:700;margin-top:14px;line-height:1.25;max-width:400px;z-index:1;animation:fUp .7s .5s both}
|
||
.s1-tt em{font-style:normal;color:var(--cy)}
|
||
.s1-tg{display:flex;gap:5px;flex-wrap:wrap;justify-content:center;margin-top:14px;z-index:1;animation:fUp .7s .7s both}
|
||
.s1-t{padding:4px 10px;font-size:9.5px;font-weight:600;font-family:'IBM Plex Mono'}
|
||
.s1-t b{color:var(--cy)}.s1-t span{color:var(--t3)}
|
||
.s2{background:var(--bg);padding:14px;justify-content:center;align-items:center;position:relative}
|
||
.s2::before{content:'';position:absolute;inset:0;background:radial-gradient(ellipse 40% 30% at 50% 50%,rgba(79,125,249,.04),transparent)}
|
||
.s2-h{font-size:clamp(.7rem,1.6vw,.9rem);font-weight:800;text-align:center;margin-bottom:3px;z-index:1}
|
||
.s2-p{font-size:.5rem;color:var(--t3);text-align:center;margin-bottom:8px;z-index:1}
|
||
.s2-sk{display:flex;flex-direction:column;gap:4px;max-width:420px;width:100%;z-index:1}
|
||
.s2-r{display:flex;align-items:center;gap:7px;padding:7px 10px;transition:.35s}
|
||
.s2-r:hover{transform:translateX(3px);border-color:rgba(255,255,255,.1)}
|
||
.s2-i{font-size:15px;width:26px;text-align:center;flex-shrink:0}
|
||
.s2-nm{font-size:10.5px;font-weight:700}.s2-ds{font-size:7.5px;color:var(--t3);margin-top:1px}
|
||
.s2-k{font-family:'IBM Plex Mono';font-size:10px;font-weight:600;flex-shrink:0}
|
||
.s2-gv{position:absolute;right:6px;top:50%;transform:translateY(-50%);writing-mode:vertical-rl;font-size:6.5px;font-weight:700;letter-spacing:3px;color:var(--pu);opacity:.25;z-index:1}
|
||
.s3{background:var(--bg);overflow:hidden;position:relative}
|
||
.s3::before{content:'';position:absolute;inset:0;background-image:radial-gradient(rgba(79,125,249,.03) 1px,transparent 1px);background-size:12px 12px}
|
||
.s3-hu{position:absolute;top:0;left:0;right:0;z-index:5;display:flex;align-items:center;gap:5px;padding:4px 9px;background:rgba(8,10,16,.9);backdrop-filter:blur(16px);border-bottom:1px solid var(--bd)}
|
||
.s3-hu b{font-size:.6rem}.s3-hu small{font-size:.32rem;letter-spacing:1.3px;color:var(--cy);display:block;font-weight:600}
|
||
.s3-l{display:flex;align-items:center;gap:3px;font-size:.38rem;font-weight:700;color:var(--gr);padding:1px 6px;border-radius:100px;background:rgba(16,185,129,.07);border:1px solid rgba(16,185,129,.1)}
|
||
.s3-l::before{content:'';width:3px;height:3px;border-radius:50%;background:var(--gr);animation:pu 2s infinite}
|
||
.s3-st{font-family:'IBM Plex Mono';font-size:.38rem;color:var(--t3);margin-left:auto}
|
||
.s3-st em{font-style:normal;color:var(--ac);font-weight:600}
|
||
#cv{display:block;width:100%;flex:1;min-height:0}
|
||
.s4{background:var(--bg);justify-content:center;align-items:center;text-align:center;padding:20px;position:relative}
|
||
.s4::before{content:'';position:absolute;inset:0;background:radial-gradient(ellipse 40% 30% at 50% 36%,rgba(34,211,238,.05),transparent)}
|
||
.s4-h{font-size:clamp(.9rem,2.5vw,1.4rem);font-weight:800;line-height:1.2;margin-bottom:5px;z-index:1}
|
||
.s4-h em{font-style:normal;color:var(--cy)}
|
||
.s4-p{font-size:.62rem;color:var(--t2);max-width:340px;margin:0 auto 12px;line-height:1.45;z-index:1}
|
||
.s4-gr{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;max-width:380px;width:100%;z-index:1;margin-bottom:10px}
|
||
.s4-c{padding:10px 7px;text-align:center;transition:.3s}.s4-c:hover{transform:translateY(-2px);border-color:rgba(255,255,255,.1)}
|
||
.s4-c .ic{font-size:18px;margin-bottom:4px}.s4-c h3{font-size:9px;font-weight:800;margin-bottom:2px}.s4-c p{font-size:7.5px;color:var(--t3);line-height:1.35}
|
||
.s4-q{max-width:370px;padding:8px 12px;z-index:1;margin-bottom:12px;border-left:2px solid var(--cy);text-align:left}
|
||
.s4-q p{font-size:.55rem;color:var(--t2);line-height:1.5;font-style:italic}.s4-q b{color:var(--cy);font-style:normal}
|
||
.s4-bt{display:inline-flex;align-items:center;gap:6px;background:linear-gradient(135deg,var(--ac),var(--cy));color:#fff;border:none;border-radius:100px;padding:9px 26px;font-family:'Outfit';font-size:12px;font-weight:700;cursor:pointer;transition:.3s;box-shadow:0 6px 22px rgba(79,125,249,.3);z-index:1;text-decoration:none;animation:glw 3s infinite}
|
||
.s4-bt:hover{transform:translateY(-2px)}.s4-ft{margin-top:8px;font-size:.42rem;color:var(--t3);z-index:1}
|
||
</style>
|
||
</head>
|
||
<body>
|
||
<div class="dk">
|
||
<!-- S1 -->
|
||
<div class="sl s1 on" data-i="0">
|
||
<div class="s1-g"></div>
|
||
<div class="s1-hd">
|
||
<div class="s1-av" style="background:linear-gradient(135deg,var(--ac),var(--cy));display:flex;align-items:center;justify-content:center;font-size:18px;font-weight:900;color:#fff;border-radius:10px">{{S1_LOGO}}</div>
|
||
<div class="s1-br"><b>{{S1_BRAND}}</b><small>{{S1_BRAND_SUB}}</small></div>
|
||
<div class="s1-lv">LIVE</div>
|
||
</div>
|
||
<div class="s1-n" id="ctr">0</div>
|
||
<div class="s1-lb">{{S1_COUNTER_LABEL}}</div>
|
||
<h1 class="s1-tt">{{S1_TITLE}}</h1>
|
||
<div class="s1-tg">{{S1_TAGS}}</div>
|
||
</div>
|
||
<!-- S2 -->
|
||
<div class="sl s2" data-i="1">
|
||
<h2 class="s2-h">{{S2_TITLE}}</h2>
|
||
<p class="s2-p">{{S2_SUBTITLE}}</p>
|
||
<div class="s2-sk">{{S2_LAYERS}}</div>
|
||
<div class="s2-gv">{{S2_SIDEBAR}}</div>
|
||
</div>
|
||
<!-- S3 -->
|
||
<div class="sl s3" data-i="2">
|
||
<div class="s3-hu">
|
||
<span style="font-size:13px">🧠</span>
|
||
<div><b>{{S3_BRAND}}</b><small>{{S3_SUBTITLE}}</small></div>
|
||
<div class="s3-l">LIVE</div>
|
||
<div class="s3-st"><em id="hA">0</em> agents · <em id="hD">0</em> depts</div>
|
||
</div>
|
||
<canvas id="cv"></canvas>
|
||
</div>
|
||
<!-- S4 -->
|
||
<div class="sl s4" data-i="3">
|
||
<h2 class="s4-h">{{S4_TITLE}}</h2>
|
||
<p class="s4-p">{{S4_SUBTITLE}}</p>
|
||
<div class="s4-gr">{{S4_CARDS}}</div>
|
||
<div class="s4-q gl"><p>{{S4_QUOTE}}</p></div>
|
||
<button class="s4-bt" onclick="window.open('{{S4_CTA_URL}}','_blank')">{{S4_CTA_TEXT}}</button>
|
||
<div class="s4-ft">{{S4_FOOTER}}</div>
|
||
</div>
|
||
<!-- NAV -->
|
||
<div class="nv">
|
||
<button class="abtn" onclick="go(-1)">‹</button>
|
||
<button class="dot on" onclick="show(0)"></button>
|
||
<button class="dot" onclick="show(1)"></button>
|
||
<button class="dot" onclick="show(2)"></button>
|
||
<button class="dot" onclick="show(3)"></button>
|
||
<button class="abtn" onclick="go(1)">›</button>
|
||
</div>
|
||
</div>
|
||
<script>
|
||
let c=0;const T=4;
|
||
function show(i){c=i;document.querySelectorAll('.sl').forEach((s,j)=>s.classList.toggle('on',j===i));document.querySelectorAll('.dot').forEach((d,j)=>d.classList.toggle('on',j===i));if(i===2&&!cvOn)startCV()}
|
||
function go(d){show((c+d+T)%T)}
|
||
document.addEventListener('keydown',e=>{if(e.key==='ArrowRight')go(1);if(e.key==='ArrowLeft')go(-1)});
|
||
let sx=0;document.addEventListener('touchstart',e=>{sx=e.touches[0].clientX});
|
||
document.addEventListener('touchend',e=>{const d=e.changedTouches[0].clientX-sx;if(Math.abs(d)>50)d<0?go(1):go(-1)});
|
||
(function(){const el=document.getElementById('ctr');let v=0;const tgt={{S1_COUNTER_VALUE}},dur=1400,st=Date.now();function t(){const p=Math.min((Date.now()-st)/dur,1),e=1-Math.pow(1-p,3);v=Math.round(tgt*e);el.textContent=v;if(p<1)requestAnimationFrame(t)};t()})();
|
||
let cvOn=false;
|
||
function startCV(){
|
||
cvOn=true;const cv=document.getElementById('cv'),cx=cv.getContext('2d');
|
||
function rs(){var w=cv.parentElement.offsetWidth||1080;var h=cv.parentElement.offsetHeight||1080;cv.width=w*2;cv.height=h*2;cv.style.width=w+'px';cv.style.height=h+'px';cx.scale(2,2)};setTimeout(rs,100);setTimeout(rs,500);window.addEventListener('resize',rs);
|
||
const W=()=>cv.width/2,H=()=>cv.height/2;
|
||
const D=[{{S3_DEPTS}}];
|
||
const A=[];D.forEach((d,i)=>{for(let j=0;j<4+Math.floor(Math.random()*3);j++){A.push({x:.1+Math.random()*.78,tx:.1+Math.random()*.78,y:d.y+(Math.random()-.5)*.03,di:i,ph:Math.random()*6.28,sz:3+Math.random()*2})}});
|
||
function fr(t){cx.clearRect(0,0,W(),H());const g=cx.createRadialGradient(W()/2,H()/2,0,W()/2,H()/2,W()*.45);g.addColorStop(0,'rgba(79,125,249,.02)');g.addColorStop(1,'transparent');cx.fillStyle=g;cx.fillRect(0,0,W(),H());
|
||
D.forEach((d,i)=>{const y=28+d.y*(H()-36);cx.strokeStyle=d.c+'15';cx.lineWidth=.5;cx.setLineDash([2,3]);cx.beginPath();cx.moveTo(W()*.07,y);cx.lineTo(W()*.93,y);cx.stroke();cx.setLineDash([]);cx.fillStyle=d.c+'70';cx.font='600 7.5px Outfit';cx.textAlign='left';cx.fillText(d.n,W()*.015,y+3);for(let j=0;j<6;j++){const fx=(.16+j*.13)*W(),dot=Math.sin(t*.0018+j*.7+i*.5)*.5+.5;cx.fillStyle=d.c+(Math.floor(dot*50+15).toString(16).padStart(2,'0'));cx.beginPath();cx.arc(fx,y,1.2+dot*1.8,0,Math.PI*2);cx.fill();if(j<5){cx.strokeStyle=d.c+'08';cx.lineWidth=.4;cx.beginPath();cx.moveTo(fx+3,y);cx.lineTo((.16+(j+1)*.13)*W()-3,y);cx.stroke()}}const gx=.94*W();cx.fillStyle=d.c+'1a';cx.save();cx.translate(gx,y);cx.rotate(Math.PI/4);cx.fillRect(-3,-3,6,6);cx.restore()});
|
||
A.forEach(a=>{a.x+=(a.tx-a.x)*.015;if(Math.abs(a.tx-a.x)<.006)a.tx=.1+Math.random()*.78;const d=D[a.di],px=a.x*W(),py=28+a.y*(H()-36),b=Math.sin(t*.003+a.ph)*1.2,w=Math.sin(t*.006+a.ph);cx.fillStyle=d.c+'08';cx.beginPath();cx.arc(px,py+b,a.sz*2.2,0,Math.PI*2);cx.fill();cx.fillStyle=d.c+'b0';cx.beginPath();cx.arc(px,py+b,a.sz,0,Math.PI*2);cx.fill();cx.fillStyle=d.c+'d0';cx.beginPath();cx.arc(px,py-a.sz*.9+b,a.sz*.55,0,Math.PI*2);cx.fill();cx.strokeStyle=d.c+'70';cx.lineWidth=.8;cx.beginPath();cx.moveTo(px-1.2,py+a.sz+b);cx.lineTo(px-1.2+w*2,py+a.sz+3.5+b);cx.stroke();cx.beginPath();cx.moveTo(px+1.2,py+a.sz+b);cx.lineTo(px+1.2-w*2,py+a.sz+3.5+b);cx.stroke()});
|
||
document.getElementById('hA').textContent=A.length;document.getElementById('hD').textContent=D.length;requestAnimationFrame(fr)};fr(0)}
|
||
</script>
|
||
</body>
|
||
</html>
|