.front41-shell {
  overflow-x: clip;
  background: var(--color-background);
  color: var(--color-text);
  font-family: Inter, Arial, sans-serif;
  font-size: var(--kor-space-16);
  line-height: var(--kor-body-line-height);
}

.front41-shell a { color: inherit; }
.front41-shell a:focus-visible,
.front41-shell button:focus-visible,
.front41-shell summary:focus-visible,
.front41-shell input:focus-visible {
  outline: var(--kor-focus-width) solid var(--color-focus);
  outline-offset: var(--kor-space-4);
}
.front41-shell .site-ad-layout { display: block; }
.front41-shell .site-main-column { width: 100%; max-width: none; margin: 0; padding: 0; }
.front41-shell:not(.ads-active) .site-ad-rail,
.front41-shell:not(.ads-active) .global-ad-wrap { display: none; }

.front41-container {
  width: 100%;
  max-width: calc(var(--kor-container-max) + var(--kor-space-72) + var(--kor-space-72));
  margin-inline: auto;
  padding-inline: var(--kor-space-72);
}

.front41-header {
  position: relative;
  z-index: 20;
  min-height: var(--kor-header-height);
  background: var(--color-surface);
  border-bottom: var(--kor-border-width) solid var(--color-border);
}
.front41-header__inner {
  display: grid;
  grid-template-columns: minmax(0, var(--kor-header-brand-width)) minmax(0, 1fr) minmax(0, var(--kor-header-search-width)) auto;
  align-items: center;
  gap: var(--kor-header-gap);
  min-height: var(--kor-header-height);
}
.front41-brand {
  display: inline-flex;
  align-items: center;
  gap: var(--kor-space-12);
  width: fit-content;
  text-decoration: none;
}
.front41-brand-mark { display: block; flex: 0 0 var(--kor-space-48); width: var(--kor-space-48); height: var(--kor-space-48); }
.front41-brand__name { color: var(--color-text); font-size: var(--kor-brand-name-size); font-weight: 600; line-height: var(--kor-brand-line-height); white-space: nowrap; }
.front41-brand__name > span { color: var(--color-primary); }
.front41-brand__name small { display: block; margin-top: var(--kor-space-4); color: var(--color-text-muted); font-size: var(--kor-space-14); font-weight: 400; letter-spacing: var(--kor-brand-letter-spacing); }
.front41-primary-nav { display: flex; align-items: center; justify-content: center; gap: var(--kor-space-32); white-space: nowrap; }
.front41-primary-nav a { font: var(--kor-text-label); text-decoration: none; }
.front41-primary-nav a:hover,
.front41-footer__links a:hover { text-decoration: underline; text-underline-offset: var(--kor-space-4); }

