/* =========================
   RESPONSIVE
   Règles extraites des CSS principaux pour garder les styles de base lisibles.
   ========================= */

/* ===== css/base.css ===== */

@media (min-width: 900px) {
  body {
    overflow-y: scroll;
  }
}

@media (max-width: 767px) {
  .siteFooter {
    padding-top: 14px;
    padding-bottom: 18px;
  }

  .footerInner {
    gap: 14px;
  }

  .footerTop p {
    font-size: 11px;
    line-height: 1.6;
  }

  .footerLinks {
    gap: 8px 10px;
  }

  .footerLinks a {
    padding: 7px 10px;
    letter-spacing: 0.08em;
  }

  .themeSwitchWrap {
    position: static;
    justify-content: center;
    margin-top: 2px;
  }

  .themeSwitch::after {
    right: auto;
    left: 50%;
    max-width: min(270px, calc(100vw - 32px));
    text-align: center;
    transform: translate(-50%, 6px);
  }

  .themeSwitch::before {
    right: auto;
    left: 50%;
    transform: translate(-50%, 6px) rotate(45deg);
  }

  .themeSwitch:hover::after,
  .themeSwitch:focus-visible::after,
  .themeSwitch:active::after {
    transform: translate(-50%, 0);
  }

  .themeSwitch:hover::before,
  .themeSwitch:focus-visible::before,
  .themeSwitch:active::before {
    transform: translate(-50%, 0) rotate(45deg);
  }

  .footerInner {
    padding-right: 0;
  }
}


/* ===== css/header.css ===== */

@media (min-width: 768px) {
  body.header-scrolled .siteHeader {
    padding: 10px 16px;
    backdrop-filter: blur(8px);
  }

  body.header-scrolled .headerInner {
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
  }

  body.header-scrolled .headerBrand {
    width: auto;
    margin: auto;
    flex: 0 0 auto;
    justify-content: flex-start;
  }

  body.header-scrolled .siteLogo {
    width: clamp(150px, 15vw, 220px);
  }

  body.header-scrolled .mainNav {
    width: auto;
    margin-top: 0;
    margin-left: 24px;
    flex: 1 1 auto;
    display: flex;
    justify-content: center;
  }

  body.header-scrolled .navRows {
    width: max-content;
    max-width: 100%;
    justify-content: center;
    column-gap: 18px;
    row-gap: 10px;
  }

  body.header-scrolled .navGroup {
    gap: clamp(8px, 1vw, 18px);
  }
}

@media (min-width: 768px) and (max-width: 1120px) {
  body.header-scrolled .headerInner {
    align-items: flex-start;
  }

  body.header-scrolled .mainNav {
    margin-left: 18px;
  }

  body.header-scrolled .navRows {
    width: max-content;
    max-width: 100%;
    justify-content: center;
    align-items: center;
    row-gap: 10px;
    column-gap: 0;
  }

  body.header-scrolled .navGroup {
    justify-content: center;
  }

  body.header-scrolled .navGroup--top {
    width: 100%;
  }

  body.header-scrolled .navGroup--bottom {
    width: 100%;
  }
}

@media (max-width: 767px) {
  .siteHeader {
    padding-top: 12px;
    padding-bottom: 10px;
  }

  .headerBrand {
    max-height: 180px;
    opacity: 1;
    transform: translateY(0);
  }

  .siteLogo {
    width: min(86vw, 360px);
  }

  .mainNav {
    margin-top: 12px;
  }

  .navRows {
    row-gap: 10px;
    column-gap: 0;
  }

  .navGroup {
    width: 100%;
    gap: 10px 12px;
  }

  .navGroup--top,
  .navGroup--bottom {
    justify-content: center;
  }

  .mainNav a {
    letter-spacing: 0.09em;
  }

  body.header-scroll-down .headerBrand {
    max-height: 0;
    opacity: 0;
    transform: translateY(-16px);
  }

  body.header-scroll-down .mainNav {
    margin-top: 0;
  }

  body.header-scroll-up .headerBrand,
  body:not(.header-scroll-down) .headerBrand {
    max-height: 180px;
    opacity: 1;
    transform: translateY(0);
  }
}

