/* Add Semaine Calendrier */

.sac-gallery-wrapper,
.sac-gallery-wrapper *,
.sac-modal,
.sac-modal * {
    box-sizing: border-box;
}

.sac-gallery-wrapper {
    width: 100%;
    max-width: 1200px;
    margin: 0 auto;
}

.sac-gallery {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 18px;
    width: 100%;
}

.sac-gallery-item {
    min-width: 0;
    overflow: hidden;
    background: #fff;
    border: 1px solid #d8d8d8;
    border-radius: 10px;
    transition: transform .25s ease, box-shadow .25s ease, border-color .25s ease;
}

.sac-gallery-item:hover {
    transform: translateY(-4px);
    border-color: #aaa;
    box-shadow: 0 5px 12px rgba(0,0,0,.08), 0 12px 28px rgba(0,0,0,.10);
}

.sac-image-link {
    position: relative;
    display: block;
    overflow: hidden;
    text-decoration: none;
    background: #eee;
}

.sac-image-link picture {
    display: block;
    width: 100%;
}

.sac-image-link img {
    display: block;
    width: 100%;
    height: auto;
    object-fit: cover;
    transition: transform .35s ease, filter .35s ease;
}

.sac-gallery-item:hover .sac-image-link img {
    transform: scale(1.035);
    filter: brightness(.90);
}

.sac-gallery-overlay {
    position: absolute;
    inset: 0;
    z-index: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #222;
    font-size: 14px;
    font-weight: 700;
    opacity: 0;
    background: rgba(0,0,0,.10);
    transition: opacity .25s ease;
}

.sac-gallery-overlay::before {
    content: "";
    position: absolute;
    z-index: -1;
    width: 100px;
    height: 38px;
    background: rgba(255,255,255,.94);
    border-radius: 20px;
    box-shadow: 0 3px 10px rgba(0,0,0,.16);
}

.sac-gallery-item:hover .sac-gallery-overlay {
    opacity: 1;
}

.sac-gallery-content {
    padding: 14px 15px 15px;
    text-align: center;
}

.sac-gallery-description {
    margin: 0;
    font-size: 14px;
    line-height: 1.55;
    color: #444;
    overflow-wrap: anywhere;
}

.sac-download-links {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    margin-top: 10px;
    gap: 7px;
    font-size: 13px;
    font-weight: 700;
}

.sac-download-links a,
.sac-single-download a {
    color: #2d5f9a;
    text-decoration: none;
    font-weight: 700;
}

.sac-download-links a:hover,
.sac-download-links a:focus-visible,
.sac-single-download a:hover,
.sac-single-download a:focus-visible {
    color: #163f6d;
    text-decoration: underline;
}

.sac-download-links span {
    color: #aaa;
    font-weight: 400;
}

.sac-single-download {
    display: inline-block;
}

/* Popup */

html.sac-modal-open,
html.sac-modal-open body {
    overflow: hidden;
}

.sac-modal[hidden] {
    display: none !important;
}

.sac-modal {
    position: fixed;
    inset: 0;
    z-index: 999999;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 20px;
}

.sac-modal-backdrop {
    position: absolute;
    inset: 0;
    background: rgba(0,0,0,.55);
}

.sac-modal-dialog {
    position: relative;
    z-index: 1;
    width: min(92vw, 430px);
    padding: 28px 24px 22px;
    background: #fff;
    border-radius: 14px;
    box-shadow: 0 18px 60px rgba(0,0,0,.28);
    text-align: center;
}

.sac-modal-dialog h2 {
    margin: 0 32px 20px;
    font-size: 22px;
    line-height: 1.3;
}

.sac-modal-x {
    position: absolute;
    top: 10px;
    right: 12px;
    width: 34px;
    height: 34px;
    padding: 0;
    border: 0;
    background: transparent;
    font-size: 28px;
    line-height: 34px;
    cursor: pointer;
}

.sac-progress-wrap {
    position: relative;
    width: 128px;
    height: 128px;
    margin: 0 auto 18px;
}

.sac-progress-ring {
    transform: rotate(-90deg);
}

.sac-progress-track,
.sac-progress-value {
    fill: none;
    stroke-width: 9;
}

.sac-progress-track {
    stroke: #e7e7e7;
}

.sac-progress-value {
    stroke: currentColor;
    stroke-linecap: round;
    transition: stroke-dashoffset .25s linear;
}

.sac-progress-center {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
}

.sac-progress-number {
    font-size: 28px;
    font-weight: 700;
}

.sac-modal {
    color: #2563a6;
}

.sac-modal.sac-state-success {
    color: #239b56;
}

.sac-modal.sac-state-error {
    color: #d93636;
}

.sac-modal-message {
    min-height: 44px;
    margin: 0 0 18px;
    color: #333;
    font-size: 15px;
    line-height: 1.55;
}

.sac-modal-actions {
    display: flex;
    justify-content: center;
    gap: 10px;
}

.sac-btn {
    min-width: 96px;
    padding: 9px 16px;
    border: 1px solid #ccc;
    border-radius: 7px;
    background: #f7f7f7;
    color: #222;
    font: inherit;
    cursor: pointer;
}

.sac-btn:hover {
    background: #ededed;
}

@media (max-width: 850px) {
    .sac-gallery {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 14px;
    }
}

@media (max-width: 520px) {
    .sac-gallery {
        grid-template-columns: 1fr;
        gap: 14px;
    }

    .sac-gallery-item {
        border-radius: 8px;
    }

    .sac-gallery-content {
        padding: 13px 14px 14px;
    }

    .sac-modal-dialog {
        padding-left: 18px;
        padding-right: 18px;
    }
}

@media (hover: none) {
    .sac-gallery-item:hover {
        transform: none;
        box-shadow: none;
    }

    .sac-gallery-overlay {
        display: none;
    }
}