.front41-search {
  position: relative;
  display: flex;
  align-items: center;
  min-width: 0;
  height: var(--kor-space-44);
  border: var(--kor-border-width) solid var(--color-border);
  border-radius: var(--kor-radius-999);
  background: var(--color-background);
}
.front41-search input {
  width: 100%;
  min-width: 0;
  height: 100%;
  padding: 0 var(--kor-space-12) 0 var(--kor-space-16);
  border: 0;
  outline: 0;
  border-radius: inherit;
  background: transparent;
  color: var(--color-text);
  font: var(--kor-text-small);
}
.front41-search input::placeholder { color: var(--color-text-muted); opacity: 1; }
.front41-search button {
  display: grid;
  flex: 0 0 var(--kor-space-44);
  width: var(--kor-space-44);
  height: 100%;
  place-items: center;
  padding: 0;
  border: 0;
  border-radius: var(--kor-radius-999) 0 0 var(--kor-radius-999);
  background: transparent;
  color: var(--color-text);
  cursor: pointer;
}
.front41-search button svg { width: var(--kor-search-icon-size); height: var(--kor-search-icon-size); fill: none; stroke: currentColor; stroke-width: 2; }
.front41-context-switcher { position: relative; white-space: nowrap; }
.front41-context-switcher summary,
.front41-mobile-menu summary {
  display: flex;
  align-items: center;
  gap: var(--kor-space-8);
  min-height: var(--kor-space-40);
  padding: 0 var(--kor-space-8);
  border-radius: var(--kor-radius-4);
  color: var(--color-text);
  cursor: pointer;
  font: var(--kor-text-small);
  list-style: none;
}
.front41-context-switcher summary::-webkit-details-marker,
.front41-mobile-menu summary::-webkit-details-marker { display: none; }
.front41-context-switcher__menu {
  position: absolute;
  top: calc(100% + var(--kor-space-8));
  right: 0;
  z-index: 30;
  min-width: var(--kor-width-context-menu);
  padding: var(--kor-space-8);
  border: var(--kor-border-width) solid var(--color-border);
  border-radius: var(--kor-radius-12);
  background: var(--color-surface);
  box-shadow: var(--kor-shadow-card-soft);
}
.front41-context-switcher__menu a { display: flex; align-items: center; gap: var(--kor-space-8); box-sizing: border-box; text-decoration: none; width: 100%; padding: var(--kor-space-8) var(--kor-space-12); border: 0; border-radius: var(--kor-radius-4); background: transparent; color: var(--color-text); text-align: left; cursor: pointer; font: var(--kor-text-small); }
.front41-context-switcher__menu a:hover,
.front41-context-switcher__menu a[aria-current="true"] { background: var(--color-background); }
.front41-mobile-menu { display: none; position: relative; }

.front41-category-nav {
  min-height: var(--kor-nav-height);
  border-bottom: var(--kor-border-width) solid var(--color-border);
  background: var(--color-surface);
}
.front41-category-nav__inner {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--kor-space-40);
  min-height: var(--kor-nav-height);
  overflow-x: auto;
  scrollbar-width: none;
}
.front41-category-nav__inner::-webkit-scrollbar { display: none; }
.front41-category-nav__item {
  display: inline-flex;
  flex: 0 0 auto;
  align-items: center;
  gap: var(--kor-space-8);
  min-height: var(--kor-nav-height);
  color: var(--color-text);
  font: var(--kor-text-label);
  text-decoration: none;
}
.front41-category-nav__item:hover,
.front41-category-nav__item.is-current { color: var(--color-primary); }
.front41-category-nav__item.is-upcoming { color: var(--color-text-muted); cursor: default; }
.front41-category-icon { display: block; flex: 0 0 var(--kor-icon-size); width: var(--kor-icon-size); height: var(--kor-icon-size); }

.front41-footer { color: var(--color-surface); background: var(--color-brand-dark); }
.front41-footer__inner {
  display: grid;
  grid-template-columns: minmax(0, var(--kor-brand-name-width)) minmax(0, 1fr) auto;
  align-items: center;
  gap: var(--kor-footer-gap);
  min-height: var(--kor-footer-min-height);
  padding-block: var(--kor-space-24);
}
.front41-brand--footer .front41-brand__name,
.front41-brand--footer .front41-brand__name > span,
.front41-brand--footer .front41-brand__name small { color: var(--color-surface); }
.front41-footer__message p { margin: 0 0 var(--kor-space-8); font: var(--kor-text-body); }
.front41-footer__message small { color: var(--color-border); font: var(--kor-text-small); }
.front41-footer__links { display: flex; flex-wrap: wrap; gap: var(--kor-space-24); }
.front41-footer__links a { color: var(--color-surface); font: var(--kor-text-small); text-decoration: none; }

