/* Public marketing pages only. No fixed desktop ceiling: use the viewport,
   while keeping reading measures inside paragraphs and useful card columns. */
.public-site { --public-gutter: clamp(1rem, 3vw, 4rem); }
.public-site .public-container,
.public-site > nav[aria-label="Navigation principale"] > div:first-child,
.public-site > footer > div {
    width: 100%;
    max-width: none;
    margin-inline: auto;
    padding-inline: var(--public-gutter);
}
.public-site .public-section { padding-block: clamp(2rem, 3vw, 3.5rem); }
/* main already reserves the fixed navigation's 80px: do not add another 128px. */
.public-site .public-hero { padding-block: clamp(2rem, 3.5vw, 4rem); min-height: 0; }
.public-site .public-hero h1 { font-size: clamp(2rem, 3.3vw, 3.75rem); line-height: 1.15; text-wrap: balance; }
.public-site .public-section h2 { text-wrap: balance; }
.public-site .public-section h2.text-4xl { font-size: clamp(1.65rem, 2.4vw, 2.75rem); }
.public-site .public-container :where(p) { max-width: 72ch; }
.public-site .public-section .text-center > p { margin-inline: auto; }
.public-site .public-container :where(.grid, .flex) > * { min-width: 0; }
.public-site .public-container :where(h1, h2, h3, p, a, label) { overflow-wrap: break-word; }
.public-site .public-container > :where(.mb-16, .mb-14, .mb-12) { margin-bottom: 2rem; }
.public-site .public-section :where(.gap-12) { gap: clamp(1.5rem, 3vw, 3rem); }
.public-site .public-section :where([id]) { scroll-margin-top: 6rem; }
.public-site .public-section[id] { scroll-margin-top: 6rem; }
.public-site :where(a, button, summary, select, input):focus-visible { outline: 3px solid #007140; outline-offset: 4px; }
.public-site :where(footer, .text-white) :where(a, button):focus-visible { outline-color: #b6f2d0; }
.public-site label:has(> .sr-only:focus-visible) { outline: 3px solid #007140; outline-offset: 4px; border-radius: .75rem; }

.public-site .public-guide-layout { display: grid; gap: 2rem; align-items: start; }
.public-site .public-guide-articles { display: grid; gap: 1.5rem; align-items: start; }
.public-site .public-guide-articles > section { padding: clamp(1.25rem, 2vw, 2rem); }
.public-site .public-guide-articles h2 { font-size: clamp(1.35rem, 1.8vw, 1.8rem); }
.public-site .public-guide-articles p { font-size: 1rem; }
.public-site .public-guide-layout aside { min-width: 0; }

/* Footer: give the product links two real columns, instead of a tall list
   followed by an unused grid column. Preserve every destination and label. */
@media (min-width: 768px) {
    .public-site > footer > div > .grid { grid-template-columns: 1fr 1.5fr; }
    .public-site > footer > div > .grid > div:nth-child(2) > ul { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .5rem 1.5rem; }
    .public-site > footer > div > .grid > div:nth-child(2) > ul > li { margin-top: 0; }
    .public-site > footer .border-t > .grid { grid-template-columns: 1fr; }
}
@media (min-width: 1024px) {
    .public-site .public-intro { display: grid; grid-template-columns: 1fr 1fr; gap: 2.5rem; align-items: center; text-align: left; }
    .public-site .public-intro h1 { margin-bottom: 0; }
    .public-site .public-intro p { margin-inline: 0; }
    .public-site .public-guide-layout { grid-template-columns: minmax(0, 1fr) 20rem; }
    .public-site > footer > div > .grid { grid-template-columns: 1.2fr 1.8fr .65fr; }
    .public-site > footer > div > .grid > div { grid-column: auto; }
}
@media (min-width: 1600px) {
    .public-site .public-guide-articles { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .public-site .public-guide-outro { grid-column: 1 / -1; }
    .public-site .public-guide-outro:nth-child(even) { grid-column: auto; }
}
/* The shared Alpine menu still emits md:hidden; public desktop navigation
   only starts at xl. Keep the public menu usable throughout that interval. */
@media (min-width: 768px) and (max-width: 1279px) {
    .public-site > nav[aria-label="Navigation principale"] > .block { display: block; }
}
@media (max-width: 639px) {
    .public-site .public-stats { gap: .5rem; }
    .public-site .public-stats > div { padding: 1rem .5rem; }
    .public-site .public-stats .text-5xl { font-size: 1.5rem; }
    .public-site .public-stats .text-gray-600 { font-size: .75rem; overflow-wrap: anywhere; }
    .public-site .public-hero .flex { flex-wrap: wrap; }
    .public-site .public-container .p-8,
    .public-site .public-container .p-10 { padding: 1.25rem; }
    .public-site #calculateur [x-show="assorh"] { flex-wrap: wrap; }
    .public-site #calculateur [x-text="totalFormatted"] { font-size: 2.25rem; }
}
@media (prefers-reduced-motion: reduce) {
    .public-site *, .public-site *::before, .public-site *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
}