@media (max-width: 420px) {
  .navGroup {
    gap: 8px 10px;
  }

  .mainNav a {
    font-size: 11px;
    padding: 7px 10px;
    letter-spacing: 0.08em;
  }
}


/* ===== css/pages.css ===== */

@media (min-width: 980px) {
  .sessionPhotoColumns.is-enhanced.has-active .sessionPhotoPanel {
    filter: saturate(0.92) contrast(0.96);
  }

  .sessionPhotoColumns.is-enhanced .sessionPhotoPanel.is-active,
  .sessionPhotoColumns .sessionPhotoPanel:hover {
    filter: saturate(1.05) contrast(1.06);
  }

  .sessionPhotoColumns.is-active-panel-1 {
    grid-template-columns: minmax(0, 4fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr);
  }

  .sessionPhotoColumns.is-active-panel-2 {
    grid-template-columns: minmax(0, 1fr) minmax(0, 4fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr);
  }

  .sessionPhotoColumns.is-active-panel-3 {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) minmax(0, 4fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr);
  }

  .sessionPhotoColumns.is-active-panel-4 {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 4fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr);
  }

  .sessionPhotoColumns.is-active-panel-5 {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 4fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr);
  }

  .sessionPhotoColumns.is-active-panel-6 {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 4fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr);
  }

  .sessionPhotoColumns.is-active-panel-7 {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 4fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr);
  }

  .sessionPhotoColumns.is-active-panel-8 {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 4fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr);
  }

  .sessionPhotoColumns.is-active-panel-9 {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 4fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr);
  }

  .sessionPhotoColumns.is-active-panel-10 {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 4fr) minmax(0, 1fr) minmax(0, 1fr);
  }

  .sessionPhotoColumns.is-active-panel-11 {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 4fr) minmax(0, 1fr);
  }

  .sessionPhotoColumns.is-active-panel-12 {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 4fr);
  }
}