.front41-button { display: inline-flex; align-items: center; justify-content: center; gap: var(--kor-space-16); min-height: var(--kor-space-56); padding: var(--kor-space-16); border: 0; border-radius: var(--kor-radius-12); background: var(--color-primary); color: var(--color-surface) !important; font: var(--kor-text-label); text-decoration: none; }
.front41-button--dark { background: var(--color-brand-dark); }
.front41-chip { display: inline-flex; align-items: center; justify-content: center; min-height: var(--kor-space-38); padding: var(--kor-space-8) var(--kor-space-16); border: var(--kor-border-width) solid var(--color-border); border-radius: var(--kor-radius-999); background: var(--color-surface); color: var(--color-text); font: var(--kor-text-label); text-decoration: none; }
.front41-chip.is-selected { border-color: var(--color-primary); background: var(--color-primary); color: var(--color-surface); }
.front41-chip.is-disabled { color: var(--color-text-muted); background: var(--color-background); }
.front41-verdict { display: inline-flex; align-items: center; gap: var(--kor-space-8); min-height: var(--kor-space-44); padding: var(--kor-space-8) var(--kor-space-12); border-radius: var(--kor-radius-12); color: var(--color-keep); background: var(--color-keep-bg); font: var(--kor-text-label); }
.front41-verdict__dot { width: var(--kor-space-6); height: var(--kor-space-6); border-radius: var(--kor-radius-999); background: currentColor; }
.front41-verdict small { color: var(--color-text-muted); font: var(--kor-text-eyebrow); }
.front41-verdict--replace { color: var(--color-replace); background: var(--color-replace-bg); }
.front41-verdict--check { color: var(--color-check); background: var(--color-check-bg); }
.front41-confidence { display: flex; align-items: center; gap: var(--kor-space-4); width: var(--kor-width-confidence); }
.front41-confidence__bar { width: var(--kor-width-confidence-bar); height: var(--kor-space-8); border-radius: var(--kor-radius-4); background: var(--color-border); }
.front41-confidence__bar.is-filled { background: var(--color-primary); }
.front41-confidence-unknown { margin: 0; color: var(--color-text-muted); font: var(--kor-text-small); }
.front41-card { padding: var(--kor-space-24); border: var(--kor-border-width) solid var(--color-border); border-radius: var(--kor-radius-16); background: var(--color-surface); box-shadow: var(--kor-shadow-card-soft); }
.front41-breadcrumbs { color: var(--color-text-muted); font: var(--kor-text-small); }
.front41-breadcrumbs ol { display: flex; flex-wrap: wrap; gap: var(--kor-space-8); margin: 0; padding: 0; list-style: none; }
.front41-breadcrumbs li { display: inline-flex; align-items: center; gap: var(--kor-space-8); }
.front41-breadcrumbs a { color: var(--color-primary); }
.front41-separator { height: var(--kor-border-width); margin-block: var(--kor-space-24); border: 0; background: var(--color-border); }
.front41-info { padding: var(--kor-space-16); border-left: var(--kor-space-4) solid var(--color-primary); border-radius: var(--kor-radius-4); background: var(--color-surface); }
.front41-info h2 { margin: 0 0 var(--kor-space-8); font: var(--kor-text-label); }
.front41-info > div { color: var(--color-text-muted); font: var(--kor-text-body); }
.front41-eyebrow { font: var(--kor-text-eyebrow); }
.front41-label { font: var(--kor-text-label); }
.front41-small { font: var(--kor-text-small); }
.front41-body-large { font: var(--kor-text-body-large); }
.front41-h1 { font: var(--kor-text-h1); }
.front41-h2 { font: var(--kor-text-h2); }
.front41-h3 { font: var(--kor-text-h3); }
.front41-handwritten { font-family: Caveat, cursive; }

@media (max-width: 1100px) {
  .front41-container { padding-inline: var(--kor-space-32); }
  .front41-header__inner { grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr); gap: var(--kor-space-16); }
  .front41-primary-nav { gap: var(--kor-space-16); }
  .front41-context-switcher { grid-column: 3; justify-self: end; }
  .front41-search { grid-column: 1 / 3; grid-row: 2; }
  .front41-header__inner { padding-block: var(--kor-space-12); }
  .front41-footer__inner { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
  .front41-footer__links { grid-column: 1 / -1; }
}

