Upload files to "/"
This commit is contained in:
305
index.html
Normal file
305
index.html
Normal file
@@ -0,0 +1,305 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="fr">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta name="viewport" content="width=device-width,initial-scale=1" />
|
||||||
|
<title>ImmersiHome — Visites VR Immobilières</title>
|
||||||
|
<meta name="description" content="ImmersiHome : casque VR + plateforme pour visiter appartements et maisons en immersion avant achat ou location." />
|
||||||
|
<link rel="icon" href="assets/logo.png" />
|
||||||
|
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;600;700;800&display=swap" rel="stylesheet">
|
||||||
|
<link rel="stylesheet" href="style.css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<!-- HEADER -->
|
||||||
|
<header class="site-header" role="banner">
|
||||||
|
<div class="container header-inner">
|
||||||
|
<a class="brand" href="#home" aria-label="ImmersiHome - accueil">
|
||||||
|
<img src="assets/logo.png" alt="Logo ImmersiHome" class="logo">
|
||||||
|
<span class="brand-name">ImmersiHome</span>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<nav class="nav" aria-label="Navigation principale">
|
||||||
|
<ul>
|
||||||
|
<li><a href="#home">Accueil</a></li>
|
||||||
|
<li><a href="#features">Fonctionnalités</a></li>
|
||||||
|
<li><a href="#offre">Offre</a></li>
|
||||||
|
<li><a href="#tarifs">Tarifs</a></li>
|
||||||
|
<li><a href="#team">Équipe</a></li>
|
||||||
|
<li><a href="#contact">Contact</a></li>
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
<div class="header-actions">
|
||||||
|
<button class="burger" id="burger" aria-label="Ouvrir le menu" aria-expanded="false">
|
||||||
|
<span></span><span></span><span></span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<!-- MAIN -->
|
||||||
|
<main id="home">
|
||||||
|
|
||||||
|
<!-- HERO -->
|
||||||
|
<section class="hero apple-hero" id="home">
|
||||||
|
<div class="container hero-inner-apple">
|
||||||
|
|
||||||
|
<div class="hero-copy-apple">
|
||||||
|
<h1 class="apple-title">Visitez votre futur logement<br><span class="accent">comme si vous y étiez.</span></h1>
|
||||||
|
|
||||||
|
<p class="apple-sub">
|
||||||
|
ImmersiHome révolutionne l’immobilier : explorez appartements, maisons et locaux
|
||||||
|
en immersion grâce à notre casque VR et notre plateforme intelligente.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div class="hero-ctas-apple">
|
||||||
|
<button class="btn apple-primary" id="openVideoBtn">Regarder la démo</button>
|
||||||
|
<a class="btn apple-secondary" href="#tarifs">Voir les tarifs</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<ul class="trust">
|
||||||
|
<li>✔ Pour agences & promoteurs</li>
|
||||||
|
<li>✔ Scans 3D HD & navigation 360°</li>
|
||||||
|
<li>✔ Réduction des visites inutiles</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="hero-media-apple">
|
||||||
|
<div class="apple-main-image">
|
||||||
|
<img src="assets/hero.jpg" alt="Visite VR ImmersiHome">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="apple-media-row">
|
||||||
|
<div class="apple-mini">
|
||||||
|
<img src="assets/casque.jpg" alt="Casque ImmersiHome">
|
||||||
|
<span>Casque ImmersiHome</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="apple-video-wrapper" aria-hidden="false">
|
||||||
|
<video class="apple-video" muted playsinline preload="metadata" controls poster="assets/hero.jpg">
|
||||||
|
<source src="assets/demo.mp4" type="video/mp4">
|
||||||
|
Votre navigateur ne supporte pas la vidéo.
|
||||||
|
</video>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- FEATURES -->
|
||||||
|
<section id="features" class="section">
|
||||||
|
<div class="container">
|
||||||
|
<h2>Fonctionnalités clés</h2>
|
||||||
|
|
||||||
|
<div class="grid-3">
|
||||||
|
<article class="feature"><h3>Scans 3D HD</h3><p>Modélisation fidèle des volumes et textures.</p></article>
|
||||||
|
<article class="feature"><h3>Navigation 360° & Mesures</h3><p>Déplacement libre, mesures instantanées.</p></article>
|
||||||
|
<article class="feature"><h3>Aménagement Virtuel</h3><p>Testez meubles et couleurs en quelques clics.</p></article>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- OFFRE -->
|
||||||
|
<section id="offre" class="section dark">
|
||||||
|
<div class="container grid-2">
|
||||||
|
<div>
|
||||||
|
<h2>Une solution pensée pour le marché immobilier</h2>
|
||||||
|
<p class="lead">Pour agences, promoteurs et particuliers : réduisez les visites inutiles et augmentez le taux de conversion.</p>
|
||||||
|
|
||||||
|
<ul class="bullets">
|
||||||
|
<li><strong>Plug & Play</strong> : casque livré configuré + onboarding.</li>
|
||||||
|
<li><strong>Intégration</strong> : export facile vers SeLoger, LeBonCoin et sites d'agences.</li>
|
||||||
|
<li><strong>Analytics</strong> : suivi des visites & points d’intérêt.</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<a class="btn primary" href="#contact">Demander un devis</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="card-advantages">
|
||||||
|
<h3>Cas d'usage</h3>
|
||||||
|
<ol>
|
||||||
|
<li>Showroom VR en vitrine pour attirer des prospects</li>
|
||||||
|
<li>Ventes sur plan immersives pour promoteurs</li>
|
||||||
|
<li>Tri rapide des biens pour les particuliers</li>
|
||||||
|
</ol>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- PRICING -->
|
||||||
|
<section id="tarifs" class="section">
|
||||||
|
<div class="container">
|
||||||
|
<h2>Tarifs & offres</h2>
|
||||||
|
<p class="lead">Formules adaptées aux particuliers, pros et agences.</p>
|
||||||
|
|
||||||
|
<div class="pricing-grid">
|
||||||
|
<div class="price-card">
|
||||||
|
<h3>Découverte</h3>
|
||||||
|
<div class="price">19€/mois</div>
|
||||||
|
<p>Accès à la plateforme — 3 visites/mois</p>
|
||||||
|
<a class="btn outline" href="#contact">Commander</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="price-card featured">
|
||||||
|
<h3>Pro</h3>
|
||||||
|
<div class="price">79€/mois</div>
|
||||||
|
<p>Accès illimité + casque en location — analytics</p>
|
||||||
|
<a class="btn primary" href="#contact">Commander</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="price-card">
|
||||||
|
<h3>Agence</h3>
|
||||||
|
<div class="price">149€/mois</div>
|
||||||
|
<p>Pack 5 casques — interface multi-utilisateurs</p>
|
||||||
|
<a class="btn outline" href="#contact">Commander</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- TESTIMONIALS -->
|
||||||
|
<section class="section light">
|
||||||
|
<div class="container">
|
||||||
|
<h2>Avis & témoignages</h2>
|
||||||
|
<div class="testimonials">
|
||||||
|
<blockquote>
|
||||||
|
« Grâce à ImmersiHome, nous avons divisé par 3 le nombre de visites inutiles. »
|
||||||
|
<cite>— Agence Dupont</cite>
|
||||||
|
</blockquote>
|
||||||
|
<blockquote>
|
||||||
|
« Vente sur plan accélérée : les clients comprennent mieux l'espace. »
|
||||||
|
<cite>— Promoteur Nova</cite>
|
||||||
|
</blockquote>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- TEAM -->
|
||||||
|
<section id="team" class="section">
|
||||||
|
<div class="container">
|
||||||
|
<h2>Qui sommes-nous ?</h2>
|
||||||
|
<p class="lead">Équipe tech & immobilier — CV imprimables en HTML/PDF.</p>
|
||||||
|
|
||||||
|
<div class="team-grid">
|
||||||
|
<div class="member"><img src="assets/team/member1.jpg" alt=""><h4>Mathëo Salavin-Moura</h4><p>Co-fondateur — Produit</p><a class="cv-link" href="assets/team/member1_cv.pdf" target="_blank">Voir CV</a></div>
|
||||||
|
<div class="member"><img src="assets/team/member2.jpg" alt=""><h4>Jordan Aristil</h4><p>Co-fondateur — Business</p><a class="cv-link" href="assets/team/member2_cv.pdf" target="_blank">Voir CV</a></div>
|
||||||
|
<div class="member"><img src="assets/team/member3.jpg" alt=""><h4>Kelyan Pierre-Louis</h4><p>Co-fondateur — Tech</p><a class="cv-link" href="assets/team/member3_cv.pdf" target="_blank">Voir CV</a></div>
|
||||||
|
<div class="member"><img src="assets/team/member4.jpg" alt=""><h4>Evan Gilloppé</h4><p>Designer 3D & VR</p><a class="cv-link" href="assets/team/member4_cv.pdf" target="_blank">Voir CV</a></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- FAQ & STORY -->
|
||||||
|
<section class="section dark">
|
||||||
|
<div class="container">
|
||||||
|
<h2>FAQ & Storytelling</h2>
|
||||||
|
<div class="faq">
|
||||||
|
<details><summary>Comment se passe le scan 3D ?</summary><p>Nous scannons le bien en 30–60 minutes selon la surface et livrons la visite sous 48h.</p></details>
|
||||||
|
<details><summary>Le casque est-il fourni ?</summary><p>Oui pour les formules Pro et Agence — location possible autrement.</p></details>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<article class="story">
|
||||||
|
<h3>Notre mission</h3>
|
||||||
|
<p>Rendre les visites plus intelligentes, réduire les déplacements et améliorer la transparence.</p>
|
||||||
|
</article>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- CONTACT -->
|
||||||
|
<section id="contact" class="section">
|
||||||
|
<div class="container grid-2">
|
||||||
|
<div>
|
||||||
|
<h2>Contact & Démo</h2>
|
||||||
|
<p class="lead">Remplissez le formulaire — réponse sous 48h.</p>
|
||||||
|
|
||||||
|
<form id="contactForm" class="contact-form" novalidate>
|
||||||
|
<div class="row">
|
||||||
|
<select id="civ" required>
|
||||||
|
<option value="">Civilité</option>
|
||||||
|
<option>M.</option>
|
||||||
|
<option>Mme</option>
|
||||||
|
</select>
|
||||||
|
<input id="name" type="text" placeholder="Nom complet" required>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<input id="email" type="email" placeholder="Email" required>
|
||||||
|
<input id="phone" type="tel" placeholder="Téléphone">
|
||||||
|
<select id="role">
|
||||||
|
<option>Particulier</option>
|
||||||
|
<option>Agence</option>
|
||||||
|
<option>Promoteur</option>
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<textarea id="message" placeholder="Décrivez votre besoin" required></textarea>
|
||||||
|
|
||||||
|
<div class="form-actions">
|
||||||
|
<button type="submit" class="btn primary">Envoyer</button>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<aside>
|
||||||
|
<div class="contact-card">
|
||||||
|
<h3>Infos</h3>
|
||||||
|
<p>Tél : 06 12 34 56 78<br>Email : contact@immersihome.com</p>
|
||||||
|
<h4>Adresse</h4>
|
||||||
|
<p>Fontainebleau, France</p>
|
||||||
|
<h4>Mentions légales</h4>
|
||||||
|
<a href="#legal">Voir</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="newsletter">
|
||||||
|
<h4>Newsletter</h4>
|
||||||
|
<p>Recevez nos nouveautés & offres.</p>
|
||||||
|
<form id="newsletterForm">
|
||||||
|
<input id="nl-email" type="email" placeholder="Votre email" required>
|
||||||
|
<button class="btn outline" type="submit">S'inscrire</button>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</aside>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<!-- FOOTER -->
|
||||||
|
<footer class="site-footer">
|
||||||
|
<div class="container footer-inner">
|
||||||
|
<div class="footer-left">
|
||||||
|
<img src="assets/logo.png" class="f-logo" alt="ImmersiHome logo">
|
||||||
|
<small>© 2025 ImmersiHome — SAE — Groupe 8</small>
|
||||||
|
</div>
|
||||||
|
<div class="footer-right">
|
||||||
|
<nav>
|
||||||
|
<a href="#home">Accueil</a> ·
|
||||||
|
<a href="#offre">Offre</a> ·
|
||||||
|
<a href="#contact">Contact</a>
|
||||||
|
</nav>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
<!-- TOP BUTTON -->
|
||||||
|
<button id="toTop" title="Haut de page">↑</button>
|
||||||
|
|
||||||
|
<!-- VIDEO MODAL -->
|
||||||
|
<div id="videoModal" class="modal" aria-hidden="true">
|
||||||
|
<div class="modal-backdrop" id="modalBackdrop"></div>
|
||||||
|
<div class="modal-content" role="dialog" aria-modal="true" aria-label="Démonstration ImmersiHome" tabindex="-1">
|
||||||
|
<button class="modal-close" id="modalClose" aria-label="Fermer la vidéo">✕</button>
|
||||||
|
<div class="modal-video-wrap">
|
||||||
|
<video id="modalVideo" controls playsinline>
|
||||||
|
<source src="assets/demo.mp4" type="video/mp4">
|
||||||
|
Votre navigateur ne supporte pas la vidéo.
|
||||||
|
</video>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script src="script.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
102
script.js
Normal file
102
script.js
Normal file
@@ -0,0 +1,102 @@
|
|||||||
|
// ---------- MOBILE MENU TOGGLE ----------
|
||||||
|
const burger = document.getElementById('burger');
|
||||||
|
const nav = document.querySelector('.nav');
|
||||||
|
burger && burger.addEventListener('click', () => {
|
||||||
|
const opened = burger.getAttribute('aria-expanded') === 'true';
|
||||||
|
burger.setAttribute('aria-expanded', String(!opened));
|
||||||
|
nav.classList.toggle('open');
|
||||||
|
});
|
||||||
|
|
||||||
|
// ---------- SMOOTH SCROLL ----------
|
||||||
|
document.querySelectorAll('a[href^="#"], button[data-scroll]').forEach(el => {
|
||||||
|
el.addEventListener('click', function(e){
|
||||||
|
const selector = this.getAttribute('href') || this.dataset.scroll;
|
||||||
|
if(!selector) return;
|
||||||
|
const target = document.querySelector(selector);
|
||||||
|
if(target){
|
||||||
|
e.preventDefault();
|
||||||
|
target.scrollIntoView({behavior:'smooth', block:'start'});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
// ---------- TO TOP BUTTON ----------
|
||||||
|
const toTop = document.getElementById('toTop');
|
||||||
|
window.addEventListener('scroll', () => {
|
||||||
|
toTop.style.display = window.scrollY > 400 ? 'block' : 'none';
|
||||||
|
});
|
||||||
|
toTop && toTop.addEventListener('click', () => window.scrollTo({top:0, behavior:'smooth'}));
|
||||||
|
|
||||||
|
// ---------- CONTACT FORM (SIMULATION) ----------
|
||||||
|
const contactForm = document.getElementById('contactForm');
|
||||||
|
contactForm && contactForm.addEventListener('submit', e => {
|
||||||
|
e.preventDefault();
|
||||||
|
alert('Merci — votre demande a été enregistrée (simulation). Nous vous contacterons sous 48h.');
|
||||||
|
contactForm.reset();
|
||||||
|
});
|
||||||
|
|
||||||
|
// ---------- MAILTO QUICK SEND ----------
|
||||||
|
const mailtoBtn = document.getElementById('mailtoBtn');
|
||||||
|
mailtoBtn && mailtoBtn.addEventListener('click', () => {
|
||||||
|
const name = encodeURIComponent(document.getElementById('name')?.value || '—');
|
||||||
|
const email = encodeURIComponent(document.getElementById('email')?.value || '—');
|
||||||
|
const phone = encodeURIComponent(document.getElementById('phone')?.value || '—');
|
||||||
|
const message = encodeURIComponent(document.getElementById('message')?.value || '—');
|
||||||
|
const subject = encodeURIComponent('Demande ImmersiHome — ' + name);
|
||||||
|
const body = encodeURIComponent(`Nom: ${name}\nEmail: ${email}\nTél: ${phone}\n\n${message}`);
|
||||||
|
window.location.href = `mailto:contact@immersihome.example?subject=${subject}&body=${body}`;
|
||||||
|
});
|
||||||
|
|
||||||
|
// ---------- NEWSLETTER SIMULATION ----------
|
||||||
|
const nl = document.getElementById('newsletterForm');
|
||||||
|
nl && nl.addEventListener('submit', (e) => {
|
||||||
|
e.preventDefault();
|
||||||
|
alert('Merci — vous êtes inscrit(e) à la newsletter (simulation).');
|
||||||
|
nl.reset();
|
||||||
|
});
|
||||||
|
|
||||||
|
// ---------- VIDEO MODAL ----------
|
||||||
|
const openVideoBtn = document.getElementById('openVideoBtn');
|
||||||
|
const videoModal = document.getElementById('videoModal');
|
||||||
|
const modalClose = document.getElementById('modalClose');
|
||||||
|
const modalBackdrop = document.getElementById('modalBackdrop');
|
||||||
|
const modalVideo = document.getElementById('modalVideo');
|
||||||
|
|
||||||
|
let lastFocusedBtn = null; // Pour restaurer le focus après fermeture
|
||||||
|
|
||||||
|
function openModal(){
|
||||||
|
if(!videoModal) return;
|
||||||
|
lastFocusedBtn = document.activeElement;
|
||||||
|
videoModal.classList.add('open');
|
||||||
|
videoModal.setAttribute('aria-hidden','false');
|
||||||
|
modalClose.focus(); // focus sur bouton close
|
||||||
|
if(modalVideo){ modalVideo.currentTime = 0; modalVideo.play(); }
|
||||||
|
}
|
||||||
|
function closeModal(){
|
||||||
|
if(!videoModal) return;
|
||||||
|
videoModal.classList.remove('open');
|
||||||
|
videoModal.setAttribute('aria-hidden','true');
|
||||||
|
if(modalVideo){ modalVideo.pause(); modalVideo.currentTime = 0; }
|
||||||
|
lastFocusedBtn && lastFocusedBtn.focus(); // restaurer focus
|
||||||
|
}
|
||||||
|
|
||||||
|
openVideoBtn && openVideoBtn.addEventListener('click', openModal);
|
||||||
|
modalClose && modalClose.addEventListener('click', closeModal);
|
||||||
|
modalBackdrop && modalBackdrop.addEventListener('click', closeModal);
|
||||||
|
|
||||||
|
// ---------- ACCESSIBILITY: CLOSE ESC ----------
|
||||||
|
document.addEventListener('keydown', (e) => {
|
||||||
|
if(e.key === 'Escape') closeModal();
|
||||||
|
});
|
||||||
|
|
||||||
|
// ---------- OPTIONAL: TRAP FOCUS INSIDE MODAL ----------
|
||||||
|
document.addEventListener('keydown', (e) => {
|
||||||
|
if(!videoModal.classList.contains('open')) return;
|
||||||
|
if(e.key === 'Tab'){
|
||||||
|
const focusable = videoModal.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])');
|
||||||
|
const first = focusable[0];
|
||||||
|
const last = focusable[focusable.length -1];
|
||||||
|
if(e.shiftKey && document.activeElement === first){ e.preventDefault(); last.focus(); }
|
||||||
|
else if(!e.shiftKey && document.activeElement === last){ e.preventDefault(); first.focus(); }
|
||||||
|
}
|
||||||
|
});
|
||||||
200
style.css
Normal file
200
style.css
Normal file
@@ -0,0 +1,200 @@
|
|||||||
|
/* =========================
|
||||||
|
ImmersiHome — Apple style (optimisé)
|
||||||
|
========================= */
|
||||||
|
|
||||||
|
/* ----- Variables ----- */
|
||||||
|
:root{
|
||||||
|
--bg: #fbfdff;
|
||||||
|
--text: #0b1220;
|
||||||
|
--muted: #6b7280;
|
||||||
|
--accent: #0ea5e9;
|
||||||
|
--black: #0b1220;
|
||||||
|
--card: #ffffff;
|
||||||
|
--glass: rgba(255,255,255,0.6);
|
||||||
|
--shadow: 0 10px 30px rgba(2,6,23,0.06);
|
||||||
|
--dark-text: #e6f6ff;
|
||||||
|
--dark-bg: #0b1220;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ----- Reset & Base ----- */
|
||||||
|
*{box-sizing:border-box;margin:0;padding:0}
|
||||||
|
html,body{height:100%}
|
||||||
|
body{
|
||||||
|
font-family: 'Inter', system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
|
||||||
|
background: linear-gradient(180deg, var(--bg) 0%, #f3f7fb 100%);
|
||||||
|
color:var(--text);
|
||||||
|
line-height:1.5;
|
||||||
|
-webkit-font-smoothing:antialiased;
|
||||||
|
-moz-osx-font-smoothing:grayscale;
|
||||||
|
}
|
||||||
|
.container{max-width:1180px;margin:0 auto;padding:28px}
|
||||||
|
a{color:inherit;text-decoration:none}
|
||||||
|
|
||||||
|
/* ----- HEADER ----- */
|
||||||
|
.site-header{
|
||||||
|
position:sticky;top:0;z-index:60;
|
||||||
|
backdrop-filter: blur(6px);
|
||||||
|
background: rgba(255,255,255,0.7);
|
||||||
|
border-bottom:1px solid rgba(15,23,36,0.04);
|
||||||
|
}
|
||||||
|
.header-inner{display:flex;align-items:center;gap:16px;justify-content:space-between;max-width:1180px;margin:0 auto;padding:14px 28px}
|
||||||
|
.brand{display:flex;align-items:center;gap:12px}
|
||||||
|
.logo{width:46px;height:46px;object-fit:contain;border-radius:8px}
|
||||||
|
.brand-name{font-weight:700;font-size:18px;color:var(--text)}
|
||||||
|
.nav ul{list-style:none;display:flex;gap:18px;align-items:center}
|
||||||
|
.nav a{color:var(--text);padding:8px 10px;border-radius:8px;transition:0.2s}
|
||||||
|
.nav a:hover{background:#f1f5f9}
|
||||||
|
.header-actions{display:flex;align-items:center;gap:12px}
|
||||||
|
.btn-ghost{background:transparent;border:1px solid rgba(15,23,36,0.06);padding:8px 12px;border-radius:10px}
|
||||||
|
|
||||||
|
/* burger */
|
||||||
|
.burger{display:none;background:none;border:0;cursor:pointer}
|
||||||
|
.burger span{display:block;width:22px;height:2px;background:var(--text);margin:4px 0;transition:0.2s}
|
||||||
|
|
||||||
|
/* ----- HERO ----- */
|
||||||
|
.apple-hero{padding:110px 0 60px}
|
||||||
|
.hero-inner-apple{display:grid;grid-template-columns:1fr 540px;gap:64px;align-items:center}
|
||||||
|
.apple-title{font-size:48px;line-height:1.02;font-weight:800;color:var(--black);margin-bottom:18px}
|
||||||
|
.apple-title .accent{color:var(--accent)}
|
||||||
|
.apple-sub{font-size:18px;color:var(--muted);max-width:560px;margin-bottom:28px}
|
||||||
|
.hero-ctas-apple{display:flex;gap:14px}
|
||||||
|
|
||||||
|
/* ----- Buttons ----- */
|
||||||
|
.btn{
|
||||||
|
display:inline-flex;align-items:center;gap:10px;padding:12px 18px;border-radius:999px;font-weight:700;cursor:pointer;
|
||||||
|
transition: transform 0.2s, box-shadow 0.2s;
|
||||||
|
}
|
||||||
|
.btn.apple-primary, .btn.primary{background:var(--black);color:#fff;border:0}
|
||||||
|
.btn.apple-primary:hover, .btn.primary:hover{transform:translateY(-3px);box-shadow:0 10px 20px rgba(0,0,0,0.12);}
|
||||||
|
.btn.apple-secondary, .btn.outline{background:transparent;border:1px solid rgba(15,23,36,0.06);color:var(--black)}
|
||||||
|
.btn.apple-secondary:hover, .btn.outline:hover{transform:translateY(-2px);box-shadow:0 6px 16px rgba(0,0,0,0.08);}
|
||||||
|
|
||||||
|
.trust{display:flex;gap:20px;color:var(--muted);margin-top:18px;list-style:none}
|
||||||
|
|
||||||
|
/* hero media */
|
||||||
|
.hero-media-apple{display:flex;flex-direction:column;gap:26px}
|
||||||
|
.apple-main-image img{width:100%;height:380px;object-fit:cover;border-radius:18px;box-shadow:0 30px 70px rgba(2,6,23,0.06)}
|
||||||
|
.apple-media-row{display:flex;gap:18px;align-items:center}
|
||||||
|
.apple-mini{display:flex;flex-direction:column;align-items:center;gap:8px;font-size:13px;color:var(--muted)}
|
||||||
|
.apple-mini img{width:76px;height:76px;object-fit:cover;border-radius:12px;box-shadow:0 12px 30px rgba(2,6,23,0.06)}
|
||||||
|
.apple-video-wrapper{flex:1}
|
||||||
|
.apple-video{width:100%;height:110px;border-radius:12px;object-fit:cover;box-shadow:0 18px 40px rgba(2,6,23,0.06)}
|
||||||
|
|
||||||
|
/* ----- SECTIONS ----- */
|
||||||
|
.section{padding:64px 0}
|
||||||
|
.section h2{font-size:28px;margin-bottom:12px}
|
||||||
|
.section .lead{color:var(--muted);margin-bottom:20px}
|
||||||
|
|
||||||
|
/* grid helpers */
|
||||||
|
.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
|
||||||
|
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:22px}
|
||||||
|
@media (max-width:980px){ .hero-inner-apple{grid-template-columns:1fr} .grid-3{grid-template-columns:repeat(2,1fr)} .grid-2{grid-template-columns:1fr} }
|
||||||
|
|
||||||
|
/* features */
|
||||||
|
.feature{background:var(--card);padding:20px;border-radius:12px;box-shadow:var(--shadow)}
|
||||||
|
.feature h3{margin-bottom:8px}
|
||||||
|
|
||||||
|
/* dark section */
|
||||||
|
.section.dark{background:linear-gradient(180deg,var(--dark-bg) 0%, #08101a 100%);color:var(--dark-text);border-radius:12px;padding:48px}
|
||||||
|
.section.dark .lead{color:rgba(255,255,255,0.8)}
|
||||||
|
|
||||||
|
/* FAQ & Story */
|
||||||
|
.section.dark details,
|
||||||
|
.section.dark details summary,
|
||||||
|
.section.dark details p,
|
||||||
|
.section.dark .story,
|
||||||
|
.section.dark .story h3,
|
||||||
|
.section.dark .story p {
|
||||||
|
color: var(--dark-text);
|
||||||
|
}
|
||||||
|
.section.dark details {
|
||||||
|
background: rgba(255,255,255,0.05);
|
||||||
|
padding:4px 8px;
|
||||||
|
border-radius:8px;
|
||||||
|
margin-bottom:10px;
|
||||||
|
}
|
||||||
|
.section.dark details summary {
|
||||||
|
cursor: pointer;
|
||||||
|
font-weight:600;
|
||||||
|
padding:8px 12px;
|
||||||
|
border-radius:8px;
|
||||||
|
}
|
||||||
|
.section.dark details p { padding:6px 12px 10px; }
|
||||||
|
|
||||||
|
/* pricing */
|
||||||
|
.pricing-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:18px}
|
||||||
|
.price-card{background:linear-gradient(180deg,#fff,#fbfdff);padding:22px;border-radius:12px;box-shadow:0 10px 30px rgba(2,6,23,0.05);text-align:center;transition: transform 0.2s}
|
||||||
|
.price-card.featured{transform:scale(1.02);border:1px solid rgba(14,165,233,0.08)}
|
||||||
|
.price{font-size:28px;font-weight:800;margin:12px 0;color:var(--text)}
|
||||||
|
@media (max-width:980px){ .pricing-grid{grid-template-columns:1fr} }
|
||||||
|
|
||||||
|
/* testimonials */
|
||||||
|
.testimonials{
|
||||||
|
display:grid;
|
||||||
|
grid-template-columns:repeat(auto-fit, minmax(280px, 1fr));
|
||||||
|
gap:24px;
|
||||||
|
margin-top:20px;
|
||||||
|
}
|
||||||
|
.testimonials blockquote{
|
||||||
|
background: rgba(14,165,233,0.05);
|
||||||
|
border-left: 4px solid var(--accent);
|
||||||
|
padding:20px;
|
||||||
|
border-radius:12px;
|
||||||
|
box-shadow:0 10px 30px rgba(2,6,23,0.06);
|
||||||
|
font-style: italic;
|
||||||
|
color:#0b1220;
|
||||||
|
}
|
||||||
|
.testimonials blockquote cite{
|
||||||
|
display:block;
|
||||||
|
margin-top:10px;
|
||||||
|
font-style: normal;
|
||||||
|
font-weight:600;
|
||||||
|
color: var(--muted);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* team */
|
||||||
|
.team-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:12px}
|
||||||
|
.member{background:var(--card);padding:14px;border-radius:12px;text-align:center}
|
||||||
|
.member img{width:100%;height:200px;object-fit:cover;border-radius:8px;margin-bottom:10px}
|
||||||
|
.cv-link{display:inline-block;margin-top:8px;color:var(--accent)}
|
||||||
|
@media (max-width:980px){ .team-grid{grid-template-columns:repeat(2,1fr)} }
|
||||||
|
@media (max-width:600px){ .team-grid{grid-template-columns:1fr} }
|
||||||
|
|
||||||
|
/* contact */
|
||||||
|
.contact-form input, .contact-form textarea, .contact-form select{width:100%;padding:12px;border-radius:10px;border:1px solid #e6eef6;margin-bottom:10px}
|
||||||
|
.form-actions{display:flex;gap:10px}
|
||||||
|
.contact-card{background:var(--card);padding:14px;border-radius:12px;margin-bottom:14px}
|
||||||
|
.newsletter input{width:100%;padding:10px;border-radius:8px;border:1px solid #e6eef6;margin-top:8px}
|
||||||
|
|
||||||
|
/* footer */
|
||||||
|
.site-footer{background:#071026;padding:28px;color:#cfe7ff;margin-top:28px;border-radius:8px}
|
||||||
|
.footer-inner{display:flex;justify-content:space-between;align-items:center;gap:12px}
|
||||||
|
.f-logo{width:36px}
|
||||||
|
|
||||||
|
/* to top */
|
||||||
|
#toTop{position:fixed;right:18px;bottom:18px;background:var(--accent);color:#fff;border:0;padding:10px 12px;border-radius:10px;display:none;cursor:pointer;z-index:80}
|
||||||
|
|
||||||
|
/* modal (video) */
|
||||||
|
.modal{position:fixed;inset:0;display:none;align-items:center;justify-content:center;z-index:200}
|
||||||
|
.modal.open{display:flex}
|
||||||
|
.modal-backdrop{position:absolute;inset:0;background:rgba(3,6,23,0.6)}
|
||||||
|
.modal-content{position:relative;max-width:980px;width:94%;z-index:210;outline:none;}
|
||||||
|
.modal-video-wrap{background:transparent;padding:0;border-radius:12px}
|
||||||
|
.modal-content video{width:100%;height:auto;border-radius:12px;box-shadow:0 40px 120px rgba(2,6,23,0.6)}
|
||||||
|
.modal-close{position:absolute;right:-10px;top:-10px;background:#fff;border-radius:50%;border:0;padding:8px 10px;box-shadow:0 8px 20px rgba(0,0,0,0.1);cursor:pointer;}
|
||||||
|
|
||||||
|
/* focus */
|
||||||
|
.modal-close:focus,
|
||||||
|
.btn:focus,
|
||||||
|
.nav a:focus,
|
||||||
|
.burger:focus {outline:2px solid var(--accent);outline-offset:2px}
|
||||||
|
|
||||||
|
/* responsive */
|
||||||
|
@media (max-width:720px){
|
||||||
|
.nav{display:none}
|
||||||
|
.burger{display:block}
|
||||||
|
.apple-title{font-size:28px}
|
||||||
|
.apple-video{height:90px}
|
||||||
|
.apple-main-image img{height:220px}
|
||||||
|
.grid-3{grid-template-columns:1fr}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user