@media (min-width: 980px) {
  .splitLayout {
    grid-template-columns: repeat(12, minmax(0, 1fr));
    column-gap: clamp(24px, 3vw, 42px);
    row-gap: 0;
  }

  .splitLayout--weddingDuo {
    width: min(100%, var(--content-wide));
    min-height: clamp(880px, 70vw, 1120px);
    align-items: center;
  }

  .splitLayout--eventDuo {
    width: min(100%, var(--content-wide));
    min-height: clamp(760px, 64vw, 960px);
    align-items: center;
  }

  .splitLayout--weddingDuo .splitText {
    grid-column: 4 / span 6;
    grid-row: 1;
    align-self: center;
    z-index: 3;
    transform: translate(clamp(-10px, -0.7vw, -4px), clamp(42px, 4.8vw, 104px));
  }

  .splitLayout--eventDuo .splitText {
    grid-column: 4 / span 6;
    grid-row: 1;
    align-self: center;
    z-index: 3;
    transform: translateY(clamp(18px, 3.5vw, 72px));
  }

  .splitLayout--weddingDuo .splitMedia,
  .splitLayout--eventDuo .splitMedia {
    grid-row: 1;
  }

  .splitMedia--weddingDuoTop {
    grid-column: 1 / span 6;
    align-self: start;
    z-index: 1;
    transform: translate(clamp(-34px, -2vw, -14px), clamp(54px, 4vw, 86px));
  }

  .splitMedia--weddingDuoRightTop {
    grid-column: 7 / -1;
    align-self: start;
    z-index: 1;
    transform: translate(clamp(18px, 1.4vw, 34px), clamp(22px, 2.4vw, 54px));
  }

  .splitMedia--weddingDuoLeftBottom {
    grid-column: 1 / span 6;
    align-self: end;
    z-index: 1;
    transform: translate(clamp(14px, 1.6vw, 36px), clamp(54px, 4vw, 86px));
  }

  .splitMedia--eventDuoTop {
    grid-column: 1 / span 6;
    align-self: start;
    z-index: 1;
    transform: translateX(clamp(-18px, -1.5vw, -6px));
  }

  .splitMedia--eventDuoLeftBottom {
    grid-column: 1 / span 6;
    align-self: end;
    z-index: 1;
    transform: translate(clamp(28px, 2.6vw, 52px), clamp(68px, 4.8vw, 104px));
  }

  .splitLayout--weddingDuo .splitMedia--weddingDuoBottom {
    grid-column: 7 / -1;
    align-self: end;
    z-index: 1;
    transform: translate(clamp(48px, 4vw, 96px), clamp(104px, 7vw, 154px));
  }

  .splitLayout--eventDuo .splitMedia--eventDuoBottom {
    grid-column: 8 / -1;
    align-self: center;
    z-index: 1;
    transform: translate(clamp(-8px, 0.6vw, 12px), clamp(-10px, -0.6vw, -4px));
  }

  .splitLayout--mediaRight .splitText {
    grid-column: 1 / span 6;
    grid-row: 1;
  }

  .splitLayout--mediaRight .splitMedia {
    grid-column: 7 / -1;
    grid-row: 1;
  }

  .splitLayout--mediaLeft .splitMedia {
    grid-column: 1 / span 6;
    grid-row: 1;
  }

  .splitLayout--mediaLeft .splitText {
    grid-column: 6 / -1;
    grid-row: 1;
  }

  .splitLayout--mediaRight {
    --split-media-x: -84px;
    --split-media-y: 34px;
  }

  .splitLayout--mediaLeft {
    --split-media-x: 84px;
    --split-media-y: 34px;
  }

  .splitLayout--overlapSoft {
    --split-media-y: 24px;
  }

  .splitLayout--overlapMedium {
    --split-media-y: 42px;
  }

  .splitLayout--overlapStrong {
    --split-media-y: 56px;
  }

  .splitLayout--textFront {
    --split-text-z: 3;
    --split-media-z: 1;
  }

  .splitLayout--mediaFront {
    --split-text-z: 1;
    --split-media-z: 3;
  }
}

@media (min-width: 1280px) and (min-height: 760px) {
  .heroVisual.heroVisual--maternityShowcase {
    position: relative;
    width: 100vw;
    min-height: clamp(940px, 76vw, 1180px);
    padding: 0;
    display: flex;
    align-items: stretch;
    justify-content: center;
    overflow: hidden;
  }

  .heroVisual--maternityShowcase.sectionReliefShadow {
    box-shadow: var(--section-relief-shadow);
  }

  .heroVisual--maternityShowcase > .maternityPackImages--showcase {
    display: grid;
  }

  .heroVisual--maternityShowcase > .heroVisualOverlay--maternityPack {
    display: block;
  }

  .heroVisual--maternityPack .heroVisualInner--maternityShowcase {
    width: min(100%, calc(100vw - clamp(96px, 10vw, 220px)));
    min-height: inherit;
    padding: clamp(52px, 5vw, 76px) var(--section-x);
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    gap: clamp(42px, 5vw, 70px);
  }

  .maternityOfferGrid {
    width: 100%;
    grid-template-columns: repeat(2, minmax(360px, clamp(420px, 24vw, 600px)));
    justify-content: space-between;
    gap: clamp(80px, 14vw, 320px);
    align-items: start;
  }

  .heroVisual--maternityShowcase .maternityOffer {
    width: min(100%, 600px);
    margin: 0;
  }

  .heroVisual--maternityShowcase .maternityOffer .textFrame {
    height: 100%;
    padding: clamp(20px, 2vw, 32px);
  }

  .heroVisual--maternityShowcase .maternityOffer .headingVisualH2 {
    margin: 0.8em 0;
    font-size: clamp(18px, 1.75vw, 26px);
  }

  .heroVisual--maternityShowcase .maternityFrameImage {
    aspect-ratio: 16 / 9;
  }

  .maternityPackHero {
    width: 100%;
    min-height: 0;
    margin: 0;
    padding: 0;
    overflow: visible;
  }

  .maternityPackHero .maternityPackImages--pack,
  .maternityPackHero > .heroVisualOverlay--maternityPack {
    display: none;
  }
}