@media (max-width: 767px) {
  .front41-container { padding-inline: var(--kor-mobile-gutter); }
  .front41-header__inner { grid-template-columns: minmax(0, 1fr) auto auto; gap: var(--kor-space-8); padding-block: var(--kor-space-12); }
  .front41-brand { gap: var(--kor-space-8); }
  .front41-brand-mark { flex-basis: var(--kor-space-40); width: var(--kor-space-40); height: var(--kor-space-40); }
  .front41-brand__name { font-size: var(--kor-brand-name-size-mobile); }
  .front41-brand__name small { font-size: var(--kor-space-12); }
  .front41-primary-nav { display: none; }
  .front41-search { grid-column: 1 / -1; grid-row: 2; width: 100%; }
  .front41-context-switcher { grid-column: 2; grid-row: 1; }
  .front41-context-switcher summary { max-width: var(--kor-width-mobile-context); overflow: hidden; font-size: var(--kor-space-12); }
  .front41-mobile-menu { display: block; grid-column: 3; grid-row: 1; }
  .front41-mobile-menu summary { justify-content: center; width: var(--kor-space-40); min-height: var(--kor-space-40); padding: 0; }
  .front41-menu-icon,
  .front41-menu-icon::before,
  .front41-menu-icon::after { display: block; width: var(--kor-space-20); height: var(--kor-border-width); background: currentColor; }
  .front41-menu-icon { position: relative; }
  .front41-menu-icon::before,
  .front41-menu-icon::after { position: absolute; left: 0; content: ""; }
  .front41-menu-icon::before { top: calc(-1 * var(--kor-space-6)); }
  .front41-menu-icon::after { top: var(--kor-space-6); }
  .front41-mobile-menu nav { position: absolute; top: calc(100% + var(--kor-space-8)); right: 0; z-index: 30; display: grid; min-width: var(--kor-width-mobile-menu); padding: var(--kor-space-8); border: var(--kor-border-width) solid var(--color-border); border-radius: var(--kor-radius-12); background: var(--color-surface); box-shadow: var(--kor-shadow-card-soft); }
  .front41-mobile-menu nav a { padding: var(--kor-space-12); border-radius: var(--kor-radius-4); font: var(--kor-text-label); text-decoration: none; }
  .front41-mobile-menu nav a:hover { background: var(--color-background); }
  .front41-category-nav__inner { justify-content: flex-start; gap: var(--kor-space-24); }
  .front41-category-nav__item { min-height: var(--kor-space-48); font: var(--kor-text-small); }
  .front41-footer__inner { display: flex; align-items: flex-start; flex-direction: column; gap: var(--kor-space-20); padding-block: var(--kor-space-32); }
  .front41-footer__links { gap: var(--kor-space-16); }
  .front41-footer__links a { font-size: var(--kor-space-12); }
}

/* f-12: AA text contrast for inherited content inside the v4.1 shell. */
body.keep-or-replace.front41-shell {
  --kor-muted: var(--color-text-muted);
  --kor-green: #0f766e;
}

