Spaces:
Sleeping
Sleeping
File size: 6,031 Bytes
aaa2e91 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 | <!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Immo Predict</title>
<link rel="stylesheet" href="style.css">
<link href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@300;400;500;600;700&family=Syne:wght@700;800&display=swap" rel="stylesheet">
</head>
<body>
<canvas id="bg-canvas"></canvas>
<header>
<div class="logo">IMMO<span>PREDICT</span></div>
<div class="header-right">
<span class="badge-live">● LIVE</span>
<span class="header-sub">3,7M transactions DVF</span>
</div>
</header>
<main>
<section class="hero">
<div class="hero-tag">ESTIMATION PAR INTELLIGENCE ARTIFICIELLE</div>
<h1>
<span class="line">Découvrez la</span>
<span class="line accent">valeur réelle</span>
<span class="line">de votre bien.</span>
</h1>
<div class="hero-stats">
<div class="stat">
<span class="stat-n" data-target="3700000">0</span>
<span class="stat-l">Transactions</span>
</div>
<div class="stat-div"></div>
<div class="stat">
<span class="stat-n" data-target="87">0</span>
<span class="stat-l">% Précision max</span>
</div>
<div class="stat-div"></div>
<div class="stat">
<span class="stat-n" data-target="8">0</span>
<span class="stat-l">Segments IA</span>
</div>
</div>
</section>
<section class="form-card">
<div class="type-selector">
<button class="type-btn active" data-value="Appartement" onclick="selectType(this)">
<svg width="20" height="20" viewBox="0 0 24 24" fill="none">
<rect x="3" y="3" width="18" height="18" rx="2" stroke="currentColor" stroke-width="1.5"/>
<path d="M3 9h18M9 9v12" stroke="currentColor" stroke-width="1.5"/>
</svg>
Appartement
</button>
<button class="type-btn" data-value="Maison" onclick="selectType(this)">
<svg width="20" height="20" viewBox="0 0 24 24" fill="none">
<path d="M3 12L12 3l9 9" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/>
<path d="M5 10v9a1 1 0 001 1h4v-4h4v4h4a1 1 0 001-1v-9" stroke="currentColor" stroke-width="1.5"/>
</svg>
Maison
</button>
</div>
<div class="form-grid">
<div class="field">
<label>Surface habitable</label>
<div class="input-wrap">
<input type="number" id="surface" value="70" min="9" max="500">
<span class="unit">m²</span>
</div>
</div>
<div class="field">
<label>Nombre de pièces</label>
<div class="stepper">
<button class="step-btn" onclick="step('pieces',-1)">−</button>
<span id="pieces-val">3</span>
<input type="hidden" id="pieces" value="3">
<button class="step-btn" onclick="step('pieces',1)">+</button>
</div>
</div>
<div class="field">
<label>Département</label>
<div class="select-wrap">
<select id="departement" onchange="loadCommunes()"></select>
</div>
</div>
<div class="field">
<label>Commune</label>
<div class="select-wrap">
<select id="commune"></select>
</div>
</div>
<div class="field">
<label>Surface terrain</label>
<div class="input-wrap">
<input type="number" id="terrain" value="0" min="0">
<span class="unit">m²</span>
</div>
</div>
<div class="field">
<label>Lots copropriété</label>
<div class="stepper">
<button class="step-btn" onclick="step('lots',-1)">−</button>
<span id="lots-val">1</span>
<input type="hidden" id="lots" value="1">
<button class="step-btn" onclick="step('lots',1)">+</button>
</div>
</div>
</div>
<button class="cta" onclick="predict()" id="cta-btn">
<span id="cta-label">Estimer maintenant</span>
<svg id="cta-icon" width="20" height="20" viewBox="0 0 20 20" fill="none">
<path d="M4 10h12M10 4l6 6-6 6" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
<div class="cta-loader" id="cta-loader"></div>
</button>
</section>
<section class="result" id="result">
<div class="result-top">
<div class="result-label">PRIX ESTIMÉ</div>
<div class="result-price" id="result-price">—</div>
<div class="result-sub" id="result-sub">—</div>
</div>
<div class="result-grid">
<div class="res-card">
<div class="res-card-label">Fourchette basse</div>
<div class="res-card-val" id="r-bas">—</div>
</div>
<div class="res-card res-card-mid">
<div class="res-card-label">Prix au m²</div>
<div class="res-card-val" id="r-m2">—</div>
</div>
<div class="res-card">
<div class="res-card-label">Fourchette haute</div>
<div class="res-card-val" id="r-haut">—</div>
</div>
</div>
<div class="precision-block">
<div class="precision-top">
<span>Précision du modèle</span>
<span id="r-precision" class="precision-pct">—</span>
</div>
<div class="bar-track">
<div class="bar-fill" id="bar-fill"></div>
</div>
<div class="segment-row">
<span class="segment-badge" id="r-segment">—</span>
<span class="disclaimer">Données DVF 2022–2025 · Hors luxe > 2M€</span>
</div>
</div>
</section>
</main>
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r128/three.min.js"></script>
<script src="script.js"></script>
</body>
</html> |