/* =============================================================================
   Thème « Cheville » — transcription du Claude Design « Des Pierres à la Cheville »
   (source : tests/Des pierres à la cheville(1).zip, 2026-11-01). Valeurs reprises telles
   quelles de la maquette ; ajouts = mobile, focus, états e-commerce.
   ============================================================================= */
:root {
    --chv-ink: oklch(0.22 0.012 60);
    --chv-ivory: oklch(0.972 0.003 260);
    --chv-muted: oklch(0.48 0.012 60);
    --chv-text: oklch(0.38 0.012 60);
    --chv-text2: oklch(0.36 0.012 60);
    --chv-text3: oklch(0.42 0.012 60);
    --chv-line: oklch(0.88 0.003 260);
    --chv-line2: oklch(0.9 0.003 260);
    --chv-input: oklch(0.6 0.01 70);
    --chv-surface: oklch(0.945 0.003 260);
    --chv-surface2: oklch(0.955 0.003 260);
    --chv-dark: oklch(0.17 0.008 60);
    --chv-sand: oklch(0.75 0.01 70);
    --chv-saph: oklch(0.45 0.11 255);
    --chv-emer: oklch(0.45 0.11 160);
    --chv-rub: oklch(0.45 0.11 10);
    --chv-ame: oklch(0.45 0.11 300);
    --chv-serif: 'Cormorant Garamond', serif;
    --chv-sans: 'Jost', sans-serif;
    --chv-hatch: repeating-linear-gradient(135deg, oklch(0.92 0.003 260) 0 1px, oklch(0.955 0.003 260) 1px 11px);
}

/* --- Base ------------------------------------------------------------------ */
body.chv { margin: 0; background: var(--chv-ivory); color: var(--chv-ink); font-family: var(--chv-sans); font-weight: 300; line-height: normal; -webkit-font-smoothing: antialiased; }
body.chv *, body.chv *::before, body.chv *::after { box-sizing: border-box; }
.chv a { color: var(--chv-ink); text-decoration: none; }
.chv a:hover { color: var(--chv-saph); }
.chv button { font-family: inherit; }
.chv input, .chv select, .chv textarea { font-family: var(--chv-sans); }
.chv h1, .chv h2, .chv h3, .chv h4 { color: inherit; }
.chv .main-content { min-height: 40vh; padding: 0; background: none; }
.chv :focus-visible { outline: 2px solid var(--chv-saph); outline-offset: 3px; }
.chv-sr { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.chv-skip { position: absolute; left: 16px; top: -60px; z-index: 100; background: var(--chv-ink); color: var(--chv-ivory) !important; padding: 10px 16px; font-size: 12px; letter-spacing: .14em; text-transform: uppercase; }
.chv-skip:focus { top: 12px; }
.chv-hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.chv-center { text-align: center; }
.chv-muted { color: var(--chv-muted); }

.chv-kicker { font-size: 11px; letter-spacing: .3em; text-transform: uppercase; color: var(--chv-muted); }
.chv-kicker--sm { letter-spacing: .24em; }
.chv-h1 { margin: 0; font-family: var(--chv-serif); font-weight: 300; font-size: clamp(48px, 5.5vw, 84px); line-height: 1; }
.chv-h2 { margin: 0 0 40px; font-family: var(--chv-serif); font-weight: 300; font-size: 40px; line-height: 1.1; }
.chv-h2 small { font-family: var(--chv-sans); font-size: 13px; letter-spacing: .1em; color: var(--chv-muted); }
.chv-h3 { margin: 0; font-family: var(--chv-serif); font-weight: 400; font-size: 28px; }
.chv-lead, .chv-lead p { margin: 0; font-size: 17px; line-height: 1.7; color: var(--chv-text); }
.chv-lead p + p { margin-top: 1em; }
.chv-link { align-self: flex-start; display: inline-block; background: none; border: 0; border-bottom: 1px solid var(--chv-ink); padding: 6px 0; font-size: 11px; letter-spacing: .22em; text-transform: uppercase; color: var(--chv-ink); font-weight: 400; cursor: pointer; }
.chv-diamond { display: inline-block; width: 7px; height: 7px; flex: none; transform: rotate(45deg); background: var(--chv-sand); }
.chv-diamond--8 { width: 8px; height: 8px; }
.chv-meta { display: flex; align-items: center; gap: 12px; font-size: 11px; letter-spacing: .24em; text-transform: uppercase; color: var(--chv-muted); }
.chv-hatch { background: var(--chv-hatch); }
.chv-hatch--sa { background: repeating-linear-gradient(135deg, oklch(0.9 0.02 250) 0 1px, oklch(0.95 0.01 245) 1px 11px); }
.chv-hatch--em { background: repeating-linear-gradient(135deg, oklch(0.9 0.02 160) 0 1px, oklch(0.95 0.01 160) 1px 11px); }
.chv-num { font-family: var(--chv-serif); font-style: italic; font-size: 18px; color: var(--chv-muted); }
.chv-swatch { display: inline-block; width: 12px; height: 12px; border-radius: 50%; border: 1px solid rgba(0,0,0,.12); vertical-align: -1px; margin-right: 6px; }

/* Boutons */
.chv-btn { display: inline-flex; align-items: center; justify-content: center; text-align: center; border: 0; padding: 19px 24px; font-size: 11px; letter-spacing: .22em; text-transform: uppercase; cursor: pointer; font-weight: 400; line-height: 1.3; }
.chv a.chv-btn--dark, .chv-btn--dark { background: var(--chv-ink); color: var(--chv-ivory); }
.chv a.chv-btn--dark:hover, .chv-btn--dark:hover { background: oklch(0.32 0.012 60); color: var(--chv-ivory); }
.chv-btn--dark:disabled, .chv-btn--muted { background: var(--chv-muted); color: var(--chv-ivory); cursor: default; }
.chv a.chv-btn--outline, .chv-btn--outline { background: none; color: var(--chv-ink); border: 1px solid var(--chv-ink); }
.chv a.chv-btn--outline:hover, .chv-btn--outline:hover { background: var(--chv-ink); color: var(--chv-ivory); }
.chv-btn--block { width: 100%; padding: 18px 24px; margin-top: 8px; }
.chv-btn--wide { padding: 19px 40px; }

/* Messages flash */
.chv-flash { max-width: 1440px; margin: 16px auto 0; padding: 14px 22px; font-size: 14px; border: 1px solid var(--chv-line); background: var(--chv-surface2); }
.chv-flash--ok { border-color: var(--chv-emer); }
.chv-flash--err { border-color: oklch(0.55 0.15 25); color: oklch(0.42 0.13 25); }

/* --- En-tête --------------------------------------------------------------- */
.chv-header { position: sticky; top: 0; z-index: 50; background: oklch(0.972 0.003 260 / 0.95); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); border-bottom: 1px solid var(--chv-line); }
.chv-header__top { max-width: 1440px; margin: 0 auto; padding: 14px 32px 0; display: grid; grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr); align-items: center; gap: 16px; }
.chv-lang { justify-self: start; display: flex; gap: 2px; font-size: 11px; letter-spacing: .14em; align-items: center; }
.chv-lang a { padding: 6px 4px; color: var(--chv-muted); font-weight: 400; }
.chv-lang a[aria-current] { color: var(--chv-ink); }
.chv-lang span { color: var(--chv-sand); padding: 6px 0; }
.chv a.chv-logo { display: flex; flex-direction: column; align-items: center; gap: 6px; color: var(--chv-ink); padding: 0; }
.chv-logo__name { font-family: var(--chv-serif); font-size: 34px; font-weight: 400; letter-spacing: .04em; line-height: 1; white-space: nowrap; }
.chv-logo__name em { font-weight: 300; }
.chv-logo__tag { display: flex; align-items: center; gap: 10px; font-size: 9px; letter-spacing: .34em; text-transform: uppercase; color: var(--chv-muted); white-space: nowrap; }
.chv-logo__tag span { width: 18px; height: 1px; background: oklch(0.7 0.01 70); }
.chv-actions { justify-self: end; display: flex; justify-content: flex-end; gap: 20px; align-items: center; }
.chv a.chv-actions__account { white-space: nowrap; border: 1px solid oklch(0.8 0.003 260); padding: 8px 14px; font-size: 10.5px; letter-spacing: .2em; text-transform: uppercase; color: var(--chv-ink); font-weight: 400; display: flex; gap: 8px; align-items: center; }
.chv a.chv-actions__account:hover { border-color: var(--chv-ink); }
.chv-dot { width: 6px; height: 6px; transform: rotate(45deg); background: var(--chv-sand); flex: none; }
.chv-actions__account.is-on .chv-dot { background: var(--chv-emer); }
.chv a.chv-actions__cart { padding: 6px 0; white-space: nowrap; font-size: 11.5px; letter-spacing: .2em; text-transform: uppercase; color: var(--chv-ink); font-weight: 400; display: flex; gap: 8px; align-items: center; position: relative; }
.chv-actions__cart .cart-badge { position: static; min-width: 20px; width: auto; height: 20px; padding: 0 6px; border-radius: 10px; background: var(--chv-ink); color: var(--chv-ivory); font-size: 10px; font-weight: 300; display: inline-flex; align-items: center; justify-content: center; letter-spacing: 0; }
.chv a.chv-actions__search { display: flex; padding: 6px 0; color: var(--chv-ink); }
.chv a.chv-actions__admin { font-size: 10px; letter-spacing: .2em; text-transform: uppercase; color: var(--chv-muted); font-weight: 400; }
.chv-nav { max-width: 1440px; margin: 0 auto; padding: 10px 32px 8px; display: flex; justify-content: center; gap: 12px 36px; flex-wrap: wrap; }
.chv-nav a { white-space: nowrap; border-bottom: 1px solid transparent; padding: 6px 0; font-size: 11px; letter-spacing: .2em; text-transform: uppercase; color: var(--chv-ink); font-weight: 400; }
.chv-nav a[aria-current] { border-bottom-color: var(--chv-ink); }
.chv-nav a:hover { color: var(--chv-ink); border-bottom-color: var(--chv-sand); }
.chv-band { width: 100%; aspect-ratio: 1904 / 309; background: url(../images/design/bandeau-panorama.webp) center / cover no-repeat, oklch(0.9 0.003 260); }

