@import url("https://fonts.googleapis.com/css2?family=Montserrat:wght@100..900&display=swap"); :root { --red: #e03c3f; --white: #ffffff; --blue: #38378b; --mint: #06ffa8; --hero: #8ca9ff; /* bleu clair fond hero (d’après maquette) */ --header: #f1f1f1; --radius: 22px; --c-bg: #8fa2ff; /* fond bleu/violet actuel de ton hero */ --c-dark: #38378b; /* bleu foncé de ta charte */ --c-white: #ffffff; --c-shadow: 0 10px 24px rgba(0, 0, 0, 0.12); } .only-mobile { display: none; } @media (max-width: 956px) { .only-desktop { display: none; } .only-mobile { display: inline; } } /*Boutons page accueil du site*/ .steps { width: min(800px, 92vw); margin: 40px auto 0; position: relative; display: grid; gap: 36px; } .step { position: relative; display: inline-flex; align-items: center; gap: 0; filter: drop-shadow(0 6px 10px rgba(0, 0, 0, 0.08)); } .step-badge { display: grid; place-items: center; width: 110px; height: 110px; border-radius: 50%; background: var(--c-white); color: var(--c-dark); font-weight: 800; font-size: clamp(28px, 5vw, 56px); line-height: 1; box-shadow: var(--c-shadow); z-index: 1; } .step-label { background: var(--c-white); color: var(--c-dark); font-weight: 700; font-size: clamp(16px, 2.6vw, 26px); padding: 14px 26px 14px 38px; /* pour chevauchement côté gauche */ border-radius: 999px; white-space: nowrap; box-shadow: var(--c-shadow); margin-left: -30px; z-index: 0; } /* Étape 3 inversée */ .step--reverse { flex-direction: row-reverse; /* inverse ordre badge et label */ } .step--reverse .step-label { padding: 14px 38px 14px 26px; /* espace à droite */ margin-left: 0; margin-right: -30px; /* chevauchement côté droit */ } /* tailles différentes pour chaque étape */ .step:nth-child(1) .step-badge { width: 110px; height: 110px; font-size: clamp(28px, 5vw, 56px); } .step:nth-child(2) .step-badge { width: 132px; height: 132px; font-size: clamp(32px, 5.5vw, 64px); } .step:nth-child(3) .step-badge { width: 158px; height: 158px; font-size: clamp(36px, 6vw, 72px); } /* placements (comme sur ta maquette) */ .step--left { justify-self: start; transform: translateX(0); } .step--center { justify-self: center; transform: translateY(8px); padding-left: 230px; } .step--right { justify-self: end; transform: translateX(0); } /*Fin boutons rondes*/ * { box-sizing: border-box; } html, body { height: 100%; } body { margin: 0; font-family: "Montserrat", system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif; color: #111; /*background: var(--hero);*/ display: grid; grid-template-rows: auto 1fr auto; /* header, contenu, footer */ } /* Header */ .site-header { background: var(--header); border-bottom: 1px solid rgba(0, 0, 0, 0.06); } .site-header .container { max-width: 1200px; margin: 0 auto; padding: 10px 18px; display: flex; align-items: center; justify-content: space-between; } /* ==== LOGO: mobile vs desktop (béton) ==== */ .brand { letter-spacing: 0.5px; font-weight: 700; display: flex; align-items: center; line-height: 0; /* évite petits décalages baseline */ } .header-left { display: flex; align-items: center; gap: 8px; /* distance logo ↔ langue */ } .brand .logo-mobile, .brand .logo-desktop { display: none !important; /* on cache tout par défaut */ height: 40px; /* taille unique (tu ajustes) */ width: auto; } /* Mobile: logo_u */ @media (max-width: 767.98px) { .brand .logo-mobile { display: block !important; } } /* Desktop: logo.png */ @media (min-width: 768px) { .brand .logo-desktop { display: block !important; } } /* Actions header */ .header-actions { display: flex; align-items: center; gap: 10px; } .icon-btn { border: none; background: #000; color: #fff; width: 28px; height: 28px; border-radius: 6px; } /* HERO */ .hero { padding: 0 0 56px; background: var(--hero); } .hero .container { max-width: 1100px; margin: 0 auto; padding: 0 18px; } .hero-title { color: #38378b; text-align: center; font-size: 48px; line-height: 1.16; font-weight: 800; margin: 5px 0 26px; } /* Bouton LOGIN */ .btn-login { background: var(--red); color: #fff; text-decoration: none; padding: 8px 14px; border-radius: 999px; font-weight: 500; box-shadow: 0 8px 22px rgba(0, 0, 0, 0.18); /*font-size: clamp(12px, 2vw, 16px);*/ } /* grille 3 au-dessus + 1 en dessous */ /* style des blocs ovales */ .hero .row { display: flex; justify-content: center; gap: 20px; margin: 15px 0; flex-wrap: wrap; /* au cas où ; reste cohérent */ } .chip { appearance: none; background: #fff; cursor: pointer; color: #000000; width: 230px; /* largeur fixe */ text-align: center; /* texte centré */ padding: 12px 0; /* hauteur uniforme */ border-radius: 15px; /* ovale */ font-weight: 600; font-size: 16px; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.15); border: 0; } /* Footer plus large (haut) et gris, toujours en bas */ footer { background: var(--header); border-top: 1px solid rgba(0, 0, 0, 0.06); padding: 22px 20px; /* plus haut qu’avant */ } footer p { margin: 0; text-align: center; color: #222; font-size: 13px; } /*===================================================================================================================*/ /*La partie affichage pour la page aprés la recherche*/ .container { max-width: 1200px; margin: 0 auto; padding: 0 18px; } /* Liste : espace entre blocs */ .pro-list { display: flex; flex-direction: column; gap: 40px; /* augmente l’écart vertical */ padding: 20px 0 40px; } /* Carte = 4 colonnes : photo | infos | vidéo | bouton */ .pro-card { background: #fff; border-radius: 28px; box-shadow: 0 14px 30px rgba(0, 0, 0, 0.18); display: grid; /* NE PAS forcer start ici */ align-items: stretch; /* <— important */ gap: 20px; padding: 20px; grid-template-columns: 260px 1.5fr 240px 180px; grid-template-areas: "photo info video cta"; } /* 1) Photo portrait, non déformée (recadrage OK) */ .pro-photo { grid-area: photo; } .pro-photo img { width: 100%; aspect-ratio: 3/4; /* portrait */ object-fit: cover; /* pas de déformation */ display: block; border-radius: 22px; } /* 2) Infos */ .pro-info { grid-area: info; padding: 0 6px; color: #1b1b1b; } .pro-name { margin: 0 0 8px; font-size: 26px; font-weight: 800; } .pro-spec { color: #38378b; font-weight: 700; margin-bottom: 10px; } .pro-desc { color: #3f3f3f; line-height: 1.45; font-size: 1.05rem; /* augmente légèrement la taille */ max-width: 95%; /* laisse plus d’espace dans la colonne */ } .pro-info .favori { top: 10px; right: 10px; /* passe à left:10px si tu le veux à gauche */ z-index: 2; font-size: 16px; line-height: 1; cursor: pointer; user-select: none; filter: drop-shadow(0 2px 6px rgba(6, 6, 6, 0.25)); transition: transform 0.15s ease, opacity 0.15s ease; } .pro-info .favori:hover { transform: scale(1.1); } .pro-info .favori.ajoute { color: rgb(12, 12, 11); transform: scale(1.15); } /* 3) Vidéo (vignette 16:9) */ /* même gabarit pour lien vidéo ET placeholder */ .pro-video, .pro-video.placeholder { position: relative; display: block; aspect-ratio: 4 / 3; /* <- ton format souhaité */ max-height: 180px; border-radius: 18px; overflow: hidden; background: #000; /* évite les bordures blanches */ } /* l'image occupe tout l'espace du cadre */ .pro-video img, .pro-video.placeholder img { width: 100%; height: 100%; object-fit: cover; display: block; } /* optionnel: largeur de la colonne vidéo */ .pro-video-col { display: flex; align-items: center; /* centre verticalement dans la colonne */ justify-content: center; width: clamp(240px, 32vw, 200px); } /* 4) Bouton dans sa colonne, centré verticalement et aligné à droite */ .pro-cta-col { grid-area: cta; display: flex; align-items: center; /* centre verticalement */ justify-content: center; /* centre horizontalement */ } .pro-cta { background: #e03c3f; color: #fff; text-decoration: none; font-weight: 600; padding: 10px 18px; border-radius: 999px; box-shadow: 0 8px 22px rgba(0, 0, 0, 0.18); white-space: nowrap; /*font-size: 0.95rem;*/ } /* Langue choix*/ /* Sélecteur de langue dans le header */ .lang-switch { display: flex; gap: 6px; height: 42px; background: #fff; padding: 6px; border-radius: 20px; box-shadow: 0 2px 6px rgba(0, 0, 0, 0.08); } .lang-btn { display: inline-block; padding: 4px 10px; font-size: 13px; font-weight: 700; text-decoration: none; color: #38378b; /* bleu foncé */ border-radius: 14px; transition: all 0.2s ease-in-out; } .lang-btn:hover { background: rgba(56, 55, 139, 0.08); } .lang-btn.active { background: #38378b; /* bleu foncé */ color: #fff; } a { text-decoration: none; color: #000; } /* Compact */ .pro-card--sm { --pro-card-pad: 12px; --pro-card-gap: 10px; --pro-avatar: 72px; --pro-title: 16px; --pro-lines: 2; } /* Large */ .pro-card--lg { --pro-card-pad: 22px; --pro-card-gap: 18px; --pro-avatar: 100px; --pro-title: 20px; --pro-lines: 4; } .results-title, .results-meta, .result-count { color: #fff; text-align: center; } .btn-logo { --bs-btn-bg: #38378b; --bs-btn-border-color: #38378b; --bs-btn-hover-bg: #2f2e77; --bs-btn-hover-border-color: #2f2e77; --bs-btn-active-bg: #24235e; --bs-btn-active-border-color: #24235e; --bs-btn-color: #fff; /* blanc par défaut */ --bs-btn-focus-shadow-rgb: 56, 55, 139; /* halo focus */ } /* On force la couleur du texte à blanc dans tous les états */ .btn-logo, .btn-logo:hover, .btn-logo:active, .btn-logo:focus, .btn-logo:focus-visible { color: #fff !important; } /* Menu compact, largeur auto comme dans ta maquette */ .help-menu { min-width: auto; /* override Bootstrap */ width: max-content; /* s’adapte au contenu */ max-width: 92vw; /* borne mobile */ border-radius: 12px; padding: 8px; } .help-menu .dropdown-item { padding: 10px 14px; white-space: nowrap; } .help-menu .dropdown-item + .dropdown-item { margin-top: 6px; } /* petits espacements */ @media (min-width: 576px) { .help-menu { max-width: 360px; } /* borne desktop */ } /* Taille tactile du bouton “?” */ .question-btn { width: 38px; height: 38px; font-size: 22px; font-weight: 700; line-height: 1; padding: 0; } /* Menu plus étroit (recommandé) */ .offcanvas-slim { --bs-offcanvas-width: clamp(240px, 80vw, 320px); } /* Option: largeur calée au titre (plus “compacte”) */ /* .offcanvas-slim{ --bs-offcanvas-width: fit-content; max-width: min(90vw, 360px); } */ /* Fallback minimal sans Bootstrap */ .d-none { display: none !important; } .d-sm-inline { display: none !important; } .d-sm-none { display: inline !important; } .text-nowrap { white-space: nowrap !important; } @media (min-width: 576px) { .d-sm-inline { display: inline !important; } .d-sm-none { display: none !important; } } /* ==== VISUEL COMMUN POUR TOUS LES MENUS ==== */ .menu-panel { background: #fff; border: 1px solid rgba(0, 0, 0, 0.1); border-radius: 12px; box-shadow: 0 8px 20px rgba(0, 0, 0, 0.08); min-width: 230px; padding: 8px 0; } /* Items menu principal (li custom OU .dropdown-item Bootstrap) */ .menu-panel > li, .menu-panel .dropdown-item { padding: 12px 18px; font-size: 16px; line-height: 1.25; white-space: nowrap; cursor: pointer; transition: background 0.2s ease; } .menu-panel > li + li, .menu-panel .dropdown-item + .dropdown-item { border-top: 1px solid #f1f1f1; } .menu-panel > li:hover, .menu-panel .dropdown-item:hover { background: #f8f9fa; /* juste fond gris clair */ } .menu-panel a { color: inherit; text-decoration: none; display: block; cursor: pointer; } /* ==== MENU “BURGER” CUSTOM ==== */ .menu-wrap { position: relative; } .dropdown-menu-custom { position: absolute; top: calc(100% + 8px); right: 0; list-style: none; margin: 0; display: none; /* fermé par défaut */ z-index: 1100; } .dropdown-menu-custom.is-open { display: block; } /* Sous-menu */ .has-submenu .submenu-toggle { width: 100%; text-align: left; background: none; border: 0; padding: 0.55rem 1rem; font-weight: 400; display: flex; align-items: center; justify-content: space-between; cursor: pointer; } .submenu { list-style: none; margin: 0; padding: 0 0 0.5rem 0; } .submenu > li { padding: 0.4rem 1rem 0.4rem 1.5rem; cursor: pointer; transition: background 0.2s ease; } .submenu > li:hover { background: #fff; /* juste fond gris clair */ } .submenu[hidden] { display: none; } /* ==== MENU “?” BOOTSTRAP ==== */ .dropdown-menu.menu-panel { border: 1px solid rgba(0, 0, 0, 0.1); border-radius: 12px; box-shadow: 0 8px 20px rgba(0, 0, 0, 0.08); min-width: 230px; padding: 8px 0; } /* Sécurité : que rien ne coupe les menus */ .site-header, .header-actions, .menu-wrap, .dropdown { overflow: visible; } /* Bouton avatar (menu principal) */ #btnMenu { background: none; border: none; padding: 0; cursor: pointer; -webkit-tap-highlight-color: transparent; /* enlève flash bleu sur mobile */ padding-left: 10px; } /* Supprime le halo/cadre bleu par défaut */ #btnMenu:focus, #btnMenu:active { outline: none; box-shadow: none; } /* Si tu veux garder une indication focus clavier accessible */ #btnMenu:focus-visible { outline: 2px solid var(--color-blue); /* ou une couleur douce */ outline-offset: 3px; border-radius: 50%; } .footer-top-links { color: #38378b; font-weight: 600; } .footer-top-links a { color: inherit; /* hérite du bleu foncé */ } /* ===== Personnalisation bandeau cookies (CookieConsent v3) ===== */ #cc-main { --cc-font-family: "Montserrat", sans-serif; /* Couleurs de texte */ --cc-primary-color: #38378b; /* titres/links -> bleu foncé */ --cc-secondary-color: #38378b; /* paragraphe du bandeau */ /* Bouton principal (Accepter tout) -> rouge arrondi */ --cc-btn-border-radius: 22px; --cc-btn-primary-bg: #e03c3f; --cc-btn-primary-color: #ffffff; --cc-btn-primary-border-color: #e03c3f; --cc-btn-primary-hover-bg: #c92f33; /* rouge un peu plus foncé */ --cc-btn-primary-hover-color: #ffffff; --cc-btn-primary-hover-border-color: #c92f33; /* Boutons secondaires (Refuser / Paramétrer) -> fond blanc, bord gris, arrondi */ --cc-btn-secondary-bg: #ffffff; --cc-btn-secondary-color: #38378b; --cc-btn-secondary-border-color: #d9dee3; --cc-btn-secondary-hover-bg: #f4f6f8; --cc-btn-secondary-hover-color: #38378b; --cc-btn-secondary-hover-border-color: #c9d0d6; /* Séparateur & fond pieds/bords pour un rendu plus clean */ --cc-separator-border-color: #eef2f5; --cc-footer-bg: #ffffff; --cc-footer-color: #38378b; /* Optionnel: arrondir la carte elle-même */ --cc-modal-border-radius: 22px; } /* Si tu veux forcer l’arrondi aussi quand des classes sont injectées */ #cc-main .cm__btn, #cc-main .pm__btn { border-radius: 22px; } /*===================================================================================================================*/ /* --- Container modal --- */ .vmodal { position: fixed; inset: 0; display: none; z-index: 99999; } .vmodal[aria-hidden="false"] { display: block; } .vmodal__backdrop { position: absolute; inset: 0; background: rgba(0, 0, 0, 0.6); } /* --- Boîte --- */ .vmodal__dialog { position: relative; z-index: 2; max-width: 1000px; width: 92%; margin: 40px auto; background: #fff; border-radius: 16px; box-shadow: 0 20px 60px rgba(0, 0, 0, 0.25); overflow: hidden; /* pour arrondis propres */ } /* --- Header “Bootstrap-like” --- */ .vmodal__header { display: flex; align-items: center; justify-content: space-between; padding: 0.85rem 1rem; border-bottom: 1px solid rgba(0, 0, 0, 0.08); background: #fff; } .vmodal__title { margin: 0; font-size: 1.1rem; font-weight: 600; color: #111; } /* --- Close visible (rond blanc) --- */ .vmodal__close { border: 0; background: #fff; color: #111; width: 36px; height: 36px; border-radius: 999px; display: inline-flex; align-items: center; justify-content: center; font-size: 22px; line-height: 1; cursor: pointer; border: 1px solid rgba(0, 0, 0, 0.1); box-shadow: 0 6px 20px rgba(0, 0, 0, 0.18); } .vmodal__close:hover { filter: brightness(0.95); } /* --- Body + ratio vidéo --- */ .vmodal__body { padding: 1rem; } .vmodal__ratio { position: relative; width: 100%; aspect-ratio: 16/9; overflow: hidden; border-radius: 12px; background: #000; } .vmodal__ratio iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; } /* --- Footer --- */ .vmodal__footer { display: flex; justify-content: flex-end; gap: 0.5rem; padding: 0.85rem 1rem; border-top: 1px solid rgba(0, 0, 0, 0.08); background: #fff; } .btn.btn-secondary-like { appearance: none; border: 1px solid #ced4da; background: #f8f9fa; color: #212529; padding: 0.5rem 0.9rem; border-radius: 0.35rem; cursor: pointer; } .btn.btn-secondary-like:hover { background: #e9ecef; } .no-results { text-align: center; /* centre le texte */ color: #fff; /* texte en blanc */ } /* --- Mobile --- */ @media (max-width: 575.98px) { .vmodal__dialog { margin: 16px auto; width: 96%; } .vmodal__title { font-size: 1rem; } } .pager { display: flex; justify-content: center; align-items: center; gap: 10px; margin: 22px 0; } .pager a { text-decoration: none; font-weight: 700; } .pager-arrow { padding: 10px 18px; border-radius: 999px; border: 1px solid #e0e3eb; background: #fff; color: #38378b; box-shadow: 0 6px 14px rgba(0, 0, 0, 0.06); transition: background 0.2s, transform 0.1s, opacity 0.2s; } .pager-arrow:hover { background: #f8f9ff; transform: translateY(-1px); } .pager-arrow.is-disabled { opacity: 0.4; pointer-events: none; } .pager-page { width: 40px; height: 40px; display: inline-flex; align-items: center; justify-content: center; border-radius: 50%; border: 1px solid #e0e3eb; background: #fff; color: #38378b; box-shadow: 0 6px 14px rgba(0, 0, 0, 0.06); transition: background 0.2s, transform 0.1s, color 0.2s, border-color 0.2s; } .pager-page:hover { background: #f8f9ff; transform: translateY(-1px); } .pager-page.is-active { background: #e03c3f; color: #fff; border-color: #e03c3f; transform: none; } .menu-item-form { padding: 0 !important; list-style: none; } .menu-logout-form { margin: 0; width: 100%; } .menu-logout-btn { all: unset; box-sizing: border-box; display: block; width: 100%; padding: 12px 16px; cursor: pointer; font: inherit; color: inherit; text-align: left; } .menu-logout-btn:hover { background: #f3f4f6; } .menu-logout-btn:focus-visible { outline: 2px solid #94a3b8; outline-offset: -2px; }