/* ==========================================================================
   1SWISS1 - css/pages/public.css : pages publiques (refonte v01, phase 7)
   --------------------------------------------------------------------------
   Accueil (homepage.tpl), vitrines de la boutique et pages légales.
   Chargé depuis le template de la page (pas depuis head.tpl), avec un
   paramètre ?v= propre à changer à chaque modification.
   S'appuie sur les jetons et les boutons 3 niveaux de s1-ui.css
   (.btn-primary rouge, .btn-default blanc + filet, .btn-link texte).
   Préfixe : pub-
   ========================================================================== */

.pub {
    --pub-gut: clamp(16px, 5vw, 64px);
    --pub-wrap: 1280px;
    font-family: var(--s1-font);
    color: var(--s1-ink);
    font-size: 16px;
    line-height: 1.55;
    overflow-x: clip;
}
.pub *, .pub *::before, .pub *::after { box-sizing: border-box; }
.pub :where(h1, h2, h3, h4) { font-family: var(--s1-font); color: inherit; margin: 0; letter-spacing: -0.015em; line-height: 1.12; text-wrap: balance; }
.pub :where(p) { margin: 0; }
.pub :where(ul, ol) { margin: 0; padding: 0; list-style: none; }
.pub :where(img, video) { max-width: 100%; display: block; }
.pub a:not(.btn) { color: inherit; }
.pub :focus-visible { outline: 2px solid var(--s1-ink); outline-offset: 3px; }
.pub .pub-dark :focus-visible, .pub .pub-hero :focus-visible { outline-color: #fff; }
.pub .num { font-variant-numeric: tabular-nums; }
.pub .red { color: var(--s1-red); }
.pub-w { max-width: calc(var(--pub-wrap) + 2 * var(--pub-gut)); margin: 0 auto; padding: 0 var(--pub-gut); }

/* Titre de section (charte) : petit carré rouge + capitales, filet, grand titre */
.pub-sq { display: flex; align-items: center; gap: 10px; margin: 0 0 20px; font-size: 14px; line-height: 1.3; font-weight: var(--s1-w-strong); letter-spacing: .08em; text-transform: uppercase; color: var(--s1-ink); }
.pub-sq::before { content: ""; flex: none; width: 8px; height: 8px; background: var(--s1-red); }
.pub-rule { border: 0; border-top: 1px solid var(--s1-line); margin: 0; }
.pub-h2 { margin-top: 32px ; font-size: clamp(30px, 3.4vw, 46px); line-height: 1.1; font-weight: var(--s1-w-title); max-width: 22ch; }
.pub-h2 .l2 { display: block; color: var(--s1-red); }
.pub-lead { margin-top: 16px ; color: var(--s1-ink-2); font-size: 17px; max-width: 60ch; }
.pub-sec { padding: 104px 0; }
.pub-soft { background: var(--s1-g50); }
.pub-dark { background: var(--s1-ink); color: var(--s1-on-dark); }
.pub-dark .pub-sq { color: #fff; }
.pub-dark .pub-rule { border-top-color: rgba(255, 255, 255, .2); }
@media (max-width: 760px) { .pub-sec { padding: 72px 0; } }

/* Puces carrées rouges (charte, jamais rondes) */
.pub-ticks { display: grid; gap: 10px; }
.pub-ticks li { position: relative; padding-left: 20px; }
.pub-ticks li::before { content: ""; position: absolute; left: 2px; top: .62em; width: 6px; height: 6px; background: var(--s1-red); }

/* Boutons sur fond sombre : secondaire blanc, tertiaire texte blanc */
.pub .pub-onDark.btn-link { color: #fff; text-decoration: underline; text-underline-offset: 4px; }
.pub .pub-onDark.btn-link:hover { color: var(--s1-on-dark-2); }
.pub .pub-onDark.btn-default { border-color: #fff; }

/* ---------- Hero vidéo + recherche de domaine ---------- */
.pub-hero { position: relative; display: flex; align-items: center; min-height: clamp(560px, calc(100svh - 64px), 980px); color: #fff; background: var(--s1-ink); overflow: hidden; }
.pub-hero-video, .pub-hero-poster { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center; max-width: none; }
.pub-hero-veil { position: absolute; inset: 0; background: linear-gradient(90deg, rgba(0, 0, 0, .74) 0%, rgba(0, 0, 0, .7) 60%, rgba(0, 0, 0, .5) 100%); }
.pub-hero-in { position: relative; z-index: 1; width: 100%; padding-top: 72px; padding-bottom: 80px; }
.pub-hero h1 { font-size: clamp(36px, 4.4vw, 62px); line-height: 1.06; font-weight: var(--s1-w-title); max-width: 15em; color: #fff; }
.pub-hero h1 span { color: var(--s1-red); }
.pub-hero-sub { margin-top: 22px ; font-size: 19px; line-height: 1.6; color: var(--s1-on-dark-2); max-width: 620px; font-weight: var(--s1-w-light); }
.pub-search { margin-top: 40px; max-width: 760px; }
.pub-search label { display: block; margin: 0 0 10px 4px; font-size: 16px; font-weight: var(--s1-w-strong); color: #fff; }
.pub-search-row { display: flex; gap: 8px; align-items: center; padding: 6px 6px 6px 20px; border-radius: var(--s1-r-pill); background: #fff; color: var(--s1-ink); }
.pub-search-row:focus-within { box-shadow: 0 0 0 3px rgba(255, 255, 255, .55); }
.pub-search-row i { font-size: 18px; color: var(--s1-ink-2); }
.pub-search-row input { flex: 1; min-width: 0; padding: 10px 4px; border: 0; outline: 0; background: transparent; font: inherit; font-size: 17px; color: var(--s1-ink); }
.pub-search-row input::placeholder { color: #6b6b6b; }
.pub-search-hint { margin: 12px 0 0 4px ; font-size: 15px; color: var(--s1-on-dark-2); }
.pub-hero-a { margin-top: 32px; display: flex; flex-wrap: wrap; align-items: center; gap: 12px 20px; }
.pub-vid { position: absolute; z-index: 2; left: var(--pub-gut); bottom: 32px; width: 44px; height: 44px; display: inline-flex; align-items: center; justify-content: center; border-radius: var(--s1-r-pill); border: 1px solid rgba(255, 255, 255, .6); background: rgba(0, 0, 0, .35); color: #fff; font-size: 15px; cursor: pointer; transition: background-color var(--s1-dur) var(--s1-ease); }
.pub-vid:hover { background: rgba(0, 0, 0, .6); }
@media (max-width: 760px) {
    .pub-hero-veil { background: rgba(0, 0, 0, .72); }
    .pub-hero-in { padding-top: 48px; padding-bottom: 96px; }
    .pub-hero-sub { font-size: 17px; }
    .pub-vid { bottom: 24px; }
}
@media (max-width: 560px) {
    .pub-search-row { flex-wrap: wrap; padding: 6px 6px 6px 14px; border-radius: 22px; }
    .pub-search-row input { flex-basis: calc(100% - 40px); }
    .pub-search-row .btn { width: 100%; }
}

/* Réassurance sous le hero */
.pub-assure { border-bottom: 1px solid var(--s1-line); }
.pub-assure ul { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 12px 28px; padding: 18px 0; font-size: 15px; color: var(--s1-ink-2); }
.pub-assure li { display: flex; align-items: center; gap: 10px; }
.pub-assure i { width: 18px; text-align: center; color: var(--s1-ink); }
@media (max-width: 760px) { .pub-assure ul { display: grid; grid-template-columns: 1fr 1fr; } }
@media (max-width: 420px) { .pub-assure ul { grid-template-columns: 1fr; } }

/* ---------- Votre situation : 3 cartes ---------- */
.pub-sit { margin-top: 56px; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px; }
.pub-sit-c { display: flex; flex-direction: column; height: 100%; overflow: hidden; text-decoration: none; color: var(--s1-ink) ; background: var(--s1-g50); border: 1px solid var(--s1-line); border-radius: var(--s1-r-xl); transition: border-color var(--s1-dur) var(--s1-ease), transform var(--s1-dur) var(--s1-ease); }
.pub-sit-c:hover { border-color: var(--s1-ink); transform: translateY(-3px); text-decoration: none; }
.pub-sit-m { position: relative; display: block; aspect-ratio: 16 / 10; overflow: hidden; background: var(--s1-ink); }
.pub-sit-m img { width: 100%; height: 100%; object-fit: cover; transition: transform 900ms var(--s1-ease); }
.pub-sit-c:hover .pub-sit-m img { transform: scale(1.04); }
.pub-sit-mv { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; gap: 12px; padding: 0 12px; font-size: 18px; color: #fff; background: rgba(34, 34, 34, .35); }
.pub-sit-mv span { padding: 7px 14px; border-radius: var(--s1-r-pill); background: rgba(34, 34, 34, .8); white-space: nowrap; }
.pub-sit-mv span:last-child { background: #fff; color: var(--s1-ink); font-weight: var(--s1-w-strong); }
.pub-sit-b { display: flex; flex-direction: column; flex: 1; padding: 28px 28px 30px; }
.pub-sit-t { font-size: clamp(22px, 2vw, 27px); line-height: 1.15; font-weight: var(--s1-w-title); letter-spacing: -0.01em; }
.pub-sit .pub-ticks { margin: 20px 0 28px; font-size: 15px; }
.pub-sit-go { margin-top: auto; align-self: flex-start; }
.pub-sit-c:hover .pub-sit-go { border-color: var(--s1-ink); }
@media (max-width: 980px) { .pub-sit { grid-template-columns: 1fr; gap: 20px; } .pub-sit-m { aspect-ratio: 16 / 8; } }

/* ---------- Étapes ---------- */
.pub-steps { margin-top: 56px; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 40px; }
.pub-step { padding-top: 28px; border-top: 1px solid var(--s1-line); }
.pub-step .sn { display: block; font-size: 34px; line-height: 1; font-weight: var(--s1-w-light); color: var(--s1-red); }
.pub-step h3 { margin-top: 20px; font-size: 22px; font-weight: var(--s1-w-strong); }
.pub-step p { margin-top: 10px; color: var(--s1-ink-2); max-width: 36ch; }
.pub-incl { margin-top: 64px; padding-top: 32px; border-top: 1px solid var(--s1-line); display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 8fr); gap: 40px; align-items: start; }
.pub-incl h3 { font-size: 20px; font-weight: var(--s1-w-strong); }
.pub-incl > div > p { margin-top: 10px; color: var(--s1-ink-2); font-size: 15px; max-width: 36ch; }
.pub-tools { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; }
.pub-tools li { display: flex; flex-direction: column; gap: 12px; padding: 18px 18px 20px; border: 1px solid var(--s1-line); border-radius: var(--s1-r-md); background: #fff; font-size: 15px; }
.pub-tools i { font-size: 20px; color: var(--s1-ink); }
@media (max-width: 980px) { .pub-steps { grid-template-columns: 1fr; gap: 32px; margin-top: 40px; } .pub-incl { grid-template-columns: 1fr; gap: 20px; margin-top: 48px; } .pub-tools { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

/* ---------- Premier site : demi-écran photo ---------- */
.pub-start { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); min-height: 600px; }
.pub-start-m { position: relative; overflow: hidden; background: var(--s1-ink); }
.pub-start-m img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 38% 50%; max-width: none; }
.pub-start-b { display: flex; flex-direction: column; justify-content: center; max-width: 720px; padding: 88px var(--pub-gut) 88px clamp(28px, 5vw, 80px); }
.pub-start-b h2 { font-size: clamp(30px, 3.2vw, 44px); line-height: 1.1; font-weight: var(--s1-w-title); max-width: 18ch; }
.pub-start-b .pub-ticks { margin-top: 28px; padding-top: 24px; border-top: 1px solid var(--s1-line); grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px 28px; font-size: 15px; }
.pub-start-note { margin-top: 20px ; color: var(--s1-ink-2); font-size: 15px; max-width: 50ch; }
.pub-start-b .btn { margin-top: 32px; align-self: flex-start; }
@media (max-width: 900px) { .pub-start { grid-template-columns: 1fr; min-height: 0; } .pub-start-m { aspect-ratio: 16 / 8; } .pub-start-b { padding: 48px var(--pub-gut) 72px; } }
@media (max-width: 480px) { .pub-start-b .pub-ticks { grid-template-columns: 1fr; } }

/* ---------- Chiffres clés (bloc anthracite + motif 1S1) ---------- */
.pub-stats { position: relative; overflow: hidden; padding: 96px 0 104px; }
.pub-stats > .bg { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: right center; max-width: none; opacity: .45; }
.pub-stats .pub-w { position: relative; z-index: 1; }
.pub-stats-g { margin-top: 56px; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); }
.pub-stat { padding: 8px 20px; text-align: center; }
.pub-stat + .pub-stat { border-left: 1px solid rgba(255, 255, 255, .2); }
.pub-stat strong { display: block; font-size: clamp(48px, 5.2vw, 68px); line-height: 1; font-weight: var(--s1-w-light); letter-spacing: -0.02em; color: #fff; white-space: nowrap; }
.pub-stat span { display: block; max-width: 22ch; margin: 14px auto 0; color: var(--s1-on-dark-2); }
@media (max-width: 860px) {
    .pub-stats-g { grid-template-columns: 1fr; margin-top: 24px; }
    .pub-stat { padding: 24px 0; text-align: left; }
    .pub-stat + .pub-stat { border-left: 0; border-top: 1px solid rgba(255, 255, 255, .2); }
    .pub-stat span { margin-left: 0; }
}

/* ---------- Piliers ---------- */
.pub-pillars { margin-top: 56px; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; }
.pub-pillar { padding: 32px; border: 1px solid var(--s1-line); border-radius: var(--s1-r-lg); background: #fff; }
.pub-pillar .pn { display: block; font-size: 32px; line-height: 1; font-weight: var(--s1-w-light); color: var(--s1-red); }
.pub-pillar h3 { margin-top: 24px; font-size: 21px; font-weight: var(--s1-w-strong); }
.pub-pillar p { margin-top: 12px; font-size: 15px; line-height: 1.6; color: var(--s1-ink-2); }
@media (max-width: 1100px) { .pub-pillars { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 620px) { .pub-pillars { grid-template-columns: 1fr; } .pub-pillar { padding: 26px 22px; } }

/* ---------- Partenaires : mur de logos défilant ---------- */
.pub-partners { padding: 0 0 104px; }
.pub-mq { max-width: calc(var(--pub-wrap) + 2 * var(--pub-gut)); margin: 48px auto 0; overflow: hidden; -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 6%, #000 94%, transparent 100%); mask-image: linear-gradient(90deg, transparent 0, #000 6%, #000 94%, transparent 100%); }
.pub-mq-t { display: flex; gap: 8px; width: max-content; }
.pub-mq-t ul { display: flex; gap: 8px; }
.pub-tile { flex: none; width: 220px; height: 140px; display: flex; align-items: center; justify-content: center; padding: 24px; border: 1px solid var(--s1-line); border-radius: var(--s1-r-md); background: #fff; }
.pub-tile img { width: auto; height: auto; max-width: 160px; max-height: 42px; filter: grayscale(1); opacity: .7; transition: filter var(--s1-dur) var(--s1-ease), opacity var(--s1-dur) var(--s1-ease); }
.pub-tile:hover img { filter: none; opacity: 1; }
.pub-mq-c { margin-top: 20px; display: flex; justify-content: flex-end; }
@media (prefers-reduced-motion: no-preference) {
    .pub-mq-t { animation: pubMq 70s linear infinite; }
    .pub-mq:hover .pub-mq-t, .pub-mq:focus-within .pub-mq-t, .pub-mq.is-paused .pub-mq-t { animation-play-state: paused; }
}
@keyframes pubMq { to { transform: translateX(calc(-50% - 4px)); } }
@media (prefers-reduced-motion: reduce) {
    .pub-mq { -webkit-mask-image: none; mask-image: none; }
    .pub-mq-t { width: auto; padding: 0 var(--pub-gut); }
    .pub-mq-t ul { flex-wrap: wrap; }
    .pub-mq-t ul[aria-hidden="true"], .pub-mq-c { display: none; }
}
@media (max-width: 620px) { .pub-tile { width: 168px; height: 112px; padding: 18px; } .pub-tile img { max-width: 128px; max-height: 34px; } }

/* ---------- Service humain : bloc anthracite arrondi + photo ---------- */
.pub-human { display: grid; grid-template-columns: minmax(0, 6fr) minmax(0, 5fr); min-height: 540px; overflow: hidden; border-radius: 24px; }
.pub-human-b { display: flex; flex-direction: column; justify-content: center; padding: 72px 56px 72px 72px; }
.pub-human h2 { font-size: clamp(30px, 3.2vw, 44px); line-height: 1.1; font-weight: var(--s1-w-title); max-width: 18ch; color: #fff; }
.pub-human h2 .l2 { display: block; color: var(--s1-red); }
.pub-human-p { margin-top: 36px ; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px 32px; }
.pub-human-p li { padding-top: 16px; border-top: 1px solid rgba(255, 255, 255, .2); }
.pub-human-p strong { display: block; font-size: 18px; font-weight: var(--s1-w-strong); color: #fff; }
.pub-human-p span { display: block; margin-top: 6px; font-size: 15px; color: var(--s1-on-dark-2); }
.pub-human-a { margin-top: 40px; display: flex; flex-wrap: wrap; gap: 12px; }
.pub-human-m { position: relative; min-height: 320px; background: #111; }
.pub-human-m img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 62% 40%; max-width: none; }
@media (max-width: 980px) { .pub-human { grid-template-columns: 1fr; } .pub-human-m { order: -1; min-height: 0; aspect-ratio: 16 / 9; } .pub-human-b { padding: 44px 28px 48px; } }
@media (max-width: 560px) { .pub-human { border-radius: var(--s1-r-xl); } .pub-human-p { grid-template-columns: 1fr; gap: 18px; } .pub-human-b { padding: 32px 20px 36px; } }

/* ---------- Aussi chez 1SWISS1 : liste de services ---------- */
.pub-more { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 7fr); gap: 64px; align-items: start; }
.pub-more-side { position: sticky; top: 104px; }
.pub-more-side h2 { font-size: clamp(32px, 3.6vw, 48px); line-height: 1.05; font-weight: var(--s1-w-title); }
.pub-more-side p { margin-top: 18px; color: var(--s1-ink-2); max-width: 36ch; }
.pub-more-l { border-bottom: 1px solid var(--s1-line); }
.pub-more-l a { display: grid; grid-template-columns: 48px minmax(0, 1fr) auto; gap: 20px; align-items: center; padding: 30px 0; border-top: 1px solid var(--s1-line); text-decoration: none; color: var(--s1-ink); }
.pub-more-l a:hover { text-decoration: none; }
.pub-more-l .sn { align-self: start; padding-top: 6px; font-size: 20px; line-height: 1; color: var(--s1-red); }
.pub-more-l h3 { font-size: clamp(22px, 2.2vw, 28px); line-height: 1.15; font-weight: var(--s1-w-strong); }
.pub-more-l p { margin-top: 6px; color: var(--s1-ink-2); font-size: 15px; }
.pub-go { flex: none; width: 44px; height: 44px; display: inline-flex; align-items: center; justify-content: center; border: 1px solid var(--s1-line); border-radius: var(--s1-r-pill); color: var(--s1-ink); transition: background-color var(--s1-dur) var(--s1-ease), border-color var(--s1-dur) var(--s1-ease), color var(--s1-dur) var(--s1-ease); }
.pub-more-l a:hover .pub-go, .pub-more-l a:focus-visible .pub-go { background: var(--s1-ink); border-color: var(--s1-ink); color: #fff; }
@media (max-width: 900px) { .pub-more { grid-template-columns: 1fr; gap: 32px; } .pub-more-side { position: static; } .pub-more-l a { grid-template-columns: 32px minmax(0, 1fr) auto; gap: 14px; padding: 24px 0; } .pub-go { width: 40px; height: 40px; } }

/* ---------- FAQ ---------- */
.pub-faq { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 7fr); gap: 64px; }
.pub-faq-side h2 { font-size: clamp(30px, 3.2vw, 44px); line-height: 1.1; font-weight: var(--s1-w-title); }
.pub-faq-help { margin-top: 24px; display: flex; gap: 16px; align-items: flex-start; }
.pub-faq-help img { flex: none; width: 56px; height: 56px; }
.pub-faq-help p { color: var(--s1-ink-2); font-size: 15px; max-width: 34ch; }
.pub-faq-side .btn { margin-top: 24px; }
.pub-faq-l details { border-top: 1px solid var(--s1-line); }
.pub-faq-l details:last-child { border-bottom: 1px solid var(--s1-line); }
.pub-faq-l summary { display: flex; justify-content: space-between; align-items: center; gap: 20px; padding: 22px 0; list-style: none; cursor: pointer; font-size: 18px; font-weight: var(--s1-w-strong); }
.pub-faq-l summary::-webkit-details-marker { display: none; }
.pub-pm { flex: none; width: 36px; height: 36px; display: flex; align-items: center; justify-content: center; border: 1px solid var(--s1-line); border-radius: var(--s1-r-pill); font-size: 14px; transition: transform var(--s1-dur) var(--s1-ease), background-color var(--s1-dur) var(--s1-ease), color var(--s1-dur) var(--s1-ease), border-color var(--s1-dur) var(--s1-ease); }
.pub-faq-l summary:hover .pub-pm { border-color: var(--s1-ink); }
.pub-faq-l details[open] .pub-pm { transform: rotate(45deg); background: var(--s1-ink); border-color: var(--s1-ink); color: #fff; }
.pub-faq-l .ans { padding: 0 56px 24px 0; color: var(--s1-ink-2); max-width: 66ch; }
@media (max-width: 900px) { .pub-faq { grid-template-columns: 1fr; gap: 32px; } .pub-faq-l .ans { padding-right: 0; } .pub-faq-l summary { font-size: 17px; } }

/* Apparition au défilement (désactivée si mouvement réduit ou sans JS) */
@media (prefers-reduced-motion: no-preference) {
    /* Le contenu reste toujours visible (pas d'opacité nulle) : seul un léger glissement
       est joué, et seulement pour les blocs placés sous la ligne de flottaison au chargement
       (classe .rv-wait posée par le JS si IntersectionObserver existe). */
    .pub .rv.rv-wait { transform: translateY(14px); }
    .pub .rv { transition: transform 700ms var(--s1-ease); transition-delay: calc(var(--i, 0) * 70ms); }
}

/* Accueil dans la coquille de l'espace client (visiteur connecté) */
body.is-logged-in .pub-hero { min-height: clamp(520px, calc(100svh - 72px), 900px); }
/* Visiteur : la barre de navigation publique (64 px) est fixe et recouvre le haut de page */
body:not(.is-logged-in) .pub-hero { padding-top: 64px; min-height: clamp(600px, 100svh, 1040px); }
body:not(.is-logged-in) .pub-store { padding-top: calc(64px + var(--s1-page-pt, 48px)); }

/* ==========================================================================
   Vitrines de la boutique (products.tpl) : complément des composants s1m-
   (css/pages/modules.css). Largeur de lecture 1280 px centrée.
   ========================================================================== */
.pub-store { max-width: 1280px; margin-left: auto; margin-right: auto; }
.pub-plan.is-featured { border-color: var(--s1-ink); }
.pub-plan-h { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.pub-plan-tag { font-size: 14px; font-weight: var(--s1-w-strong); color: var(--s1-ink); }
.pub-store .pub-price { margin: 0; color: var(--s1-ink); }
.pub-price strong { font-size: 30px; font-weight: var(--s1-w-title); font-variant-numeric: tabular-nums; }
.pub-price small { font-size: 14px; color: var(--s1-ink-2); }
.pub-store .pub-ticks { display: grid; gap: 8px; margin: 0; padding: 0; list-style: none; font-size: 15px; }
.pub-store .pub-ticks li { position: relative; padding-left: 20px; color: var(--s1-ink); }
.pub-store .pub-ticks li::before { content: ""; position: absolute; left: 2px; top: .62em; width: 6px; height: 6px; background: var(--s1-red); }
.pub-feats { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 28px 32px; margin-top: 20px; }
.pub-feats--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.pub-feats h4 { margin: 0 0 6px; font-size: 17px; font-weight: var(--s1-w-strong); color: var(--s1-ink); }
.pub-feats p { margin: 0; color: var(--s1-ink-2); line-height: 1.55; }
.pub-note { margin: 16px 0 0; color: var(--s1-ink-2); line-height: 1.55; }
@media (max-width: 1100px) { .pub-feats { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 700px) { .pub-feats, .pub-feats--3 { grid-template-columns: minmax(0, 1fr); } }
.pub-partner-logo { display: block; height: 32px; width: auto; margin: 0 0 18px; }
.pub-matrix th, .pub-matrix td { text-align: center; }
.pub-matrix th:first-child, .pub-matrix td:first-child { text-align: left; min-width: 240px; }
.pub-matrix th.is-featured { color: var(--s1-ink); font-weight: var(--s1-w-strong); box-shadow: inset 0 -2px 0 var(--s1-ink); }
.pub-y i { color: var(--s1-ink); }
.pub-n { color: var(--s1-ink-2); }
@media (max-width: 700px) { .pub-matrix th:first-child, .pub-matrix td:first-child { min-width: 180px; } }
/* Couleur partenaire Microsoft (seul bouton principal et repères) */
.pub-ms { --s1m-acc: #0067b8; }
/* Étapes courtes dans une vitrine */
.pub-steps-s { list-style: none; padding: 0; }
.pub-steps-s li { padding-top: 18px; border-top: 1px solid var(--s1-line); }
.pub-sn { display: block; margin-bottom: 10px; font-size: 26px; line-height: 1; font-weight: var(--s1-w-light); color: var(--s1-red); font-variant-numeric: tabular-nums; }
/* Vitrines : même gabarit de sections que l'accueil (carré + capitales, filet, grand titre) */
.pub-store .s1m-head { padding-bottom: 40px; border-bottom: 1px solid var(--s1-line); }
.pub-store .s1m-head h1 { font-size: clamp(34px, 4.2vw, 56px); line-height: 1.06; }
.pub-store .s1m-sub { font-size: 18px; }
.pub-store .s1m-sec { margin-top: 88px; }
.pub-store .s1m-head + .s1m-sec { margin-top: 56px; }
.pub-store .s1m-sq { padding-bottom: 18px; margin-bottom: 28px; border-bottom: 1px solid var(--s1-line); }
.pub-store .s1m-h2 { font-size: clamp(28px, 3vw, 40px); line-height: 1.1; margin-bottom: 12px; }
.pub-store .s1m-lead { font-size: 17px; margin-bottom: 32px; }
.pub-store .s1m-card { border-radius: var(--s1-r-xl); padding: 28px; }
.pub-store .pub-plan { background: var(--s1-g50); }
.pub-store .pub-plan.is-featured { background: #fff; }
@media (max-width: 760px) { .pub-store .s1m-sec { margin-top: 64px; } .pub-store .s1m-head { padding-bottom: 28px; } }
/* Pages partenaires : la couleur partenaire reste sur le seul bouton principal ; repères de section en rouge charte */
.pub-store:not(.s1m--partner) .s1m-acc { color: var(--s1-ink); }
.pub-quota { margin: 0; font-size: 14px; font-weight: var(--s1-w-strong); color: var(--s1-ink); }

/* Pages publiques hors boutique (services, contact, support premium) : gouttière visiteur */
.pub-padded { box-sizing: content-box; }
body:not(.is-logged-in) .pub-padded { padding-left: clamp(16px, 5vw, 64px); padding-right: clamp(16px, 5vw, 64px); }
.pub-cat .pub-plan p { margin: 0; }
.pub-price-txt { font-size: 22px !important; }
.pub-help { display: flex; flex-wrap: wrap; gap: 20px 40px; align-items: center; justify-content: space-between; padding: 36px 40px; border-radius: var(--s1-r-xl); background: var(--s1-g50); border: 1px solid var(--s1-line); }
.pub-help .s1m-lead { margin-bottom: 0; }
.pub-help-a { display: flex; flex-wrap: wrap; gap: 12px; }
@media (max-width: 560px) { .pub-help { padding: 24px 20px; } }
.pub-small { font-size: 14px; color: var(--s1-ink-2); }

/* ---------- Page de contact ---------- */
.pub-ct { max-width: 1280px; margin: 0 auto; padding-top: var(--s1-page-pt, 48px); padding-bottom: 88px; }
body:not(.is-logged-in) .pub-ct { padding-top: calc(64px + var(--s1-page-pt, 48px)); }
.pub-ct-head { padding-bottom: 36px; border-bottom: 1px solid var(--s1-line); }
.pub-ct-head h1, .pub-ct-sent h1 { font-size: clamp(34px, 4.2vw, 56px); line-height: 1.06; font-weight: var(--s1-w-title); }
.pub-ct-head h1 .text-brand { color: var(--s1-red); }
.pub-ct-lead { margin-top: 14px !important; max-width: 62ch; font-size: 18px; color: var(--s1-ink-2); }
.pub-ct-grid { margin-top: 48px; display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: 32px; align-items: start; }
.pub-ct-formwrap { padding: 32px; border: 1px solid var(--s1-line); border-radius: var(--s1-r-xl); background: #fff; }
.pub-ct-form { display: grid; gap: 18px; }
.pub-ct-row { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.pub-ct-field label { display: block; margin: 0 0 6px; font-size: 15px; font-weight: var(--s1-w-strong); color: var(--s1-ink); }
.pub-ct-field textarea { min-height: 180px; resize: vertical; }
.pub-ct-submit .btn { min-width: 200px; }
.pub-ct-note { font-size: 13px; color: var(--s1-ink-2); }
.pub-ct-note a { color: var(--s1-ink-2) !important; text-decoration: underline; }
.pub-ct-info { padding: 32px; border-radius: var(--s1-r-xl); }
.pub-ct-info h2 { font-size: 26px; line-height: 1.15; font-weight: var(--s1-w-title); color: #fff; }
.pub-ct-info-lead { margin-top: 10px !important; color: var(--s1-on-dark-2); }
.pub-ct-info dl { margin: 24px 0 0; }
.pub-ct-info dl > div { padding: 16px 0; border-top: 1px solid rgba(255, 255, 255, .18); }
.pub-ct-info dt { font-size: 14px; font-weight: var(--s1-w-body); color: var(--s1-on-dark-2); }
.pub-ct-info dd { margin: 4px 0 0; font-size: 17px; color: #fff; }
.pub-ct-info dd a { color: #fff !important; text-decoration: none; }
.pub-ct-info dd a:hover { text-decoration: underline; text-underline-offset: 3px; }
.pub-ct-info dd span { display: block; margin-top: 4px; font-size: 14px; color: var(--s1-on-dark-2); }
.pub-ct-map { margin-top: 72px; }
.pub-ct-map .pub-sq { padding-bottom: 18px; border-bottom: 1px solid var(--s1-line); }
.pub-ct-frame { overflow: hidden; border-radius: var(--s1-r-xl); border: 1px solid var(--s1-line); background: var(--s1-soft); }
.pub-ct-frame iframe { display: block; width: 100%; height: 420px; filter: grayscale(1); }
.pub-ct-sent { max-width: 680px; padding: 24px 0 40px; }
.pub-ct-sent p { margin-top: 16px !important; font-size: 17px; color: var(--s1-ink-2); }
.pub-ct-sent-a { margin-top: 28px; display: flex; flex-wrap: wrap; gap: 12px; }
@media (max-width: 980px) { .pub-ct-grid { grid-template-columns: 1fr; } }
@media (max-width: 560px) { .pub-ct-row { grid-template-columns: 1fr; } .pub-ct-formwrap, .pub-ct-info { padding: 22px 18px; } .pub-ct-frame iframe { height: 300px; } }
/* Boutique : en-tête visuel de chaque carte (comme les cartes "Votre situation" de l'accueil) */
.pub-cat-c { overflow: hidden; }
.pub-cat-m { position: relative; display: block; margin: -28px -28px 0; aspect-ratio: 16 / 7; overflow: hidden; background: var(--s1-ink); }
.pub-cat-m > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; max-width: none; transition: transform 900ms var(--s1-ease); }
.pub-cat-c:hover .pub-cat-m > img:first-child { transform: scale(1.04); }
.pub-cat-m--logo { background: #fff; border-bottom: 1px solid var(--s1-line); }
.pub-cat-m--logo > img { position: static; width: auto; height: 44px; max-width: 70%; margin: 0 auto; top: 0; object-fit: contain; transform: translateY(calc((100% * 0))); }
.pub-cat-m--logo { display: flex; align-items: center; justify-content: center; }
.pub-cat-m--dark { background: #222; display: flex; align-items: center; justify-content: center; }
.pub-cat-m > img.pub-cat-contain { position: static; width: auto; height: 100%; object-fit: contain; }
.pub-cat-m > img.pub-cat-ill { object-fit: contain; }
.pub-cat-txt { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; font-size: 44px; font-weight: var(--s1-w-title); letter-spacing: .08em; color: #fff; }
.pub-cat-c .s1m-card-link { color: var(--s1-ink); text-decoration: none; }
.pub-cat-c:hover { border-color: var(--s1-ink); }
@media (max-width: 760px) { .pub-cat-m { margin: -28px -28px 0; } }
.pub-store .s1m-sec { scroll-margin-top: 96px; }

/* ---------- Pages légales (mentions, confidentialité, CGV) : gabarit des pages publiques ---------- */
.s1-legal__hero-eyebrow, .s1-legal__card-icon { display: none !important; }
.s1-legal__hero { background: #fff !important; }
.s1-legal__hero::before, .s1-legal__hero::after { display: none !important; }
.s1-legal__hero-inner, .s1-legal__main { max-width: 860px !important; padding-left: 0 !important; padding-right: 0 !important; }
.s1-legal__hero-title { font-family: var(--s1-font) !important; font-weight: var(--s1-w-title) !important; font-size: clamp(34px, 4.2vw, 56px) !important; line-height: 1.06 !important; color: var(--s1-ink) !important; }
.s1-legal__hero-lead { color: var(--s1-ink-2) !important; font-size: 18px !important; }
.s1-legal__card-header { gap: 0 !important; }
.s1-legal__card-title { font-family: var(--s1-font) !important; font-weight: var(--s1-w-title) !important; font-size: 22px !important; color: var(--s1-ink) !important; }
.s1-legal__card-title::before { content: ""; display: inline-block; width: 8px; height: 8px; margin: 0 12px 4px 0; background: var(--s1-red); vertical-align: middle; }
.s1-legal a { color: var(--s1-ink) !important; text-decoration: underline; text-underline-offset: 3px; }
@media (max-width: 900px) { .s1-legal__main { padding-left: 24px !important; padding-right: 24px !important; } }
/* Boutique /services : cartes compactes (retour Nolann 07.10) et recherche de domaine */
.pub-cat-page .pub-cat .s1m-card { padding: 22px; gap: 12px; }
.pub-cat-page .pub-cat-m { margin: -22px -22px 4px; aspect-ratio: 16 / 6; }
.pub-cat-page .pub-cat-m--logo > img { height: 36px; }
.pub-cat-page .pub-cat .s1m-card-t { font-size: 17px; }
.pub-cat-page .pub-cat .pub-plan p { font-size: 14px; line-height: 1.5; }
.pub-cat-page .pub-cat .pub-price strong { font-size: 24px; }
.pub-cat-page .pub-cat .pub-price-txt { font-size: 18px !important; }
.pub-cat-page .pub-cat-txt { font-size: 32px; }
.pub-cat-search { max-width: 760px; margin: 0 0 32px; }
.pub-cat-search label { display: block; margin: 0 0 8px; font-size: 15px; font-weight: var(--s1-w-strong); color: var(--s1-ink); }
.pub-cat-search-row { display: flex; gap: 8px; align-items: center; padding: 6px 6px 6px 18px; border: 1px solid var(--s1-line-strong); border-radius: var(--s1-r-pill); background: #fff; }
.pub-cat-search-row:focus-within { border-color: var(--s1-ink); box-shadow: var(--s1-ring); }
.pub-cat-search-row i { color: var(--s1-ink-2); }
.pub-cat-search-row input { flex: 1; min-width: 0; padding: 9px 4px; border: 0; outline: 0; background: transparent; font: inherit; font-size: 16px; color: var(--s1-ink); }
.pub-cat-search .pub-small { margin: 8px 0 0 4px; }
@media (max-width: 560px) { .pub-cat-search-row { flex-wrap: wrap; border-radius: 22px; } .pub-cat-search-row input { flex-basis: calc(100% - 40px); } .pub-cat-search-row .btn { width: 100%; } }

/* ==========================================================================
   Pages produit partenaires / cybersécurité (retour Nolann 07.10 : "trop fades",
   petites distinctions seulement) : en-tête légèrement teinté de la couleur du
   produit, couleur produit sur les repères de section, coches, prix, carte
   recommandée et colonne mise en avant du comparatif. Gabarit inchangé.
   SentinelOne violet, Proofpoint sarcelle, Microsoft bleu, veille en rouge 1SWISS1.
   ========================================================================== */
.pub-vc { --s1m-acc: var(--s1-red); }
/* Vulnerability Checker = produit 1SWISS1 : rouge de marque, bouton principal texte anthracite (charte) */
.pub-vc .btn-primary, .pub-vc .btn-primary:hover, .pub-vc .btn-primary:focus { color: var(--s1-ink) !important; filter: none !important; }
.pub-store.s1m--partner .s1m-head { padding: 36px 40px; border: 0; border-radius: var(--s1-r-xl); background: color-mix(in srgb, var(--s1m-acc) 7%, #fff); }
.pub-store.s1m--partner .s1m-sq::before { background: var(--s1m-acc); }
.pub-store.s1m--partner .pub-price strong,
.pub-store.s1m--partner .s1pp2-price strong,
.pub-store.s1m--partner .pub-sn { color: var(--s1m-acc); }
.pub-store.s1m--partner .pub-plan.is-featured,
.pub-store.s1m--partner .s1pp2-plan.is-featured { border-color: var(--s1m-acc); }
.pub-store.s1m--partner .pub-plan-tag,
.pub-store.s1m--partner .s1m-acc { color: var(--s1m-acc); }
.pub-store.s1m--partner .pub-y i,
.pub-store.s1m--partner .s1pp2-y i { color: var(--s1m-acc); }
.pub-store.s1m--partner .pub-matrix th.is-featured,
.pub-store.s1m--partner .s1pp2-matrix th.is-featured { box-shadow: inset 0 -2px 0 var(--s1m-acc); color: var(--s1m-acc); }
.pub-store.s1m--partner .pub-ticks li::before { background: var(--s1m-acc); }
.pub-store.s1m--partner .s1m-faq details[open] summary { color: var(--s1m-acc); }
.pub-vc .pub-vc-mark { display: block; margin: 0 0 14px; font-size: 15px; font-weight: var(--s1-w-strong); letter-spacing: .02em; color: var(--s1m-acc); }
@media (max-width: 760px) { .pub-store.s1m--partner .s1m-head { padding: 24px 20px; } }

/* ---------- Support Premium : petite distinction 1SWISS1 premium (retour Nolann 07.10) ----------
   En-tête clair comme les autres pages : couronne + Premium en rouge au-dessus du titre,
   carte Premium encadrée de rouge, Premium 24/7 avec un simple filet anthracite. Gabarit et contenu inchangés. */
.pub-prem-mark { display: flex; align-items: center; gap: 10px; margin: 0 0 14px; font-size: 15px; font-weight: var(--s1-w-strong); color: var(--s1-red); }
.pub-prem-mark i { font-size: 14px; }
.pub-prem .s1sp-tier.is-featured { border: 2px solid var(--s1-red); background: #fff; }
.pub-prem .s1sp-tier.is-featured .s1sp-reco { color: var(--s1-red); font-weight: var(--s1-w-strong); }
/* Une seule offre mise en avant (Premium, bordure rouge) : 24/7 garde la bordure standard (audit 08.10). */
/* /services : 4 cartes dans "Lancez votre activité", recherche de domaine dans la carte */
@media (min-width: 1101px) { .pub-cat--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.pub-card-search { display: flex; gap: 8px; flex-wrap: wrap; }
.pub-card-search .form-control { flex: 1 1 140px; min-width: 0; min-height: var(--s1-h-ctl); border-radius: var(--s1-r-pill); }
.pub-card-search .btn { flex: 0 0 auto; }
/* /services : grande recherche de domaine centrée en tête de "Lancez votre activité" */
.pub-big-search { max-width: 820px; margin: 8px auto 48px; padding: 40px 32px; text-align: center; border-radius: var(--s1-r-xl); background: var(--s1-g50); border: 1px solid var(--s1-line); }
.pub-big-search-t { margin: 0 0 18px !important; font-size: clamp(22px, 2.4vw, 30px); font-weight: var(--s1-w-title); color: var(--s1-ink); }
.pub-big-search-t label { margin: 0; font: inherit; color: inherit; }
.pub-big-search-row { display: flex; gap: 8px; align-items: center; padding: 7px 7px 7px 22px; border: 1px solid var(--s1-line-strong); border-radius: var(--s1-r-pill); background: #fff; text-align: left; }
.pub-big-search-row:focus-within { border-color: var(--s1-ink); box-shadow: var(--s1-ring); }
.pub-big-search-row i { font-size: 18px; color: var(--s1-ink-2); }
.pub-big-search-row input { flex: 1; min-width: 0; padding: 12px 4px; border: 0; outline: 0; background: transparent; font: inherit; font-size: 18px; color: var(--s1-ink); }
.pub-big-search-row .btn { min-width: 140px; }
.pub-big-search-h { margin: 14px 0 0 !important; font-size: 15px; color: var(--s1-ink-2); }
@media (max-width: 560px) { .pub-big-search { padding: 24px 16px; } .pub-big-search-row { flex-wrap: wrap; border-radius: 22px; padding: 6px 6px 6px 14px; } .pub-big-search-row input { flex-basis: calc(100% - 40px); font-size: 16px; } .pub-big-search-row .btn { width: 100%; } }
/* /services : bloc de recherche à la largeur de la rangée de 3 cartes (retour Nolann 07.10). */
.pub-big-search--full { max-width: none; margin-bottom: 24px; padding: 44px 48px; }
.pub-big-search--full .pub-big-search-row { max-width: 960px; margin: 0 auto; }
@media (max-width: 560px) { .pub-big-search--full { padding: 24px 16px; } }
/* Pages légales connectées : le bloc pleine largeur (100vw) ignorait la barre latérale et
   débordait de ~100 px (audit 08.10) ; il reste dans sa colonne. */
body.is-logged-in .s1-legal { width: auto !important; margin-left: 0 !important; margin-right: 0 !important; }
