/* Shell copy follows the editorial container; overlay backgrounds use the media grid. */
html { scrollbar-gutter: stable; }
html.cosma-menu-open { overflow: hidden; }
/* Normal document flow is the no-JavaScript fallback. The enhanced header keeps
   that same layout space and the absolute menu never moves the page content. */
:root { --cosma-header-height: 114px; --cosma-header-offset: 0px; }
.cosma-header { position: relative; z-index: 100; background: #fff; border: 0; }
.admin-bar { --cosma-header-offset: 32px; }
/* Sticky positioning preserves the original header space. Only its paint moves. */
.cosma-header.has-scroll-reveal { position: sticky; inset-block-start: var(--cosma-header-offset); transition: transform 220ms ease; }
.cosma-header.is-header-hidden { transform: translateY(calc(-100% - var(--cosma-header-offset))); pointer-events: none; }
/* Away from the document origin, cover the remaining viewport: a floating menu
   must not expose a false junction with the independently scrolled page grid. */
.cosma-header.is-navigation-ready.is-header-detached .cosma-navigation { block-size: calc(100dvh - var(--cosma-header-height) - var(--cosma-header-offset)); max-block-size: none; }
.cosma-header-inner { inline-size: var(--cosma-editorial-width); display: flex; gap: 0; min-block-size: var(--cosma-header-height); padding: 24px 16px 24px 0; align-items: center; }
.cosma-brand { flex: 0 0 auto; }
.cosma-brand img { inline-size: auto; max-inline-size: none; block-size: 45px; }
.cosma-header-widgets { margin-inline-start: 86px; align-self: center; font-size: 26px; font-weight: 900; line-height: 25px; }
.cosma-header-widgets :where(p, figure) { margin: 0; }
.cosma-menu-toggle { flex: 0 0 56px; margin-inline-start: auto; inline-size: 56px; block-size: 56px; padding: 0; border: 0; background: transparent; cursor: pointer; }
.cosma-menu-toggle span { display: block; inline-size: 100%; block-size: 100%; background: url('../icons/cosma-menu-burger.svg') center / contain no-repeat; }
.cosma-menu-toggle[aria-expanded="true"] span { background-image: url('../icons/cosma-menu-croix.svg'); }
.cosma-navigation { --cosma-grid-step: calc(var(--cosma-unit) * 2); --cosma-menu-font-size: min(80px, calc(var(--cosma-grid-step) * 0.75)); --cosma-menu-spacing: min(calc(var(--cosma-menu-font-size) * 1.5), calc(var(--cosma-grid-step) * 0.8)); margin: 0; background-color: #fff; border: 0; box-shadow: 0 var(--cosma-stroke) 0 var(--cosma-line); }
.cosma-header.is-navigation-ready .cosma-navigation { position: absolute; inset-block-start: 100%; inset-inline: 0; max-block-size: round(down, calc(100dvh - var(--cosma-header-height) - var(--cosma-header-offset)), var(--cosma-grid-step)); overflow-y: auto; scrollbar-width: none; overscroll-behavior: contain; }
.cosma-js .cosma-header:not(.is-navigation-ready) .cosma-navigation,
.cosma-navigation[hidden], .cosma-menu-toggle[hidden] { display: none; }
.cosma-navigation > .cosma-container { inline-size: var(--cosma-editorial-width); padding-inline: 0; padding-block-start: 0; min-block-size: calc(var(--cosma-grid-step) * 3); }
.cosma-navigation .cosma-menu { display: block; }
.cosma-navigation .cosma-menu > li { min-block-size: var(--cosma-menu-spacing); display: flex; align-items: end; }
.cosma-navigation .cosma-menu > li:first-child { min-block-size: var(--cosma-grid-step); }
.cosma-navigation .cosma-menu > li > a { display: block; padding: 8px 0; font-family: var(--cosma-display-font); font-weight: 700; font-size: var(--cosma-menu-font-size); line-height: 1; color: #43b4ea; text-decoration: none; text-transform: lowercase; overflow-wrap: anywhere; transition: transform 0.5s ease-in-out, color 0.5s ease-in-out; }
.cosma-navigation .cosma-menu > li > a:hover, .cosma-navigation .cosma-menu > li > a:focus-visible { color: #111; transform: translateX(var(--cosma-menu-hover, 4rem)); }
/* Only Projects meets a grid line; subsequent baselines have equal compact spacing. */
.cosma-navigation .cosma-menu > li > a { padding-block: 0; text-box-trim: trim-end; text-box-edge: cap alphabetic; }
.cosma-navigation .sub-menu { font-family: var(--cosma-body-font); font-size: 1rem; }
.cosma-footer { background: var(--wp--preset--color--cosma-pale-blue); border-color: var(--cosma-line); padding-block: calc(var(--cosma-unit) * 0.65) 1rem; }
.cosma-footer > .cosma-container { inline-size: var(--cosma-editorial-width); }
.cosma-footer .cosma-footer-grid { grid-template-columns: repeat(16, minmax(0, 1fr)); gap: 0; }
.cosma-footer .cosma-footer-grid > :nth-child(1) { grid-column: 1 / 5; }
.cosma-footer .cosma-footer-grid > :nth-child(2) { grid-column: 7 / 11; }
.cosma-footer .cosma-footer-grid > :nth-child(3) { grid-column: 13 / 17; }
.cosma-footer-grid { font-size: 20px; font-weight: 700; line-height: 1.5; }
.cosma-footer-grid figure img { max-inline-size: min(100%, 253px); block-size: auto; }
.cosma-footer-grid :where(figure, p) { margin: 0; }
.cosma-footer-grid a { color: #111; text-decoration: none; }
.cosma-footer-grid a:hover { text-decoration: underline; }
.cosma-footer-grid ul { padding: 0; margin: 0; list-style: none; }
.cosma-footer-grid .menu a { text-transform: lowercase; line-height: 20px; letter-spacing: 0.297px; }
.cosma-footer-grid > div { display: flex; flex-direction: column; gap: 2rem; }
.cosma-footer-grid .cosma-widget + .cosma-widget { margin-block-start: auto; }
.cosma-footer-grid a img { display: inline-block; inline-size: auto; block-size: 25px; object-fit: contain; vertical-align: middle; }
.cosma-footer-grid .linkdin a { display: inline-flex; align-items: center; gap: 6px; }
.cosma-footer-grid .linkdin a::after { content: ''; flex: 0 0 25px; inline-size: 25px; block-size: 25px; background: url('../icons/linkedin.svg') center / contain no-repeat; }
.cosma-footer-bottom { border-block-start: 1px solid #53646b; padding-block-start: 1rem; margin-block-start: var(--cosma-unit); font-size: 12px; font-weight: 500; line-height: 18px; }
/* Production colophon: compact legal links grouped at the right, credits left. */
.cosma-footer-bottom { display: flex; justify-content: space-between; align-items: center; gap: 1rem 2rem; }

.cosma-footer-bottom p { margin: 0; }
.cosma-footer-bottom .cosma-menu { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 0 2rem; text-transform: uppercase; }
.cosma-footer-bottom .cosma-menu a { display: block; padding-block: 8px; text-decoration: underline; }
.cosma-footer-bottom .cosma-menu a:hover { text-decoration: none; }
.cosma-footer-credit, .cosma-footer-designer { display: flex; align-items: center; gap: 0.35em; }
.cosma-footer-credit { flex-wrap: wrap; }
.cosma-footer-designer { white-space: nowrap; }
.cosma-footer-designer a { display: flex; align-items: center; }
.cosma-design-credit { display: block; inline-size: auto; block-size: 20px; }
@media (width < 782px) {
    :root { --cosma-header-height: 90px; }
    .admin-bar { --cosma-header-offset: 46px; }
    .cosma-header-inner { min-block-size: var(--cosma-header-height); padding: 24px 10px 24px 0; }
    .cosma-brand img { inline-size: 175px; block-size: auto; }
    .cosma-header-widgets { display: none; }
    .cosma-menu-toggle { flex-basis: 40px; inline-size: 40px; block-size: 40px; }
    .cosma-navigation { --cosma-menu-hover: calc(var(--cosma-unit) * 0.35); --cosma-grid-step: var(--cosma-unit); --cosma-menu-font-size: min(56px, calc(var(--cosma-grid-step) * 0.75)); }
    .cosma-navigation > .cosma-container { padding: 0 10px; }
    .cosma-footer .cosma-footer-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); row-gap: 2rem; }
    .cosma-footer .cosma-footer-grid > :nth-child(1) { grid-column: 1 / -1; }
    .cosma-footer .cosma-footer-grid > :nth-child(2) { grid-column: 1 / 3; }
    .cosma-footer .cosma-footer-grid > :nth-child(3) { grid-column: 3 / 5; }
    .cosma-footer-grid { font-size: clamp(22px, 8vw, 30px); }
    .cosma-footer-grid { line-height: 1.267; }
    .cosma-footer-grid .menu a { line-height: 1.267; letter-spacing: 0.256px; }
    .cosma-footer-bottom nav { font-size: 10px; line-height: 15px; }
    .cosma-footer-grid figure img { max-inline-size: min(100%, 227px); }
    .cosma-footer-bottom { flex-direction: column; align-items: stretch; gap: 1rem; }
    .cosma-footer-bottom > nav { order: -1; }
    .cosma-footer-bottom .cosma-menu { justify-content: space-between; gap: 0 0.25rem; }
}
@media (width < 601px) { .admin-bar { --cosma-header-offset: 0px; } }

@media (782px <= width < 1100px) {
    .cosma-header-widgets { margin-inline-start: 40px; }
}

/* In short landscape windows, use all remaining space for accessible scrolling.
   The panel reaches the viewport edge, so no partial grid junction is exposed. */
@media (height < 600px) {
    .cosma-header.is-navigation-ready .cosma-navigation {
        block-size: calc(100dvh - var(--cosma-header-height) - var(--cosma-header-offset));
        max-block-size: none;
    }
}

@media (prefers-reduced-motion: reduce) {
    .cosma-header.has-scroll-reveal { transition: none; }
    .cosma-navigation .cosma-menu > li > a { transition: none; }
}

/* Production footer: three equal columns and compact, regular link rhythm. */
@media (min-width: 782px) {
    .cosma-footer .cosma-footer-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); column-gap: 2rem; }
    .cosma-footer .cosma-footer-grid > div:nth-child(n) { grid-column: auto; }
}
.cosma-footer-grid > div { gap: 0; }
.cosma-footer-grid .menu li { margin: 0; }
.cosma-footer-grid .menu a { display: inline-flex; align-items: center; min-block-size: 30px; }
.cosma-footer-grid .cosma-widget + .cosma-widget { margin-block-start: 2rem; }
.cosma-footer-grid > div:nth-child(3) .cosma-widget + .cosma-widget { margin-block-start: calc(2rem + 30px); }
@media (width < 782px) {
    .cosma-footer-grid { font-size: 25px; line-height: 1.4; }
    .cosma-footer-grid .menu a { min-block-size: 40px; }
    .cosma-footer-grid > div:nth-child(3) .cosma-widget + .cosma-widget { margin-block-start: calc(2rem + 40px); }
}