@media (max-width: 1590px) { 
  .mosaicGrid { 
    grid-template-columns: repeat(6, minmax(0, 1fr)); } 
}

@media (min-width: 1500px) {
  .splitLayout--weddingDuo,
  .splitLayout--eventDuo {
    width: min(100%, 1580px);
  }

  .splitLayout--weddingDuo {
    min-height: clamp(940px, 74vw, 1180px);
  }

  .splitLayout--eventDuo {
    min-height: clamp(760px, 62vw, 980px);
  }

  .splitLayout--weddingDuo .splitText {
    grid-column: 4 / span 7;
    transform: translate(clamp(-44px, -2.4vw, -24px), clamp(54px, 5.4vw, 128px));
  }

  .splitLayout--eventDuo .splitText {
    grid-column: 4 / span 7;
    transform: translate(clamp(-36px, -2vw, -22px), clamp(18px, 3.5vw, 72px));
  }

  .splitMedia--weddingDuoTop {
    grid-column: 1 / span 6;
    transform: translate(clamp(-82px, -4.2vw, -46px), clamp(82px, 5.6vw, 132px));
  }

  .splitMedia--weddingDuoRightTop {
    grid-column: 7 / -1;
    transform: translate(clamp(42px, 2.8vw, 70px), clamp(42px, 3.2vw, 76px));
  }

  .splitMedia--weddingDuoLeftBottom {
    grid-column: 1 / span 6;
    transform: translate(clamp(26px, 2vw, 52px), clamp(78px, 5.4vw, 126px));
  }

  .splitMedia--eventDuoTop {
    grid-column: 1 / span 6;
    transform: translateX(clamp(-58px, -3vw, -34px));
  }

  .splitMedia--eventDuoLeftBottom {
    grid-column: 1 / span 6;
    transform: translate(clamp(54px, 3.4vw, 78px), clamp(54px, 3.6vw, 88px));
  }

  .splitLayout--weddingDuo .splitMedia--weddingDuoBottom {
    grid-column: 7 / -1;
    transform: translate(clamp(88px, 5.8vw, 132px), clamp(128px, 8.2vw, 188px));
  }

  .splitLayout--eventDuo .splitMedia--eventDuoBottom {
    grid-column: 8 / -1;
    transform: translate(clamp(36px, 2.8vw, 68px), clamp(-18px, -1vw, -8px));
  }
}

@media (max-width: 1279px) {
  
  body.pageMariages .textFrame{
    margin-left: auto !important;
  }


  .heroVisual {
    min-height: 70svh;
  }

  .heroVisualInner {
    justify-content: flex-end;
    align-items: flex-start;
  }

  .heroSlogan {
    max-width: min(320px, 78vw);
    margin-top: clamp(28px, 8vw, 60px);
    margin-right: clamp(12px, 3vw, 36px);
    font-size: clamp(24px, 7vw, 40px);
    line-height: 1.2;
  }

  .heroSlogan .heroSloganLine2 {
    padding-left: 2.2em;
  }

  .splitLayout {
    --split-text-x: 0px !important;
    --split-text-y: 0px !important;
    --split-media-x: 0px !important;
    --split-media-y: 0px !important;
  }

  .splitText,
  .splitMedia {
    transform: none !important;
  }

  .splitMedia--stack {
      width: auto;
      padding-top: 0px;
  }

  .mosaicSection {
    padding-top: clamp(70px, 10vw, 110px);
  }

  .mosaicGrid {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }

  .mosaicTile--wide,
  .mosaicTile--large {
    grid-column: span 2;
  }
}