/* --- Accueil ---------------------------------------------------------------- */
.chv-hero { max-width: 1440px; margin: 0 auto; padding: 80px 40px 40px; display: flex; flex-direction: column; align-items: center; gap: 20px; text-align: center; }
.chv-hero__title { margin: 0; font-family: var(--chv-serif); font-weight: 300; font-size: clamp(44px, 5.4vw, 84px); line-height: 1; }
.chv-hero__lead { margin: 0; max-width: 36em; font-size: 17px; line-height: 1.7; color: var(--chv-text); text-wrap: pretty; }
.chv-phases { width: 100%; max-width: 1040px; display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 40px; margin-top: 56px; text-align: left; }
.chv a.chv-phase { display: flex; flex-direction: column; gap: 16px; color: var(--chv-ink); }
.chv-phase__img, .chv-origin__img, .chv-creation__img, .chv-card__img, .chv-prod__main, .chv-prod__thumb, .chv-line__img { position: relative; display: block; overflow: hidden; }
.chv-phase__img { aspect-ratio: 4 / 5; width: 100%; }
.chv-phase__img img, .chv-origin__img img, .chv-creation__img img, .chv-card__img img, .chv-prod__main img, .chv-prod__thumb img, .chv-line__img img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block; max-width: none; }
.chv-phase__head { display: flex; align-items: baseline; gap: 14px; border-top: 1px solid var(--chv-ink); padding-top: 14px; }
.chv-phase__title { font-family: var(--chv-serif); font-size: 32px; }
.chv-phase__text { font-size: 15px; line-height: 1.65; color: var(--chv-text3); }
.chv-phase:hover .chv-phase__img img, .chv-card:hover .chv-card__img img { transform: scale(1.03); }
.chv-phase__img img, .chv-card__img img { transition: transform .6s ease; }

.chv-origins { max-width: 1440px; margin: 0 auto; padding: 100px 40px; }
.chv-origins .chv-h2, .chv-selection .chv-h2 { margin: 0 0 56px; font-size: clamp(36px, 4vw, 56px); }
.chv-origins__grid { max-width: 1040px; margin: 0 auto; display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 48px; }
.chv-origin { display: flex; flex-direction: column; gap: 22px; }
.chv-origin__img { aspect-ratio: 4 / 3; }
.chv-origin__title { margin: 0; font-family: var(--chv-serif); font-weight: 400; font-size: 40px; line-height: 1.1; }
.chv-origin__text { margin: 0; font-size: 16px; line-height: 1.7; color: var(--chv-text); max-width: 32em; text-wrap: pretty; }

.chv-wrap { max-width: 1440px; margin: 0 auto; padding: 0 40px 100px; }
.chv-house { background: var(--chv-surface); }
.chv-house__inner { max-width: 1120px; margin: 0 auto; padding: 110px 40px; display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: 64px; align-items: center; }
.chv-house__inner > img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; display: block; height: auto; }
.chv-house__text { display: flex; flex-direction: column; gap: 24px; }
.chv-house__title { margin: 0; font-family: var(--chv-serif); font-weight: 300; font-size: clamp(40px, 4.4vw, 64px); line-height: 1; }
.chv-house__text p { margin: 0; font-size: 17px; line-height: 1.75; color: var(--chv-text2); max-width: 30em; text-wrap: pretty; }
.chv-house__text .chv-btn { align-self: flex-start; padding: 16px 28px; }

.chv-homecms { padding-top: 100px; }
.chv a.chv-homecms__box { display: flex; flex-direction: column; gap: 14px; max-width: 1040px; margin: 0 auto; padding: 40px; border: 1px solid var(--chv-line); }
.chv a.chv-homecms__box:hover { border-color: var(--chv-ink); color: var(--chv-ink); }
.chv-homecms__title { font-family: var(--chv-serif); font-size: 36px; line-height: 1.1; }
.chv-homecms__text { font-size: 16px; line-height: 1.7; color: var(--chv-text); }

