/* Closed reading panels must not contribute overflow in WebKit. */
dialog:not([open]), details:not([open]) > :not(summary) { display:none !important; }
.page-scroll { display:contents; }
html { background:#07172b; }
body { padding-bottom:0 !important; }
@media (max-width:1024px) {
  /* A bounded content scroller keeps Safari's root viewport from scrolling
     past the footer after its address bar or keyboard changes size. Fixed
     navigation remains outside this scrolling surface. */
  html, body {
    position:fixed !important;
    inset:0 !important;
    width:100% !important;
    height:100% !important;
    min-height:0 !important;
    max-height:100% !important;
    margin:0 !important;
    padding:0 !important;
    overflow:hidden !important;
    overscroll-behavior:none;
  }
  body { display:block !important; }
  .page-scroll {
    display:flex;
    flex-direction:column;
    position:absolute;
    inset:0;
    width:100%;
    overflow-x:hidden;
    overflow-y:auto;
    overscroll-behavior-y:none;
    scroll-behavior:smooth;
    -webkit-overflow-scrolling:touch;
  }
  .page-scroll > * { flex-shrink:0; }
  .page-scroll > main { flex:1 0 auto; }
  .page-scroll > footer { flex:0 0 auto; margin-bottom:0 !important; }
  html.expertise-modal-open .page-scroll { overflow:hidden; }
}
@media (max-width:640px) {
  body:has(> .mobile-cta) > .page-scroll > footer {
    padding-bottom:calc(86px + env(safe-area-inset-bottom, 0px)) !important;
  }
  body > .mobile-cta {
    position:fixed !important;
    inset:auto 0 0 !important;
    width:auto !important;
    max-width:none !important;
    margin:0 !important;
    transform:none !important;
  }
}
@media (prefers-reduced-motion:reduce) { .page-scroll { scroll-behavior:auto; } }

/* The same usable navigation in portrait, landscape and tablet widths. */
@media (max-width:1024px) {
  .page-scroll { scroll-padding-top:96px; scroll-padding-bottom:24px; }
  .header {
    top:max(10px, env(safe-area-inset-top, 0px)) !important;
    left:max(9px, env(safe-area-inset-left, 0px)) !important;
    right:max(9px, env(safe-area-inset-right, 0px)) !important;
    width:auto !important; max-width:none !important;
    transform:none !important; border-radius:26px !important;
  }
  .header .header-inner {
    width:100% !important; max-width:none !important; margin:0 !important;
    display:flex !important; align-items:center !important;
    justify-content:flex-start !important; gap:8px !important;
    position:relative !important; min-height:58px !important;
    padding:8px 104px 8px 12px !important;
  }
  .header .logo-nav { min-width:0 !important; gap:8px !important; }
  .header .logo-image-mark { width:44px !important; height:30px !important; flex:0 0 44px !important; }
  .header .logo-image-mark img { width:43px !important; height:auto !important; }
  .header .logo-text strong { font-size:15px !important; letter-spacing:.05em !important; white-space:nowrap; }
  .header .logo-text span, .header .cta-urgence { display:none !important; }
  .header .mobile-call, .header .burger {
    display:grid !important; place-items:center !important;
    position:absolute !important; top:50% !important; left:auto !important;
    transform:translateY(-50%) !important; margin:0 !important;
    width:40px !important; min-width:40px !important; height:40px !important;
    padding:0 !important; border:1px solid rgba(216,176,112,.32) !important;
    border-radius:50% !important; background:rgba(255,255,255,.08) !important;
    color:#fff !important; line-height:1 !important;
  }
  .header .mobile-call { right:54px !important; }
  .header .burger { right:10px !important; }
  .header .mobile-call svg, .header .burger svg {
    display:block !important; width:17px !important; height:17px !important;
    fill:none !important; stroke:currentColor !important; stroke-width:1.8 !important;
    stroke-linecap:round !important; stroke-linejoin:round !important;
  }
  .header .nav { display:none !important; }
  .header.menu-open .nav {
    display:flex !important; position:absolute !important;
    left:0 !important; right:0 !important; top:calc(100% + 10px) !important;
    flex-direction:column !important; align-items:stretch !important; gap:0 !important;
    max-height:calc(100svh - 164px - env(safe-area-inset-top, 0px) - env(safe-area-inset-bottom, 0px));
    overflow-y:auto; padding:10px !important;
    border:1px solid rgba(216,176,112,.22) !important; border-radius:22px !important;
    background:#07172b !important; box-shadow:0 18px 40px rgba(0,0,0,.22);
  }
  .header.menu-open .nav a {
    display:flex !important; align-items:center !important; justify-content:center !important;
    min-height:44px !important; flex-shrink:0; color:#fff !important;
    border-bottom:1px solid rgba(245,239,227,.08) !important;
  }
  .header.menu-open .nav a:last-child { border-bottom:0 !important; }
}
.expertise-dialog-body { overflow-wrap:anywhere; }

@media (max-width:1024px) {
  /* Use one header offset for anchor navigation, without adding it twice. */
  .page-scroll :is(#accueil,#domaines,#expertises,#presence-territoriale,#temoignages,#media,#contact) {
    scroll-margin-top:0 !important;
  }
}

/* More reading space for every expertise and press article. */
.expertise-dialog {
  width:min(980px, calc(100% - 24px - env(safe-area-inset-left, 0px) - env(safe-area-inset-right, 0px)));
  max-width:calc(100% - 24px - env(safe-area-inset-left, 0px) - env(safe-area-inset-right, 0px));
  height:90vh;
  height:90dvh;
  max-height:calc(100vh - 32px - env(safe-area-inset-top, 0px) - env(safe-area-inset-bottom, 0px));
  max-height:calc(100dvh - 32px - env(safe-area-inset-top, 0px) - env(safe-area-inset-bottom, 0px));
}
@media(max-width:640px) {
  .expertise-dialog { width:calc(100% - 16px - env(safe-area-inset-left, 0px) - env(safe-area-inset-right, 0px)); max-width:calc(100% - 16px - env(safe-area-inset-left, 0px) - env(safe-area-inset-right, 0px)); }
}

/* Consistent capitalized headings inside every reading window. */
.expertise-dialog-body :is(h1,h2,h3,h4,h5,h6) { text-transform:uppercase; }

/* A subordinate heading keeps its original sentence case. */
.expertise-dialog-body .article-detail-heading { text-transform:none; }

/* Justified reading text; headings retain their existing left alignment. */
.expertise-dialog-body p,
.expertise-dialog-body li,
.penal-introduction p,
.article-intro,
.article-content p,
.article-content li {
  text-align:justify;
  text-align-last:start;
  -webkit-hyphens:auto;
  hyphens:auto;
}