@media (max-width: 979px) {
  .contentSection--sessionColumns {
    --session-panel-separator: clamp(2px, 0.55vw, 5px);
    min-height: clamp(700px, 132vw, 980px);
  }

  .contentSection--sessionColumns .splitLayout {
    width: min(100%, var(--content-narrow));
  }

  .textFrame--frosted.textFrame--clearGlassMobile {
    background: var(--dark-surface-frame);
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
  }

  .sessionPhotoColumns {
    inset: 0;
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    grid-template-rows: repeat(2, minmax(0, 1fr));
    transform: none;
  }

  .sessionPhotoPanel {
    display: none;
    height: 100%;
    overflow: hidden;
    border-left: 0;
    border-top: 0;
    animation: none;
    transition: none;
    will-change: auto;
  }

  .sessionPhotoPanel:nth-child(11),
  .sessionPhotoPanel:nth-child(8),
  .sessionPhotoPanel:nth-child(1),
  .sessionPhotoPanel:nth-child(7) {
    display: block;
  }

  .sessionPhotoPanel:nth-child(11) {
    order: 1;
  }

  .sessionPhotoPanel:nth-child(8) {
    order: 2;
  }

  .sessionPhotoPanel:nth-child(1) {
    order: 3;
  }

  .sessionPhotoPanel:nth-child(7) {
    order: 4;
  }

  .sessionPhotoPanel:nth-child(8),
  .sessionPhotoPanel:nth-child(7) {
    border-left: var(--session-panel-separator) solid rgba(8, 8, 8, 0.82);
  }

  .sessionPhotoPanel:nth-child(1),
  .sessionPhotoPanel:nth-child(7) {
    border-top: var(--session-panel-separator) solid rgba(8, 8, 8, 0.82);
  }

  .sessionPhotoPanel img {
    width: 100%;
    height: 100%;
    max-width: 100%;
    transform: none;
  }
}

@media (max-width: 767px) {
  .pageSection,
  .homeHero {
    margin: 28px auto 36px;
  }

  .contentSection {
    padding-top: clamp(34px, 8vw, 56px);
    padding-bottom: clamp(34px, 8vw, 56px);
  }

  .pageSection p,
  .homeHero p,
  .contentSection p {
    max-width: 100%;
  }

  .textFrame--frosted,
  .sectionPanel,
  .serviceCard,
  .valueCard,
  .ctaPanel,
  .aboutText,
  .aboutHighlight,
  .placeholderBloc {
    -webkit-backdrop-filter: blur(3px);
    backdrop-filter: blur(3px);
  }

  .textFrame {
    padding: 22px 18px;
  }

  .heroActions {
    gap: 10px;
  }

  .ctaPrimary,
  .ctaSecondary {
    width: 100%;
  }

  .splitMedia img,
  .splitMedia--portrait img {
    aspect-ratio: auto;
  }

  .splitMediaStack {
    aspect-ratio: 6 / 4;
    min-height: 240px;
  }
  .mosaicGrid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
.mosaicTile {
    position: relative;
    aspect-ratio: auto;
}
  .mosaicTile--wide {
      grid-column: span 2;
      aspect-ratio: inherit;
  }

  .mosaicTileText {
    font-size: clamp(12px, 3.4vw, 15px);
    line-height: 1.1;
  }

  .textFrame--mosaicIntro {
    width: min(92vw, 760px);
  }
}

@media (min-width: 768px) {
  .serviceGrid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .valueGrid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .aboutGrid {
    grid-template-columns: minmax(0, 1.35fr) minmax(280px, 0.85fr);
    align-items: stretch;
  }
}

@media (min-width: 1500px) {
  :root {
    --content-max: 1320px;
    --content-wide: 1540px;
  }
}

@media (max-width: 900px) {
  .contactBlock {
    grid-template-columns: 1fr;
  }

  .formRow {
    flex-direction: column;
  }
}

@media (max-width: 980px) {
  .googleReviewsGrid {
    column-count: 2;
  }
}

@media (max-width: 700px) {
  .googleReviewsHeader {
    display: grid;
  }

  .googleReviewsSummary {
    justify-items: start;
    text-align: left;
  }

  .googleReviewsGrid {
    column-count: 1;
  }
}