/* --- Cartes produit ---------------------------------------------------------- */
.chv-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 56px 32px; }
.chv-grid--cat { margin-top: 48px; }
.chv-grid--sm { grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 32px; }
.chv a.chv-card { display: flex; flex-direction: column; gap: 14px; color: var(--chv-ink); text-align: left; }
.chv-card__img { width: 100%; aspect-ratio: 1 / 1; background: var(--chv-hatch); }
.chv-card__tag { position: absolute; top: 14px; left: 14px; z-index: 1; font-size: 10px; letter-spacing: .18em; text-transform: uppercase; background: var(--chv-ivory); padding: 6px 10px; font-weight: 400; }
.chv-card__head { display: flex; justify-content: space-between; gap: 12px; align-items: baseline; }
.chv-card__name { font-family: var(--chv-serif); font-size: 24px; font-weight: 400; line-height: 1.1; }
.chv-card__desc { font-size: 13px; line-height: 1.55; color: var(--chv-muted); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.chv-card__foot { display: flex; justify-content: space-between; gap: 12px; border-top: 1px solid var(--chv-line); padding-top: 12px; }
.chv-card__ref { font-size: 13px; color: var(--chv-muted); }
.chv-card__price { font-size: 15px; font-weight: 400; white-space: nowrap; }
.chv-card__price s, .chv-prod__amount s { color: var(--chv-muted); font-weight: 300; font-size: .85em; }
.chv-card--sm { gap: 12px; }
.chv-card--sm .chv-card__name { font-size: 22px; font-weight: 300; }
.chv-card__sub { font-size: 11px; letter-spacing: .18em; text-transform: uppercase; color: var(--chv-muted); }

/* --- Catalogue ------------------------------------------------------------- */
.chv-cat { max-width: 1440px; margin: 0 auto; padding: 72px 40px 120px; }
.chv-cat__head { display: flex; flex-direction: column; gap: 18px; max-width: 46em; }
.chv-crumbs { display: flex; flex-wrap: wrap; gap: 10px; font-size: 11px; letter-spacing: .3em; text-transform: uppercase; color: var(--chv-muted); }
.chv-crumbs a { color: var(--chv-muted); }
.chv-bar { margin-top: 48px; display: flex; justify-content: space-between; align-items: center; gap: 20px; flex-wrap: wrap; border-top: 1px solid var(--chv-line); border-bottom: 1px solid var(--chv-line); padding: 14px 0; }
.chv-pills { display: flex; gap: 8px; flex-wrap: wrap; }
.chv a.chv-pill, .chv-pill { background: transparent; color: var(--chv-ink); border: 1px solid var(--chv-ink); padding: 9px 18px; font-size: 11px; letter-spacing: .18em; text-transform: uppercase; cursor: pointer; font-weight: 400; }
.chv a.chv-pill.is-on, .chv a.chv-pill:hover { background: var(--chv-ink); color: var(--chv-ivory); }
.chv-bar__right { display: flex; gap: 20px; align-items: center; margin: 0; }
.chv-bar__count { font-size: 13px; color: var(--chv-muted); }
.chv-select { background: none; border: 0; border-bottom: 1px solid var(--chv-input); border-radius: 0; padding: 6px 4px; font-size: 12px; letter-spacing: .1em; color: var(--chv-ink); cursor: pointer; }
.chv-refine { margin-top: 20px; border-bottom: 1px solid var(--chv-line); padding-bottom: 14px; }
.chv-refine summary { cursor: pointer; font-size: 11px; letter-spacing: .2em; text-transform: uppercase; font-weight: 400; padding: 6px 0; }
.chv-refine__form { display: flex; flex-wrap: wrap; gap: 24px 48px; padding-top: 16px; align-items: flex-start; }
.chv-refine__group { border: 0; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.chv-refine__group legend { font-size: 11px; letter-spacing: .18em; text-transform: uppercase; color: var(--chv-muted); margin-bottom: 8px; padding: 0; }
.chv-check { display: flex; align-items: center; gap: 8px; font-size: 14px; cursor: pointer; }
.chv-check input { accent-color: var(--chv-ink); }
.chv-pages { display: flex; justify-content: center; gap: 8px; margin-top: 72px; }
.chv-pages a, .chv-pages span { min-width: 40px; height: 40px; display: inline-flex; align-items: center; justify-content: center; border: 1px solid var(--chv-line); font-size: 13px; }
.chv-pages span[aria-current] { background: var(--chv-ink); color: var(--chv-ivory); border-color: var(--chv-ink); }
.chv-empty { margin: 60px 0 0; font-family: var(--chv-serif); font-style: italic; font-size: 26px; color: var(--chv-text3); }

/* --- Fiche produit ----------------------------------------------------------- */
.chv-prod { max-width: 1440px; margin: 0 auto; padding: 40px 40px 100px; }
.chv a.chv-back { font-size: 11px; letter-spacing: .2em; text-transform: uppercase; color: var(--chv-muted); font-weight: 400; }
.chv-prod__grid { margin-top: 32px; display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); gap: 72px; align-items: start; }
.chv-prod__media { display: flex; flex-direction: column; gap: 12px; }
.chv-prod__main { aspect-ratio: 1 / 1; }
.chv-prod__thumbs { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.chv-prod__thumb { aspect-ratio: 1 / 1; border: 1px solid transparent; padding: 0; cursor: pointer; }
.chv-prod__thumb.is-on { border-color: var(--chv-ink); }
.chv-prod__info { position: sticky; top: 120px; display: flex; flex-direction: column; gap: 22px; }
.chv-prod__name { margin: 0; font-family: var(--chv-serif); font-weight: 300; font-size: clamp(44px, 4.4vw, 68px); line-height: 1; }
.chv-prod__sub { margin: 0; font-family: var(--chv-serif); font-style: italic; font-size: 22px; line-height: 1.35; color: var(--chv-text3); }
.chv-prod__price { display: flex; flex-direction: column; gap: 4px; padding: 20px 0; border-top: 1px solid var(--chv-line); border-bottom: 1px solid var(--chv-line); }
.chv-prod__amount { font-size: 26px; font-weight: 400; }
.chv-prod__note { font-size: 12px; letter-spacing: .06em; color: var(--chv-muted); }
.chv-prod__btns { display: flex; gap: 12px; flex-wrap: wrap; }
.chv-prod__btns .chv-btn { flex: 1 1 220px; }
.chv-qty input { width: 72px; height: 100%; min-height: 54px; border: 1px solid var(--chv-ink); background: none; text-align: center; font-size: 15px; color: var(--chv-ink); }
.chv-specs { margin: 8px 0 0; display: grid; grid-template-columns: auto minmax(0, 1fr); column-gap: 32px; }
.chv-specs dt { padding: 12px 0; border-bottom: 1px solid var(--chv-line2); font-size: 11px; letter-spacing: .18em; text-transform: uppercase; color: var(--chv-muted); }
.chv-specs dd { margin: 0; padding: 12px 0; border-bottom: 1px solid var(--chv-line2); font-size: 15px; font-weight: 400; text-align: right; }
.chv-prod__story { display: flex; flex-direction: column; gap: 10px; margin-top: 8px; }
.chv-prod__story p { margin: 0; font-size: 15px; line-height: 1.7; color: var(--chv-text); text-wrap: pretty; }
.chv-prod__section { margin-top: 120px; }
.chv-videos { display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: 32px; }
.chv-video { margin: 0; }
.chv-video__frame { aspect-ratio: 16 / 9; background: var(--chv-dark); display: flex; align-items: center; justify-content: center; }
.chv-video__frame iframe, .chv-video__frame video { width: 100%; height: 100%; border: 0; }
.chv-video__frame a { color: var(--chv-ivory); }
.chv-video figcaption { margin-top: 10px; font-size: 13px; color: var(--chv-muted); }
.chv-reviews { display: flex; flex-direction: column; max-width: 880px; }
.chv-review { padding: 20px 0; border-top: 1px solid var(--chv-line); }
.chv-review__head { display: flex; gap: 14px; align-items: baseline; flex-wrap: wrap; font-size: 14px; }
.chv-review__head strong { font-weight: 400; }
.chv-review__head time { font-size: 12px; color: var(--chv-muted); margin-left: auto; }
.chv-review p { margin: 8px 0 0; font-size: 15px; line-height: 1.7; color: var(--chv-text); }
.chv-review__title { font-family: var(--chv-serif); font-size: 20px !important; color: var(--chv-ink) !important; }
.chv-stars { color: oklch(0.6 0.08 80); letter-spacing: .1em; }
.chv-note { margin: 24px 0 0; font-size: 14px; color: var(--chv-text); padding: 18px 22px; border: 1px solid var(--chv-line); background: var(--chv-surface2); max-width: 880px; }
.chv-note .chv-link { font-size: 11px; }
.chv-review-form { margin-top: 32px; max-width: 880px; padding: 32px; background: var(--chv-surface); display: flex; flex-direction: column; gap: 22px; }
.chv-rating { border: 0; padding: 0; margin: 0; display: inline-flex; flex-direction: row-reverse; justify-content: flex-end; gap: 4px; }
.chv-rating legend { font-size: 11px; letter-spacing: .2em; text-transform: uppercase; color: var(--chv-muted); margin-bottom: 8px; float: left; width: 100%; }
.chv-rating input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.chv-rating label { font-size: 26px; color: oklch(0.8 0.003 260); cursor: pointer; line-height: 1; }
.chv-rating input:checked ~ label, .chv-rating label:hover, .chv-rating label:hover ~ label { color: oklch(0.6 0.08 80); }
.chv-rating input:focus-visible + label { outline: 2px solid var(--chv-saph); outline-offset: 2px; }
.chv-msg { font-size: 13px; min-height: 0; }
.chv-msg:empty { display: none; }
.chv-msg--err, .chv-msg.is-err { color: oklch(0.45 0.15 25); }
.chv-msg.is-ok { color: var(--chv-emer); }

/* --- Formulaires (design : soulignés) ----------------------------------------- */
.chv-form--grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 28px 32px; }
.chv-field { display: flex; flex-direction: column; gap: 8px; font-size: 11px; letter-spacing: .2em; text-transform: uppercase; color: var(--chv-muted); }
.chv-field--full { grid-column: 1 / -1; }
.chv-field input, .chv-field select, .chv-field textarea { border: 0; border-bottom: 1px solid var(--chv-input); border-radius: 0; background: none; padding: 10px 0; font-size: 16px; color: var(--chv-ink); letter-spacing: normal; text-transform: none; font-weight: 300; width: 100%; }
.chv-field textarea { resize: vertical; }
.chv-field input:focus, .chv-field select:focus, .chv-field textarea:focus { outline: none; border-bottom-color: var(--chv-ink); box-shadow: 0 1px 0 var(--chv-ink); }
.chv-form__consent { margin: 0; font-size: 12px; color: var(--chv-muted); line-height: 1.6; }
.chv-form__consent .chv-link { font-size: 10px; padding: 0; }
.chv-form--grid .chv-center { margin-top: 20px; }

/* --- Panier ---------------------------------------------------------------- */
.chv-cartpage { max-width: 1280px; margin: 0 auto; padding: 64px 40px 120px; }
.chv-cartpage .chv-h1 { font-size: clamp(44px, 5vw, 72px); }
.chv-steps { display: flex; gap: 28px; margin: 28px 0 48px; flex-wrap: wrap; list-style: none; padding: 0; }
.chv-steps li { font-size: 11px; letter-spacing: .22em; text-transform: uppercase; color: var(--chv-muted); border-bottom: 1px solid transparent; padding-bottom: 8px; }
.chv-steps li[aria-current] { color: var(--chv-ink); border-bottom-color: var(--chv-ink); }
.chv-cartpage__grid { display: grid; grid-template-columns: minmax(0, 1.7fr) minmax(280px, 1fr); gap: 64px; align-items: start; }
.chv-cart-empty { padding: 60px 0; border-top: 1px solid var(--chv-line); display: flex; flex-direction: column; gap: 20px; align-items: flex-start; }
.chv-cart-empty > span { font-family: var(--chv-serif); font-style: italic; font-size: 26px; color: var(--chv-text3); }
.chv-cart-empty .chv-btn { padding: 16px 26px; }
.chv-line { display: grid; grid-template-columns: 110px minmax(0, 1fr) auto; gap: 24px; align-items: center; padding: 24px 0; border-top: 1px solid var(--chv-line); }
.chv-line__img { aspect-ratio: 1 / 1; }
.chv-line__info { display: flex; flex-direction: column; gap: 6px; }
.chv a.chv-line__name { font-family: var(--chv-serif); font-size: 24px; }
.chv-line__sub { font-size: 11px; letter-spacing: .18em; text-transform: uppercase; color: var(--chv-muted); }
.chv-line__tools { display: flex; gap: 20px; align-items: center; flex-wrap: wrap; }
.chv-line__tools form { margin: 0; }
.chv-line__qty label { display: flex; gap: 8px; align-items: center; font-size: 11px; letter-spacing: .18em; text-transform: uppercase; color: var(--chv-muted); }
.chv-line__qty input { width: 56px; border: 0; border-bottom: 1px solid var(--chv-input); background: none; padding: 4px; font-size: 14px; color: var(--chv-ink); text-align: center; }
.chv-line__remove { background: none; border: 0; padding: 4px 0; font-size: 12px; color: var(--chv-muted); text-decoration: underline; cursor: pointer; font-weight: 300; }
.chv-line__remove:hover { color: var(--chv-ink); }
.chv-line__price { font-size: 16px; font-weight: 400; white-space: nowrap; }
.chv-cartpage__insured { margin: 32px 0 0; font-size: 13px; line-height: 1.7; color: var(--chv-muted); border-top: 1px solid var(--chv-line); padding-top: 24px; }
.chv-summary { position: sticky; top: 120px; background: var(--chv-surface); padding: 32px; display: flex; flex-direction: column; gap: 16px; }
.chv-summary__row { display: flex; justify-content: space-between; gap: 12px; font-size: 15px; }
.chv-summary__row--disc { color: var(--chv-emer); }
.chv-summary__total { display: flex; justify-content: space-between; align-items: baseline; font-size: 20px; font-weight: 400; border-top: 1px solid oklch(0.82 0.003 260); padding-top: 16px; }
.chv-summary__total span:first-child { font-family: var(--chv-serif); font-size: 24px; }
.chv-summary__tax { font-size: 12px; color: var(--chv-muted); }
.chv-summary .chv-link { align-self: center; margin-top: 4px; }
.chv-coupon__form { display: flex; gap: 8px; }
.chv-coupon__form input { flex: 1; min-width: 0; border: 0; border-bottom: 1px solid var(--chv-input); background: none; padding: 8px 0; font-size: 14px; color: var(--chv-ink); }
.chv-coupon__form button, .chv-coupon__on button { background: none; border: 1px solid var(--chv-ink); padding: 8px 14px; font-size: 10.5px; letter-spacing: .18em; text-transform: uppercase; cursor: pointer; color: var(--chv-ink); font-weight: 400; }
.chv-coupon__on { display: flex; justify-content: space-between; align-items: center; font-size: 14px; color: var(--chv-emer); }
.chv-coupon__on button { border: 0; padding: 4px 8px; }

/* --- Bijoux & sur-mesure ---------------------------------------------------- */
.chv-bij__head { max-width: 1440px; margin: 0 auto; padding: 72px 40px 40px; display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: 64px; align-items: end; }
.chv-bij__head > div:first-child { display: flex; flex-direction: column; gap: 20px; }
.chv-bij__head .chv-lead { max-width: 32em; }
.chv-bij__gallery { max-width: 1440px; margin: 0 auto; padding: 40px 40px 100px; display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 24px; }
.chv-creation { margin: 0; display: flex; flex-direction: column; gap: 14px; }
.chv-creation__img { aspect-ratio: 3 / 4; }
.chv-creation figcaption { display: flex; flex-direction: column; gap: 14px; }
.chv-creation__name { font-family: var(--chv-serif); font-size: 24px; }
.chv-creation__desc { font-size: 13px; color: var(--chv-muted); }
.chv-dark { background: var(--chv-dark); color: oklch(0.93 0.003 260); }
.chv-dark__inner { max-width: 1440px; margin: 0 auto; padding: 100px 40px; }
.chv-dark__title { margin: 0 0 56px; font-family: var(--chv-serif); font-weight: 300; font-size: clamp(36px, 4vw, 56px); line-height: 1.1; }
.chv-dark__steps { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 40px; }
.chv-dark__steps + .chv-dark__title { margin-top: 100px; }
.chv-step { display: flex; flex-direction: column; gap: 14px; border-top: 1px solid oklch(0.4 0.01 60); padding-top: 20px; }
.chv-step .chv-num { font-size: 20px; color: oklch(0.7 0.01 70); }
.chv-step h3 { margin: 0; font-family: var(--chv-serif); font-size: 28px; font-weight: 400; }
.chv-step__text, .chv-step__text p { margin: 0; font-size: 15px; line-height: 1.65; color: oklch(0.8 0.003 260); }
.chv-prose--dark, .chv-prose--dark p { color: oklch(0.8 0.003 260); }
.chv-bij__form { max-width: 880px; margin: 0 auto; padding: 110px 40px 120px; scroll-margin-top: 120px; }
.chv-bij__form .chv-h2 { margin: 0 0 12px; font-size: clamp(36px, 4vw, 52px); }
.chv-bij__formlead { margin: 0 0 48px; text-align: center; font-size: 15px; color: var(--chv-muted); }
.chv-thanks { text-align: center; padding: 48px; border: 1px solid oklch(0.85 0.003 260); font-family: var(--chv-serif); font-size: 28px; font-style: italic; }

/* --- La Maison -------------------------------------------------------------- */
.chv-maison__head { max-width: 1100px; margin: 0 auto; padding: 90px 40px 60px; text-align: center; display: flex; flex-direction: column; align-items: center; gap: 22px; }
.chv-maison__title { margin: 0; font-family: var(--chv-serif); font-weight: 300; font-size: clamp(48px, 6vw, 96px); line-height: 1; }
.chv-maison__lead, .chv-maison__lead p { margin: 0; font-family: var(--chv-serif); font-style: italic; font-size: clamp(22px, 2.2vw, 30px); line-height: 1.45; color: var(--chv-text2); max-width: 30em; }
.chv-maison__img { max-width: 1440px; margin: 0 auto; padding: 0 40px; }
.chv-maison__img img { width: 100%; aspect-ratio: 21 / 9; object-fit: cover; display: block; height: auto; }
.chv-maison__blocks { max-width: 1100px; margin: 0 auto; padding: 110px 40px; display: flex; flex-direction: column; gap: 90px; }
.chv-block { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); gap: 56px; border-top: 1px solid var(--chv-ink); padding-top: 28px; }
.chv-block__head { display: flex; flex-direction: column; gap: 8px; }
.chv-block__head h2 { margin: 0; font-family: var(--chv-serif); font-weight: 400; font-size: 36px; line-height: 1.05; }
.chv-block__text, .chv-block__text p { margin: 0; font-size: 17px; line-height: 1.8; color: var(--chv-text2); text-wrap: pretty; }
.chv-block__text p + p { margin-top: 1em; }