/* f-17: foundations previously supplied by globals/keep-or-replace CSS. */
body.front41-shell { margin: 0; }
.front41-shell *, .front41-shell *::before, .front41-shell *::after { box-sizing: border-box; }
.front41-shell button, .front41-shell input, .front41-shell select { font: inherit; }
.front41-shell img { max-width: 100%; height: auto; }
.front41-shell [hidden] { display: none !important; }
.front41-shell .visually-hidden { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }
.front41-shell .skip-link { position: absolute; top: 8px; left: 8px; z-index: 2000; transform: translateY(-200%); padding: 12px 16px; background: var(--color-surface); color: var(--color-primary); }
.front41-shell .skip-link:focus { transform: none; }
.front41-shell .site-ad-layout { min-width: 0; }
.front41-shell .site-ad-rail { min-width: 0; }
.front41-shell .global-ad-wrap { max-width: 1296px; margin: 24px auto; padding: 0 16px; }
.front41-shell .ad-slot { display: grid; place-items: center; min-height: 90px; border: 1px solid var(--color-border); border-radius: 16px; background: var(--color-surface); color: var(--color-text-muted); }
.front41-shell .ad-slot--rectangle { min-height: 250px; }
.front41-shell .ad-slot--live { display: block; border: 0; }
.front41-shell .ad-slot__placeholder { font: var(--kor-text-small); }
.front41-shell .site-main-column { min-width: 0; }
@media (min-width: 1800px) {
  .front41-shell.ads-active .site-ad-layout { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1440px) minmax(0, 1fr); gap: 24px; }
}
@media (max-width: 1799px) { .front41-shell .site-ad-rail { display: none; } }
.front41-shell .analytics-consent { position: fixed; inset: auto 16px 16px; z-index: 1000; max-width: 768px; max-height: 85vh; overflow-y: auto; margin: auto; padding: 24px; border: 1px solid var(--color-border); border-radius: 20px; background: var(--color-surface); color: var(--color-text); box-shadow: var(--kor-shadow-card-soft); }
.front41-shell .analytics-consent h2 { margin-top: 0; font: var(--kor-text-h3); }
.front41-shell .analytics-consent div { display: flex; flex-wrap: wrap; gap: 12px; margin-block: 16px; }
.front41-shell .analytics-consent button { flex: 1 1 220px; min-height: 44px; padding: 12px; border: 1px solid var(--color-primary); border-radius: 12px; background: var(--color-surface); color: var(--color-primary); cursor: pointer; }
.front41-shell .analytics-consent a { color: var(--color-primary); }
.front41-shell .analytics-preferences { display: block; margin: 16px auto; min-height: 44px; padding: 8px 16px; border: 1px solid var(--color-border); border-radius: 12px; background: var(--color-surface); color: var(--color-text); cursor: pointer; }
.front41-shell .front41-breadcrumbs { display: flex; flex-wrap: wrap; align-items: baseline; gap: 8px; }
.front41-shell .front41-breadcrumbs a { color: var(--color-primary); }
.front41-repair-result { padding: 16px; border: 1px solid var(--color-border); border-radius: 12px; background: var(--color-surface); color: var(--color-text); }
.front41-repair-result[data-tone="keep"], .front41-repair-result[data-tone="repair"] { background: var(--color-keep-bg); color: var(--color-keep); }
.front41-repair-result[data-tone="replace"] { background: var(--color-replace-bg); color: var(--color-replace); }
.front41-catalog-error { padding-block: 48px; color: var(--color-text); }

.front41-catalog-error h1 { max-width: 30ch; font: 700 clamp(32px, 4vw, 48px)/1.2 Inter, sans-serif; overflow-wrap: anywhere; }

/* Sélecteur de marché : drapeau + code pays. */
.front41-flag { display: inline-block; vertical-align: -2px; border-radius: 2px; box-shadow: 0 0 0 1px var(--color-border); }
.front41-context-switcher summary, .front41-context-switcher__menu a { display: inline-flex; align-items: center; gap: 8px; }
.front41-context-code { font-weight: 600; letter-spacing: .02em; }
/* Keep the footer at the bottom of short pages (contact, partnerships…). */
body.front41-shell { min-height: 100vh; display: flex; flex-direction: column; }
body.front41-shell > .front41-footer { margin-top: auto; }
/* Seven footer links no longer squeeze the tagline into a narrow column. */
@media (min-width: 1101px) {
  .front41-footer__message { min-width: 240px; }
  .front41-footer__links { max-width: 520px; justify-content: flex-end; row-gap: var(--kor-space-12); }
}
/* The top header stays visible while scrolling (operator, 17 Oct). Its real
   height is published by front41-context.js as --f41-header-offset. */
/* The category bar follows the header (operator, 23 Oct): it sticks right under
   it, and --f41-header-offset covers both so summaries and anchors sit below. */
:root { --f41-masthead-height: var(--kor-header-height); --f41-header-offset: calc(var(--kor-header-height) + var(--kor-nav-height)); }
body.front41-shell > .front41-header { position: sticky; top: 0; z-index: 40; }
body.front41-shell > .front41-category-nav { position: sticky; top: var(--f41-masthead-height); z-index: 39; }
/* Phones keep the whole screen for content: the header scrolls away there. */
@media (max-width: 767px) { :root { --f41-header-offset: 0px; } body.front41-shell > .front41-header, body.front41-shell > .front41-category-nav { position: relative; top: auto; } }
html:has(body.front41-shell) { scroll-padding-top: calc(var(--f41-header-offset) + 16px); }