/* Semaine Actuelle */
.sac-current-week {width:100%;max-width:1200px;margin:0 auto 24px;}
.sac-current-week-header {display:flex;justify-content:center;gap:14px;margin-bottom:14px;}
.sac-current-week-number,.sac-current-week-year {min-width:130px;padding:12px 18px;text-align:center;background:#fff;border:1px solid #d8d8d8;border-radius:10px;}
.sac-current-week-label {display:block;margin-bottom:3px;font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:#666;}
.sac-current-week-number strong,.sac-current-week-year strong {display:block;font-size:26px;line-height:1.1;color:#222;}
.sac-current-week-table {display:grid;grid-template-columns:repeat(7,minmax(0,1fr));overflow:hidden;background:#fff;border:1px solid #d8d8d8;border-radius:10px;}
.sac-current-day {min-width:0;text-align:center;border-right:1px solid #e2e2e2;}
.sac-current-day:last-child {border-right:0;}
.sac-current-day-name {padding:10px 6px;font-size:13px;font-weight:700;background:#f3f3f3;border-bottom:1px solid #e2e2e2;}
.sac-current-day-date {padding:12px 6px;font-size:14px;color:#333;}
.sac-current-timezone {margin:8px 0 0;text-align:center;font-size:12px;color:#777;}
@media (max-width:720px){
 .sac-current-week-header{gap:10px}.sac-current-week-number,.sac-current-week-year{min-width:110px;padding:10px 14px}
 .sac-current-week-table{grid-template-columns:1fr;border-radius:8px}.sac-current-day{display:grid;grid-template-columns:1fr 1fr;border-right:0;border-bottom:1px solid #e2e2e2}.sac-current-day:last-child{border-bottom:0}.sac-current-day-name{border-bottom:0;border-right:1px solid #e2e2e2}.sac-current-day-date{display:flex;align-items:center;justify-content:center}
}


/* Navigation semaine précédente / suivante */

.sac-current-week-header {
    align-items: stretch;
}

.sac-week-nav {
    width: 52px;
    min-width: 52px;
    padding: 0;
    border: 1px solid #d8d8d8;
    border-radius: 10px;
    background: #fff;
    color: #333;
    font-size: 34px;
    line-height: 1;
    cursor: pointer;
    transition:
        background .2s ease,
        border-color .2s ease,
        transform .2s ease;
}

.sac-week-nav:hover,
.sac-week-nav:focus-visible {
    background: #f2f2f2;
    border-color: #aaa;
    transform: translateY(-1px);
}

.sac-week-nav:disabled {
    cursor: wait;
    opacity: .55;
    transform: none;
}

.sac-dynamic-week-content {
    position: relative;
}

.sac-dynamic-week-content.sac-week-loading::after {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 20;
    background: rgba(255,255,255,.58);
    cursor: wait;
}

@media (max-width: 520px) {
    .sac-current-week-header {
        display: grid;
        grid-template-columns: 44px 1fr 1fr 44px;
        gap: 8px;
    }

    .sac-week-nav {
        width: 44px;
        min-width: 44px;
        border-radius: 8px;
        font-size: 30px;
    }

    .sac-current-week-number,
    .sac-current-week-year {
        min-width: 0;
        padding-left: 8px;
        padding-right: 8px;
    }
}


.sac-week-nav-placeholder {
    display: block;
    width: 52px;
    min-width: 52px;
}

@media (max-width: 520px) {
    .sac-week-nav-placeholder {
        width: 44px;
        min-width: 44px;
    }
}


/* Dropdown semaine / année */

.sac-current-week-number,
.sac-current-week-year {
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.sac-week-select,
.sac-year-select {
    width: 100%;
    min-width: 92px;
    padding: 7px 28px 7px 10px;
    border: 1px solid #cfcfcf;
    border-radius: 7px;
    background: #fff;
    color: #222;
    font-size: 18px;
    font-weight: 700;
    text-align: center;
    cursor: pointer;
}

.sac-week-select:hover,
.sac-year-select:hover,
.sac-week-select:focus,
.sac-year-select:focus {
    border-color: #999;
    outline: none;
}

.sac-week-select:disabled,
.sac-year-select:disabled {
    cursor: wait;
    opacity: .6;
}

@media (max-width: 520px) {
    .sac-week-select,
    .sac-year-select {
        min-width: 0;
        font-size: 16px;
        padding-left: 6px;
        padding-right: 22px;
    }
}


/* Indication semaine actuelle */

.sac-current-week-status {
    display: block;
    width: calc(260px + 14px);
    max-width: 100%;
    margin-left: auto;
    margin-right: auto;
    padding: 11px 16px;
    border: 1px solid #d8d8d8;
    border-radius: 10px;
    background: #fff;
    color: #333;
    text-align: center;
    font-size: 14px;
    font-weight: 700;
}

.sac-current-week-status-top {
    margin-bottom: 12px;
}

.sac-return-current-week {
    margin-top: 0;
    font-family: inherit;
    cursor: pointer;
    transition:
        background .2s ease,
        border-color .2s ease,
        transform .2s ease;
}

.sac-return-current-week:hover,
.sac-return-current-week:focus-visible {
    background: #f2f2f2;
    border-color: #aaa;
    transform: translateY(-1px);
    outline: none;
}

@media (max-width: 520px) {
    .sac-current-week-status {
        width: calc(100% - 104px);
        min-width: 0;
    }
}


/* Jours fériés nationaux français */

.sac-current-date-value {
    display: block;
}

.sac-public-holiday {
    display: block;
    margin-top: 6px;
    padding: 4px 6px;
    border-radius: 6px;
    background: #fff1f1;
    color: #b42318;
    font-size: 11px;
    line-height: 1.25;
    font-weight: 700;
}

@media (max-width: 720px) {
    .sac-current-day-date {
        flex-direction: column;
        gap: 2px;
    }

    .sac-public-holiday {
        margin-top: 4px;
    }
}


/* Retour vers la semaine initiale du shortcode */

.sac-return-initial-week {
    margin-top: 0;
    margin-bottom: 12px;
    font-family: inherit;
    cursor: pointer;
    transition:
        background .2s ease,
        border-color .2s ease,
        transform .2s ease;
}

.sac-return-initial-week:hover,
.sac-return-initial-week:focus-visible {
    background: #f2f2f2;
    border-color: #aaa;
    transform: translateY(-1px);
    outline: none;
}


/* =========================================================
   LIGHTBOX GALERIE
========================================================= */

html.sac-lightbox-open,
html.sac-lightbox-open body {
    overflow: hidden;
}

.sac-image-lightbox[hidden] {
    display: none !important;
}

.sac-image-lightbox {
    position: fixed;
    inset: 0;
    z-index: 1000000;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 24px;
}

.sac-lightbox-backdrop {
    position: absolute;
    inset: 0;
    background: rgba(0, 0, 0, .82);
}

.sac-lightbox-dialog {
    position: relative;
    z-index: 1;
    width: min(94vw, 1200px);
    height: min(92vh, 900px);
    display: flex;
    align-items: center;
    justify-content: center;
}

.sac-lightbox-image-wrap {
    width: 100%;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 44px 70px;
}

.sac-lightbox-image {
    display: block;
    max-width: 100%;
    max-height: 100%;
    width: auto;
    height: auto;
    object-fit: contain;
    background: #fff;
    border-radius: 6px;
    box-shadow: 0 12px 40px rgba(0,0,0,.35);
}

.sac-lightbox-close,
.sac-lightbox-nav {
    position: absolute;
    z-index: 2;
    border: 0;
    background: rgba(255,255,255,.92);
    color: #222;
    cursor: pointer;
    box-shadow: 0 3px 12px rgba(0,0,0,.22);
}

.sac-lightbox-close {
    top: 4px;
    right: 4px;
    width: 42px;
    height: 42px;
    border-radius: 50%;
    font-size: 28px;
    line-height: 42px;
}

.sac-lightbox-nav {
    top: 50%;
    transform: translateY(-50%);
    width: 46px;
    height: 58px;
    border-radius: 8px;
    font-size: 38px;
    line-height: 58px;
}

.sac-lightbox-prev {
    left: 4px;
}

.sac-lightbox-next {
    right: 4px;
}

.sac-lightbox-counter {
    position: absolute;
    left: 50%;
    bottom: 8px;
    transform: translateX(-50%);
    padding: 6px 12px;
    border-radius: 16px;
    background: rgba(0,0,0,.58);
    color: #fff;
    font-size: 13px;
}

@media (max-width: 640px) {
    .sac-image-lightbox {
        padding: 10px;
    }

    .sac-lightbox-dialog {
        width: 100%;
        height: 94vh;
    }

    .sac-lightbox-image-wrap {
        padding: 52px 10px 50px;
    }

    .sac-lightbox-nav {
        top: auto;
        bottom: 4px;
        transform: none;
        width: 44px;
        height: 44px;
        border-radius: 50%;
        line-height: 44px;
    }

    .sac-lightbox-prev {
        left: calc(50% - 58px);
    }

    .sac-lightbox-next {
        right: calc(50% - 58px);
    }

    .sac-lightbox-counter {
        bottom: 13px;
    }
}


/* Introduction avant les 7 modèles */

.sac-gallery-intro {
    width: 100%;
    max-width: 1200px;
    margin: 26px auto 16px;
    text-align: center;
}

.sac-gallery-intro h2 {
    margin: 0 0 8px;
    font-size: 24px;
    line-height: 1.3;
}

.sac-gallery-intro p {
    margin: 0;
    font-size: 15px;
    line-height: 1.55;
    color: #555;
}

@media (max-width: 520px) {
    .sac-gallery-intro {
        margin-top: 22px;
        margin-bottom: 14px;
    }

    .sac-gallery-intro h2 {
        font-size: 21px;
    }

    .sac-gallery-intro p {
        font-size: 14px;
    }
}


/* Carte publicitaire dans la galerie */

.sac-ad-card {
    display: flex;
    align-items: stretch;
    justify-content: stretch;
    min-height: 180px;
}

.sac-ad-content {
    width: 100%;
    min-height: 100%;
    padding: 14px;
    overflow: hidden;
}

.sac-ad-content > * {
    max-width: 100%;
}

.sac-ad-content iframe,
.sac-ad-content img {
    max-width: 100%;
}


/* =========================================================
   CALENDRIER ANNUEL
========================================================= */

.sac-annual-calendar-wrapper,
.sac-annual-calendar-wrapper * {
    box-sizing: border-box;
}

.sac-annual-calendar-wrapper {
    width: 100%;
    max-width: 1200px;
    margin: 0 auto;
}

.sac-annual-calendar {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 18px;
}

.sac-annual-month-card {
    overflow: hidden;
    background: #fff;
    border: 1px solid #d8d8d8;
    border-radius: 10px;
}

.sac-annual-month-grid {
    display: grid;
    grid-template-columns: 46px repeat(7, minmax(0, 1fr));
    width: 100%;
}

.sac-annual-month-grid > div {
    min-width: 0;
    min-height: 34px;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 4px 2px;
    border-right: 1px solid #e2e2e2;
    border-bottom: 1px solid #e2e2e2;
    text-align: center;
    font-size: 12px;
    line-height: 1.2;
}

.sac-annual-month-grid > div:nth-child(8n) {
    border-right: 0;
}

.sac-annual-month-number {
    grid-column: 1;
    font-size: 16px !important;
    font-weight: 700;
    background: #f3f3f3;
}

.sac-annual-month-title {
    grid-column: 2 / 9;
    font-size: 15px !important;
    font-weight: 700;
    background: #f3f3f3;
    border-right: 0 !important;
}

.sac-annual-week-label,
.sac-annual-day-header {
    font-weight: 700;
    background: #fafafa;
}

.sac-annual-week-number {
    font-weight: 700;
    color: #666;
    background: #fafafa;
}

.sac-annual-day {
    position: relative;
    color: #333;
    background: #fff;
}

.sac-annual-day-empty {
    background: #f8f8f8;
}

.sac-annual-holiday {
    color: #c62828;
    font-weight: 700;
    background: #fff2f2;
    cursor: help;
}

.sac-annual-month-grid > div:nth-last-child(-n+8) {
    border-bottom: 0;
}

@media (max-width: 900px) {
    .sac-annual-calendar {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 14px;
    }
}

@media (max-width: 560px) {
    .sac-annual-calendar {
        grid-template-columns: 1fr;
        gap: 14px;
    }

    .sac-annual-month-grid {
        grid-template-columns: 42px repeat(7, minmax(0, 1fr));
    }

    .sac-annual-month-grid > div {
        min-height: 32px;
        font-size: 11px;
    }
}


/* =========================================================
   CALENDRIER ANNUEL EN COLONNES
========================================================= */

.sac-annual-cols-wrapper,
.sac-annual-cols-wrapper * {
    box-sizing: border-box;
}

.sac-annual-cols-wrapper {
    width: 100%;
    max-width: 1200px;
    margin: 0 auto;
}

.sac-annual-cols-grid {
    display: grid;
    grid-template-columns: repeat(6, minmax(0, 1fr));
    gap: 18px;
    align-items: start;
}

.sac-annual-col-month {
    min-width: 0;
    overflow: hidden;
    background: #fff;
    border: 1px solid #d8d8d8;
    border-radius: 10px;
}

.sac-annual-col-title {
    margin: 0;
    padding: 11px 12px;
    background: #f3f3f3;
    border-bottom: 1px solid #d8d8d8;
    font-size: 18px;
    line-height: 1.25;
    text-align: center;
    font-weight: 700;
}

.sac-annual-col-days {
    width: 100%;
}

.sac-annual-col-day {
    display: grid;
    grid-template-columns: 20px 26px minmax(0, 1fr) 24px 26px 8px 8px 8px;
    align-items: center;
    min-height: 28px;
    border-bottom: 1px solid #ededed;
    font-size: 12px;
    line-height: 1.2;
}

.sac-annual-col-day:last-child {
    border-bottom: 0;
}

.sac-annual-col-weekday,
.sac-annual-col-date,
.sac-annual-col-moon,
.sac-annual-col-week {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 28px;
}

.sac-annual-col-weekday {
    font-weight: 700;
    color: #555;
}

.sac-annual-col-date {
    font-size: 13px;
    font-weight: 700;
}

.sac-annual-col-event {
    min-width: 0;
    padding: 5px 6px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    color: #555;
}

.sac-annual-col-week {
    color: #777;
    font-size: 11px;
    font-weight: 700;
}

.sac-annual-col-saturday {
    background: #fff2df !important;
}

.sac-annual-col-sunday {
    background: #ffe3bc !important;
}

.sac-annual-col-holiday {
    font-weight: 700;
}

.sac-annual-col-holiday .sac-annual-col-weekday,
.sac-annual-col-holiday .sac-annual-col-date,
.sac-annual-col-holiday .sac-annual-col-event {
    color: #c62828;
}

.sac-annual-col-holiday .sac-annual-col-event {
    font-weight: 700;
    cursor: help;
}



@media (max-width: 560px) {
.sac-annual-col-day {
        grid-template-columns: 30px 38px minmax(0, 1fr) 38px;
        min-height: 30px;
        font-size: 12px;
    
}

    .sac-annual-col-weekday,
    .sac-annual-col-date,
    .sac-annual-col-week {
        min-height: 30px;
    }
}


.sac-annual-col-moon {
    font-size: 14px;
}

.sac-moon-phase {
    cursor: help;
    line-height: 1;
}

.sac-annual-col-holiday .sac-annual-col-event,
.sac-annual-col-holiday .sac-annual-col-date {
    color: #c62828 !important;
    font-weight: 700;
}

/* 6 colonnes x 2 rangées sur écrans larges */
@media (min-width: 1400px) {
    .sac-annual-cols-wrapper {
        max-width: 1800px;
    }
}

@media (max-width: 1399px) {
    .sac-annual-cols-grid {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }
}

@media (max-width: 1050px) {
    .sac-annual-cols-grid {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
}

@media (max-width: 760px) {
    .sac-annual-cols-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 520px) {
    .sac-annual-cols-grid {
        grid-template-columns: 1fr;
    }
}


/* =========================================================
   CORRECTIONS CALENDRIER ANNUEL COLS 3.7.1
========================================================= */

/* Tous les jours ordinaires restent blancs. */
.sac-annual-col-day,
.sac-annual-col-day:nth-child(odd),
.sac-annual-col-day:nth-child(even) {
    background: #fff;
}

/* Samedi et dimanche gardent leur mise en évidence orange. */
.sac-annual-col-day.sac-annual-col-saturday {
    background: #fff2df !important;
}

.sac-annual-col-day.sac-annual-col-sunday {
    background: #ffe3bc !important;
}

/* Centrage horizontal + vertical de toutes les cellules, même en responsive. */
.sac-annual-col-day {
    align-items: stretch;
}

.sac-annual-col-weekday,
.sac-annual-col-date,
.sac-annual-col-event,
.sac-annual-col-moon,
.sac-annual-col-week {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 28px;
    text-align: center;
    vertical-align: middle;
}

.sac-annual-col-event {
    padding: 4px 5px;
    white-space: normal;
    overflow: visible;
    text-overflow: clip;
    line-height: 1.2;
}

.sac-annual-col-moon {
    gap: 1px;
    flex-wrap: wrap;
}

.sac-moon-phase {
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

@media (max-width: 560px) {
    .sac-annual-col-weekday,
    .sac-annual-col-date,
    .sac-annual-col-event,
    .sac-annual-col-moon,
    .sac-annual-col-week {
        min-height: 30px;
    }
}


/* =========================================================
   VACANCES SCOLAIRES ZONES A / B / C
========================================================= */

/* Le nom du jour / jour férié est aligné à gauche. */
.sac-annual-col-event {
    justify-content: flex-start !important;
    text-align: left !important;
    padding-left: 6px;
}

/* Trois indicateurs étroits à droite de chaque date. */
.sac-school-zone {
    display: block;
    align-self: stretch;
    min-width: 8px;
    width: 8px;
    min-height: 28px;
    background: transparent;
}

.sac-school-zone.is-holiday {
    cursor: help;
}

.sac-school-zone-a.is-holiday {
    background: #e97818;
}

.sac-school-zone-b.is-holiday {
    background: #28a9df;
}

.sac-school-zone-c.is-holiday {
    background: #42a846;
}

/* Séparateurs légers entre les indicateurs A/B/C. */
.sac-school-zone-b,
.sac-school-zone-c {
    border-left: 1px solid rgba(255,255,255,.75);
}

@media (max-width: 560px) {
    .sac-school-zone {
        min-height: 30px;
    }
}


/* =========================================================
   CALENDRIER ANNUEL COLS - LAYOUT 3.9.0
========================================================= */

/* Colonnes compactes: jour, date, texte, lune, semaine, A, B, C */
.sac-annual-col-day {
    grid-template-columns:
        max-content
        max-content
        minmax(0, 1fr)
        22px
        24px
        3px
        3px
        3px !important;
    column-gap: 3px;
    padding-left: 3px;
    padding-right: 3px;
}

/* Les deux premières colonnes collent au contenu avec un léger espace. */
.sac-annual-col-weekday,
.sac-annual-col-date {
    min-width: 0 !important;
    padding-left: 2px;
    padding-right: 2px;
}

/* Nom du jour / fête: une seule ligne, ellipsis, tooltip via title. */
.sac-annual-col-event {
    min-width: 0;
    justify-content: flex-start !important;
    text-align: left !important;
    white-space: nowrap !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    padding: 4px 3px !important;
    line-height: 1.2;
}

/* Les bandes A/B/C font environ 1/3 de leur largeur précédente. */
.sac-school-zone {
    width: 3px !important;
    min-width: 3px !important;
}

/* Navigation annuelle */
.sac-annual-year-nav {
    display: grid;
    grid-template-columns: 42px minmax(110px, 150px) 42px;
    justify-content: center;
    align-items: center;
    gap: 8px;
    margin: 0 auto 16px;
}

.sac-annual-year-nav-btn,
.sac-annual-year-select,
.sac-return-current-year {
    min-height: 38px;
    border: 1px solid #d6d6d6;
    border-radius: 7px;
    background: #fff;
    font: inherit;
}

.sac-annual-year-nav-btn {
    cursor: pointer;
    font-size: 25px;
    line-height: 1;
}

.sac-annual-year-select {
    width: 100%;
    text-align: center;
    text-align-last: center;
    font-weight: 700;
    cursor: pointer;
    padding: 0 8px;
}

.sac-annual-year-nav-spacer {
    width: 42px;
    height: 38px;
}

.sac-annual-return-wrap {
    display: flex;
    justify-content: center;
    margin: 0 0 10px;
}

.sac-return-current-year {
    padding: 6px 14px;
    cursor: pointer;
}

.sac-dynamic-annual-content.sac-annual-loading {
    opacity: .55;
    pointer-events: none;
}

@media (max-width: 560px) {
    .sac-annual-year-nav {
        grid-template-columns: 38px minmax(105px, 135px) 38px;
        gap: 6px;
    }

    .sac-annual-col-day {
        column-gap: 2px;
        padding-left: 2px;
        padding-right: 2px;
    }
}


/* =========================================================
   ZONES SCOLAIRES CONTIGUËS - 4.0.0
========================================================= */

/*
 * Le grid principal conserve son espacement pour les autres colonnes.
 * Les zones B et C sont décalées dans les gaps afin que A/B/C
 * se touchent visuellement comme un seul bloc de 3 bandes.
 */
.sac-school-zone {
    box-sizing: border-box;
    border-top: 0;
    border-bottom: 0;
}

.sac-school-zone-b,
.sac-school-zone-c {
    margin-left: -3px;
}

/* Une fine bordure colorée garantit qu'aucun filet blanc n'apparaisse. */
.sac-school-zone-a.is-holiday {
    border-left: 1px solid #e97818;
    border-right: 1px solid #e97818;
}

.sac-school-zone-b.is-holiday {
    border-left: 1px solid #28a9df;
    border-right: 1px solid #28a9df;
}

.sac-school-zone-c.is-holiday {
    border-left: 1px solid #42a846;
    border-right: 1px solid #42a846;
}


/* =========================================================
   ZONES A/B/C COLLÉES AU BORD DROIT - 4.0.1
========================================================= */

.sac-annual-col-day {
    grid-template-columns:
        max-content
        max-content
        minmax(0, 1fr)
        22px
        24px
        3px
        3px
        3px !important;
    column-gap: 0 !important;
    padding-right: 0 !important;
}

/* On recrée seulement les petits espaces nécessaires avant les zones. */
.sac-annual-col-weekday {
    margin-right: 3px;
}

.sac-annual-col-date {
    margin-right: 3px;
}

.sac-annual-col-event {
    margin-right: 3px;
}

.sac-annual-col-moon {
    margin-right: 3px;
}

.sac-annual-col-week {
    margin-right: 0;
}

/* Les trois bandes se touchent exactement et la Zone C arrive au bord droit. */
.sac-school-zone {
    width: 3px !important;
    min-width: 3px !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
    border-left: 0 !important;
    border-right: 0 !important;
}

.sac-school-zone-a.is-holiday {
    background: #e97818 !important;
}

.sac-school-zone-b.is-holiday {
    background: #28a9df !important;
}

.sac-school-zone-c.is-holiday {
    background: #42a846 !important;
}

/* Le trait externe droit est porté par la dernière bande pour éviter tout vide. */
.sac-school-zone-c {
    box-shadow: 1px 0 0 rgba(0,0,0,.12);
}


/* =========================================================
   FÊTES TRADITIONNELLES + CONTRASTE ZONES - 4.1.0
========================================================= */

/* Événements traditionnels: gras uniquement, pas de rouge. */
.sac-annual-col-observance .sac-annual-col-event {
    font-weight: 700 !important;
    color: #3f3f3f !important;
    cursor: help;
}

/* Zone A reste orange foncé; B et C deviennent nettement plus distinctes. */
.sac-school-zone-a.is-holiday {
    background: #e56b00 !important;
}

.sac-school-zone-b.is-holiday {
    background: #0077d6 !important;
}

.sac-school-zone-c.is-holiday {
    background: #14833b !important;
}


/* =========================================================
   CALENDRIER ANNUEL - CARTES PLATES + WEEK-END PLUS CLAIR
   4.1.1
========================================================= */

/* Suppression de tous les arrondis des cartes mensuelles. */
.sac-annual-col-month,
.sac-annual-month,
.sac-annual-col-month-header,
.sac-annual-month-header {
    border-radius: 0 !important;
}

/* Week-end plus clair pour mieux faire ressortir les phases de lune. */
.sac-annual-col-day.is-saturday,
.sac-annual-col-day.sac-saturday {
    background: #fff8ef !important;
}

.sac-annual-col-day.is-sunday,
.sac-annual-col-day.sac-sunday {
    background: #fff3e2 !important;
}

/* Compatibilité avec les anciennes classes éventuelles. */
.sac-annual-col-saturday {
    background: #fff8ef !important;
}

.sac-annual-col-sunday {
    background: #fff3e2 !important;
}


/* =========================================================
   BANDES VACANCES CONTINUES - 4.1.2
========================================================= */

/*
 * La couleur recouvre aussi les bordures haute/basse de la cellule.
 * Cela évite l'effet de pointillés causé par les séparateurs de lignes.
 */
.sac-school-zone {
    align-self: stretch !important;
    height: auto !important;
    box-sizing: border-box !important;
    position: relative;
    z-index: 2;
}

.sac-school-zone-a.is-holiday {
    background: #e56b00 !important;
    border-top: 1px solid #e56b00 !important;
    border-bottom: 1px solid #e56b00 !important;
}

.sac-school-zone-b.is-holiday {
    background: #0077d6 !important;
    border-top: 1px solid #0077d6 !important;
    border-bottom: 1px solid #0077d6 !important;
}

.sac-school-zone-c.is-holiday {
    background: #14833b !important;
    border-top: 1px solid #14833b !important;
    border-bottom: 1px solid #14833b !important;
}

/* Recouvre exactement le séparateur horizontal entre deux jours. */
.sac-school-zone.is-holiday::before,
.sac-school-zone.is-holiday::after {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    height: 1px;
    background: inherit;
}

.sac-school-zone.is-holiday::before {
    top: -1px;
}

.sac-school-zone.is-holiday::after {
    bottom: -1px;
}


/* =========================================================
   CORRECTION DÉFINITIVE DES SÉPARATEURS ZONES A/B/C - 4.1.3
========================================================= */

/*
 * Le problème venait de la bordure horizontale appliquée à toute la ligne
 * (.sac-annual-col-day). Elle traversait également les 3 bandes colorées.
 *
 * On supprime cette bordure globale puis on la redessine uniquement
 * jusqu'avant les colonnes A/B/C. Chaque bande non colorée reçoit son propre
 * séparateur, tandis qu'une bande colorée reste totalement continue.
 */
.sac-annual-col-day {
    position: relative;
    border-bottom: 0 !important;
}

.sac-annual-col-day::after {
    content: "";
    position: absolute;
    left: 0;
    right: 9px;
    bottom: 0;
    height: 1px;
    background: #ededed;
    pointer-events: none;
}

/* Les 3 bandes occupent exactement 9px (3 + 3 + 3). */
.sac-school-zone {
    position: relative;
    z-index: 3;
    align-self: stretch !important;
}

/* Si la zone n'est pas en vacances, on conserve le séparateur gris. */
.sac-school-zone:not(.is-holiday) {
    box-shadow: inset 0 -1px 0 #ededed;
}

/* Si la zone est en vacances, aucun trait gris ne la coupe. */
.sac-school-zone.is-holiday {
    box-shadow: none !important;
    border-top: 0 !important;
    border-bottom: 0 !important;
}

/* La dernière ligne ne doit afficher aucun séparateur. */
.sac-annual-col-day:last-child::after,
.sac-annual-col-day:last-child .sac-school-zone:not(.is-holiday) {
    box-shadow: none;
}

.sac-annual-col-day:last-child::after {
    display: none;
}


/* =========================================================
   ALIGNEMENT VERTICAL JOUR + DATE - 4.7.1
   Les deux premières colonnes ont une largeur fixe afin que les dates
   restent parfaitement alignées, indépendamment de la lettre du jour.
========================================================= */
.sac-annual-col-day {
    grid-template-columns:
        18px
        24px
        minmax(0, 1fr)
        22px
        24px
        3px
        3px
        3px !important;
}

.sac-annual-col-weekday,
.sac-annual-col-date {
    width: 100% !important;
    min-width: 0 !important;
    max-width: none !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
    padding-left: 0 !important;
    padding-right: 0 !important;
    box-sizing: border-box;
    justify-content: center !important;
    text-align: center !important;
}

.sac-annual-col-date {
    font-variant-numeric: tabular-nums;
}

/* Recrée uniquement l'espace après la date, sans modifier la largeur colonne. */
.sac-annual-col-event {
    margin-left: 3px;
}


/* =========================================================
 * ALIGNEMENT JOUR / DATE - 4.8.0
 * ========================================================= */

/*
 * Les deux premières colonnes ont une largeur fixe.
 * Ainsi le numéro du jour commence exactement au même x sur toutes les lignes,
 * quelle que soit la largeur visuelle de L / M / M / J / V / S / D.
 */
.sac-annual-col-day {
    grid-template-columns:
        20px
        28px
        minmax(0, 1fr)
        22px
        24px
        3px
        3px
        3px !important;
}

.sac-annual-col-weekday {
    width: 20px !important;
    min-width: 20px !important;
    max-width: 20px !important;
    margin: 0 !important;
    padding: 0 !important;
    text-align: center !important;
    justify-self: stretch !important;
}

.sac-annual-col-date {
    width: 28px !important;
    min-width: 28px !important;
    max-width: 28px !important;
    margin: 0 !important;
    padding: 0 !important;
    text-align: right !important;
    justify-self: stretch !important;
    font-variant-numeric: tabular-nums;
}

/* Conserver ces largeurs également sur mobile/tablette. */
@media (max-width: 1100px) {
    .sac-annual-col-day {
        grid-template-columns:
            20px
            28px
            minmax(0, 1fr)
            22px
            24px
            3px
            3px
            3px !important;
    }
}


/* H1 centre sur toutes les pages utilisant un shortcode SAC */
.sac-shortcode-page h1.entry-title,
.sac-shortcode-page h1.page-title,
.sac-shortcode-page .entry-header h1,
h1.sac-centered-h1 {
    text-align: center !important;
}


/* =========================================================
 * Options d'affichage — calendrier annuel en colonnes
 * ========================================================= */
.sac-annual-options {
    margin: 0 0 14px;
    padding: 12px 14px 14px;
    border: 1px solid #d8d8d8;
    border-radius: 0;
    background: #fff;
}

.sac-annual-options > legend {
    padding: 0 7px;
    font-weight: 700;
}

.sac-annual-options-grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
    gap: 22px;
    align-items: center;
}

.sac-annual-options-col {
    min-width: 0;
}

.sac-annual-options-content {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, max-content));
    gap: 7px 18px;
    justify-content: start;
}

.sac-annual-options-year {
    display: flex;
    align-items: center;
    justify-content: center;
}

.sac-annual-options-school {
    display: grid;
    grid-template-columns: repeat(3, max-content);
    gap: 7px 14px;
    justify-content: end;
    align-items: center;
}

.sac-annual-options-subtitle {
    grid-column: 1 / -1;
    font-weight: 700;
    text-align: right;
    margin-bottom: 1px;
}

.sac-annual-filter-item {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    margin: 0;
    cursor: pointer;
    white-space: nowrap;
    font-size: 14px;
    user-select: none;
}

.sac-annual-filter-item input[type="checkbox"] {
    margin: 0;
    cursor: pointer;
}

.sac-annual-options .sac-annual-year-nav {
    margin: 0;
}

.sac-hide-lunaire .sac-annual-col-moon,
.sac-hide-semaine .sac-annual-col-week,
.sac-hide-zone-a .sac-school-zone-a,
.sac-hide-zone-b .sac-school-zone-b,
.sac-hide-zone-c .sac-school-zone-c {
    visibility: hidden !important;
}

@media (max-width: 900px) {
    .sac-annual-options-grid {
        grid-template-columns: 1fr 1fr;
    }

    .sac-annual-options-year {
        grid-column: 1 / -1;
        grid-row: 1;
    }

    .sac-annual-options-content {
        grid-column: 1;
        grid-row: 2;
    }

    .sac-annual-options-school {
        grid-column: 2;
        grid-row: 2;
    }
}

@media (max-width: 640px) {
    .sac-annual-options-grid {
        grid-template-columns: 1fr;
        gap: 14px;
    }

    .sac-annual-options-year,
    .sac-annual-options-content,
    .sac-annual-options-school {
        grid-column: 1;
        grid-row: auto;
    }

    .sac-annual-options-content {
        grid-template-columns: 1fr;
    }

    .sac-annual-options-school {
        justify-content: start;
        grid-template-columns: repeat(3, max-content);
    }

    .sac-annual-options-subtitle {
        text-align: left;
    }

    .sac-annual-filter-item {
        font-size: 13px;
    }
}


/* =========================================================
 * Options d'affichage v4.9.5 — zones encadrées + responsive
 * ========================================================= */
.sac-annual-options-grid {
    align-items: stretch;
}

.sac-annual-options-col {
    min-width: 0;
    border: 1px solid #d8d8d8;
    padding: 12px 14px;
    background: #fff;
    box-sizing: border-box;
}

.sac-annual-options-year {
    min-width: 220px;
}

.sac-annual-options-content,
.sac-annual-options-school {
    align-content: center;
}

/* Tablette / largeur intermédiaire :
 * ligne 1 = choix de l'année sur toute la largeur,
 * ligne 2 = contenus à gauche + vacances scolaires à droite.
 */
@media (max-width: 900px) {
    .sac-annual-options-grid {
        grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
        gap: 12px;
    }

    .sac-annual-options-year {
        grid-column: 1 / -1;
        grid-row: 1;
        width: 100%;
        min-width: 0;
        justify-content: center;
    }

    .sac-annual-options-content {
        grid-column: 1;
        grid-row: 2;
    }

    .sac-annual-options-school {
        grid-column: 2;
        grid-row: 2;
    }
}

/* Mobile étroit : les trois zones passent en pile,
 * en gardant la navigation annuelle en premier.
 */
@media (max-width: 640px) {
    .sac-annual-options-grid {
        grid-template-columns: 1fr;
    }

    .sac-annual-options-year {
        grid-column: 1;
        grid-row: 1;
    }

    .sac-annual-options-content {
        grid-column: 1;
        grid-row: 2;
    }

    .sac-annual-options-school {
        grid-column: 1;
        grid-row: 3;
    }
}


/* =========================================================
 * Options v4.9.6 — navigation intégrée + contenu dynamique
 * ========================================================= */
.sac-annual-options-year {
    flex-direction: column;
    gap: 10px;
}

.sac-annual-return-inside {
    margin: 0;
    text-align: center;
    width: 100%;
}

.sac-annual-options-school {
    justify-content: center !important;
    align-content: center;
    text-align: center;
}

.sac-annual-options-school .sac-annual-options-subtitle {
    text-align: center !important;
}

.sac-annual-options-school .sac-annual-filter-item {
    justify-self: center;
}


/* =========================================================
 * Export PDF annuel v4.9.7
 * ========================================================= */
.sac-annual-export-wrap {
    grid-column: 1 / -1;
    width: 100%;
    margin-top: 5px;
    text-align: center;
}

.sac-export-pdf {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 34px;
    padding: 7px 15px;
    border: 1px solid #444;
    border-radius: 0;
    background: #fff;
    color: #222;
    font: inherit;
    font-weight: 700;
    line-height: 1.2;
    cursor: pointer;
}

.sac-export-pdf:hover,
.sac-export-pdf:focus-visible {
    background: #f3f3f3;
}

.sac-export-pdf:disabled {
    opacity: .6;
    cursor: progress;
}


/* =========================================================
 * Calendrier annuel v4.9.8 — bordures stables + zones masquées
 * ========================================================= */

/*
 * Quand une zone est masquée, on garde physiquement sa cellule afin de
 * conserver exactement les séparateurs horizontaux du calendrier.
 * Seule la couleur de vacances disparaît.
 */
.sac-hide-zone-a .sac-school-zone-a,
.sac-hide-zone-b .sac-school-zone-b,
.sac-hide-zone-c .sac-school-zone-c {
    visibility: visible !important;
    background: transparent !important;
    border-top: 0 !important;
    border-bottom: 0 !important;
    box-shadow: inset 0 -1px 0 #ededed !important;
}

.sac-hide-zone-a .sac-school-zone-a::before,
.sac-hide-zone-a .sac-school-zone-a::after,
.sac-hide-zone-b .sac-school-zone-b::before,
.sac-hide-zone-b .sac-school-zone-b::after,
.sac-hide-zone-c .sac-school-zone-c::before,
.sac-hide-zone-c .sac-school-zone-c::after {
    display: none !important;
}

/* La dernière ligne n'a pas de séparateur intérieur. */
.sac-hide-zone-a .sac-annual-col-day:last-child .sac-school-zone-a,
.sac-hide-zone-b .sac-annual-col-day:last-child .sac-school-zone-b,
.sac-hide-zone-c .sac-annual-col-day:last-child .sac-school-zone-c {
    box-shadow: none !important;
}

/*
 * Le contour extérieur de chaque mois est redessiné au-dessus de toutes
 * les bandes et de tous les fonds afin qu'il reste toujours uniforme.
 */
.sac-annual-col-month {
    position: relative !important;
    border: 1px solid #b9b9b9 !important;
    box-sizing: border-box !important;
    overflow: hidden;
}

.sac-annual-col-month::after {
    content: "";
    position: absolute;
    inset: 0;
    border: 1px solid #b9b9b9;
    pointer-events: none;
    z-index: 20;
    box-sizing: border-box;
}

/* Entête du mois : fond et bordure ne peuvent pas être recouverts. */
.sac-annual-col-month-header {
    position: relative !important;
    z-index: 10 !important;
    border: 0 !important;
    border-bottom: 1px solid #b9b9b9 !important;
    background: #f4f4f4 !important;
    box-sizing: border-box !important;
}


/* =========================================================
 * Calendrier annuel v4.9.9 — texte événement extensible
 * ========================================================= */

/*
 * Le texte de l'événement peut occuper les colonnes vides à droite.
 * script.js calcule pour chaque jour la première colonne réellement utilisée.
 */
.sac-annual-col-day {
    isolation: isolate;
}

.sac-annual-col-event {
    position: relative;
    z-index: 5;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    background: inherit;
}

/* Les cellules techniques restent au-dessus uniquement lorsqu'elles ont du contenu. */
.sac-annual-col-moon,
.sac-annual-col-week,
.sac-school-zone {
    position: relative;
    z-index: 6;
}

/* Une cellule vide utilisée comme espace d'extension ne doit pas masquer le texte. */
.sac-annual-col-day.sac-expand-event .sac-annual-col-moon.is-sac-empty-right,
.sac-annual-col-day.sac-expand-event .sac-annual-col-week.is-sac-empty-right,
.sac-annual-col-day.sac-expand-event .sac-school-zone.is-sac-empty-right {
    pointer-events: none;
}


/* =========================================================
 * Calendrier annuel v4.10.0 — correction du débordement texte
 * ========================================================= */

/*
 * IMPORTANT : le texte peut s'étendre visuellement, mais la cellule Event
 * reste strictement dans la 3e colonne de la grille. Cela évite toute
 * déformation des colonnes Moon / Semaine / Zone A/B/C.
 */
.sac-annual-col-event {
    grid-column: auto !important;
    position: relative !important;
    z-index: 5 !important;
    min-width: 0 !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    white-space: nowrap !important;
    background: transparent !important;
    box-sizing: border-box !important;
}

/* Les cellules de droite gardent leur emplacement original et passent
 * visuellement au-dessus du texte lorsqu'elles contiennent une information. */
.sac-annual-col-moon,
.sac-annual-col-week,
.sac-school-zone {
    z-index: 6 !important;
}

/* Aucun changement de display / grid-placement pour les cellules vides. */
.sac-annual-col-day.sac-expand-event .sac-annual-col-moon.is-sac-empty-right,
.sac-annual-col-day.sac-expand-event .sac-annual-col-week.is-sac-empty-right,
.sac-annual-col-day.sac-expand-event .sac-school-zone.is-sac-empty-right {
    pointer-events: none;
}


/* =========================================================
 * Export PDF v4.10.1 — icône PDF colorée
 * ========================================================= */
.sac-export-pdf {
    gap: 7px;
}

.sac-pdf-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 26px;
    height: 20px;
    padding: 0 4px;
    box-sizing: border-box;
    background: #d93025;
    color: #fff;
    font-size: 10px;
    font-weight: 800;
    line-height: 1;
    letter-spacing: .2px;
}


/* =========================================================
 * Calendrier annuel v4.10.2 — ellipsis mesuré précisément
 * ========================================================= */
.sac-annual-col-event {
    text-overflow: clip !important;
}


/* =========================================================
 * EXPORT JPG
 * ========================================================= */
.sac-annual-export-wrap {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

.sac-export-jpg {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 7px;
}

.sac-jpg-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 28px;
    height: 20px;
    padding: 0 4px;
    box-sizing: border-box;
    background: #2f75b5;
    color: #fff;
    font-size: 10px;
    font-weight: 800;
    line-height: 1;
    letter-spacing: .2px;
}


/* =========================================================
 * EXPORT BUTTONS - PDF / JPG SAME FORMAT
 * ========================================================= */
.sac-annual-export-wrap {
    display: flex !important;
    align-items: center !important;
    gap: 8px !important;
    flex-wrap: wrap !important;
}

.sac-export-pdf,
.sac-export-jpg {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 7px !important;
    min-height: 36px !important;
    padding: 7px 12px !important;
    box-sizing: border-box !important;
    font-size: 13px !important;
    font-weight: 600 !important;
    line-height: 1.2 !important;
    white-space: nowrap !important;
}

.sac-pdf-icon,
.sac-jpg-icon {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 30px !important;
    min-width: 30px !important;
    height: 20px !important;
    padding: 0 !important;
    box-sizing: border-box !important;
    font-size: 10px !important;
    font-weight: 800 !important;
    line-height: 1 !important;
    letter-spacing: .2px !important;
}


/* v4.11.5 - curseur identique PDF/JPG */
.sac-export-pdf,
.sac-export-jpg {
    cursor: pointer !important;
}

.sac-export-pdf:disabled,
.sac-export-jpg:disabled {
    cursor: wait !important;
}


/* =========================================================
 * v4.11.8 - En-tête du mois plus compact sur le web
 * ========================================================= */
.sac-annual-col-title {
    padding: 7px 10px !important;
    font-size: 17px !important;
    line-height: 1.15 !important;
}


/* =========================================================
 * v4.12.2 - Tableau des vacances scolaires
 * ========================================================= */
.sac-school-holiday-section {
    margin-top: 34px;
}

.sac-school-holiday-section h2 {
    margin: 0 0 12px !important;
    font-size: 28px !important;
    line-height: 1.25 !important;
}

.sac-school-holiday-intro {
    margin: 0 0 18px !important;
    line-height: 1.65 !important;
}

.sac-school-holiday-table-wrap {
    width: 100%;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}

.sac-school-holiday-table {
    width: 100%;
    min-width: 760px;
    border-collapse: collapse;
    table-layout: fixed;
    background: #fff;
}

.sac-school-holiday-table caption {
    padding: 10px 12px;
    border: 1px solid #9a9a9a;
    border-bottom: 0;
    background: #f3f3f3;
    font-weight: 700;
    text-align: center;
}

.sac-school-holiday-table th,
.sac-school-holiday-table td {
    border: 1px solid #b8b8b8;
    padding: 11px 10px;
    vertical-align: middle;
}

.sac-school-holiday-table thead th {
    background: #e9e9e9;
    font-weight: 700;
    text-align: center;
}

.sac-school-holiday-table thead th:first-child,
.sac-school-holiday-table tbody th {
    width: 25%;
}

.sac-school-holiday-table tbody th {
    background: #f7f7f7;
    font-weight: 600;
    text-align: left;
}

.sac-school-holiday-table td {
    text-align: center;
}

.sac-school-date-start,
.sac-school-date-end {
    display: block;
}

.sac-school-date-end {
    margin-top: 3px;
}

.sac-school-date-empty {
    color: #777;
}

@media (max-width: 640px) {
    .sac-school-holiday-section {
        margin-top: 26px;
    }

    .sac-school-holiday-section h2 {
        font-size: 23px !important;
    }

    .sac-school-holiday-table th,
    .sac-school-holiday-table td {
        padding: 9px 8px;
        font-size: 13px;
    }
}


/* =========================================================
 * v4.12.3 - Couleurs des zones et cellules fusionnées
 * ========================================================= */
.sac-school-holiday-table .sac-school-zone-a-head,
.sac-school-holiday-table .sac-school-zone-a-cell {
    background: #e56b00 !important;
    color: #ffffff !important;
}

.sac-school-holiday-table .sac-school-zone-b-head,
.sac-school-holiday-table .sac-school-zone-b-cell {
    background: #0077d6 !important;
    color: #ffffff !important;
}

.sac-school-holiday-table .sac-school-zone-c-head,
.sac-school-holiday-table .sac-school-zone-c-cell {
    background: #14833b !important;
    color: #ffffff !important;
}


.sac-school-holiday-table .sac-school-academies-row td {
    font-size: 13px;
    line-height: 1.45;
}

.sac-school-holiday-table .sac-school-rentree-row th {
    font-weight: 700;
}


/* =========================================================
 * v4.12.4 - Cellules fusionnées neutres
 * ========================================================= */
.sac-school-holiday-table .sac-school-merged-cell[colspan] {
    background: #ffffff !important;
    color: #222222 !important;
    font-weight: 600;
    text-align: center;
}


/* =========================================================
 * v4.12.6 - Responsive réel du tableau des vacances scolaires
 * ========================================================= */
.sac-school-holiday-section,
.sac-school-holiday-table-wrap {
    width: 100% !important;
    max-width: 100% !important;
    box-sizing: border-box !important;
}

.sac-school-holiday-table-wrap {
    overflow-x: auto !important;
    -webkit-overflow-scrolling: touch;
}

@media (max-width: 760px) {
    .sac-school-holiday-table-wrap {
        overflow-x: visible !important;
    }

    .sac-school-holiday-table {
        min-width: 0 !important;
        width: 100% !important;
        max-width: 100% !important;
        table-layout: auto !important;
        border-collapse: separate !important;
        border-spacing: 0 14px !important;
        background: transparent !important;
    }

    .sac-school-holiday-table thead {
        display: none !important;
    }

    .sac-school-holiday-table,
    .sac-school-holiday-table tbody,
    .sac-school-holiday-table tr,
    .sac-school-holiday-table th,
    .sac-school-holiday-table td {
        display: block !important;
        width: 100% !important;
        max-width: 100% !important;
        box-sizing: border-box !important;
    }

    .sac-school-holiday-table tbody tr {
        border: 1px solid #b8b8b8 !important;
        background: #fff !important;
    }

    .sac-school-holiday-table tbody th {
        border: 0 !important;
        border-bottom: 1px solid #d7d7d7 !important;
        padding: 11px 12px !important;
        background: #f3f3f3 !important;
        font-weight: 700 !important;
        text-align: left !important;
    }

    .sac-school-holiday-table tbody td {
        border: 0 !important;
        border-bottom: 1px solid rgba(255,255,255,.28) !important;
        padding: 10px 12px !important;
        min-height: 42px !important;
        text-align: left !important;
        overflow-wrap: anywhere !important;
        word-break: normal !important;
        white-space: normal !important;
    }

    .sac-school-holiday-table tbody td:last-child {
        border-bottom: 0 !important;
    }

    .sac-school-holiday-table .sac-school-merged-cell[colspan] {
        background: #fff !important;
        color: #222 !important;
        border-bottom: 1px solid #e5e5e5 !important;
        text-align: left !important;
    }

    .sac-school-date-start,
    .sac-school-date-end {
        display: block !important;
    }

    .sac-school-holiday-intro,
    .sac-school-holiday-section h2 {
        max-width: 100% !important;
        overflow-wrap: anywhere !important;
    }

    .sac-school-holiday-section {
        overflow: hidden !important;
    }
}


/* =========================================================
 * v4.12.7 - Mobile: 3 tableaux séparés Zone A/B/C
 * ========================================================= */
.sac-school-mobile-zone-tables {
    display: none;
}

@media (max-width: 760px) {
    .sac-school-desktop-table-wrap {
        display: none !important;
    }

    .sac-school-mobile-zone-tables {
        display: block !important;
        width: 100%;
        max-width: 100%;
    }

    .sac-school-mobile-zone-table {
        width: 100%;
        max-width: 100%;
        margin: 0 0 22px;
        box-sizing: border-box;
    }

    .sac-school-mobile-zone-table h3 {
        margin: 0 !important;
        padding: 10px 12px !important;
        color: #fff !important;
        font-size: 20px !important;
        line-height: 1.25 !important;
    }

    .sac-school-mobile-zone-a h3 {
        background: #e56b00 !important;
    }

    .sac-school-mobile-zone-b h3 {
        background: #0077d6 !important;
    }

    .sac-school-mobile-zone-c h3 {
        background: #14833b !important;
    }

    .sac-school-mobile-zone-table table {
        width: 100% !important;
        max-width: 100% !important;
        border-collapse: collapse !important;
        table-layout: fixed !important;
        background: #fff !important;
    }

    .sac-school-mobile-zone-table th,
    .sac-school-mobile-zone-table td {
        border: 1px solid #c8c8c8 !important;
        padding: 10px 11px !important;
        vertical-align: top !important;
        box-sizing: border-box !important;
        white-space: normal !important;
        overflow-wrap: anywhere !important;
        word-break: normal !important;
    }

    .sac-school-mobile-zone-table th {
        width: 42% !important;
        background: #f3f3f3 !important;
        text-align: left !important;
        font-weight: 700 !important;
    }

    .sac-school-mobile-zone-table td {
        width: 58% !important;
        text-align: left !important;
        color: #222 !important;
        background: #fff !important;
    }

    .sac-school-mobile-zone-table .sac-school-date-start,
    .sac-school-mobile-zone-table .sac-school-date-end {
        display: block !important;
    }
}

@media (max-width: 420px) {
    .sac-school-mobile-zone-table th,
    .sac-school-mobile-zone-table td {
        padding: 9px 8px !important;
        font-size: 13px !important;
    }

    .sac-school-mobile-zone-table th {
        width: 39% !important;
    }

    .sac-school-mobile-zone-table td {
        width: 61% !important;
    }
}


/* =========================================================
 * v4.12.8 - Tableaux Jours fériés / Autres fêtes
 * ========================================================= */
.sac-annual-event-tables {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 22px;
    width: 100%;
    margin-top: 34px;
}

.sac-annual-event-table-card {
    min-width: 0;
}

.sac-annual-event-table {
    width: 100%;
    border-collapse: collapse;
    table-layout: fixed;
    background: #fff;
}

.sac-annual-event-table th,
.sac-annual-event-table td {
    border: 1px solid #c9c9c9;
}

.sac-annual-event-table thead th {
    padding: 0;
    background: #f1f1f1;
    text-align: left;
}

.sac-annual-event-table thead h2 {
    margin: 0 !important;
    padding: 12px 14px !important;
    font-size: 24px !important;
    line-height: 1.25 !important;
}

.sac-annual-event-table tbody td {
    padding: 10px 12px;
    vertical-align: middle;
    line-height: 1.45;
    transition: font-weight .15s ease;
}

.sac-annual-event-table tbody tr:nth-child(odd) td {
    background: #ffffff;
}

.sac-annual-event-table tbody tr:nth-child(even) td {
    background: #f3f3f3;
}

.sac-annual-event-table tbody tr:hover td {
    font-weight: 700;
}

.sac-annual-event-date {
    width: 45%;
}

.sac-annual-event-name {
    width: 55%;
}

@media (max-width: 820px) {
    .sac-annual-event-tables {
        grid-template-columns: 1fr;
        gap: 20px;
    }
}

@media (max-width: 520px) {
    .sac-annual-event-table {
        table-layout: auto;
    }

    .sac-annual-event-table thead h2 {
        font-size: 21px !important;
    }

    .sac-annual-event-table tbody td {
        padding: 9px 8px;
        font-size: 13px;
        overflow-wrap: anywhere;
    }

    .sac-annual-event-date {
        width: 47%;
    }

    .sac-annual-event-name {
        width: 53%;
    }
}


/* =========================================================
 * v4.12.9 - 3 colonnes + vacances scolaires annuelles
 * ========================================================= */
.sac-annual-event-weekday {
    width: 18%;
    text-transform: capitalize;
}

.sac-annual-event-date {
    width: 32% !important;
}

.sac-annual-event-name {
    width: 50% !important;
}

.sac-annual-school-holiday-section {
    margin-top: 24px;
    width: 100%;
    max-width: 100%;
}

.sac-annual-school-holiday-table {
    width: 100%;
    border-collapse: collapse;
    table-layout: fixed;
    background: #fff;
}

.sac-annual-school-holiday-table th,
.sac-annual-school-holiday-table td {
    border: 1px solid #c9c9c9;
    padding: 10px 12px;
    vertical-align: middle;
}

.sac-annual-school-holiday-table thead tr:first-child th {
    padding: 0;
    background: #f1f1f1;
    text-align: left;
}

.sac-annual-school-holiday-table thead h2 {
    margin: 0 !important;
    padding: 12px 14px !important;
    font-size: 24px !important;
    line-height: 1.25 !important;
}

.sac-annual-school-holiday-table thead tr:nth-child(2) th {
    background: #e9e9e9;
    text-align: center;
}

.sac-annual-school-holiday-table tbody tr:nth-child(odd) th,
.sac-annual-school-holiday-table tbody tr:nth-child(odd) td {
    background: #ffffff;
}

.sac-annual-school-holiday-table tbody tr:nth-child(even) th,
.sac-annual-school-holiday-table tbody tr:nth-child(even) td {
    background: #f3f3f3;
}

.sac-annual-school-holiday-table tbody tr:hover th,
.sac-annual-school-holiday-table tbody tr:hover td {
    font-weight: 700;
}

.sac-annual-school-holiday-table tbody th {
    width: 25%;
    text-align: left;
}

.sac-annual-school-holiday-table tbody td {
    width: 25%;
    text-align: center;
}

@media (max-width: 820px) {
    .sac-annual-school-holiday-section {
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
    }

    .sac-annual-school-holiday-table {
        min-width: 720px;
    }
}

@media (max-width: 520px) {
    .sac-annual-event-table tbody td {
        font-size: 13px;
    }

    .sac-annual-event-weekday {
        width: 20%;
    }

    .sac-annual-event-date {
        width: 34% !important;
    }

    .sac-annual-event-name {
        width: 46% !important;
    }
}


/* =========================================================
 * v4.13.0 - Vacances scolaires annuelles alignées sur
 * calendrier_scolaire_cols
 * ========================================================= */
.sac-annual-school-holiday-section {
    margin-top: 26px;
    width: 100%;
    max-width: 100%;
}

.sac-annual-school-desktop-table-wrap {
    width: 100%;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}

.sac-annual-school-holiday-table {
    width: 100%;
    min-width: 760px;
    border-collapse: collapse;
    table-layout: fixed;
    background: #fff;
}

.sac-annual-school-holiday-table th,
.sac-annual-school-holiday-table td {
    border: 1px solid #b8b8b8;
    padding: 11px 10px;
    vertical-align: middle;
}

.sac-annual-school-holiday-table thead tr:first-child th {
    padding: 0;
    background: #f1f1f1;
    text-align: left;
}

.sac-annual-school-holiday-table thead h2 {
    margin: 0 !important;
    padding: 12px 14px !important;
    font-size: 24px !important;
    line-height: 1.25 !important;
}

.sac-annual-school-holiday-table thead tr:nth-child(2) th {
    background: #e9e9e9;
    text-align: center;
    font-weight: 700;
}

.sac-annual-school-holiday-table thead th:first-child,
.sac-annual-school-holiday-table tbody th {
    width: 25%;
}

.sac-annual-school-holiday-table tbody th {
    background: #f7f7f7;
    font-weight: 600;
    text-align: left;
}

.sac-annual-school-holiday-table td {
    text-align: center;
}

/* Même couleurs que calendrier_scolaire_cols */
.sac-annual-school-holiday-table .sac-school-zone-a-head,
.sac-annual-school-holiday-table .sac-school-zone-a-cell {
    background: #e56b00 !important;
    color: #ffffff !important;
}

.sac-annual-school-holiday-table .sac-school-zone-b-head,
.sac-annual-school-holiday-table .sac-school-zone-b-cell {
    background: #0077d6 !important;
    color: #ffffff !important;
}

.sac-annual-school-holiday-table .sac-school-zone-c-head,
.sac-annual-school-holiday-table .sac-school-zone-c-cell {
    background: #14833b !important;
    color: #ffffff !important;
}

.sac-annual-school-holiday-table .sac-school-merged-cell[colspan] {
    background: #ffffff !important;
    color: #222222 !important;
    font-weight: 600;
    text-align: center;
}

.sac-annual-school-holiday-table .sac-school-academies-row td {
    font-size: 13px;
    line-height: 1.45;
}

/* Mobile: 3 tableaux Zone A/B/C séparés */
.sac-annual-school-mobile-zone-tables {
    display: none;
}

@media (max-width: 760px) {
    .sac-annual-school-desktop-table-wrap {
        display: none !important;
    }

    .sac-annual-school-mobile-zone-tables {
        display: block !important;
        width: 100%;
        max-width: 100%;
    }

    .sac-annual-school-mobile-zone-table {
        width: 100%;
        max-width: 100%;
        margin: 0 0 22px;
        box-sizing: border-box;
    }

    .sac-annual-school-mobile-zone-table h3 {
        margin: 0 !important;
        padding: 10px 12px !important;
        color: #fff !important;
        font-size: 20px !important;
        line-height: 1.25 !important;
    }

    .sac-annual-school-mobile-zone-a h3 {
        background: #e56b00 !important;
    }

    .sac-annual-school-mobile-zone-b h3 {
        background: #0077d6 !important;
    }

    .sac-annual-school-mobile-zone-c h3 {
        background: #14833b !important;
    }

    .sac-annual-school-mobile-zone-table table {
        width: 100% !important;
        max-width: 100% !important;
        border-collapse: collapse !important;
        table-layout: fixed !important;
        background: #fff !important;
    }

    .sac-annual-school-mobile-zone-table th,
    .sac-annual-school-mobile-zone-table td {
        border: 1px solid #c8c8c8 !important;
        padding: 10px 11px !important;
        vertical-align: top !important;
        box-sizing: border-box !important;
        white-space: normal !important;
        overflow-wrap: anywhere !important;
        word-break: normal !important;
    }

    .sac-annual-school-mobile-zone-table th {
        width: 42% !important;
        background: #f3f3f3 !important;
        text-align: left !important;
        font-weight: 700 !important;
    }

    .sac-annual-school-mobile-zone-table td {
        width: 58% !important;
        background: #fff !important;
        color: #222 !important;
        text-align: left !important;
    }

    .sac-annual-school-mobile-zone-table .sac-school-date-start,
    .sac-annual-school-mobile-zone-table .sac-school-date-end {
        display: block !important;
    }
}

@media (max-width: 420px) {
    .sac-annual-school-mobile-zone-table th,
    .sac-annual-school-mobile-zone-table td {
        padding: 9px 8px !important;
        font-size: 13px !important;
    }

    .sac-annual-school-mobile-zone-table th {
        width: 39% !important;
    }

    .sac-annual-school-mobile-zone-table td {
        width: 61% !important;
    }
}


/* v4.13.4 - Rentrée scolaire en rouge */
.sac-annual-rentree-row th,
.sac-annual-rentree-row td,
.sac-annual-school-holiday-table .sac-annual-rentree-row th,
.sac-annual-school-holiday-table .sac-annual-rentree-row td,
.sac-annual-school-mobile-zone-table .sac-annual-rentree-row th,
.sac-annual-school-mobile-zone-table .sac-annual-rentree-row td {
    color: #c00000 !important;
}


/* v4.13.5 - Forcer le rouge sur la date de Rentrée scolaire */
.sac-annual-school-holiday-table tr.sac-annual-rentree-row > th,
.sac-annual-school-holiday-table tr.sac-annual-rentree-row > td,
.sac-annual-school-holiday-table tr.sac-annual-rentree-row > td[colspan],
.sac-annual-school-holiday-table tr.sac-annual-rentree-row > td.sac-school-merged-cell,
.sac-annual-school-holiday-table tr.sac-annual-rentree-row > td.sac-school-zone-a-cell,
.sac-annual-school-holiday-table tr.sac-annual-rentree-row > td.sac-school-zone-b-cell,
.sac-annual-school-holiday-table tr.sac-annual-rentree-row > td.sac-school-zone-c-cell,
.sac-annual-school-mobile-zone-table tr.sac-annual-rentree-row > th,
.sac-annual-school-mobile-zone-table tr.sac-annual-rentree-row > td {
    color: #c00000 !important;
}


/* v4.13.6 - En-têtes des tableaux Jours fériés / Autres fêtes */
.sac-annual-event-table thead tr.sac-annual-event-title-row th {
    background: transparent !important;
}

.sac-annual-event-table thead tr.sac-annual-event-title-row h2 {
    background: transparent !important;
}

.sac-annual-event-table thead tr.sac-annual-event-columns-row th {
    background: #e9e9e9 !important;
    font-weight: 700 !important;
    color: #222222 !important;
    text-align: left !important;
}


/* v4.13.7 - Centrage des titres des tableaux d'événements */
.sac-annual-event-table thead tr.sac-annual-event-title-row th,
.sac-annual-event-table thead tr.sac-annual-event-title-row h2 {
    text-align: center !important;
}

.sac-annual-event-table thead tr.sac-annual-event-columns-row th {
    text-align: center !important;
}


/* v4.13.8 - Centrage du H2 Vacances scolaires */
.sac-annual-school-holiday-table thead h2 {
    text-align: center !important;
}


/* =========================================================
   v4.14.0 - Calendrier mensuel grid
========================================================= */
.sac-monthly-grid-calendar {
    width: 100%;
    max-width: 100%;
    margin: 0 auto 24px;
}

.sac-monthly-grid-title {
    margin: 0 0 14px;
    text-align: center !important;
    font-weight: 700;
}

.sac-monthly-grid-wrap {
    width: 100%;
    overflow-x: auto;
}

.sac-monthly-grid-table {
    width: 100%;
    min-width: 860px;
    table-layout: fixed;
    border-collapse: collapse;
    background: #ffffff;
}

.sac-monthly-grid-table th,
.sac-monthly-grid-table td {
    border: 1px solid #b7b7b7;
}

.sac-monthly-grid-table thead th {
    padding: 9px 6px;
    background: #f2f2f2;
    text-align: center;
    font-weight: 700;
    vertical-align: middle;
}

.sac-monthly-grid-table .sac-monthly-week-head,
.sac-monthly-grid-table .sac-monthly-week-number {
    width: 42px;
    min-width: 42px;
    max-width: 42px;
    text-align: center;
}

.sac-monthly-grid-table td.sac-monthly-day-cell {
    height: 132px;
    padding: 0;
    vertical-align: top;
    background: #ffffff;
}

.sac-monthly-grid-table .sac-monthly-saturday {
    background: #fff3df !important;
}

.sac-monthly-grid-table .sac-monthly-sunday {
    background: #ffd7a3 !important;
}

.sac-monthly-grid-table td.sac-monthly-other-month {
    background: #fafafa !important;
}

.sac-monthly-day-inner {
    min-height: 132px;
    height: 100%;
    display: flex;
    flex-direction: column;
    padding: 7px 6px 6px;
    box-sizing: border-box;
}

.sac-monthly-day-number {
    margin-bottom: 5px;
    font-weight: 700;
    line-height: 1.1;
}

.sac-monthly-day-events {
    flex: 1 1 auto;
    min-height: 0;
}

.sac-monthly-event-text {
    margin-bottom: 3px;
    font-size: 12px;
    line-height: 1.25;
    overflow-wrap: anywhere;
}

.sac-monthly-event-public {
    color: #c00000;
    font-weight: 700;
}

.sac-monthly-event-other {
    font-weight: 600;
}

.sac-monthly-school-zones {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 3px;
    margin-top: 7px;
}

.sac-monthly-zone-badge {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 18px;
    padding: 2px 3px;
    border-radius: 8px;
    box-sizing: border-box;
    color: #ffffff;
    font-size: 10px;
    font-weight: 700;
    line-height: 1.1;
    text-align: center;
}

.sac-monthly-zone-a { background: #e56b00; }
.sac-monthly-zone-b { background: #0077d6; }
.sac-monthly-zone-c { background: #14833b; }
.sac-monthly-zone-empty { visibility: hidden; }

@media (max-width: 760px) {
    .sac-monthly-grid-table { min-width: 760px; }
    .sac-monthly-grid-table td.sac-monthly-day-cell,
    .sac-monthly-day-inner {
        height: 118px;
        min-height: 118px;
    }
    .sac-monthly-event-text { font-size: 11px; }
    .sac-monthly-zone-badge { font-size: 9px; }
}


/* =========================================================
   v4.14.1 - Calendrier mensuel : options, navigation, lune
========================================================= */
.sac-monthly-grid-title {
    text-align: center !important;
}

.sac-monthly-grid-table .sac-monthly-saturday {
    background: #f2f2f2 !important;
    color: #d97900 !important;
}

.sac-monthly-grid-table .sac-monthly-sunday {
    background: #e1e1e1 !important;
    color: #a95000 !important;
}

.sac-monthly-grid-table td.sac-monthly-other-month {
    background: #fafafa !important;
    color: #aaaaaa !important;
}

.sac-monthly-grid-table td.sac-monthly-other-month.sac-monthly-saturday {
    background: #f2f2f2 !important;
}

.sac-monthly-grid-table td.sac-monthly-other-month.sac-monthly-sunday {
    background: #e1e1e1 !important;
}

.sac-monthly-week-number {
    text-align: center !important;
    vertical-align: middle !important;
    font-style: italic !important;
    font-weight: 600 !important;
}

.sac-monthly-day-top {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 5px;
    min-height: 22px;
}

.sac-monthly-moon-wrap {
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-end;
    gap: 2px;
    min-height: 18px;
}

.sac-monthly-moon-phase {
    font-size: 16px;
    line-height: 1;
}

.sac-monthly-school-zones {
    display: flex !important;
    align-items: center;
    justify-content: center;
    gap: 5px !important;
    min-height: 14px;
    margin-top: 7px;
}

.sac-monthly-zone-dot {
    display: inline-block;
    width: 10px;
    height: 10px;
    min-width: 10px;
    min-height: 10px;
    padding: 0 !important;
    border-radius: 50% !important;
    font-size: 0 !important;
    line-height: 0 !important;
}

.sac-monthly-zone-empty {
    visibility: hidden;
}

.sac-monthly-options {
    margin-bottom: 14px;
}

.sac-monthly-options-grid {
    align-items: stretch;
}

.sac-monthly-nav-controls {
    display: grid;
    grid-template-columns: 34px minmax(120px, 1fr) minmax(82px, 0.72fr) 34px;
    gap: 6px;
    align-items: center;
}

.sac-monthly-nav-btn,
.sac-monthly-month-select,
.sac-monthly-year-select {
    min-height: 34px;
    box-sizing: border-box;
}

.sac-monthly-nav-btn {
    border: 1px solid #b8b8b8;
    background: #ffffff;
    cursor: pointer;
    font-size: 22px;
    line-height: 1;
}

.sac-monthly-month-select,
.sac-monthly-year-select {
    width: 100%;
}

.sac-monthly-grid-calendar.sac-monthly-loading {
    opacity: 0.65;
    pointer-events: none;
}

.sac-monthly-grid-calendar.sac-monthly-hide-feries .sac-monthly-event-public,
.sac-monthly-grid-calendar.sac-monthly-hide-autres .sac-monthly-event-other,
.sac-monthly-grid-calendar.sac-monthly-hide-lunaire .sac-monthly-moon-wrap,
.sac-monthly-grid-calendar.sac-monthly-hide-zone-a .sac-monthly-zone-a,
.sac-monthly-grid-calendar.sac-monthly-hide-zone-b .sac-monthly-zone-b,
.sac-monthly-grid-calendar.sac-monthly-hide-zone-c .sac-monthly-zone-c {
    display: none !important;
}

@media (max-width: 900px) {
    .sac-monthly-nav-controls {
        grid-template-columns: 34px minmax(110px, 1fr) minmax(78px, 0.8fr) 34px;
    }
}

@media (max-width: 640px) {
    .sac-monthly-nav-controls {
        grid-template-columns: 32px minmax(105px, 1fr) minmax(74px, 0.75fr) 32px;
        gap: 4px;
    }
}


/* =========================================================
 * v4.14.2 - Calendrier mensuel grid : options fiables + mobile vertical
 * Toutes les règles sont limitées à .sac-monthly-grid-calendar.
 * ========================================================= */
.sac-monthly-grid-calendar .sac-monthly-options-grid {
    align-items: stretch;
}

.sac-monthly-grid-calendar .sac-monthly-options-content {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, max-content));
    gap: 7px 18px;
    justify-content: start;
    align-content: center;
}

.sac-monthly-grid-calendar .sac-monthly-options-nav {
    min-width: 250px;
    flex-direction: column;
    justify-content: center;
    gap: 10px;
}

.sac-monthly-grid-calendar .sac-monthly-nav-controls {
    width: 100%;
    display: grid;
    grid-template-columns: 34px minmax(105px, 1fr) minmax(78px, .72fr) 34px;
    gap: 6px;
    align-items: center;
}

.sac-monthly-grid-calendar .sac-monthly-nav-btn,
.sac-monthly-grid-calendar .sac-monthly-month-select,
.sac-monthly-grid-calendar .sac-monthly-year-select {
    min-height: 34px;
    box-sizing: border-box;
}

.sac-monthly-grid-calendar .sac-monthly-month-select,
.sac-monthly-grid-calendar .sac-monthly-year-select {
    width: 100%;
}

.sac-monthly-grid-calendar .sac-monthly-return-wrap {
    width: 100%;
    margin: 0;
    text-align: center;
}

.sac-monthly-grid-calendar .sac-monthly-options-school {
    justify-content: center !important;
    align-content: center;
    text-align: center;
}

.sac-monthly-grid-calendar .sac-monthly-options-school .sac-annual-options-subtitle {
    text-align: center !important;
}

.sac-monthly-grid-calendar .sac-monthly-options-school .sac-annual-filter-item {
    justify-self: center;
}

.sac-monthly-grid-calendar .sac-monthly-grid-title {
    text-align: center !important;
}

.sac-monthly-grid-calendar .sac-monthly-day-number {
    font-size: 17px !important;
    font-weight: 700 !important;
    line-height: 1.15;
}

.sac-monthly-grid-calendar .sac-monthly-day-head {
    font-size: 14px;
    font-weight: 700;
}

.sac-monthly-grid-calendar .sac-monthly-week-number {
    text-align: center !important;
    vertical-align: middle !important;
    font-style: italic !important;
    font-weight: 600 !important;
    font-size: 14px;
}

.sac-monthly-grid-calendar .sac-monthly-saturday {
    background: #f1f1f1 !important;
    color: #dc7a00 !important;
}

.sac-monthly-grid-calendar .sac-monthly-sunday {
    background: #dddddd !important;
    color: #a94f00 !important;
}

.sac-monthly-grid-calendar .sac-monthly-public-holiday .sac-monthly-day-number,
.sac-monthly-grid-calendar .sac-monthly-event-public {
    color: #c00000 !important;
    font-weight: 700 !important;
}

.sac-monthly-grid-calendar .sac-monthly-school-zones {
    display: flex !important;
    align-items: center;
    justify-content: flex-end !important;
    gap: 5px !important;
    min-height: 14px;
    margin-top: 7px;
    margin-left: auto;
    width: 100%;
}

.sac-monthly-grid-calendar .sac-monthly-zone-dot {
    display: inline-block;
    width: 10px;
    height: 10px;
    min-width: 10px;
    min-height: 10px;
    padding: 0 !important;
    border-radius: 50% !important;
    font-size: 0 !important;
    line-height: 0 !important;
}

.sac-monthly-grid-calendar .sac-monthly-mobile-list {
    display: none;
}

.sac-monthly-grid-calendar.sac-monthly-hide-feries .sac-monthly-event-public,
.sac-monthly-grid-calendar.sac-monthly-hide-autres .sac-monthly-event-other,
.sac-monthly-grid-calendar.sac-monthly-hide-lunaire .sac-monthly-moon-wrap,
.sac-monthly-grid-calendar.sac-monthly-hide-lunaire .sac-monthly-mobile-moons,
.sac-monthly-grid-calendar.sac-monthly-hide-zone-a .sac-monthly-zone-a,
.sac-monthly-grid-calendar.sac-monthly-hide-zone-b .sac-monthly-zone-b,
.sac-monthly-grid-calendar.sac-monthly-hide-zone-c .sac-monthly-zone-c {
    display: none !important;
}

@media (max-width: 900px) {
    .sac-monthly-grid-calendar .sac-monthly-options-grid {
        grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
        gap: 12px;
    }

    .sac-monthly-grid-calendar .sac-monthly-options-nav {
        grid-column: 1 / -1;
        grid-row: 1;
        width: 100%;
        min-width: 0;
    }

    .sac-monthly-grid-calendar .sac-monthly-options-content {
        grid-column: 1;
        grid-row: 2;
    }

    .sac-monthly-grid-calendar .sac-monthly-options-school {
        grid-column: 2;
        grid-row: 2;
    }
}

@media (max-width: 640px) {
    .sac-monthly-grid-calendar .sac-monthly-options-grid {
        grid-template-columns: 1fr;
        gap: 12px;
    }

    .sac-monthly-grid-calendar .sac-monthly-options-nav {
        grid-column: 1;
        grid-row: 1;
    }

    .sac-monthly-grid-calendar .sac-monthly-options-content {
        grid-column: 1;
        grid-row: 2;
        grid-template-columns: 1fr;
    }

    .sac-monthly-grid-calendar .sac-monthly-options-school {
        grid-column: 1;
        grid-row: 3;
        grid-template-columns: repeat(3, max-content);
    }

    .sac-monthly-grid-calendar .sac-monthly-nav-controls {
        grid-template-columns: 32px minmax(105px, 1fr) minmax(72px, .72fr) 32px;
        gap: 4px;
    }
}

/* Sous 760 px, la grille ne déborde plus : affichage vertical par jour. */
@media (max-width: 760px) {
    .sac-monthly-grid-calendar .sac-monthly-grid-wrap {
        display: none !important;
    }

    .sac-monthly-grid-calendar .sac-monthly-mobile-list {
        display: block;
        width: 100%;
        border-top: 1px solid #b7b7b7;
        border-left: 1px solid #b7b7b7;
        box-sizing: border-box;
    }

    .sac-monthly-grid-calendar .sac-monthly-mobile-day {
        display: grid;
        grid-template-columns: minmax(78px, 1.05fr) 38px minmax(0, 2.5fr) 32px minmax(48px, .75fr);
        align-items: stretch;
        min-height: 46px;
        border-right: 1px solid #b7b7b7;
        border-bottom: 1px solid #b7b7b7;
        background: #fff;
        color: #222;
    }

    .sac-monthly-grid-calendar .sac-monthly-mobile-day > div {
        display: flex;
        align-items: center;
        padding: 6px 7px;
        box-sizing: border-box;
        border-right: 1px solid #e3e3e3;
    }

    .sac-monthly-grid-calendar .sac-monthly-mobile-weekday {
        font-weight: 700;
    }

    .sac-monthly-grid-calendar .sac-monthly-mobile-date {
        justify-content: center;
        font-size: 17px;
        font-weight: 700;
    }

    .sac-monthly-grid-calendar .sac-monthly-mobile-details {
        display: block !important;
        min-width: 0;
        font-size: 12px;
        line-height: 1.25;
    }

    .sac-monthly-grid-calendar .sac-monthly-mobile-moons {
        margin-top: 3px;
    }

    .sac-monthly-grid-calendar .sac-monthly-mobile-week {
        justify-content: center;
        font-style: italic;
        font-weight: 600;
    }

    .sac-monthly-grid-calendar .sac-monthly-mobile-day > .sac-monthly-school-zones {
        border-right: 0;
        justify-content: flex-end !important;
        padding: 6px !important;
        margin: 0 !important;
        width: auto;
    }

    .sac-monthly-grid-calendar .sac-monthly-mobile-day.sac-monthly-saturday {
        background: #f1f1f1 !important;
        color: #dc7a00 !important;
    }

    .sac-monthly-grid-calendar .sac-monthly-mobile-day.sac-monthly-sunday {
        background: #dddddd !important;
        color: #a94f00 !important;
    }
}

@media (max-width: 480px) {
    .sac-monthly-grid-calendar .sac-monthly-mobile-day {
        grid-template-columns: 72px 34px minmax(0, 1fr) 28px 44px;
    }

    .sac-monthly-grid-calendar .sac-monthly-mobile-day > div {
        padding: 5px;
    }

    .sac-monthly-grid-calendar .sac-monthly-mobile-weekday {
        font-size: 12px;
    }

    .sac-monthly-grid-calendar .sac-monthly-mobile-date {
        font-size: 16px;
    }
}


/* =========================================================
   v4.14.4 - calendrier_mensuel_grid
   Desktop et mobile traités séparément.
========================================================= */

/* ---------- DESKTOP / TABLETTE LARGE ---------- */

/* Les en-têtes Samedi/Dimanche ont exactement le même fond que les autres jours. */
.sac-monthly-grid-calendar .sac-monthly-grid-table thead th,
.sac-monthly-grid-calendar .sac-monthly-grid-table thead th.sac-monthly-saturday,
.sac-monthly-grid-calendar .sac-monthly-grid-table thead th.sac-monthly-sunday {
    background: #f2f2f2 !important;
}

/* Aucun fond spécial dans les cellules samedi/dimanche. */
.sac-monthly-grid-calendar .sac-monthly-grid-table td.sac-monthly-saturday,
.sac-monthly-grid-calendar .sac-monthly-grid-table td.sac-monthly-sunday {
    background: #ffffff !important;
}

/* On conserve seulement la couleur de texte pour distinguer le week-end. */
.sac-monthly-grid-calendar .sac-monthly-grid-table .sac-monthly-saturday,
.sac-monthly-grid-calendar .sac-monthly-grid-table .sac-monthly-saturday .sac-monthly-day-number {
    color: #dc7a00 !important;
}

.sac-monthly-grid-calendar .sac-monthly-grid-table .sac-monthly-sunday,
.sac-monthly-grid-calendar .sac-monthly-grid-table .sac-monthly-sunday .sac-monthly-day-number {
    color: #a94f00 !important;
}

/* Sur grand écran, désactiver "Numéro de semaine" supprime réellement la colonne. */
@media (min-width: 761px) {
    .sac-monthly-grid-calendar.sac-monthly-hide-semaine .sac-monthly-week-head,
    .sac-monthly-grid-calendar.sac-monthly-hide-semaine .sac-monthly-week-number {
        display: none !important;
    }
}

/* ---------- MOBILE : LISTE RESPONSIVE EXISTANTE ---------- */

@media (max-width: 760px) {
    /*
     * Structure :
     * Jour | Date | Détails | n° semaine | Lune | Zones
     * La colonne semaine reste toujours présente pour ne jamais décaler la grille.
     */
    .sac-monthly-grid-calendar .sac-monthly-mobile-list {
        display: block !important;
        width: 100% !important;
        border: 1px solid #b7b7b7 !important;
        box-sizing: border-box !important;
        overflow: hidden !important;
    }

    .sac-monthly-grid-calendar .sac-monthly-mobile-day {
        display: grid !important;
        grid-template-columns:
            28px
            34px
            minmax(0, 1fr)
            28px
            30px
            48px !important;
        align-items: stretch !important;
        min-height: 48px !important;
        border: 0 !important;
        border-bottom: 1px solid #b7b7b7 !important;
        background: #ffffff !important;
        color: #222222;
    }

    .sac-monthly-grid-calendar .sac-monthly-mobile-day:last-child {
        border-bottom: 0 !important;
    }

    /*
     * Suppression de toutes les séparations verticales internes.
     * Le seul contour vertical est le bord externe de .sac-monthly-mobile-list.
     */
    .sac-monthly-grid-calendar .sac-monthly-mobile-day > div {
        border-left: 0 !important;
        border-right: 0 !important;
        box-sizing: border-box !important;
        padding: 5px 3px !important;
        min-width: 0 !important;
        display: flex !important;
        align-items: center !important;
        justify-content: center !important;
    }

    /* Une seule lettre : L M M J V S D */
    .sac-monthly-grid-calendar .sac-monthly-mobile-weekday {
        font-size: 13px !important;
        line-height: 1 !important;
        font-weight: 700 !important;
        text-align: center !important;
    }

    .sac-monthly-grid-calendar .sac-monthly-mobile-date {
        font-size: 16px !important;
        line-height: 1 !important;
        font-weight: 700 !important;
        text-align: center !important;
    }

    /* Détails centrés verticalement dans chaque ligne. */
    .sac-monthly-grid-calendar .sac-monthly-mobile-details {
        display: flex !important;
        flex-direction: column !important;
        align-items: flex-start !important;
        justify-content: center !important;
        padding-top: 6px !important;
        padding-bottom: 6px !important;
        font-size: 11px !important;
        line-height: 1.2 !important;
        text-align: left !important;
    }

    .sac-monthly-grid-calendar .sac-monthly-mobile-week {
        font-size: 12px !important;
        font-style: italic !important;
        font-weight: 600 !important;
        text-align: center !important;
    }

    /* Lune dans une colonne dédiée, immédiatement à droite du numéro de semaine. */
    .sac-monthly-grid-calendar .sac-monthly-mobile-moons {
        margin: 0 !important;
        padding: 4px 1px !important;
        font-size: 15px !important;
        line-height: 1 !important;
        text-align: center !important;
    }

    .sac-monthly-grid-calendar .sac-monthly-mobile-moons .sac-monthly-moon-phase {
        display: inline-flex !important;
        align-items: center !important;
        justify-content: center !important;
        margin: 0 !important;
    }

    .sac-monthly-grid-calendar .sac-monthly-mobile-day > .sac-monthly-school-zones {
        width: auto !important;
        margin: 0 !important;
        padding: 5px 4px !important;
        gap: 3px !important;
        justify-content: flex-end !important;
        align-items: center !important;
    }

    .sac-monthly-grid-calendar .sac-monthly-mobile-day > .sac-monthly-school-zones .sac-monthly-zone-dot {
        width: 8px !important;
        height: 8px !important;
        min-width: 8px !important;
        min-height: 8px !important;
    }

    /* Mobile : pas de fond gris/orange pour samedi ou dimanche. */
    .sac-monthly-grid-calendar .sac-monthly-mobile-day.sac-monthly-saturday,
    .sac-monthly-grid-calendar .sac-monthly-mobile-day.sac-monthly-sunday {
        background: #ffffff !important;
    }

    .sac-monthly-grid-calendar .sac-monthly-mobile-day.sac-monthly-saturday {
        color: #dc7a00 !important;
    }

    .sac-monthly-grid-calendar .sac-monthly-mobile-day.sac-monthly-sunday {
        color: #a94f00 !important;
    }

    /*
     * Mobile : quand "Numéro de semaine" est décoché,
     * le contenu disparaît mais la colonne reste présente.
     */
    .sac-monthly-grid-calendar.sac-monthly-hide-semaine .sac-monthly-mobile-week {
        color: transparent !important;
    }

    /*
     * La lune est gérée indépendamment du n° de semaine :
     * le filtre Cycle lunaire masque seulement son contenu.
     */
    .sac-monthly-grid-calendar.sac-monthly-hide-lunaire .sac-monthly-mobile-moons {
        visibility: hidden !important;
        display: flex !important;
    }
}

@media (max-width: 480px) {
    .sac-monthly-grid-calendar .sac-monthly-mobile-day {
        grid-template-columns:
            24px
            30px
            minmax(0, 1fr)
            25px
            27px
            42px !important;
        min-height: 46px !important;
    }

    .sac-monthly-grid-calendar .sac-monthly-mobile-day > div {
        padding-left: 2px !important;
        padding-right: 2px !important;
    }

    .sac-monthly-grid-calendar .sac-monthly-mobile-weekday {
        font-size: 12px !important;
    }

    .sac-monthly-grid-calendar .sac-monthly-mobile-date {
        font-size: 15px !important;
    }

    .sac-monthly-grid-calendar .sac-monthly-mobile-details {
        font-size: 10px !important;
    }
}


/* =========================================================
   v4.14.5 - calendrier_mensuel_grid / mobile uniquement
========================================================= */

@media (max-width: 760px) {
    /*
     * Alignement à gauche du contenu textuel :
     * Jour + date restent compacts, les événements commencent immédiatement
     * après la colonne date avec un léger espace visuel.
     */
    .sac-monthly-grid-calendar .sac-monthly-mobile-details {
        align-items: flex-start !important;
        justify-content: center !important;
        text-align: left !important;
        padding-left: 6px !important;
        padding-right: 3px !important;
    }

    .sac-monthly-grid-calendar .sac-monthly-mobile-details .sac-monthly-event-text {
        width: 100% !important;
        margin: 0 !important;
        text-align: left !important;
    }

    /*
     * Saint du jour :
     * masqué par l'option Saints sans modifier la largeur ni l'alignement.
     */
    .sac-monthly-grid-calendar.sac-monthly-hide-saints .sac-monthly-event-saint {
        display: none !important;
    }

    /*
     * Samedi : gris clair sur toute la ligne.
     * Dimanche : gris légèrement plus soutenu.
     */
    .sac-monthly-grid-calendar .sac-monthly-mobile-day.sac-monthly-saturday,
    .sac-monthly-grid-calendar .sac-monthly-mobile-day.sac-monthly-saturday > div {
        background: #f3f3f3 !important;
    }

    .sac-monthly-grid-calendar .sac-monthly-mobile-day.sac-monthly-sunday,
    .sac-monthly-grid-calendar .sac-monthly-mobile-day.sac-monthly-sunday > div {
        background: #e5e5e5 !important;
    }

    /*
     * La couleur du texte du week-end reste visible,
     * mais la coloration de fond prime sur les anciens overrides.
     */
    .sac-monthly-grid-calendar .sac-monthly-mobile-day.sac-monthly-saturday {
        color: #dc7a00 !important;
    }

    .sac-monthly-grid-calendar .sac-monthly-mobile-day.sac-monthly-sunday {
        color: #a94f00 !important;
    }

    /*
     * Les événements fériés gardent leur rouge prioritaire
     * même sur les lignes de week-end.
     */
    .sac-monthly-grid-calendar .sac-monthly-mobile-day .sac-monthly-event-public {
        color: #c00000 !important;
        font-weight: 700 !important;
    }
}


/* v4.14.6 - Saints plus lisibles sur mobile */
@media (max-width: 760px) {
    .sac-monthly-grid-calendar .sac-monthly-event-saint {
        font-size: 12px !important;
        line-height: 1.25 !important;
        font-weight: 600 !important;
    }
}

@media (max-width: 480px) {
    .sac-monthly-grid-calendar .sac-monthly-event-saint {
        font-size: 11px !important;
    }
}


/* =========================================================
   v4.14.7 - Option Saints uniquement en mobile/responsive
========================================================= */

.sac-monthly-grid-calendar .sac-monthly-saints-mobile-option {
    display: none !important;
}

@media (max-width: 760px) {
    .sac-monthly-grid-calendar .sac-monthly-saints-mobile-option {
        display: flex !important;
    }

    .sac-monthly-grid-calendar.sac-monthly-hide-saints .sac-monthly-event-saint {
        display: none !important;
    }
}


/* =========================================================
   v4.14.8 - Fallback Saints + bascule responsive avant débordement
========================================================= */

/* Le saint de secours n'est visible que lorsque JS confirme
   qu'aucun Férié / Autre fête actuellement affiché ne le remplace. */
.sac-monthly-grid-calendar .sac-monthly-event-saint-fallback {
    display: none;
}

/*
 * Mode mobile forcé selon la largeur RÉELLE du bloc calendrier,
 * pas seulement selon la largeur de la fenêtre.
 * Ceci évite le débordement lorsque le shortcode se trouve
 * dans une colonne de contenu étroite.
 */
.sac-monthly-grid-calendar.sac-monthly-force-mobile .sac-monthly-grid-wrap {
    display: none !important;
}

.sac-monthly-grid-calendar.sac-monthly-force-mobile .sac-monthly-mobile-list {
    display: block !important;
    width: 100% !important;
    border: 1px solid #b7b7b7 !important;
    box-sizing: border-box !important;
    overflow: hidden !important;
}

.sac-monthly-grid-calendar.sac-monthly-force-mobile .sac-monthly-saints-mobile-option {
    display: flex !important;
}

/* La mise en page forcée reprend les dimensions de la vue responsive. */
.sac-monthly-grid-calendar.sac-monthly-force-mobile .sac-monthly-mobile-day {
    display: grid !important;
    grid-template-columns:
        28px
        34px
        minmax(0, 1fr)
        28px
        30px
        48px !important;
    align-items: stretch !important;
    min-height: 48px !important;
    border: 0 !important;
    border-bottom: 1px solid #b7b7b7 !important;
    background: #ffffff !important;
    color: #222222;
}

.sac-monthly-grid-calendar.sac-monthly-force-mobile .sac-monthly-mobile-day:last-child {
    border-bottom: 0 !important;
}

.sac-monthly-grid-calendar.sac-monthly-force-mobile .sac-monthly-mobile-day > div {
    border-left: 0 !important;
    border-right: 0 !important;
    box-sizing: border-box !important;
    padding: 5px 3px !important;
    min-width: 0 !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
}

.sac-monthly-grid-calendar.sac-monthly-force-mobile .sac-monthly-mobile-weekday {
    font-size: 13px !important;
    line-height: 1 !important;
    font-weight: 700 !important;
    text-align: center !important;
}

.sac-monthly-grid-calendar.sac-monthly-force-mobile .sac-monthly-mobile-date {
    font-size: 16px !important;
    line-height: 1 !important;
    font-weight: 700 !important;
    text-align: center !important;
}

.sac-monthly-grid-calendar.sac-monthly-force-mobile .sac-monthly-mobile-details {
    display: flex !important;
    flex-direction: column !important;
    align-items: flex-start !important;
    justify-content: center !important;
    padding: 6px 3px 6px 6px !important;
    font-size: 11px !important;
    line-height: 1.2 !important;
    text-align: left !important;
}

.sac-monthly-grid-calendar.sac-monthly-force-mobile .sac-monthly-mobile-details .sac-monthly-event-text {
    width: 100% !important;
    margin: 0 !important;
    text-align: left !important;
}

.sac-monthly-grid-calendar.sac-monthly-force-mobile .sac-monthly-mobile-week {
    font-size: 12px !important;
    font-style: italic !important;
    font-weight: 600 !important;
    text-align: center !important;
}

.sac-monthly-grid-calendar.sac-monthly-force-mobile .sac-monthly-mobile-moons {
    margin: 0 !important;
    padding: 4px 1px !important;
    font-size: 15px !important;
    line-height: 1 !important;
    text-align: center !important;
}

.sac-monthly-grid-calendar.sac-monthly-force-mobile .sac-monthly-mobile-day > .sac-monthly-school-zones {
    width: auto !important;
    margin: 0 !important;
    padding: 5px 4px !important;
    gap: 3px !important;
    justify-content: flex-end !important;
    align-items: center !important;
}

.sac-monthly-grid-calendar.sac-monthly-force-mobile .sac-monthly-event-saint {
    font-size: 12px !important;
    line-height: 1.25 !important;
    font-weight: 600 !important;
}

.sac-monthly-grid-calendar.sac-monthly-force-mobile .sac-monthly-mobile-day.sac-monthly-saturday,
.sac-monthly-grid-calendar.sac-monthly-force-mobile .sac-monthly-mobile-day.sac-monthly-saturday > div {
    background: #f3f3f3 !important;
}

.sac-monthly-grid-calendar.sac-monthly-force-mobile .sac-monthly-mobile-day.sac-monthly-sunday,
.sac-monthly-grid-calendar.sac-monthly-force-mobile .sac-monthly-mobile-day.sac-monthly-sunday > div {
    background: #e5e5e5 !important;
}

.sac-monthly-grid-calendar.sac-monthly-force-mobile.sac-monthly-hide-semaine .sac-monthly-mobile-week {
    color: transparent !important;
}

.sac-monthly-grid-calendar.sac-monthly-force-mobile.sac-monthly-hide-lunaire .sac-monthly-mobile-moons {
    visibility: hidden !important;
    display: flex !important;
}

.sac-monthly-grid-calendar.sac-monthly-force-mobile.sac-monthly-hide-saints .sac-monthly-event-saint {
    display: none !important;
}

/* Écran très étroit : encore plus compact. */
@media (max-width: 480px) {
    .sac-monthly-grid-calendar.sac-monthly-force-mobile .sac-monthly-mobile-day {
        grid-template-columns:
            24px
            30px
            minmax(0, 1fr)
            25px
            27px
            42px !important;
    }
}


/* =========================================================
   v4.14.9 - Options synchronisées avec le responsive réel
   du calendrier mensuel
========================================================= */

/*
 * Lorsque le calendrier passe en mode mobile via ResizeObserver
 * (.sac-monthly-force-mobile), le panneau Options suit exactement
 * le même mode, indépendamment de la largeur globale du viewport.
 */

/* Layout mobile des Options forcé par la largeur réelle du bloc. */
.sac-monthly-grid-calendar.sac-monthly-force-mobile
.sac-monthly-options-grid {
    display: grid !important;
    grid-template-columns: 1fr !important;
    gap: 10px !important;
}

/* Navigation mois/année en première position. */
.sac-monthly-grid-calendar.sac-monthly-force-mobile
.sac-monthly-options-year {
    grid-column: 1 !important;
    grid-row: 1 !important;
    width: 100% !important;
}

/* Contenu en deuxième position. */
.sac-monthly-grid-calendar.sac-monthly-force-mobile
.sac-monthly-options-content {
    grid-column: 1 !important;
    grid-row: 2 !important;
    width: 100% !important;
}

/* Vacances scolaires en troisième position. */
.sac-monthly-grid-calendar.sac-monthly-force-mobile
.sac-monthly-options-school {
    grid-column: 1 !important;
    grid-row: 3 !important;
    width: 100% !important;
}

/* Uniformiser les blocs Options en mode mobile forcé. */
.sac-monthly-grid-calendar.sac-monthly-force-mobile
.sac-monthly-options-col {
    min-width: 0 !important;
    box-sizing: border-box !important;
}

/* Navigation compacte et sans débordement. */
.sac-monthly-grid-calendar.sac-monthly-force-mobile
.sac-monthly-month-nav {
    width: 100% !important;
    display: grid !important;
    grid-template-columns: auto minmax(0, 1fr) minmax(0, 1fr) auto !important;
    align-items: center !important;
    gap: 6px !important;
}

.sac-monthly-grid-calendar.sac-monthly-force-mobile
.sac-monthly-month-select,
.sac-monthly-grid-calendar.sac-monthly-force-mobile
.sac-monthly-year-select {
    width: 100% !important;
    min-width: 0 !important;
    max-width: 100% !important;
}

/* Le bouton de retour au mois actuel prend toute la largeur utile. */
.sac-monthly-grid-calendar.sac-monthly-force-mobile
.sac-monthly-return-wrap,
.sac-monthly-grid-calendar.sac-monthly-force-mobile
.sac-return-current-month {
    width: 100% !important;
    box-sizing: border-box !important;
}

/*
 * L'option Saints doit être visible dès que le calendrier lui-même
 * est en mode mobile, même si le viewport est supérieur à 760px.
 */
.sac-monthly-grid-calendar.sac-monthly-force-mobile
.sac-monthly-saints-mobile-option {
    display: flex !important;
}


/* =========================================================
   v4.15.0 - Options Vacances scolaires par mois
========================================================= */

/*
 * Le troisième bloc reste toujours présent.
 * S'il n'y a aucune vacance scolaire dans le mois affiché,
 * le titre + Zone A/B/C ne sont pas générés, mais le bloc vide
 * conserve sa place pour les futurs boutons PDF/JPG.
 */
.sac-monthly-grid-calendar .sac-monthly-options-school {
    position: relative;
    box-sizing: border-box !important;
}

.sac-monthly-grid-calendar .sac-monthly-options-school-empty {
    min-height: 72px;
}

.sac-monthly-grid-calendar .sac-monthly-export-placeholder {
    width: 100%;
    min-height: 1px;
}

/* En responsive, conserver également le bloc vide à sa position. */
@media (max-width: 760px) {
    .sac-monthly-grid-calendar .sac-monthly-options-school-empty {
        min-height: 56px;
    }
}

.sac-monthly-grid-calendar.sac-monthly-force-mobile
.sac-monthly-options-school-empty {
    min-height: 56px;
}


/* =========================================================
   v4.15.1 - Disponibilité Zone A/B/C par mois
========================================================= */

.sac-monthly-grid-calendar .sac-monthly-zone-filter-disabled {
    opacity: 0.38 !important;
    cursor: not-allowed !important;
}

.sac-monthly-grid-calendar .sac-monthly-zone-filter-disabled input[type="checkbox"] {
    cursor: not-allowed !important;
}

.sac-monthly-grid-calendar .sac-monthly-zone-filter-disabled span {
    color: #777 !important;
}


/* =========================================================
   v4.15.2 - Espacement harmonisé Zone A / B / C
========================================================= */

/* Conteneur des filtres scolaires : espacement vertical régulier. */
.sac-monthly-grid-calendar .sac-monthly-school-filter-content {
    display: flex !important;
    flex-direction: column !important;
    gap: 8px !important;
}

/* Laisser un peu d'air sous le sous-titre. */
.sac-monthly-grid-calendar
.sac-monthly-school-filter-content
.sac-annual-options-subtitle {
    margin-bottom: 2px !important;
}

/* Chaque ligne Zone devient un petit bloc bien aligné. */
.sac-monthly-grid-calendar .sac-monthly-zone-filter-item {
    display: flex !important;
    align-items: center !important;
    gap: 8px !important;
    width: 100% !important;
    min-height: 30px !important;
    margin: 0 !important;
    padding: 4px 6px !important;
    box-sizing: border-box !important;
    border-radius: 4px !important;
}

/* Checkbox alignée et taille stable. */
.sac-monthly-grid-calendar
.sac-monthly-zone-filter-item
input[type="checkbox"] {
    flex: 0 0 auto !important;
    margin: 0 !important;
}

/* Libellé aligné proprement. */
.sac-monthly-grid-calendar
.sac-monthly-zone-filter-item
span {
    display: inline-flex !important;
    align-items: center !important;
    min-height: 20px !important;
    line-height: 1.2 !important;
}

/* En mobile / responsive forcé, garder le même rythme. */
@media (max-width: 760px) {
    .sac-monthly-grid-calendar .sac-monthly-school-filter-content {
        gap: 7px !important;
    }

    .sac-monthly-grid-calendar .sac-monthly-zone-filter-item {
        min-height: 32px !important;
        padding: 5px 6px !important;
    }
}

.sac-monthly-grid-calendar.sac-monthly-force-mobile
.sac-monthly-school-filter-content {
    gap: 7px !important;
}

.sac-monthly-grid-calendar.sac-monthly-force-mobile
.sac-monthly-zone-filter-item {
    min-height: 32px !important;
    padding: 5px 6px !important;
}


/* =========================================================
   v4.15.3 - Ajustement automatique du texte mobile
========================================================= */

/*
 * Saints + jours fériés + autres fêtes :
 * même taille de base. On tente d'abord sur une seule ligne.
 * JS réduit progressivement jusqu'à 10px uniquement si nécessaire.
 * À 10px, si le texte déborde encore, la ligne peut se couper.
 */
@media (max-width: 760px) {
    .sac-monthly-grid-calendar
    .sac-monthly-mobile-details
    .sac-monthly-event-text {
        font-size: 12px !important;
        line-height: 1.25 !important;
        font-weight: 600 !important;
        white-space: nowrap !important;
        overflow: visible !important;
        text-overflow: clip !important;
        max-width: 100% !important;
        word-break: normal !important;
        overflow-wrap: normal !important;
    }

    .sac-monthly-grid-calendar
    .sac-monthly-mobile-details
    .sac-monthly-event-text.sac-monthly-event-wrap {
        white-space: normal !important;
        word-break: normal !important;
        overflow-wrap: break-word !important;
    }
}

.sac-monthly-grid-calendar.sac-monthly-force-mobile
.sac-monthly-mobile-details
.sac-monthly-event-text {
    font-size: 12px !important;
    line-height: 1.25 !important;
    font-weight: 600 !important;
    white-space: nowrap !important;
    overflow: visible !important;
    text-overflow: clip !important;
    max-width: 100% !important;
    word-break: normal !important;
    overflow-wrap: normal !important;
}

.sac-monthly-grid-calendar.sac-monthly-force-mobile
.sac-monthly-mobile-details
.sac-monthly-event-text.sac-monthly-event-wrap {
    white-space: normal !important;
    word-break: normal !important;
    overflow-wrap: break-word !important;
}

/* Écrans très étroits : vẫn giữ cùng cỡ cơ sở, chỉ JS mới được phép thu nhỏ. */
@media (max-width: 480px) {
    .sac-monthly-grid-calendar
    .sac-monthly-mobile-details
    .sac-monthly-event-text {
        font-size: 12px !important;
    }
}


/* =========================================================
   v4.15.4 - Zone A/B/C horizontal + fallback Saints fiable
========================================================= */

.sac-monthly-grid-calendar .sac-monthly-zone-filter-row {
    display: grid !important;
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
    gap: 8px !important;
    width: 100% !important;
    align-items: stretch !important;
}

.sac-monthly-grid-calendar
.sac-monthly-zone-filter-row
.sac-monthly-zone-filter-item {
    width: 100% !important;
    min-width: 0 !important;
    justify-content: center !important;
    padding: 5px 4px !important;
    text-align: center !important;
}

.sac-monthly-grid-calendar
.sac-monthly-zone-filter-row
.sac-monthly-zone-filter-item span {
    justify-content: center !important;
    white-space: nowrap !important;
}

@media (max-width: 480px) {
    .sac-monthly-grid-calendar .sac-monthly-zone-filter-row {
        gap: 5px !important;
    }

    .sac-monthly-grid-calendar
    .sac-monthly-zone-filter-row
    .sac-monthly-zone-filter-item {
        padding: 5px 2px !important;
    }
}


/* =========================================================
   v4.15.5 - Desktop Grid View / List View toggle
========================================================= */

/* Bouton placé dans le bloc Options d'affichage. */
.sac-monthly-grid-calendar .sac-monthly-view-toggle-wrap {
    margin-top: 10px !important;
    width: 100% !important;
}

.sac-monthly-grid-calendar .sac-monthly-view-toggle {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 100% !important;
    min-height: 34px !important;
    padding: 7px 10px !important;
    box-sizing: border-box !important;
    border: 1px solid #b7b7b7 !important;
    border-radius: 4px !important;
    background: #ffffff !important;
    color: #222222 !important;
    font-size: 12px !important;
    line-height: 1.25 !important;
    font-weight: 600 !important;
    text-align: center !important;
    cursor: pointer !important;
}

.sac-monthly-grid-calendar .sac-monthly-view-toggle:hover,
.sac-monthly-grid-calendar .sac-monthly-view-toggle:focus {
    background: #f3f3f3 !important;
}

/*
 * Responsive réel : la List View est obligatoire, donc pas de bouton.
 */
@media (max-width: 760px) {
    .sac-monthly-grid-calendar .sac-monthly-view-toggle-wrap {
        display: none !important;
    }
}

.sac-monthly-grid-calendar.sac-monthly-force-mobile
.sac-monthly-view-toggle-wrap {
    display: none !important;
}

/*
 * Desktop List View manuelle :
 * on masque la grille mensuelle et on affiche exactement la liste verticale.
 * Le panneau Options garde cependant sa disposition desktop.
 */
.sac-monthly-grid-calendar.sac-monthly-manual-list-view
.sac-monthly-grid-wrap {
    display: none !important;
}

.sac-monthly-grid-calendar.sac-monthly-manual-list-view
.sac-monthly-mobile-list {
    display: block !important;
    width: 100% !important;
    border: 1px solid #b7b7b7 !important;
    box-sizing: border-box !important;
    overflow: hidden !important;
}

.sac-monthly-grid-calendar.sac-monthly-manual-list-view
.sac-monthly-mobile-day {
    display: grid !important;
    grid-template-columns:
        28px
        34px
        minmax(0, 1fr)
        28px
        30px
        48px !important;
    align-items: stretch !important;
    min-height: 48px !important;
    border: 0 !important;
    border-bottom: 1px solid #b7b7b7 !important;
    background: #ffffff !important;
    color: #222222;
}

.sac-monthly-grid-calendar.sac-monthly-manual-list-view
.sac-monthly-mobile-day:last-child {
    border-bottom: 0 !important;
}

.sac-monthly-grid-calendar.sac-monthly-manual-list-view
.sac-monthly-mobile-day > div {
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    min-width: 0 !important;
    box-sizing: border-box !important;
    padding: 5px 3px !important;
    border-left: 0 !important;
    border-right: 0 !important;
}

.sac-monthly-grid-calendar.sac-monthly-manual-list-view
.sac-monthly-mobile-weekday {
    font-size: 13px !important;
    line-height: 1 !important;
    font-weight: 700 !important;
    text-align: center !important;
}

.sac-monthly-grid-calendar.sac-monthly-manual-list-view
.sac-monthly-mobile-date {
    font-size: 16px !important;
    line-height: 1 !important;
    font-weight: 700 !important;
    text-align: center !important;
}

.sac-monthly-grid-calendar.sac-monthly-manual-list-view
.sac-monthly-mobile-details {
    display: flex !important;
    flex-direction: column !important;
    align-items: flex-start !important;
    justify-content: center !important;
    padding: 6px 3px 6px 6px !important;
    font-size: 11px !important;
    line-height: 1.2 !important;
    text-align: left !important;
}

.sac-monthly-grid-calendar.sac-monthly-manual-list-view
.sac-monthly-mobile-details
.sac-monthly-event-text {
    width: 100% !important;
    margin: 0 !important;
    text-align: left !important;
}

.sac-monthly-grid-calendar.sac-monthly-manual-list-view
.sac-monthly-mobile-week {
    font-size: 12px !important;
    font-style: italic !important;
    font-weight: 600 !important;
    text-align: center !important;
}

.sac-monthly-grid-calendar.sac-monthly-manual-list-view
.sac-monthly-mobile-moons {
    margin: 0 !important;
    padding: 4px 1px !important;
    font-size: 15px !important;
    line-height: 1 !important;
    text-align: center !important;
}

.sac-monthly-grid-calendar.sac-monthly-manual-list-view
.sac-monthly-mobile-day > .sac-monthly-school-zones {
    width: auto !important;
    margin: 0 !important;
    padding: 5px 4px !important;
    gap: 3px !important;
    justify-content: flex-end !important;
    align-items: center !important;
}

.sac-monthly-grid-calendar.sac-monthly-manual-list-view
.sac-monthly-mobile-day.sac-monthly-saturday,
.sac-monthly-grid-calendar.sac-monthly-manual-list-view
.sac-monthly-mobile-day.sac-monthly-saturday > div {
    background: #f3f3f3 !important;
}

.sac-monthly-grid-calendar.sac-monthly-manual-list-view
.sac-monthly-mobile-day.sac-monthly-sunday,
.sac-monthly-grid-calendar.sac-monthly-manual-list-view
.sac-monthly-mobile-day.sac-monthly-sunday > div {
    background: #e5e5e5 !important;
}

.sac-monthly-grid-calendar.sac-monthly-manual-list-view.sac-monthly-hide-semaine
.sac-monthly-mobile-week {
    color: transparent !important;
}

.sac-monthly-grid-calendar.sac-monthly-manual-list-view.sac-monthly-hide-lunaire
.sac-monthly-mobile-moons {
    visibility: hidden !important;
    display: flex !important;
}

.sac-monthly-grid-calendar.sac-monthly-manual-list-view.sac-monthly-hide-saints
.sac-monthly-event-saint {
    display: none !important;
}

/*
 * En List View desktop, afficher l'option Saints car les saints
 * deviennent alors visibles dans le calendrier.
 */
.sac-monthly-grid-calendar.sac-monthly-manual-list-view
.sac-monthly-saints-mobile-option {
    display: flex !important;
}


/* =========================================================
   v4.15.6 - Sélecteur de vue au-dessus du titre mensuel
========================================================= */

.sac-monthly-grid-calendar > .sac-monthly-view-toggle-wrap {
    display: flex !important;
    justify-content: center !important;
    width: 100% !important;
    margin: 4px 0 10px !important;
}

.sac-monthly-grid-calendar > .sac-monthly-view-toggle-wrap
.sac-monthly-view-toggle {
    width: auto !important;
    min-width: 190px !important;
    max-width: 100% !important;
    padding-left: 14px !important;
    padding-right: 14px !important;
}

/* En responsive réel, la List View reste imposée : masquer le sélecteur. */
@media (max-width: 760px) {
    .sac-monthly-grid-calendar > .sac-monthly-view-toggle-wrap {
        display: none !important;
    }
}

.sac-monthly-grid-calendar.sac-monthly-force-mobile
> .sac-monthly-view-toggle-wrap {
    display: none !important;
}


/* =========================================================
   v4.16.0 - Export mensuel PDF/JPG
========================================================= */
.sac-monthly-grid-calendar .sac-monthly-export-actions{
    display:flex!important;justify-content:center!important;align-items:center!important;
    gap:10px!important;flex-wrap:wrap!important;width:100%!important;margin-top:12px!important
}
.sac-monthly-grid-calendar .sac-monthly-open-export{
    display:inline-flex!important;align-items:center!important;justify-content:center!important;
    gap:7px!important;min-width:138px!important;padding:8px 12px!important;border:1px solid #b7b7b7!important;
    border-radius:4px!important;background:#fff!important;color:#222!important;font-size:12px!important;
    font-weight:600!important;cursor:pointer!important
}
.sac-monthly-grid-calendar .sac-monthly-open-export:hover{background:#f3f3f3!important}
.sac-monthly-export-badge{display:inline-flex!important;align-items:center!important;justify-content:center!important;
    min-width:30px!important;height:22px!important;padding:0 4px!important;border-radius:3px!important;
    background:#f0f0f0!important;font-size:10px!important;font-weight:800!important}

.sac-monthly-export-modal[hidden]{display:none!important}
.sac-monthly-export-modal{position:fixed!important;inset:0!important;z-index:999999!important;display:flex!important;
    align-items:center!important;justify-content:center!important;padding:18px!important;box-sizing:border-box!important}
.sac-monthly-export-backdrop{position:absolute!important;inset:0!important;background:rgba(0,0,0,.48)!important}
.sac-monthly-export-dialog{position:relative!important;z-index:1!important;width:min(620px,100%)!important;max-height:90vh!important;
    overflow:auto!important;background:#fff!important;border-radius:8px!important;padding:20px!important;box-shadow:0 12px 36px rgba(0,0,0,.24)!important}
.sac-monthly-export-close{position:absolute!important;right:10px!important;top:8px!important;border:0!important;background:transparent!important;
    font-size:26px!important;line-height:1!important;cursor:pointer!important;color:#444!important}
.sac-monthly-export-title{text-align:center!important;margin:0 36px 16px!important;font-size:20px!important}
.sac-monthly-export-view-choice,.sac-monthly-export-orientation{display:flex!important;justify-content:center!important;gap:18px!important;
    flex-wrap:wrap!important;margin:10px 0!important}
.sac-monthly-export-view-choice label,.sac-monthly-export-orientation label{display:inline-flex!important;align-items:center!important;gap:6px!important;cursor:pointer!important}
.sac-monthly-export-subtitle{width:100%!important;text-align:center!important;font-weight:700!important;margin-bottom:2px!important}
.sac-monthly-export-description{text-align:center!important;font-size:13px!important;color:#555!important;margin:12px 0 8px!important}
.sac-monthly-export-preview{display:flex!important;justify-content:center!important;align-items:center!important;min-height:220px!important;
    padding:14px!important;background:#f5f5f5!important;border:1px solid #ddd!important;border-radius:5px!important;box-sizing:border-box!important}
.sac-monthly-export-paper{background:#fff!important;border:1px solid #aaa!important;box-shadow:0 2px 8px rgba(0,0,0,.1)!important;padding:9px!important;box-sizing:border-box!important}
.sac-monthly-export-paper.is-portrait{width:155px!important;height:219px!important}
.sac-monthly-export-paper.is-landscape{width:219px!important;height:155px!important}
.sac-monthly-preview-title{height:8px!important;width:60%!important;background:#cfcfcf!important;margin:0 auto 7px!important;border-radius:2px!important}
.sac-monthly-preview-grid{display:grid!important;grid-template-columns:repeat(7,1fr)!important;gap:2px!important;height:calc(100% - 18px)!important}
.sac-monthly-preview-grid span{border:1px solid #d6d6d6!important;min-height:12px!important;background:#fff!important}
.sac-monthly-preview-list{display:flex!important;flex-direction:column!important;gap:2px!important;height:calc(100% - 18px)!important}
.sac-monthly-preview-list span{display:block!important;border-bottom:1px solid #ddd!important;flex:1!important;min-height:3px!important}
.sac-monthly-export-confirm-wrap{text-align:center!important;margin-top:14px!important}
.sac-monthly-export-confirm{min-width:190px!important;padding:9px 16px!important;border:0!important;border-radius:4px!important;
    background:#2F75B5!important;color:#fff!important;font-weight:700!important;cursor:pointer!important}
@media(max-width:760px){
 .sac-monthly-grid-calendar .sac-monthly-export-actions{gap:8px!important}
 .sac-monthly-grid-calendar .sac-monthly-open-export{flex:1 1 135px!important;min-width:0!important}
 .sac-monthly-export-dialog{padding:18px 14px!important}
}


/* =========================================================
   v4.16.1 - Harmonisation Options mensuelles + export
========================================================= */

.sac-monthly-grid-calendar .sac-monthly-options-school {
    display: flex !important;
    flex-direction: column !important;
    align-items: stretch !important;
    justify-content: flex-start !important;
    gap: 10px !important;
    min-width: 0 !important;
}

.sac-monthly-grid-calendar .sac-monthly-school-filter-content {
    width: 100% !important;
    display: flex !important;
    flex-direction: column !important;
    align-items: stretch !important;
    gap: 8px !important;
    box-sizing: border-box !important;
}

.sac-monthly-grid-calendar .sac-monthly-school-filter-content
.sac-annual-options-subtitle {
    width: 100% !important;
    margin: 0 0 4px !important;
    text-align: center !important;
    font-weight: 700 !important;
}

.sac-monthly-grid-calendar .sac-monthly-zone-filter-row {
    width: 100% !important;
    display: grid !important;
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
    align-items: stretch !important;
    gap: 8px !important;
    box-sizing: border-box !important;
}

.sac-monthly-grid-calendar .sac-monthly-zone-filter-row
.sac-monthly-zone-filter-item {
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 100% !important;
    min-width: 0 !important;
    min-height: 34px !important;
    margin: 0 !important;
    padding: 6px 4px !important;
    box-sizing: border-box !important;
    text-align: center !important;
}

.sac-monthly-grid-calendar .sac-monthly-export-actions {
    width: 100% !important;
    display: grid !important;
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: 8px !important;
    margin: 2px 0 0 !important;
    padding: 0 !important;
    box-sizing: border-box !important;
}

.sac-monthly-grid-calendar .sac-monthly-open-export {
    width: 100% !important;
    min-width: 0 !important;
    min-height: 36px !important;
    margin: 0 !important;
    padding: 7px 8px !important;
    box-sizing: border-box !important;
    white-space: nowrap !important;
}

.sac-monthly-grid-calendar .sac-monthly-options-school-empty {
    min-height: 72px !important;
}

.sac-monthly-grid-calendar .sac-monthly-options-school-empty
.sac-monthly-export-actions {
    margin-top: auto !important;
}

@media (max-width: 760px) {
    .sac-monthly-grid-calendar .sac-monthly-zone-filter-row {
        gap: 6px !important;
    }

    .sac-monthly-grid-calendar .sac-monthly-export-actions {
        grid-template-columns: 1fr 1fr !important;
        gap: 6px !important;
    }

    .sac-monthly-grid-calendar .sac-monthly-open-export {
        font-size: 11px !important;
        padding: 7px 5px !important;
    }
}

.sac-monthly-grid-calendar.sac-monthly-force-mobile
.sac-monthly-zone-filter-row {
    gap: 6px !important;
}

.sac-monthly-grid-calendar.sac-monthly-force-mobile
.sac-monthly-export-actions {
    grid-template-columns: 1fr 1fr !important;
    gap: 6px !important;
}


/* =========================================================
   v4.16.2 - Couleurs export + modal
========================================================= */

.sac-monthly-grid-calendar .sac-monthly-open-export-pdf {
    border-color: #c62828 !important;
    background: #c62828 !important;
    color: #ffffff !important;
}

.sac-monthly-grid-calendar .sac-monthly-open-export-pdf:hover {
    background: #a91f1f !important;
}

.sac-monthly-grid-calendar .sac-monthly-open-export-jpg {
    border-color: #2f75b5 !important;
    background: #2f75b5 !important;
    color: #ffffff !important;
}

.sac-monthly-grid-calendar .sac-monthly-open-export-jpg:hover {
    background: #245f93 !important;
}

.sac-monthly-grid-calendar .sac-monthly-open-export-pdf .sac-monthly-export-badge,
.sac-monthly-grid-calendar .sac-monthly-open-export-jpg .sac-monthly-export-badge {
    background: rgba(255,255,255,.18) !important;
    color: #ffffff !important;
}

.sac-monthly-export-orientation[hidden] {
    display: none !important;
}


/* =========================================================
   v4.16.3 - Boutons export : couleur uniquement sur le badge
========================================================= */

.sac-monthly-grid-calendar .sac-monthly-open-export-pdf,
.sac-monthly-grid-calendar .sac-monthly-open-export-jpg {
    border-color: #b7b7b7 !important;
    background: #ffffff !important;
    color: #222222 !important;
}

.sac-monthly-grid-calendar .sac-monthly-open-export-pdf:hover,
.sac-monthly-grid-calendar .sac-monthly-open-export-jpg:hover {
    background: #f3f3f3 !important;
}

.sac-monthly-grid-calendar .sac-monthly-open-export-pdf .sac-monthly-export-badge {
    background: #c62828 !important;
    color: #ffffff !important;
}

.sac-monthly-grid-calendar .sac-monthly-open-export-jpg .sac-monthly-export-badge {
    background: #2f75b5 !important;
    color: #ffffff !important;
}


/* =========================================================
   v4.16.8 - Responsive export buttons + Numéro de semaine
========================================================= */

.sac-monthly-grid-calendar .sac-monthly-open-export {
    white-space: normal !important;
    line-height: 1.2 !important;
    overflow-wrap: anywhere !important;
    word-break: normal !important;
    text-align: center !important;
}

.sac-monthly-grid-calendar .sac-monthly-open-export > span:last-child {
    min-width: 0 !important;
    white-space: normal !important;
    overflow-wrap: anywhere !important;
}

.sac-monthly-grid-calendar .sac-monthly-export-badge {
    flex: 0 0 auto !important;
}

.sac-monthly-grid-calendar .sac-monthly-filter-item,
.sac-monthly-grid-calendar .sac-annual-option-item,
.sac-monthly-grid-calendar label:has(.sac-monthly-filter-checkbox) {
    min-width: 0 !important;
}

.sac-monthly-grid-calendar label:has(.sac-monthly-filter-checkbox) {
    white-space: normal !important;
    line-height: 1.2 !important;
    align-items: flex-start !important;
}

.sac-monthly-grid-calendar label:has(.sac-monthly-filter-checkbox) span,
.sac-monthly-grid-calendar .sac-monthly-filter-label {
    min-width: 0 !important;
    white-space: normal !important;
    overflow-wrap: anywhere !important;
}

/* Khi khung thật sự hẹp, ưu tiên giữ text nút và bỏ badge PDF/JPG. */
@media (max-width: 520px) {
    .sac-monthly-grid-calendar .sac-monthly-export-badge {
        display: none !important;
    }

    .sac-monthly-grid-calendar .sac-monthly-open-export {
        padding-left: 6px !important;
        padding-right: 6px !important;
        min-height: 42px !important;
    }
}

/* Cũng áp dụng khi shortcode bị ép vào container hẹp dù viewport lớn. */
.sac-monthly-grid-calendar.sac-monthly-force-mobile .sac-monthly-open-export {
    white-space: normal !important;
    min-height: 42px !important;
}

.sac-monthly-grid-calendar.sac-monthly-force-mobile
.sac-monthly-open-export > span:last-child {
    white-space: normal !important;
}


/* v4.16.9 - Couleur de bordure lorsque les badges PDF/JPG sont masqués */
@media (max-width: 520px) {
    .sac-monthly-grid-calendar .sac-monthly-open-export-pdf {
        border: 2px solid #c62828 !important;
    }

    .sac-monthly-grid-calendar .sac-monthly-open-export-jpg {
        border: 2px solid #2f75b5 !important;
    }
}


/* =========================================================
   v4.17.1 - Alignement global des zones mensuelles (web)
   Chaque ligne conserve exactement les mêmes emplacements A/B/C.
   Quand une zone est masquée, son emplacement disparaît sur TOUTES
   les lignes, y compris celles où cette zone était déjà vide.
========================================================= */

.sac-monthly-grid-calendar .sac-monthly-school-zones {
    display: grid !important;
    grid-template-columns: repeat(3, 10px) !important;
    justify-content: end !important;
    align-items: center !important;
    column-gap: 3px !important;
}

/* Les placeholders vides gardent leur emplacement tant que la zone est active. */
.sac-monthly-grid-calendar .sac-monthly-zone-empty {
    visibility: hidden !important;
    display: inline-block !important;
}

/* Masquage global : retire le même slot sur toutes les lignes. */
.sac-monthly-grid-calendar.sac-monthly-hide-zone-a .sac-monthly-zone-a,
.sac-monthly-grid-calendar.sac-monthly-hide-zone-b .sac-monthly-zone-b,
.sac-monthly-grid-calendar.sac-monthly-hide-zone-c .sac-monthly-zone-c {
    display: none !important;
}

/* Recalcul du nombre de colonnes visibles afin que le groupe se tasse
   uniformément vers la droite sans dépendre des vacances du jour. */
.sac-monthly-grid-calendar.sac-monthly-hide-zone-a .sac-monthly-school-zones,
.sac-monthly-grid-calendar.sac-monthly-hide-zone-b .sac-monthly-school-zones,
.sac-monthly-grid-calendar.sac-monthly-hide-zone-c .sac-monthly-school-zones {
    grid-template-columns: repeat(2, 10px) !important;
}

.sac-monthly-grid-calendar.sac-monthly-hide-zone-a.sac-monthly-hide-zone-b .sac-monthly-school-zones,
.sac-monthly-grid-calendar.sac-monthly-hide-zone-a.sac-monthly-hide-zone-c .sac-monthly-school-zones,
.sac-monthly-grid-calendar.sac-monthly-hide-zone-b.sac-monthly-hide-zone-c .sac-monthly-school-zones {
    grid-template-columns: 10px !important;
}

.sac-monthly-grid-calendar.sac-monthly-hide-zone-a.sac-monthly-hide-zone-b.sac-monthly-hide-zone-c .sac-monthly-school-zones {
    grid-template-columns: 0 !important;
    column-gap: 0 !important;
}


/* =========================================================
   v4.17.5 - Compactage horizontal selon les Zones actives
   Vue liste web : la dernière colonne (Zones) se réduit globalement.
   Les colonnes Semaine et Lune se déplacent alors vers la droite.
========================================================= */

/* Base List View: 3 zones visibles = 48px */
.sac-monthly-grid-calendar .sac-monthly-mobile-day {
    grid-template-columns:
        28px
        34px
        minmax(0, 1fr)
        28px
        30px
        48px !important;
}

/* 1 zone masquée = 2 slots */
.sac-monthly-grid-calendar.sac-monthly-hide-zone-a .sac-monthly-mobile-day,
.sac-monthly-grid-calendar.sac-monthly-hide-zone-b .sac-monthly-mobile-day,
.sac-monthly-grid-calendar.sac-monthly-hide-zone-c .sac-monthly-mobile-day {
    grid-template-columns:
        28px
        34px
        minmax(0, 1fr)
        28px
        30px
        35px !important;
}

/* 2 zones masquées = 1 slot */
.sac-monthly-grid-calendar.sac-monthly-hide-zone-a.sac-monthly-hide-zone-b .sac-monthly-mobile-day,
.sac-monthly-grid-calendar.sac-monthly-hide-zone-a.sac-monthly-hide-zone-c .sac-monthly-mobile-day,
.sac-monthly-grid-calendar.sac-monthly-hide-zone-b.sac-monthly-hide-zone-c .sac-monthly-mobile-day {
    grid-template-columns:
        28px
        34px
        minmax(0, 1fr)
        28px
        30px
        22px !important;
}

/* 3 zones masquées : presque plus de colonne Zone */
.sac-monthly-grid-calendar.sac-monthly-hide-zone-a.sac-monthly-hide-zone-b.sac-monthly-hide-zone-c .sac-monthly-mobile-day {
    grid-template-columns:
        28px
        34px
        minmax(0, 1fr)
        28px
        30px
        8px !important;
}

/* Très petits écrans : conserver les colonnes compactes existantes,
   mais réduire la largeur Zone avec la même logique. */
@media (max-width: 520px) {
    .sac-monthly-grid-calendar .sac-monthly-mobile-day {
        grid-template-columns:
            24px
            30px
            minmax(0, 1fr)
            25px
            27px
            42px !important;
    }

    .sac-monthly-grid-calendar.sac-monthly-hide-zone-a .sac-monthly-mobile-day,
    .sac-monthly-grid-calendar.sac-monthly-hide-zone-b .sac-monthly-mobile-day,
    .sac-monthly-grid-calendar.sac-monthly-hide-zone-c .sac-monthly-mobile-day {
        grid-template-columns:
            24px
            30px
            minmax(0, 1fr)
            25px
            27px
            31px !important;
    }

    .sac-monthly-grid-calendar.sac-monthly-hide-zone-a.sac-monthly-hide-zone-b .sac-monthly-mobile-day,
    .sac-monthly-grid-calendar.sac-monthly-hide-zone-a.sac-monthly-hide-zone-c .sac-monthly-mobile-day,
    .sac-monthly-grid-calendar.sac-monthly-hide-zone-b.sac-monthly-hide-zone-c .sac-monthly-mobile-day {
        grid-template-columns:
            24px
            30px
            minmax(0, 1fr)
            25px
            27px
            20px !important;
    }

    .sac-monthly-grid-calendar.sac-monthly-hide-zone-a.sac-monthly-hide-zone-b.sac-monthly-hide-zone-c .sac-monthly-mobile-day {
        grid-template-columns:
            24px
            30px
            minmax(0, 1fr)
            25px
            27px
            8px !important;
    }
}


/* =========================================================
   v4.17.7 - Compactage des Zones uniquement en WEB VIEW
   Shortcodes concernés :
   - [calendrier_annuel_cols]
   - [calendrier_scolaire_cols]

   Aucun changement dans les exports PDF/JPG ni dans les autres shortcodes.
========================================================= */

/*
 * Cibler exclusivement les deux calendriers "cols".
 * Leur grille de jour est :
 * jour | date | événement | lune | semaine | A | B | C
 *
 * Quand une Zone est décochée, son élément est retiré du flux de grille.
 * Le nombre de tracks Zone est réduit globalement :
 * 3 -> 2 -> 1 -> 0.
 *
 * Comme les tracks fixes situés à droite diminuent, la zone événement
 * (minmax(0,1fr)) s'agrandit et pousse naturellement les colonnes
 * Lune + Semaine vers la droite.
 */

/* Zone masquée : ne plus conserver son emplacement dans la grille web. */
.sac-dynamic-annual-content:not(.sac-dynamic-school-content).sac-hide-zone-a .sac-annual-col-day > .sac-school-zone-a,
.sac-dynamic-annual-content:not(.sac-dynamic-school-content).sac-hide-zone-b .sac-annual-col-day > .sac-school-zone-b,
.sac-dynamic-annual-content:not(.sac-dynamic-school-content).sac-hide-zone-c .sac-annual-col-day > .sac-school-zone-c,
.sac-dynamic-school-content.sac-hide-zone-a .sac-annual-col-day > .sac-school-zone-a,
.sac-dynamic-school-content.sac-hide-zone-b .sac-annual-col-day > .sac-school-zone-b,
.sac-dynamic-school-content.sac-hide-zone-c .sac-annual-col-day > .sac-school-zone-c {
    display: none !important;
}

/* 3 Zones visibles : conserver la grille existante. */
.sac-dynamic-annual-content:not(.sac-dynamic-school-content) .sac-annual-col-day,
.sac-dynamic-school-content .sac-annual-col-day {
    grid-template-columns:
        20px
        28px
        minmax(0, 1fr)
        22px
        24px
        3px
        3px
        3px !important;
}

/* 1 Zone masquée : 2 tracks Zone, collés au bord droit. */
.sac-dynamic-annual-content:not(.sac-dynamic-school-content).sac-hide-zone-a .sac-annual-col-day,
.sac-dynamic-annual-content:not(.sac-dynamic-school-content).sac-hide-zone-b .sac-annual-col-day,
.sac-dynamic-annual-content:not(.sac-dynamic-school-content).sac-hide-zone-c .sac-annual-col-day,
.sac-dynamic-school-content.sac-hide-zone-a .sac-annual-col-day,
.sac-dynamic-school-content.sac-hide-zone-b .sac-annual-col-day,
.sac-dynamic-school-content.sac-hide-zone-c .sac-annual-col-day {
    grid-template-columns:
        20px
        28px
        minmax(0, 1fr)
        22px
        24px
        3px
        3px !important;
}

/* 2 Zones masquées : 1 seul track Zone au bord droit. */
.sac-dynamic-annual-content:not(.sac-dynamic-school-content).sac-hide-zone-a.sac-hide-zone-b .sac-annual-col-day,
.sac-dynamic-annual-content:not(.sac-dynamic-school-content).sac-hide-zone-a.sac-hide-zone-c .sac-annual-col-day,
.sac-dynamic-annual-content:not(.sac-dynamic-school-content).sac-hide-zone-b.sac-hide-zone-c .sac-annual-col-day,
.sac-dynamic-school-content.sac-hide-zone-a.sac-hide-zone-b .sac-annual-col-day,
.sac-dynamic-school-content.sac-hide-zone-a.sac-hide-zone-c .sac-annual-col-day,
.sac-dynamic-school-content.sac-hide-zone-b.sac-hide-zone-c .sac-annual-col-day {
    grid-template-columns:
        20px
        28px
        minmax(0, 1fr)
        22px
        24px
        3px !important;
}

/* 3 Zones masquées : supprimer complètement la zone A/B/C. */
.sac-dynamic-annual-content:not(.sac-dynamic-school-content).sac-hide-zone-a.sac-hide-zone-b.sac-hide-zone-c .sac-annual-col-day,
.sac-dynamic-school-content.sac-hide-zone-a.sac-hide-zone-b.sac-hide-zone-c .sac-annual-col-day {
    grid-template-columns:
        20px
        28px
        minmax(0, 1fr)
        22px
        24px !important;
}


/* =========================================================
 * v4.19.4 - Options d'affichage : 2 groupes verticaux
 * calendriers annuel, scolaire, mensuel et deux mois.
 * ========================================================= */

.sac-annual-options-content .sac-options-filter-groups,
.sac-monthly-options-content .sac-options-filter-groups {
    width: 100% !important;
    min-width: 0 !important;
    display: grid !important;
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: 10px 18px !important;
    align-items: start !important;
    box-sizing: border-box !important;
}

.sac-annual-options-content .sac-options-filter-group,
.sac-monthly-options-content .sac-options-filter-group {
    min-width: 0 !important;
    display: flex !important;
    flex-direction: column !important;
    align-items: flex-start !important;
    justify-content: flex-start !important;
    gap: 7px !important;
}

.sac-annual-options-content .sac-options-filter-group-secondary,
.sac-monthly-options-content .sac-options-filter-group-secondary {
    grid-column: 1 !important;
}

.sac-annual-options-content .sac-options-filter-group-primary,
.sac-monthly-options-content .sac-options-filter-group-primary {
    grid-column: 2 !important;
}

.sac-annual-options-content .sac-options-filter-group .sac-annual-filter-item,
.sac-monthly-options-content .sac-options-filter-group .sac-annual-filter-item {
    width: 100% !important;
    min-width: 0 !important;
    margin: 0 !important;
    justify-content: flex-start !important;
    box-sizing: border-box !important;
}

/* Nếu chỉ có nhóm Fériés/Autres/Saints, giữ nó ở cột phải trên desktop. */
.sac-annual-options-content
.sac-options-filter-groups
.sac-options-filter-group-primary:only-child {
    grid-column: 2 !important;
}

/*
 * Responsive của Options:
 * nhóm 1 (Fériés / Autres fêtes / Saints) ở trên,
 * nhóm 2 (Numéro de semaine / Cycle lunaire) ở dưới.
 */
@media (max-width: 900px) {
    .sac-annual-options-content .sac-options-filter-groups,
    .sac-monthly-options-content .sac-options-filter-groups {
        grid-template-columns: 1fr !important;
        gap: 11px !important;
    }

    .sac-annual-options-content .sac-options-filter-group-primary,
    .sac-monthly-options-content .sac-options-filter-group-primary,
    .sac-annual-options-content
    .sac-options-filter-groups
    .sac-options-filter-group-primary:only-child {
        grid-column: 1 !important;
        grid-row: 1 !important;
    }

    .sac-annual-options-content .sac-options-filter-group-secondary,
    .sac-monthly-options-content .sac-options-filter-group-secondary {
        grid-column: 1 !important;
        grid-row: 2 !important;
    }
}

/* Monthly/CDM còn có responsive theo chiều rộng thực của container. */
.sac-monthly-grid-calendar.sac-monthly-force-mobile
.sac-monthly-options-content .sac-options-filter-groups {
    grid-template-columns: 1fr !important;
    gap: 11px !important;
}

.sac-monthly-grid-calendar.sac-monthly-force-mobile
.sac-monthly-options-content .sac-options-filter-group-primary {
    grid-column: 1 !important;
    grid-row: 1 !important;
}

.sac-monthly-grid-calendar.sac-monthly-force-mobile
.sac-monthly-options-content .sac-options-filter-group-secondary {
    grid-column: 1 !important;
    grid-row: 2 !important;
}