/* --- Page CMS générique ------------------------------------------------------ */
.chv-page { max-width: 1120px; margin: 0 auto; padding: 72px 40px 120px; display: flex; flex-direction: column; gap: 18px; }
.chv-page .chv-kicker a { color: var(--chv-muted); }
.chv-page .chv-h1 { font-size: clamp(44px, 5vw, 72px); margin-bottom: 24px; }
.chv-prose { font-size: 16px; line-height: 1.8; color: var(--chv-text2); }
.chv-prose h2 { margin: 48px 0 16px; font-family: var(--chv-serif); font-weight: 400; font-size: 32px; line-height: 1.1; color: var(--chv-ink); }
.chv-prose h3 { margin: 32px 0 10px; font-family: var(--chv-serif); font-weight: 400; font-size: 24px; color: var(--chv-ink); }
.chv-prose p { margin: 0 0 1em; }
.chv-prose ul, .chv-prose ol { margin: 0 0 1em 1.2em; list-style: disc; }
.chv-prose ol { list-style: decimal; }
.chv-prose a { border-bottom: 1px solid currentColor; }
.chv-prose strong, .chv-prose b { font-weight: 500; color: var(--chv-ink); }
.chv-prose blockquote { margin: 24px 0; padding: 4px 0 4px 24px; border-left: 1px solid var(--chv-ink); font-family: var(--chv-serif); font-style: italic; font-size: 22px; }
.chv-prose table { width: 100%; border-collapse: collapse; margin: 0 0 1em; font-size: 14px; }
.chv-prose th, .chv-prose td { padding: 10px 8px; border-bottom: 1px solid var(--chv-line); text-align: left; }
.chv-prose img { height: auto; }

/* --- Pied de page ------------------------------------------------------------ */
.chv-footer { background: var(--chv-dark); color: oklch(0.85 0.003 260); }
.chv-footer__grid { max-width: 1440px; margin: 0 auto; padding: 80px 40px 40px; display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 48px; }
.chv-footer__brand { display: flex; flex-direction: column; gap: 14px; }
.chv-footer__name { font-family: var(--chv-serif); font-size: 26px; color: oklch(0.95 0.003 260); }
.chv-footer__about { font-size: 14px; line-height: 1.7; color: oklch(0.7 0.01 70); max-width: 22em; }
.chv-footer__col { display: flex; flex-direction: column; gap: 12px; font-size: 14px; align-items: flex-start; }
.chv-footer__h { font-size: 11px; letter-spacing: .24em; text-transform: uppercase; color: oklch(0.65 0.01 70); }
.chv .chv-footer a, .chv-footer__link { background: none; border: 0; padding: 0; text-align: left; color: oklch(0.85 0.003 260); cursor: pointer; font-size: 14px; font-weight: 300; }
.chv .chv-footer a:hover, .chv-footer__link:hover { color: oklch(0.97 0.003 260); }
.chv-nl { display: flex; width: 100%; max-width: 320px; border-bottom: 1px solid oklch(0.5 0.01 60); }
.chv-nl input { flex: 1; min-width: 0; background: none; border: 0; padding: 10px 0; color: oklch(0.95 0.003 260); font-size: 14px; }
.chv-nl input::placeholder { color: oklch(0.6 0.01 70); }
.chv-nl input:focus { outline: none; }
.chv-nl:focus-within { border-bottom-color: oklch(0.9 0.003 260); }
.chv-nl button { background: none; border: 0; color: oklch(0.95 0.003 260); font-size: 10.5px; letter-spacing: .2em; text-transform: uppercase; cursor: pointer; padding: 10px 0 10px 12px; font-weight: 400; }
.chv-nl__msg { font-size: 12px; }
.chv-nl__msg:empty { display: none; }
.chv-nl__msg.is-ok { color: oklch(0.8 0.1 160); }
.chv-nl__msg.is-err { color: oklch(0.75 0.12 25); }
.chv-footer__bottom { max-width: 1440px; margin: 0 auto; padding: 24px 40px 40px; border-top: 1px solid oklch(0.3 0.01 60); font-size: 12px; color: oklch(0.65 0.01 70); display: flex; justify-content: space-between; gap: 16px; flex-wrap: wrap; }
.chv .chv-footer__bottom a { font-size: 12px; color: oklch(0.75 0.01 70); }

/* --- Pages fonctionnelles héritées (compte, commande, connexion, recherche) --- */
.chv .container, .chv .account-page, .chv .checkout-page, .chv .auth-page { max-width: 1280px; }
.chv h1:not([class]), .chv .page-title { font-family: var(--chv-serif); font-weight: 300; }
.chv .btn { border-radius: 0; font-family: var(--chv-sans); font-size: 11px; letter-spacing: .2em; text-transform: uppercase; font-weight: 400; padding: 14px 24px; box-shadow: none; }
.chv .btn-primary { background: var(--chv-ink); color: var(--chv-ivory); border: 1px solid var(--chv-ink); }
.chv .btn-primary:hover { background: oklch(0.32 0.012 60); color: var(--chv-ivory); }
.chv .btn-outline { background: none; border: 1px solid var(--chv-ink); color: var(--chv-ink); }
.chv .btn-outline:hover { background: var(--chv-ink); color: var(--chv-ivory); }
.chv input[type="text"], .chv input[type="email"], .chv input[type="password"], .chv input[type="tel"], .chv input[type="number"], .chv input[type="search"], .chv select, .chv textarea { border-radius: 0; }
.chv .checkout-step.active .step-num, .chv .checkout-step.done .step-num { background: var(--chv-ink); color: var(--chv-ivory); }
.chv .breadcrumb { font-size: 11px; letter-spacing: .2em; text-transform: uppercase; color: var(--chv-muted); }
.chv .product-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 56px 32px; }

/* Bandeau cookies : sobre, sur fond ivoire */
.chv .cookie-banner { border-radius: 0; font-family: var(--chv-sans); }
.chv .cookie-banner .btn, .chv .cookie-banner button { border-radius: 0; }

/* --- Mobile & tablette (ajout, la maquette est desktop) ----------------------- */
@media (max-width: 1024px) {
    .chv-prod__grid { gap: 48px; }
    .chv-cartpage__grid { grid-template-columns: minmax(0, 1fr); gap: 40px; }
    .chv-summary { position: static; }
}
@media (max-width: 900px) {
    .chv-header__top { padding: 12px 16px 0; gap: 8px; }
    .chv-logo__name { font-size: 24px; }
    .chv-logo__tag { font-size: 8px; letter-spacing: .26em; gap: 6px; }
    .chv-logo__tag span { width: 10px; }
    .chv-actions { gap: 14px; }
    .chv a.chv-actions__account { padding: 8px; }
    .chv-actions__account .chv-actions__label, .chv-actions__cart .chv-actions__label, .chv a.chv-actions__admin { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
    .chv-nav { justify-content: flex-start; flex-wrap: nowrap; overflow-x: auto; gap: 24px; padding: 8px 16px; scrollbar-width: none; }
    .chv-nav::-webkit-scrollbar { display: none; }
    .chv-hero { padding: 56px 16px 24px; }
    .chv-phases { gap: 40px; margin-top: 40px; }
    .chv-origins { padding: 72px 16px; }
    .chv-wrap { padding: 0 16px 72px; }
    .chv-house__inner { padding: 72px 16px; gap: 40px; grid-template-columns: minmax(0, 1fr); }
    .chv-cat { padding: 48px 16px 80px; }
    .chv-prod { padding: 24px 16px 80px; }
    .chv-prod__grid { grid-template-columns: minmax(0, 1fr); gap: 32px; }
    .chv-prod__info { position: static; }
    .chv-prod__section { margin-top: 72px; }
    .chv-cartpage { padding: 40px 16px 80px; }
    .chv-bij__head { padding: 48px 16px 24px; gap: 24px; grid-template-columns: minmax(0, 1fr); }
    .chv-bij__gallery { padding: 24px 16px 72px; }
    .chv-dark__inner { padding: 72px 16px; }
    .chv-bij__form { padding: 72px 16px 80px; }
    .chv-maison__head { padding: 56px 16px 40px; }
    .chv-maison__img { padding: 0 16px; }
    .chv-maison__blocks { padding: 72px 16px; gap: 56px; }
    .chv-block { grid-template-columns: minmax(0, 1fr); gap: 16px; }
    .chv-page { padding: 48px 16px 80px; }
    .chv-footer__grid { padding: 56px 16px 32px; gap: 36px; }
    .chv-footer__bottom { padding: 20px 16px 32px; }
    .chv-origins__grid, .chv-house__inner, .chv-bij__head, .chv-form--grid { grid-template-columns: minmax(0, 1fr); }
    .chv-flash { margin: 12px 16px 0; }
}
@media (max-width: 600px) {
    .chv-header__top { grid-template-columns: auto 1fr auto; }
    .chv-logo__name { font-size: 20px; letter-spacing: .02em; }
    .chv-logo__tag { display: none; }
    .chv a.chv-actions__search { display: none; }
    .chv-grid, .chv-grid--sm { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 36px 16px; }
    .chv-card__name { font-size: 19px; }
    .chv-card--sm .chv-card__name { font-size: 18px; }
    .chv-card__desc { display: none; }
    .chv-card__foot { flex-direction: column; gap: 4px; }
    .chv-card__tag { top: 8px; left: 8px; font-size: 9px; padding: 4px 6px; }
    .chv-bar { flex-direction: column; align-items: flex-start; }
    .chv-line { grid-template-columns: 80px minmax(0, 1fr); gap: 16px; }
    .chv-line__price { grid-column: 2; }
    .chv-specs { column-gap: 16px; }
    .chv-summary, .chv-review-form { padding: 24px 20px; }
    .chv-thanks { padding: 32px 20px; font-size: 24px; }
    .chv-homecms__box { padding: 28px 20px !important; }
}
@media (prefers-reduced-motion: reduce) {
    .chv *, .chv *::before, .chv *::after { transition-duration: 0.01ms !important; animation-duration: 0.01ms !important; scroll-behavior: auto !important; }
}

/* Recherche */
.chv-search { margin-top: 40px; display: flex; gap: 16px; max-width: 720px; }
.chv-search input { flex: 1; min-width: 0; border: 0; border-bottom: 1px solid var(--chv-input); border-radius: 0; background: none; padding: 12px 0; font-size: 18px; color: var(--chv-ink); }
.chv-search input:focus { outline: none; border-bottom-color: var(--chv-ink); }
.chv-search .chv-btn { padding: 14px 28px; }
.chv-search__count { margin: 24px 0 0; }
@media (max-width: 600px) {
    .chv-nav { flex-wrap: wrap; justify-content: center; overflow: visible; gap: 2px 22px; padding: 6px 16px 6px; }
    .chv-nav a { font-size: 10px; letter-spacing: .16em; }
}

/* Connexion / inscription / mot de passe (gabarits hérités) */
.chv .auth-page { max-width: 520px; margin: 0 auto; padding: 72px 16px 100px; }
.chv .auth-card { border: 1px solid var(--chv-line); background: none; box-shadow: none; padding: 48px 40px; }
.chv .auth-card h1 { font-family: var(--chv-serif); font-weight: 300; font-size: 44px; }
@media (max-width: 600px) { .chv .auth-card { padding: 32px 20px; } }

/* Accueil : sélection alignée sur les blocs étapes / origines (960 px) */
.chv-selection .chv-grid { max-width: 1040px; margin: 0 auto; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 48px 32px; }
@media (max-width: 900px) {
    .chv-phase__img { aspect-ratio: 3 / 2; }
    .chv-origin__img { aspect-ratio: 16 / 10; }
}

/* Bijoux & sur-mesure : même colonne de 960 px que l'accueil (demande de l'utilisateur, 2026-11-02) */
.chv-bij__head, .chv-bij__gallery, .chv-dark__inner { max-width: 1040px; }
.chv-creation__img { aspect-ratio: 4 / 5; }
@media (max-width: 900px) {
    .chv-creation__img { aspect-ratio: 3 / 2; }
}
.chv-dark__steps { grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 32px; }
.chv-bij__head .chv-h1 { font-size: clamp(44px, 5vw, 68px); }
@media (min-width: 901px) {
    .chv-bij__head { grid-template-columns: max-content minmax(0, 1fr); gap: 56px; }
}

/* Bandeau remonté derrière la barre de navigation (≥ 901 px, demande du 2026-11-02) : la ligne du logo reste opaque, seule la
   barre des rubriques devient translucide au-dessus du haut de la photo, et redevient opaque dès qu'on défile.
   --chv-nav-h = hauteur réelle de la barre des rubriques, posée par theme.js (repli 37 px). */
@media (min-width: 901px) {
    .chv-header { background: linear-gradient(to bottom, oklch(0.972 0.003 260 / 0.95) calc(100% - var(--chv-nav-h, 37px)), transparent 0); -webkit-backdrop-filter: none; backdrop-filter: none; border-bottom-color: oklch(1 0 0 / 0.4); }
    .chv-header::before { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: var(--chv-nav-h, 37px); z-index: -1; background: oklch(0.972 0.003 260 / 0.55); -webkit-backdrop-filter: blur(3px); backdrop-filter: blur(3px); transition: background-color .25s ease; }
    .chv-header.is-scrolled { border-bottom-color: var(--chv-line); }
    .chv-header.is-scrolled::before { background: oklch(0.972 0.003 260 / 0.95); }
    .chv-band { margin-top: calc(-1 * var(--chv-nav-h, 37px)); }
}

/* Illustrations dans le contenu des pages CMS (guide des pierres, 2026-11-02) */
.chv-prose figure { margin: 28px 0 32px; }
.chv-prose figure img { display: block; width: 100%; height: auto; }
.chv-prose figcaption { margin-top: 10px; font-size: 13px; line-height: 1.5; letter-spacing: .02em; color: var(--chv-muted); font-style: italic; }

/* Blocs texte + photo (guide des pierres, 2026-11-02) : la photo flotte à droite, le texte commence en haut de la photo et,
   s'il est plus long qu'elle (légende comprise), continue en pleine largeur dessous. La photo est placée AVANT le texte dans le
   HTML (condition du flottant). Mobile : photo sous le texte (flex + order). */
.chv-prose .chv-split { display: flow-root; margin: 32px 0; }
.chv-prose .chv-split__img { float: right; width: 320px; margin: 4px 0 20px 40px; }
.chv-prose .chv-split--wide .chv-split__img { width: 400px; }
.chv-prose .chv-split__text > :first-child { margin-top: 0; }
.chv-prose .chv-split__text > :last-child { margin-bottom: 0; }
.chv-prose .chv-split__img img { display: block; width: 100%; height: auto; }
.chv-prose .chv-split__img figcaption { margin-top: 8px; font-size: 12px; }
@media (max-width: 700px) {
    .chv-prose .chv-split { display: flex; flex-direction: column; gap: 16px; }
    .chv-prose .chv-split__text { order: 1; }
    .chv-prose .chv-split__img, .chv-prose .chv-split--wide .chv-split__img { order: 2; float: none; width: auto; max-width: 360px; margin: 0; }
    .chv-prose .chv-split + .chv-split::before { order: 0; }
}

/* Séparateur entre les rubriques des pages de contenu (demande du 2026-11-02) : filet fin qui s'efface aux extrémités,
   petit losange au centre (rappel de la favicon). Avant chaque titre h2 et entre deux blocs texte/photo consécutifs. */
.chv-prose h2::before,
.chv-prose .chv-split + .chv-split::before {
    content: "\25C6"; display: block; width: 220px; max-width: 60%; margin: 0 auto 44px;
    font-family: var(--chv-sans); font-size: 10px; line-height: 12px; letter-spacing: 0; text-align: center; color: var(--chv-sand);
    background: linear-gradient(90deg, transparent 0, var(--chv-sand) 38%, transparent 46%, transparent 54%, var(--chv-sand) 62%, transparent 100%) center / 100% 1px no-repeat;
}
.chv-prose .chv-split + .chv-split::before { width: 120px; margin: 4px auto 8px; opacity: .7; }
.chv-prose h2 { margin-top: 64px; }

/* Accueil : encart « Une taille calculée, pas estimée » (Facet Lab, 2026-11-02) — fond clair et compact, colonne de 1 040 px */
.chv-precision { max-width: 1120px; margin: 72px auto 0; padding: 0 40px; }
.chv-precision__inner { background: var(--chv-surface); padding: 44px 48px 40px; }
.chv-precision__head { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 7fr); gap: 48px; align-items: start; }
.chv-precision__title { margin: 12px 0 0; font-family: var(--chv-serif); font-weight: 300; font-size: 34px; line-height: 1.1; color: var(--chv-ink); }
.chv-precision__text p { margin: 0 0 10px; font-size: 15px; line-height: 1.7; color: var(--chv-text2); }
.chv-precision__text p:last-child { margin-bottom: 0; }
.chv-precision__text a { border-bottom: 1px solid currentColor; color: var(--chv-ink); }
.chv-precision__points { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 32px; margin-top: 32px; padding-top: 24px; border-top: 1px solid var(--chv-line); }
.chv-precision__point h3 { margin: 0 0 6px; font-family: var(--chv-serif); font-weight: 400; font-size: 21px; color: var(--chv-ink); }
.chv-precision__point h3 .chv-num { font-size: 17px; margin-right: 4px; }
.chv-precision__point p { margin: 0; font-size: 14px; line-height: 1.6; color: var(--chv-text2); }
.chv a.chv-precision__cta { display: inline-block; margin-top: 24px; }
@media (max-width: 900px) {
    .chv-precision { margin-top: 48px; padding: 0 16px; }
    .chv-precision__inner { padding: 28px 20px; }
    .chv-precision__head, .chv-precision__points { grid-template-columns: minmax(0, 1fr); gap: 16px; }
    .chv-precision__title { font-size: 28px; }
}
.chv-precision__point img { display: block; width: 100%; height: auto; aspect-ratio: 1 / 1; margin-bottom: 16px; }
@media (max-width: 900px) { .chv-precision__point img { max-width: 360px; } .chv-precision__points { gap: 28px; } }

/* Accueil : « Des pierres que nous allons chercher » — provenances terrain (2026-11-02, remplace « Deux origines ») */
.chv-origins .chv-h2 { margin-bottom: 24px; }
.chv-origins__lead { max-width: 760px; margin: 0 auto 56px; text-align: center; font-size: 17px; line-height: 1.75; color: var(--chv-text2); text-wrap: pretty; }
.chv-places { max-width: 1040px; margin: 0 auto; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 40px 40px; }
.chv-place { display: flex; flex-direction: column; gap: 12px; border-top: 1px solid var(--chv-ink); padding-top: 18px; }
.chv-place__title { margin: 0; font-family: var(--chv-serif); font-weight: 400; font-size: 28px; line-height: 1.15; }
.chv-place__text { margin: 0; font-size: 15px; line-height: 1.65; color: var(--chv-text); text-wrap: pretty; }
.chv-place--ask { background: var(--chv-surface); border-top-color: var(--chv-sand); padding: 18px 24px 24px; }
.chv-place--ask .chv-link { margin-top: auto; }
@media (max-width: 900px) { .chv-places { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 32px; } .chv-origins__lead { margin-bottom: 40px; font-size: 16px; } }
@media (max-width: 600px) { .chv-places { grid-template-columns: minmax(0, 1fr); } }

/* Page « Recherche & taille de pierres » (2026-11-02) : encarts réutilisant .chv-places */
.chv-pt__offer { max-width: 1120px; margin: 0 auto; padding: 24px 40px 0; }
.chv-pt__offer .chv-h2 { margin: 0 0 40px; font-size: clamp(32px, 3.4vw, 44px); }
.chv-places--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.chv-place__text p { margin: 0; }
@media (max-width: 900px) { .chv-pt__offer { padding: 16px 16px 0; } }
@media (max-width: 600px) { .chv-places--2 { grid-template-columns: minmax(0, 1fr); } }
.chv-bij__head.chv-pt__head { grid-template-columns: minmax(0, 1fr); gap: 28px; align-items: start; }
.chv-pt__head .chv-lead { max-width: 46em; }
.chv-origins__lead p { margin: 0 0 14px; }
.chv-origins__lead p:last-child { margin-bottom: 0; }

/* Agrandissement d'image au clic (img[data-zoom], 2026-11-02) */
.chv-zoomable { cursor: zoom-in; }
.chv-zoomable:focus-visible { outline: 2px solid var(--chv-ink); outline-offset: 3px; }
.chv-zoom { position: fixed; inset: 0; margin: auto; width: fit-content; height: fit-content; max-width: min(96vw, 1536px); max-height: 96vh; padding: 0; border: 0; background: transparent; overflow: visible; }
.chv-zoom::backdrop { background: oklch(0.15 0.008 60 / 0.88); }
.chv-zoom__img { display: block; max-width: min(96vw, 1536px); max-height: calc(96vh - 48px); width: auto; height: auto; margin: 0 auto; }
.chv-zoom__cap { margin: 10px auto 0; max-width: 900px; text-align: center; font-size: 13px; line-height: 1.5; color: oklch(0.88 0.003 260); font-style: italic; }
.chv-zoom__close { position: fixed; top: 16px; right: 20px; width: 44px; height: 44px; border: 0; border-radius: 50%; background: oklch(1 0 0 / 0.14); color: #fff; font-size: 28px; line-height: 1; cursor: pointer; }
.chv-zoom__close:hover, .chv-zoom__close:focus-visible { background: oklch(1 0 0 / 0.28); outline: none; }
.chv-zoomwrap { position: relative; }
.chv-zoomhint { position: absolute; top: 12px; right: 12px; display: inline-flex; align-items: center; gap: 6px; padding: 7px 12px 7px 10px; border-radius: 999px; background: oklch(0.2 0.01 60 / 0.72); color: #fff; font-size: 11px; letter-spacing: .14em; text-transform: uppercase; pointer-events: none; opacity: 0; transform: translateY(-4px); transition: opacity .2s ease, transform .2s ease; }
.chv-zoomwrap:hover .chv-zoomhint, .chv-zoomable:focus-visible + .chv-zoomhint, .chv-zoomwrap:focus-within .chv-zoomhint { opacity: 1; transform: none; }
.chv-zoomwrap:hover .chv-zoomable { filter: brightness(1.04); }
@media (hover: none) { .chv-zoomhint { opacity: 1; transform: none; } }
