/* ==============================================================
   Postdy Association — Public styles (shortcodes frontend)
   Hérite des variables du thème Postdy Community quand actif.
   ============================================================== */

.postdy-event-list {
    list-style: none;
    padding: 0;
    margin: 1rem 0;
    display: grid;
    gap: 12px;
}
.postdy-event-item {
    background: var(--c-cream-100, #FFF8F2);
    border: 1px solid var(--c-line-soft, rgba(15, 27, 61, 0.06));
    border-radius: 14px;
    padding: 16px 20px;
    display: grid;
    gap: 4px;
    transition: transform .2s ease;
}
.postdy-event-item:hover {
    transform: translateY(-2px);
}
.postdy-event-item time {
    color: var(--c-orange, #F26B2C);
    font-size: 0.85rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}
.postdy-event-item strong {
    font-size: 1.1rem;
    color: var(--c-navy-900, #0F1B3D);
}
.postdy-event-lieu {
    font-size: 0.9rem;
    color: var(--c-text-soft, #5A6175);
}

.postdy-empty {
    text-align: center;
    padding: 2rem;
    color: var(--c-text-soft, #5A6175);
    font-style: italic;
}

/* === Inscription form === */
.postdy-register-form {
    max-width: 560px;
    background: var(--c-cream-100, #FFF8F2);
    border: 1px solid var(--c-line-soft, rgba(15, 27, 61, 0.06));
    border-radius: 16px;
    padding: 28px;
    margin: 1.5rem 0;
}
.postdy-register-form .postdy-form-row {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: 16px;
    margin-bottom: 14px;
}
.postdy-register-form .postdy-field {
    display: grid;
    gap: 6px;
    margin-bottom: 14px;
}
.postdy-register-form label {
    font-size: 0.82rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--c-navy-900, #0F1B3D);
}
.postdy-register-form input,
.postdy-register-form select {
    padding: 12px 16px;
    border: 1px solid transparent;
    background: #fff;
    border-radius: 10px;
    font-size: 1rem;
    font-family: inherit;
    transition: border-color .15s ease;
    width: 100%;
    box-sizing: border-box;
}
.postdy-register-form input:focus,
.postdy-register-form select:focus {
    outline: none;
    border-color: var(--c-orange, #F26B2C);
}
.postdy-btn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 12px 24px;
    border-radius: 24px;
    font-weight: 600;
    border: none;
    cursor: pointer;
    transition: transform .15s ease, background .15s ease;
}
.postdy-btn-primary {
    background: var(--c-orange, #F26B2C);
    color: #fff;
}
.postdy-btn-primary:hover {
    background: var(--c-orange-dk, #C24F19);
    transform: translateY(-1px);
}

/* === Notices === */
.postdy-notice {
    padding: 14px 18px;
    border-radius: 10px;
    margin-bottom: 1rem;
    font-weight: 500;
}
.postdy-notice-success {
    background: #DCEDDA;
    color: #2E7D32;
}
.postdy-notice-error {
    background: #FFE0E0;
    color: #C62828;
}

/* === Offers grid (shortcode [postdy_offers]) === */
.postdy-offers-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 20px;
    margin: 2rem 0;
}
.postdy-offer {
    background: var(--c-cream-100, #FFF8F2);
    border: 1px solid var(--c-line-soft, rgba(15, 27, 61, 0.06));
    border-radius: 14px;
    padding: 24px;
    transition: transform .2s ease, box-shadow .2s ease;
}
.postdy-offer:hover {
    transform: translateY(-3px);
    box-shadow: 0 12px 24px rgba(15,27,61,.08);
}
.postdy-offer h3 {
    margin: 12px 0 6px;
    font-size: 1.15rem;
    color: var(--c-navy-900, #0F1B3D);
}
.postdy-offer p {
    color: var(--c-text-soft, #5A6175);
    font-size: 0.95rem;
    line-height: 1.5;
    margin-bottom: 12px;
}
.postdy-offer-link {
    color: var(--c-orange, #F26B2C);
    font-weight: 600;
    font-size: 0.9rem;
    text-decoration: none;
}
.postdy-offer-link:hover {
    text-decoration: underline;
}

@media (max-width: 600px) {
    .postdy-register-form .postdy-form-row { grid-template-columns: 1fr; }
}

/* ==============================================================
   PORTAIL MEMBRE — [postdy_dashboard]
   ============================================================== */

.postdy-portal {
    width: 100%;
    max-width: 1240px;
    margin: 0 auto;
    background: #fff;
    border: 1px solid var(--c-line-soft, rgba(15, 27, 61, 0.06));
    border-radius: 18px;
    box-shadow: 0 1px 3px rgba(15,27,61,.06), 0 8px 24px rgba(15,27,61,.04);
    overflow: hidden;
    box-sizing: border-box;
}

/* === Header === */
.postdy-portal-head {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 1.25rem 1.75rem;
    background: linear-gradient(135deg, #FFF8F2 0%, #FFE3CF 100%);
    border-bottom: 1px solid var(--c-line-soft, rgba(15, 27, 61, 0.06));
    flex-wrap: wrap;
    gap: 1rem;
}
.postdy-user-card {
    display: flex;
    align-items: center;
    gap: 14px;
}
.postdy-user-avatar {
    width: 48px; height: 48px;
    border-radius: 50%;
    background: var(--c-orange, #F26B2C);
    color: #fff;
    display: grid;
    place-items: center;
    font-weight: 700;
    font-size: 1.2rem;
}
.postdy-user-card strong {
    display: block;
    font-size: 1.05rem;
    color: var(--c-navy-900, #0F1B3D);
}
.postdy-user-card span {
    font-size: 0.82rem;
    color: var(--c-text-soft, #5A6175);
    text-transform: uppercase;
    letter-spacing: 0.06em;
    font-weight: 600;
}
.postdy-portal-actions {
    display: flex;
    gap: 8px;
}

/* === Tabs (navigation principale du portail) === */
.postdy-tabs {
    display: flex;
    flex-wrap: wrap;
    gap: 4px;
    padding: 6px 1rem 0;
    background: var(--c-cream-100, #FFF8F2);
    border-bottom: 1px solid var(--c-line-soft, rgba(15, 27, 61, 0.06));
    position: relative;
}
.postdy-tab {
    padding: 12px 18px;
    color: var(--c-text-soft, #5A6175);
    font-weight: 500;
    text-decoration: none;
    border: none;
    background: transparent;
    border-bottom: 3px solid transparent;
    margin-bottom: -1px;
    white-space: nowrap;
    transition: color .15s ease, border-color .15s ease, background .15s ease;
    font-size: 0.95rem;
    cursor: pointer;
    font-family: inherit;
    display: inline-flex;
    align-items: center;
    gap: 6px;
}
.postdy-tab:hover {
    color: var(--c-navy-900, #0F1B3D);
}
.postdy-tab.is-active {
    color: var(--c-orange, #F26B2C);
    border-bottom-color: var(--c-orange, #F26B2C);
    font-weight: 600;
}

/* === Tab groups (parents avec sous-menu) === */
.postdy-tab-group {
    position: relative;
}
.postdy-tab-group.is-active > .postdy-tab-parent {
    color: var(--c-orange, #F26B2C);
    border-bottom-color: var(--c-orange, #F26B2C);
    font-weight: 600;
}
.postdy-caret {
    font-size: 0.7em;
    transition: transform .2s ease;
    display: inline-block;
}
.postdy-tab-group.is-open > .postdy-tab-parent .postdy-caret {
    transform: rotate(180deg);
}

/* Sous-menu : caché par défaut, apparaît au hover (desktop) ou .is-open (mobile/click) */
.postdy-tab-submenu {
    position: absolute;
    top: calc(100% + 4px);
    left: 0;
    background: #ffffff;
    border: 1px solid var(--c-line-soft, rgba(15, 27, 61, 0.08));
    border-radius: 12px;
    box-shadow: 0 12px 32px -8px rgba(15, 27, 61, 0.18), 0 4px 8px rgba(15, 27, 61, 0.04);
    padding: 6px 0;
    min-width: 220px;
    opacity: 0;
    visibility: hidden;
    transform: translateY(8px);
    transition: opacity .2s ease, visibility .2s ease, transform .2s ease;
    z-index: 50;
    display: flex;
    flex-direction: column;
    gap: 0;
}
.postdy-tab-group:hover > .postdy-tab-submenu,
.postdy-tab-group:focus-within > .postdy-tab-submenu,
.postdy-tab-group.is-open > .postdy-tab-submenu {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
}

.postdy-tab-child {
    display: block;
    padding: 10px 18px;
    color: var(--c-text, #1A2236);
    text-decoration: none;
    font-size: 0.92rem;
    font-weight: 500;
    transition: background .15s ease, color .15s ease;
    border-left: 3px solid transparent;
}
.postdy-tab-child:hover {
    background: var(--c-cream-100, #FFF8F2);
    color: var(--c-orange, #F26B2C);
}
.postdy-tab-child.is-active {
    background: var(--c-orange-soft, #FFE3CF);
    color: var(--c-orange-dk, #C24F19);
    border-left-color: var(--c-orange, #F26B2C);
    font-weight: 600;
}

/* === Content === */
.postdy-tab-content {
    padding: 2rem 1.75rem;
}
.postdy-tab-content h2 {
    margin: 0 0 6px;
    color: var(--c-navy-900, #0F1B3D);
    font-size: 1.5rem;
}
.postdy-tab-content .postdy-lede {
    color: var(--c-text-soft, #5A6175);
    margin-bottom: 1.5rem;
    text-align: left;
    font-size: 0.95rem;
}

/* === Form grid === */
.postdy-portal-form {
    margin-top: 1rem;
}
.postdy-portal-form .postdy-form-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 16px;
    background: var(--c-cream-100, #FFF8F2);
    padding: 24px;
    border-radius: 14px;
    margin-bottom: 1rem;
}
.postdy-portal-form .postdy-field {
    display: flex;
    flex-direction: column;
    gap: 6px;
}
.postdy-portal-form .postdy-field-wide {
    grid-column: 1 / -1;
}
.postdy-portal-form .postdy-field label {
    font-size: 0.78rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--c-navy-900, #0F1B3D);
}
.postdy-portal-form .postdy-field input,
.postdy-portal-form .postdy-field select,
.postdy-portal-form .postdy-field textarea {
    padding: 10px 14px;
    border: 1px solid transparent;
    background: #fff;
    border-radius: 10px;
    font-size: 0.95rem;
    font-family: inherit;
    transition: border-color .15s ease;
    width: 100%;
    box-sizing: border-box;
}
.postdy-portal-form .postdy-field input:focus,
.postdy-portal-form .postdy-field select:focus,
.postdy-portal-form .postdy-field textarea:focus {
    outline: none;
    border-color: var(--c-orange, #F26B2C);
    box-shadow: 0 0 0 3px var(--c-orange-soft, #FFE3CF);
}
.postdy-portal-form .postdy-field textarea {
    resize: vertical;
    min-height: 80px;
}
.postdy-portal-form .postdy-field input:disabled {
    background: var(--c-cream-200, #FBEEE0);
    color: var(--c-text-soft, #5A6175);
    cursor: not-allowed;
}

/* === Buttons === */
.postdy-btn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 10px 20px;
    border-radius: 22px;
    font-weight: 600;
    font-size: 0.95rem;
    border: none;
    cursor: pointer;
    text-decoration: none;
    transition: transform .15s ease, background .15s ease, color .15s ease;
    font-family: inherit;
}
.postdy-btn-primary {
    background: var(--c-orange, #F26B2C);
    color: #fff !important;
}
.postdy-btn-primary:hover {
    background: var(--c-orange-dk, #C24F19);
    transform: translateY(-1px);
}
.postdy-btn-ghost {
    background: transparent;
    color: var(--c-navy-900, #0F1B3D) !important;
    border: 1px solid var(--c-line, rgba(15, 27, 61, 0.10));
}
.postdy-btn-ghost:hover {
    background: var(--c-cream-100, #FFF8F2);
}
.postdy-btn-sm {
    padding: 6px 14px;
    font-size: 0.85rem;
    margin-left: 8px;
}

/* === Tables frontend === */
.postdy-table-wrap {
    overflow-x: auto;
    margin-top: 1rem;
    border-radius: 12px;
    border: 1px solid var(--c-line-soft, rgba(15, 27, 61, 0.06));
}
.postdy-table-front {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.92rem;
    background: #fff;
}
.postdy-table-front thead th {
    background: var(--c-cream-100, #FFF8F2);
    color: var(--c-navy-900, #0F1B3D);
    text-align: left;
    padding: 12px 14px;
    font-size: 0.75rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    border-bottom: 1px solid var(--c-line-soft, rgba(15, 27, 61, 0.06));
}
.postdy-table-front tbody td {
    padding: 12px 14px;
    border-bottom: 1px solid var(--c-line-soft, rgba(15, 27, 61, 0.06));
    vertical-align: middle;
}
.postdy-table-front tbody tr:last-child td {
    border-bottom: none;
}
.postdy-table-front tbody tr:hover {
    background: var(--c-cream-100, #FFF8F2);
}
.postdy-row-actions {
    text-align: right;
    white-space: nowrap;
}
.postdy-row-actions a {
    margin-left: 12px;
    text-decoration: none;
    color: var(--c-orange, #F26B2C);
    font-weight: 500;
    font-size: 0.88rem;
}
.postdy-row-actions a:hover {
    text-decoration: underline;
}
.postdy-row-actions .postdy-link-danger {
    color: #C62828;
}

/* === Badges === */
.postdy-badge {
    display: inline-block;
    padding: 3px 10px;
    border-radius: 12px;
    font-size: 0.7rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}
.postdy-status-actif,
.postdy-status-payee,
.postdy-status-confirme,
.postdy-status-atteint    { background: #DCEDDA; color: #2E7D32; }
.postdy-status-inactif,
.postdy-status-annulee,
.postdy-status-annule,
.postdy-status-abandonne  { background: #FFE0E0; color: #C62828; }
.postdy-status-en_attente,
.postdy-status-planifie,
.postdy-status-en_cours,
.postdy-status-prospect   { background: #FFF3CD; color: #856404; }
.postdy-status-termine,
.postdy-status-depasse    { background: #E3F2FD; color: #1565C0; }
.postdy-badge-particulier { background: var(--c-orange-soft, #FFE3CF); color: var(--c-orange-dk, #C24F19); }
.postdy-badge-entreprise  { background: #DCEDDA; color: #2E7D32; }
.postdy-badge-startup     { background: #F5E6D3; color: #8B5A2B; }
.postdy-badge-recette     { background: #DCEDDA; color: #2E7D32; }
.postdy-badge-charge      { background: #FFE0E0; color: #C62828; }
.postdy-tag-orange   { background: var(--c-orange-soft, #FFE3CF); color: var(--c-orange-dk, #C24F19); }
.postdy-tag-sage     { background: #DCEDDA; color: #2E7D32; }
.postdy-tag-gold     { background: #F5E6D3; color: #8B5A2B; }
.postdy-tag-blue     { background: #E3F2FD; color: #1565C0; }
.postdy-tag-cream    { background: var(--c-cream-100, #FFF8F2); color: var(--c-navy-900, #0F1B3D); }
.postdy-tag-lavender { background: #EDE7F6; color: #5E35B1; }

/* === Stats row (finance tab) === */
.postdy-stats-row {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 12px;
    margin: 1rem 0;
}
.postdy-stat {
    background: #fff;
    border: 1px solid var(--c-line-soft, rgba(15, 27, 61, 0.06));
    border-left: 4px solid var(--c-orange, #F26B2C);
    border-radius: 10px;
    padding: 14px 18px;
}
.postdy-stat-sage  { border-left-color: #6BA77A; }
.postdy-stat-coral { border-left-color: #C62828; }
.postdy-stat span {
    display: block;
    font-size: 0.72rem;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--c-text-soft, #5A6175);
    font-weight: 600;
    margin-bottom: 4px;
}
.postdy-stat strong {
    font-size: 1.4rem;
    color: var(--c-navy-900, #0F1B3D);
}

/* === Login screen === */
.postdy-portal-login {
    max-width: 480px;
    padding: 3rem;
}
.postdy-portal-login h2 {
    margin: 0 0 8px;
    color: var(--c-navy-900, #0F1B3D);
}
.postdy-portal-login form#loginform {
    margin: 1.5rem 0;
}
.postdy-portal-login form#loginform p {
    margin-bottom: 14px;
}
.postdy-portal-login form#loginform label {
    display: block;
    font-weight: 600;
    margin-bottom: 6px;
    font-size: 0.9rem;
    color: var(--c-navy-900, #0F1B3D);
}
.postdy-portal-login form#loginform input[type="text"],
.postdy-portal-login form#loginform input[type="password"] {
    width: 100%;
    padding: 10px 14px;
    border: 1px solid var(--c-line, rgba(15, 27, 61, 0.10));
    border-radius: 10px;
    font-size: 1rem;
    box-sizing: border-box;
}
.postdy-portal-login form#loginform input[type="submit"] {
    background: var(--c-orange, #F26B2C);
    color: #fff;
    border: none;
    padding: 12px 24px;
    border-radius: 22px;
    font-weight: 600;
    cursor: pointer;
    font-size: 1rem;
}
.postdy-portal-login form#loginform input[type="submit"]:hover {
    background: var(--c-orange-dk, #C24F19);
}
.postdy-portal-foot {
    text-align: center;
    margin-top: 1.5rem;
    font-size: 0.9rem;
    color: var(--c-text-soft, #5A6175);
}
.postdy-portal-foot a {
    color: var(--c-orange, #F26B2C);
    text-decoration: none;
}

/* ==============================================================
   RESPONSIVE — TABLETTE ET MOBILE
   Approche : tables → cartes empilées sur < 768px
   ============================================================== */

/* === Tablette large (≤ 1024px) === */
@media (max-width: 1024px) {
    .postdy-portal {
        margin: 1rem;
        border-radius: 14px;
    }
    .postdy-portal-head {
        padding: 1rem 1.25rem;
    }
    .postdy-tab-content {
        padding: 1.5rem 1.25rem;
    }
    .postdy-portal-form .postdy-form-grid {
        padding: 18px;
        gap: 14px;
    }
}

/* === Mobile (≤ 768px) === */
@media (max-width: 768px) {
    .postdy-portal {
        margin: 0.5rem;
        border-radius: 12px;
    }

    /* === HEADER stacké === */
    .postdy-portal-head {
        flex-direction: column;
        align-items: stretch;
        gap: 12px;
        padding: 1rem;
    }
    .postdy-user-card {
        width: 100%;
    }
    .postdy-user-avatar {
        width: 40px;
        height: 40px;
        font-size: 1rem;
        flex-shrink: 0;
    }
    .postdy-user-card strong {
        font-size: 0.95rem;
    }
    .postdy-user-card span {
        font-size: 0.7rem;
    }
    .postdy-portal-actions {
        width: 100%;
    }
    .postdy-portal-actions .postdy-btn {
        flex: 1;
        justify-content: center;
        font-size: 0.85rem;
        padding: 8px 12px;
    }

    /* === TABS scrollables avec dégradé indicateur === */
    .postdy-tabs {
        padding: 4px 0.5rem 0;
        scrollbar-width: thin;
        -webkit-overflow-scrolling: touch;
        position: relative;
    }
    .postdy-tab {
        padding: 10px 14px;
        font-size: 0.85rem;
        flex-shrink: 0;
    }

    /* === CONTENU === */
    .postdy-tab-content {
        padding: 1.25rem 1rem;
    }
    .postdy-tab-content h2 {
        font-size: 1.25rem;
    }
    .postdy-tab-content .postdy-lede {
        font-size: 0.9rem;
    }

    /* === FORMS — 1 colonne === */
    .postdy-portal-form .postdy-form-grid {
        grid-template-columns: 1fr !important;
        padding: 14px;
        gap: 12px;
        border-radius: 10px;
    }
    .postdy-portal-form .postdy-field input,
    .postdy-portal-form .postdy-field select,
    .postdy-portal-form .postdy-field textarea {
        font-size: 16px; /* empêche le zoom auto sur iOS */
        padding: 12px 14px;
    }
    .postdy-portal-form .postdy-btn,
    .postdy-portal-form button[type="submit"] {
        width: 100%;
        justify-content: center;
        padding: 14px 20px;
    }

    /* === TABLES → CARTES EMPILÉES === */
    .postdy-table-wrap {
        overflow-x: visible;
        border: none;
        border-radius: 0;
        background: transparent;
    }
    .postdy-table-front {
        background: transparent;
        border: none;
    }
    .postdy-table-front thead {
        display: none; /* On masque les en-têtes, on utilise data-label */
    }
    .postdy-table-front tbody {
        display: block;
    }
    .postdy-table-front tbody tr {
        display: block;
        background: #fff;
        border: 1px solid var(--c-line-soft, rgba(15, 27, 61, 0.06));
        border-radius: 12px;
        margin-bottom: 12px;
        padding: 14px;
        box-shadow: 0 1px 3px rgba(15,27,61,.04);
    }
    .postdy-table-front tbody tr:hover {
        background: #fff;
    }
    .postdy-table-front tbody td {
        display: flex;
        justify-content: space-between;
        align-items: center;
        gap: 12px;
        padding: 8px 0;
        border-bottom: 1px dashed var(--c-line-soft, rgba(15, 27, 61, 0.06));
        text-align: right;
    }
    .postdy-table-front tbody td:first-child {
        flex-direction: column;
        align-items: flex-start;
        text-align: left;
        padding-top: 0;
        padding-bottom: 12px;
        border-bottom: 1px solid var(--c-line, rgba(15, 27, 61, 0.10));
        margin-bottom: 4px;
    }
    .postdy-table-front tbody td:last-child {
        border-bottom: none;
        padding-bottom: 0;
        padding-top: 12px;
        margin-top: 4px;
        border-top: 1px solid var(--c-line, rgba(15, 27, 61, 0.10));
    }
    /* Étiquette via data-label */
    .postdy-table-front tbody td::before {
        content: attr(data-label);
        font-size: 0.7rem;
        text-transform: uppercase;
        letter-spacing: 0.05em;
        font-weight: 700;
        color: var(--c-text-soft, #5A6175);
        flex-shrink: 0;
        text-align: left;
    }
    .postdy-table-front tbody td:first-child::before,
    .postdy-table-front tbody td:last-child::before {
        display: none;
    }

    /* Actions en bas de carte */
    .postdy-row-actions {
        display: flex;
        flex-direction: row;
        gap: 12px;
        align-items: center;
        justify-content: flex-end;
        flex-wrap: wrap;
    }
    .postdy-row-actions a {
        margin-left: 0;
        padding: 8px 12px;
        background: var(--c-cream-100, #FFF8F2);
        border-radius: 6px;
        font-size: 0.85rem;
    }

    /* === STATS row === */
    .postdy-stats-row {
        grid-template-columns: 1fr;
        gap: 8px;
    }
    .postdy-stat {
        padding: 12px 16px;
    }
    .postdy-stat strong {
        font-size: 1.2rem;
    }

    /* === LOGIN screen === */
    .postdy-portal-login {
        padding: 1.75rem 1.25rem;
    }
    .postdy-portal-login h2 {
        font-size: 1.2rem;
    }
    .postdy-portal-login form#loginform input[type="text"],
    .postdy-portal-login form#loginform input[type="password"] {
        font-size: 16px;
        padding: 12px 14px;
    }
    .postdy-portal-login form#loginform input[type="submit"] {
        width: 100%;
    }

    /* === Inscription form === */
    .postdy-register-form {
        padding: 18px;
    }
    .postdy-register-form .postdy-form-row {
        grid-template-columns: 1fr;
        gap: 12px;
    }
    .postdy-register-form input,
    .postdy-register-form select {
        font-size: 16px;
    }
    .postdy-register-form .postdy-btn {
        width: 100%;
        justify-content: center;
    }
}

/* === Très petit mobile (≤ 480px) === */
@media (max-width: 480px) {
    .postdy-portal {
        margin: 0.25rem;
        border-radius: 8px;
    }
    .postdy-portal-head {
        padding: 0.75rem;
    }
    .postdy-tab-content {
        padding: 1rem 0.75rem;
    }
    .postdy-tab-content h2 {
        font-size: 1.1rem;
    }
    .postdy-tab {
        padding: 8px 12px;
        font-size: 0.8rem;
    }
    .postdy-table-front tbody tr {
        padding: 12px;
    }
    .postdy-portal-actions {
        flex-wrap: wrap;
    }
    .postdy-portal-actions .postdy-btn {
        flex: 1 1 calc(50% - 4px);
        font-size: 0.8rem;
    }
}

/* ==============================================================
   FRACTIONS — Formulaire de candidature multi-section
   ============================================================== */

.postdy-fraction-form {
    max-width: 760px;
    margin: 2rem auto;
}

.postdy-fraction-form .pf-section {
    background: #fff;
    border: 1px solid var(--c-line-soft, rgba(15, 27, 61, 0.06));
    border-radius: 16px;
    padding: 28px;
    margin-bottom: 18px;
    box-shadow: 0 1px 3px rgba(15,27,61,.04);
}

.postdy-fraction-form .pf-section legend {
    font-weight: 700;
    font-size: 1.15rem;
    color: var(--c-navy-900, #0F1B3D);
    padding: 0 8px;
    display: inline-flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 4px;
}

.postdy-fraction-form .pf-step {
    display: inline-grid;
    place-items: center;
    width: 32px;
    height: 32px;
    background: var(--c-orange, #F26B2C);
    color: #fff;
    border-radius: 50%;
    font-size: 0.95rem;
    font-weight: 700;
}

.postdy-fraction-form .pf-section-desc {
    color: var(--c-text-soft, #5A6175);
    margin: 4px 0 16px;
    font-size: 0.95rem;
}

.postdy-fraction-form .pf-grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: 16px;
}

.postdy-fraction-form .pf-field {
    display: flex;
    flex-direction: column;
    gap: 6px;
}
.postdy-fraction-form .pf-field-wide {
    grid-column: 1 / -1;
}
.postdy-fraction-form .pf-field label {
    font-size: 0.78rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--c-navy-900, #0F1B3D);
}
.postdy-fraction-form .pf-field input,
.postdy-fraction-form .pf-field select,
.postdy-fraction-form .pf-field textarea {
    padding: 12px 14px;
    border: 1px solid var(--c-line, rgba(15, 27, 61, 0.10));
    background: #fff;
    border-radius: 10px;
    font-size: 0.95rem;
    font-family: inherit;
    transition: border-color .15s ease, box-shadow .15s ease;
    width: 100%;
    box-sizing: border-box;
}
.postdy-fraction-form .pf-field input:focus,
.postdy-fraction-form .pf-field select:focus,
.postdy-fraction-form .pf-field textarea:focus {
    outline: none;
    border-color: var(--c-orange, #F26B2C);
    box-shadow: 0 0 0 3px var(--c-orange-soft, #FFE3CF);
}
.postdy-fraction-form .pf-field textarea {
    resize: vertical;
    min-height: 100px;
}

/* Cases à cocher */
.postdy-fraction-form .pf-checkboxes {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
}
.postdy-fraction-form .pf-check {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    padding: 12px 14px;
    background: var(--c-cream-100, #FFF8F2);
    border: 1px solid transparent;
    border-radius: 10px;
    cursor: pointer;
    font-size: 0.92rem;
    line-height: 1.45;
    transition: border-color .15s ease, background .15s ease;
    min-width: 0;
    width: 100%;
    box-sizing: border-box;
}
.postdy-fraction-form .pf-check input[type="checkbox"] {
    margin: 2px 0 0 0;
    flex: 0 0 auto;
    width: 16px;
    height: 16px;
}
.postdy-fraction-form .pf-check > span {
    flex: 1 1 auto;
    min-width: 0;
    word-wrap: break-word;
    overflow-wrap: break-word;
    word-break: normal;
    hyphens: auto;
    -webkit-hyphens: auto;
    line-height: 1.4;
    display: inline-block;
}
.postdy-fraction-form .pf-check:hover {
    border-color: var(--c-orange, #F26B2C);
}
.postdy-fraction-form .pf-check input {
    margin-top: 3px;
    flex-shrink: 0;
}
.postdy-fraction-form .pf-check-required {
    background: #FFF4E5;
    border-color: var(--c-orange, #F26B2C);
}

/* Engagement */
.postdy-fraction-form .pf-engagement {
    background: var(--c-cream-100, #FFF8F2);
    padding: 18px;
    border-radius: 12px;
    margin-top: 18px;
}
.postdy-fraction-form .pf-engagement h4 {
    margin: 0 0 12px;
    color: var(--c-navy-900, #0F1B3D);
}
.postdy-fraction-form .pf-engagement .pf-check {
    display: flex;
    margin-bottom: 8px;
    background: #fff;
}

/* Membres dynamiques */
.postdy-fraction-form .pf-member-row {
    display: grid;
    grid-template-columns: 1fr 1fr 1.4fr 1fr 36px;
    gap: 8px;
    margin-bottom: 8px;
    align-items: center;
}
.postdy-fraction-form .pf-member-row input,
.postdy-fraction-form .pf-member-row select {
    padding: 9px 12px;
    border: 1px solid var(--c-line, rgba(15, 27, 61, 0.10));
    border-radius: 8px;
    font-size: 0.9rem;
    font-family: inherit;
    background: #fff;
    width: 100%;
    box-sizing: border-box;
}
.postdy-fraction-form .pf-member-row input:focus,
.postdy-fraction-form .pf-member-row select:focus {
    outline: none;
    border-color: var(--c-orange, #F26B2C);
}
.postdy-fraction-form .pf-remove-member {
    width: 36px;
    height: 36px;
    border: none;
    background: var(--c-cream-100, #FFF8F2);
    color: var(--c-text-soft, #5A6175);
    border-radius: 8px;
    cursor: pointer;
    font-size: 1.3rem;
    line-height: 1;
    transition: background .15s ease, color .15s ease;
}
.postdy-fraction-form .pf-remove-member:hover {
    background: #FFE0E0;
    color: #C62828;
}

/* Boutons */
.postdy-fraction-form .pf-btn-primary {
    width: 100%;
    padding: 16px 24px;
    background: var(--c-orange, #F26B2C);
    color: #fff;
    border: none;
    border-radius: 30px;
    font-size: 1.05rem;
    font-weight: 700;
    cursor: pointer;
    transition: background .15s ease, transform .15s ease;
    font-family: inherit;
}
.postdy-fraction-form .pf-btn-primary:hover {
    background: var(--c-orange-dk, #C24F19);
    transform: translateY(-2px);
}
.postdy-fraction-form .pf-btn-secondary {
    margin-top: 8px;
    padding: 10px 20px;
    background: transparent;
    color: var(--c-orange, #F26B2C);
    border: 2px dashed var(--c-orange, #F26B2C);
    border-radius: 24px;
    cursor: pointer;
    font-weight: 600;
    font-size: 0.9rem;
    transition: background .15s ease;
    font-family: inherit;
}
.postdy-fraction-form .pf-btn-secondary:hover {
    background: var(--c-orange-soft, #FFE3CF);
}
.postdy-fraction-form .pf-disclaimer {
    text-align: center;
    color: var(--c-text-soft, #5A6175);
    font-size: 0.85rem;
    margin-top: 14px;
}

/* ==============================================================
   FRACTIONS — Liste publique des sections actives
   ============================================================== */

.postdy-fractions-list {
    margin: 2rem 0;
}

.postdy-fractions-stats {
    display: flex;
    gap: 20px;
    justify-content: center;
    margin-bottom: 2rem;
    flex-wrap: wrap;
}
.postdy-fractions-stats .pf-stat {
    background: var(--c-cream-100, #FFF8F2);
    padding: 14px 22px;
    border-radius: 30px;
    border-left: 4px solid var(--c-orange, #F26B2C);
}
.postdy-fractions-stats .pf-stat strong {
    font-size: 1.4rem;
    color: var(--c-orange-dk, #C24F19);
    margin-right: 6px;
}

.postdy-fractions-list .pf-country {
    margin-bottom: 2.5rem;
}
.postdy-fractions-list .pf-country h3 {
    font-size: 1.5rem;
    margin: 0 0 1rem;
    color: var(--c-navy-900, #0F1B3D);
}
.postdy-fractions-list .pf-country h3 small {
    color: var(--c-text-soft, #5A6175);
    font-weight: 400;
    font-size: 1rem;
}

.postdy-fractions-list .pf-country-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
    gap: 16px;
}
.postdy-fractions-list .pf-card {
    background: #fff;
    border: 1px solid var(--c-line-soft, rgba(15, 27, 61, 0.06));
    border-left: 4px solid var(--c-orange, #F26B2C);
    border-radius: 14px;
    padding: 22px;
    transition: transform .2s ease, box-shadow .2s ease;
}
.postdy-fractions-list .pf-card:hover {
    transform: translateY(-3px);
    box-shadow: 0 12px 24px rgba(15,27,61,.08);
}
.postdy-fractions-list .pf-card h4 {
    margin: 0 0 10px;
    color: var(--c-navy-900, #0F1B3D);
    font-size: 1.1rem;
}
.postdy-fractions-list .pf-card p {
    margin: 6px 0;
    font-size: 0.9rem;
    color: var(--c-text-soft, #5A6175);
}
.postdy-fractions-list .pf-card-loc {
    font-weight: 600;
    color: var(--c-navy-900, #0F1B3D) !important;
}

.postdy-fractions-empty {
    text-align: center;
    padding: 3rem 1rem;
    background: var(--c-cream-100, #FFF8F2);
    border-radius: 14px;
}

/* ==============================================================
   FRACTIONS — Responsive
   ============================================================== */
@media (max-width: 768px) {
    .postdy-fraction-form .pf-section {
        padding: 18px 14px;
        border-radius: 12px;
    }
    .postdy-fraction-form .pf-grid {
        grid-template-columns: 1fr;
    }
    .postdy-fraction-form .pf-checkboxes {
        grid-template-columns: 1fr;
    }
    .postdy-fraction-form .pf-field input,
    .postdy-fraction-form .pf-field select,
    .postdy-fraction-form .pf-field textarea,
    .postdy-fraction-form .pf-member-row input,
    .postdy-fraction-form .pf-member-row select {
        font-size: 16px; /* anti-zoom iOS */
    }
    .postdy-fraction-form .pf-member-row {
        grid-template-columns: 1fr 1fr 36px;
        grid-template-areas: "p n x" "e e ." "r r .";
        gap: 6px;
        background: var(--c-cream-100, #FFF8F2);
        padding: 12px;
        border-radius: 10px;
        margin-bottom: 12px;
    }
    .postdy-fraction-form .pf-member-row > input:nth-child(1) { grid-area: p; }
    .postdy-fraction-form .pf-member-row > input:nth-child(2) { grid-area: n; }
    .postdy-fraction-form .pf-member-row > input:nth-child(3) { grid-area: e; }
    .postdy-fraction-form .pf-member-row > select            { grid-area: r; }
    .postdy-fraction-form .pf-member-row > button            { grid-area: x; }

    .postdy-fractions-list .pf-country-grid {
        grid-template-columns: 1fr;
    }
}

/* === Surcharge du portail pour qu'il occupe toute la largeur disponible === */
/* ==============================================================
   PORTAIL — Refonte largeur, tabs, et qualité visuelle
   ============================================================== */

/* Onglets : wrap au lieu de scroll horizontal sur desktop */
.postdy-tabs {
    display: flex;
    flex-wrap: wrap;
    gap: 2px;
    padding: 6px 1rem 0;
    background: var(--c-cream-100, #FFF8F2);
    border-bottom: 1px solid var(--c-line-soft, rgba(15, 27, 61, 0.06));
    overflow-x: visible;
}
.postdy-tab {
    padding: 11px 16px;
    font-size: 0.92rem;
    border-bottom: 3px solid transparent;
    margin-bottom: -1px;
    flex-shrink: 0;
}

/* === Email "lecture seule" : style propre === */
.postdy-portal-form .postdy-field input:disabled {
    background: #fff;
    color: var(--c-text-soft, #5A6175);
    cursor: not-allowed;
    font-style: italic;
    opacity: 0.85;
    border: 1px dashed rgba(15,27,61,0.15);
}

/* ==============================================================
   ONGLET DASHBOARD — KPI + charts en frontend
   ============================================================== */

.postdy-front-kpi-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 14px;
    margin: 1.25rem 0 1.5rem;
}
.postdy-front-kpi {
    background: #fff;
    border: 1px solid var(--c-line-soft, rgba(15, 27, 61, 0.06));
    border-left: 4px solid var(--c-orange, #F26B2C);
    border-radius: 12px;
    padding: 16px 18px;
    box-shadow: 0 1px 3px rgba(15,27,61,.04);
    transition: transform .2s ease;
}
.postdy-front-kpi:hover {
    transform: translateY(-2px);
}
.postdy-front-kpi .kpi-label {
    display: block;
    font-size: 0.7rem;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    font-weight: 700;
    color: var(--c-text-soft, #5A6175);
    margin-bottom: 6px;
}
.postdy-front-kpi .kpi-value {
    display: block;
    font-size: 1.6rem;
    font-weight: 700;
    color: var(--c-navy-900, #0F1B3D);
    line-height: 1.1;
    margin-bottom: 4px;
}
.postdy-front-kpi .kpi-meta {
    display: block;
    font-size: 0.75rem;
    color: var(--c-text-soft, #5A6175);
}

/* Filtre période (frontend) */
.postdy-front-filter {
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 14px 18px;
    background: var(--c-cream-100, #FFF8F2);
    border-radius: 12px;
    margin-bottom: 1rem;
    flex-wrap: wrap;
}
.postdy-front-filter > strong {
    color: var(--c-navy-900, #0F1B3D);
    font-size: 0.9rem;
}
.postdy-period-filter {
    display: inline-flex;
    gap: 6px;
}
.postdy-period-btn {
    background: #fff;
    border: 1px solid var(--c-line, rgba(15, 27, 61, 0.10));
    color: var(--c-navy-900, #0F1B3D);
    padding: 6px 16px;
    border-radius: 18px;
    cursor: pointer;
    font-size: 0.85rem;
    font-weight: 500;
    font-family: inherit;
    transition: all .15s ease;
}
.postdy-period-btn:hover {
    border-color: var(--c-orange, #F26B2C);
    color: var(--c-orange-dk, #C24F19);
}
.postdy-period-btn.is-active {
    background: var(--c-orange, #F26B2C);
    color: #fff;
    border-color: var(--c-orange, #F26B2C);
}

/* Grille de graphiques */
.postdy-front-charts {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(380px, 1fr));
    gap: 14px;
}
.postdy-front-chart-card {
    background: #fff;
    border: 1px solid var(--c-line-soft, rgba(15, 27, 61, 0.06));
    border-radius: 14px;
    padding: 18px 20px;
    box-shadow: 0 1px 3px rgba(15,27,61,.04);
}
.postdy-front-chart-card h3 {
    margin: 0 0 4px;
    color: var(--c-navy-900, #0F1B3D);
    font-size: 1rem;
    font-weight: 600;
}
.postdy-front-chart-card .chart-desc {
    color: var(--c-text-soft, #5A6175);
    font-size: 0.78rem;
    margin: 0 0 12px;
}
.postdy-front-chart-card .chart-wrap {
    position: relative;
    height: 260px;
}
.postdy-front-chart-card canvas {
    max-height: 260px;
}

/* Carte vide (no data) */
.postdy-empty-data-card {
    background: linear-gradient(135deg, #FFF8F2 0%, #FFE3CF 100%);
    border: 1px dashed var(--c-orange, #F26B2C);
    border-radius: 14px;
    padding: 24px;
    margin-bottom: 1.5rem;
    text-align: center;
}
.postdy-empty-data-card h3 {
    margin: 0 0 8px;
    color: var(--c-navy-900, #0F1B3D);
}
.postdy-empty-data-card p {
    color: var(--c-text-soft, #5A6175);
    margin: 8px 0;
}

/* ==============================================================
   RESPONSIVE — surcharge pour le tableau de bord frontend
   ============================================================== */
@media (max-width: 768px) {
    .postdy-front-kpi-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 8px;
    }
    .postdy-front-kpi {
        padding: 12px 14px;
    }
    .postdy-front-kpi .kpi-value {
        font-size: 1.25rem;
    }
    .postdy-front-charts {
        grid-template-columns: 1fr;
    }
    .postdy-front-chart-card {
        padding: 14px 16px;
    }
    .postdy-front-chart-card .chart-wrap {
        height: 220px;
    }
    .postdy-front-filter {
        padding: 12px;
    }
    .postdy-period-btn {
        padding: 6px 12px;
        font-size: 0.8rem;
    }
}
@media (max-width: 480px) {
    .postdy-front-kpi-grid {
        grid-template-columns: 1fr;
    }
}


/* === FRACTION FORM — protection responsive supplémentaire === */
@media (max-width: 900px) {
    .postdy-fraction-form .pf-checkboxes {
        grid-template-columns: 1fr; /* 1 colonne dès 900px pour éviter texte tronqué */
    }
}

/* === Tabs portail : adaptation mobile/tablette === */
@media (max-width: 768px) {
    .postdy-tabs {
        flex-direction: column;
        align-items: stretch;
        gap: 0;
        padding: 8px;
    }
    .postdy-tab,
    .postdy-tab-parent {
        width: 100%;
        justify-content: space-between;
        padding: 12px 16px;
        border-bottom: 1px solid var(--c-line-soft);
        margin-bottom: 0;
        text-align: left;
    }
    .postdy-tab.is-active,
    .postdy-tab-group.is-active > .postdy-tab-parent {
        border-bottom-color: var(--c-line-soft);
        background: var(--c-orange-soft, #FFE3CF);
        border-radius: 8px;
        margin-bottom: 4px;
    }
    /* Sur mobile, le sous-menu se déroule inline (pas en dropdown absolute) */
    .postdy-tab-group .postdy-tab-submenu {
        position: static;
        opacity: 1;
        visibility: visible;
        transform: none;
        box-shadow: none;
        border: none;
        border-radius: 0;
        background: transparent;
        padding: 0 0 0 1.5rem;
        margin: 4px 0 8px;
        max-height: 0;
        overflow: hidden;
        transition: max-height .3s ease;
    }
    .postdy-tab-group.is-open .postdy-tab-submenu {
        max-height: 500px;
    }
    .postdy-tab-child {
        padding: 10px 14px;
        border-radius: 6px;
        font-size: 0.9rem;
    }
}

/* Tablette (769-1100px) : tabs sur 2 lignes propres */
@media (min-width: 769px) and (max-width: 1100px) {
    .postdy-tabs {
        flex-wrap: wrap;
    }
    .postdy-tab,
    .postdy-tab-parent {
        font-size: 0.88rem;
        padding: 10px 14px;
    }
}

/* === Section badge & selector (multi-tenant) === */
.postdy-section-badge {
    display: inline-block;
    padding: 3px 10px;
    border-radius: 12px;
    font-size: 0.75rem;
    font-weight: 600;
    background: var(--c-orange-soft, #FFE3CF);
    color: var(--c-orange-dk, #C24F19);
    margin-top: 4px;
    margin-left: 6px;
}
.postdy-section-badge.postdy-section-all {
    background: rgba(15, 27, 61, 0.08);
    color: var(--c-navy-900, #0F1B3D);
}

.postdy-section-switcher {
    display: flex;
    align-items: center;
    gap: 8px;
    background: #fff;
    padding: 8px 14px;
    border-radius: 10px;
    border: 1px solid var(--c-line-soft, rgba(15, 27, 61, 0.08));
}
.postdy-section-switcher label {
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--c-text-soft);
    white-space: nowrap;
}
.postdy-section-switcher select {
    border: none;
    background: transparent;
    font-size: 0.9rem;
    font-weight: 500;
    color: var(--c-navy-900);
    cursor: pointer;
    padding: 4px 8px;
    max-width: 280px;
    text-overflow: ellipsis;
}
.postdy-section-switcher select:focus {
    outline: 2px solid var(--c-orange);
    outline-offset: 2px;
    border-radius: 4px;
}

/* Sur mobile, le selector passe en dessous */
@media (max-width: 768px) {
    .postdy-portal-head {
        flex-direction: column;
        align-items: stretch;
        gap: 12px;
    }
    .postdy-section-switcher {
        width: 100%;
    }
    .postdy-section-switcher select {
        flex: 1;
        max-width: none;
    }
}

/* ============================================================================
   ONGLET INVITER & PARRAINER
   ============================================================================ */
.postdy-invite-tab { max-width: 1100px; }

.postdy-invite-kpis {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(170px, 1fr));
    gap: 0.75rem;
    margin-bottom: 1.5rem;
}
.postdy-invite-kpi {
    background: #fff;
    border: 1px solid rgba(15,27,61,.08);
    border-radius: 10px;
    padding: 1.1rem 1.2rem;
    text-align: center;
    box-shadow: 0 2px 6px rgba(15,27,61,.04);
}
.postdy-invite-kpi .kpi-num {
    display: block;
    font-size: 1.85rem;
    font-weight: 700;
    color: #f97316;
    line-height: 1;
    margin-bottom: 0.4rem;
}
.postdy-invite-kpi .kpi-lbl {
    display: block;
    font-size: 0.78rem;
    color: #5A6175;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    font-weight: 500;
}

.postdy-invite-card {
    background: #fff;
    border: 1px solid rgba(15,27,61,.08);
    border-radius: 12px;
    padding: 1.5rem 1.75rem;
    margin-bottom: 1.5rem;
    box-shadow: 0 2px 12px rgba(15,27,61,.04);
}
.postdy-invite-card h3 {
    color: #0f1b3d;
    font-size: 1.1rem;
    margin: 0 0 0.5rem;
}

.postdy-code-display {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1rem;
    margin: 1rem 0 1.5rem;
}
.postdy-code-block {
    background: #f9fafb;
    border: 1px solid #e5e7eb;
    border-radius: 8px;
    padding: 0.85rem 1rem;
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
    align-items: flex-start;
}
.postdy-code-block .code-label {
    font-size: 0.7rem;
    font-weight: 700;
    color: #6b7280;
    letter-spacing: 0.08em;
}
.postdy-code-block .code-value {
    font-family: 'Courier New', monospace;
    font-size: 1.05rem;
    color: #0f1b3d;
    font-weight: 600;
    word-break: break-all;
    line-height: 1.4;
}
.postdy-copy-btn,
.postdy-copy-btn-small {
    background: #0f1b3d;
    color: #fff;
    border: none;
    padding: 0.4rem 0.85rem;
    border-radius: 6px;
    font-size: 0.8rem;
    font-weight: 600;
    cursor: pointer;
    transition: background .15s;
    align-self: flex-start;
}
.postdy-copy-btn:hover,
.postdy-copy-btn-small:hover { background: #1e2a5e; }
.postdy-copy-btn-small { padding: 0.25rem 0.6rem; font-size: 0.72rem; }

@media (max-width: 600px) {
    .postdy-code-display { grid-template-columns: 1fr; }
    .postdy-invite-kpis { grid-template-columns: repeat(2, 1fr); }
    .postdy-invite-card { padding: 1.25rem 1rem; }
}

.postdy-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.92rem;
}
.postdy-table th,
.postdy-table td {
    padding: 0.6rem 0.75rem;
    text-align: left;
    border-bottom: 1px solid #e5e7eb;
}
.postdy-table th {
    background: #f9fafb;
    font-weight: 600;
    color: #0f1b3d;
    font-size: 0.78rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}
.postdy-table tr:hover td { background: #fafbff; }

.postdy-badge {
    display: inline-block;
    padding: 0.2rem 0.55rem;
    border-radius: 12px;
    font-size: 0.75rem;
    font-weight: 600;
}
.postdy-badge-success { background: #d1fae5; color: #065f46; }
.postdy-badge-muted { background: #f3f4f6; color: #6b7280; }

.postdy-btn-sm {
    padding: 0.3rem 0.65rem !important;
    font-size: 0.78rem !important;
}

.postdy-invitation-banner { animation: postdy-fade-in .3s ease; }
@keyframes postdy-fade-in {
    from { opacity: 0; transform: translateY(-6px); }
    to { opacity: 1; transform: translateY(0); }
}

/* ============================================================================
   NAVIGATION REFONTE V2 — soft, responsive, mobile-first
   --------------------------------------------------------------------------
   Surcharge les anciens styles de .postdy-tabs pour gérer la nouvelle
   structure (liste + dropdowns + toggle mobile). Mobile-first puis
   progressive enhancement vers desktop.
   ============================================================================ */

/* Reset des anciens styles dans le contexte nav v2 */
.postdy-portal-frame .postdy-tabs {
    position: relative;
    margin-bottom: 1.75rem;
    border-bottom: 1px solid rgba(15,27,61,0.08);
    padding: 0;
    display: block;
    background: transparent;
}

/* TOGGLE MOBILE (hamburger) */
.postdy-tabs-toggle {
    display: flex;
    align-items: center;
    gap: 0.65rem;
    width: 100%;
    padding: 0.85rem 1rem;
    background: #fff;
    border: 1px solid rgba(15,27,61,0.12);
    border-radius: 10px;
    cursor: pointer;
    font-family: inherit;
    font-size: 0.95rem;
    color: #0f1b3d;
    transition: all 0.15s ease;
    box-shadow: 0 1px 3px rgba(15,27,61,0.04);
}
.postdy-tabs-toggle:hover { border-color: rgba(249,115,22,0.4); box-shadow: 0 2px 6px rgba(249,115,22,0.08); }
.postdy-tabs-toggle:focus-visible { outline: 2px solid #f97316; outline-offset: 2px; }
.postdy-tabs-toggle .postdy-toggle-icon { font-size: 1.15rem; line-height: 1; flex-shrink: 0; }
.postdy-tabs-toggle .postdy-toggle-label { font-weight: 600; color: #5A6175; }
.postdy-tabs-toggle .postdy-toggle-current {
    flex: 1;
    text-align: right;
    color: #0f1b3d;
    font-weight: 600;
    font-size: 0.9rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* LISTE PRINCIPALE */
.postdy-tabs-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: none; /* caché par défaut sur mobile */
}
.postdy-tabs-list.is-open {
    display: block;
    margin-top: 0.5rem;
    background: #fff;
    border: 1px solid rgba(15,27,61,0.08);
    border-radius: 10px;
    padding: 0.5rem;
    box-shadow: 0 8px 24px rgba(15,27,61,0.08);
}

.postdy-tab-item {
    list-style: none;
    margin: 0;
    padding: 0;
    position: relative;
}

/* TAB (link ou button parent) */
.postdy-portal-frame .postdy-tab {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.7rem 1rem;
    color: #5A6175;
    text-decoration: none;
    background: transparent;
    border: none;
    font-family: inherit;
    font-size: 0.95rem;
    font-weight: 500;
    cursor: pointer;
    border-radius: 8px;
    transition: all 0.15s ease;
    width: 100%;
    text-align: left;
}
.postdy-portal-frame .postdy-tab:hover {
    background: rgba(249,115,22,0.06);
    color: #9a3412;
}
.postdy-portal-frame .postdy-tab.is-active,
.postdy-portal-frame .postdy-tab-item.is-active > .postdy-tab-parent {
    background: rgba(249,115,22,0.1);
    color: #9a3412;
    font-weight: 600;
}
.postdy-portal-frame .postdy-tab:focus-visible { outline: 2px solid #f97316; outline-offset: -2px; }

.postdy-tab-parent { justify-content: space-between; }
.postdy-tab-parent .postdy-tab-label { flex: 1; }
.postdy-caret {
    font-size: 0.7rem;
    color: #94a3b8;
    transition: transform 0.15s ease;
    flex-shrink: 0;
}
.postdy-tab-item.is-open > .postdy-tab-parent .postdy-caret { transform: rotate(180deg); }

/* SOUS-MENU */
.postdy-tab-submenu {
    list-style: none;
    margin: 0;
    padding: 0;
    display: none;
    background: #f9fafb;
    border-radius: 8px;
    margin: 0.25rem 0 0.5rem 1rem;
    overflow: hidden;
}
.postdy-tab-item.is-open > .postdy-tab-submenu { display: block; }
.postdy-tab-submenu li { list-style: none; }
.postdy-tab-child {
    display: flex;
    align-items: center;
    padding: 0.6rem 0.95rem;
    color: #5A6175;
    text-decoration: none;
    font-size: 0.9rem;
    border-radius: 6px;
    transition: all 0.15s ease;
    margin: 2px;
}
.postdy-tab-child:hover {
    background: rgba(249,115,22,0.08);
    color: #9a3412;
    text-decoration: none;
}
.postdy-tab-child.is-active {
    background: rgba(15,27,61,0.06);
    color: #0f1b3d;
    font-weight: 600;
}
.postdy-tab-child:focus-visible { outline: 2px solid #f97316; outline-offset: -2px; }

/* ──── DESKTOP (≥ 901px) — barre horizontale avec dropdowns ──── */
@media (min-width: 901px) {
    .postdy-tabs-toggle {
        display: none;
    }
    .postdy-tabs-list {
        display: flex !important;
        flex-wrap: wrap;
        gap: 0.25rem;
        margin: 0;
        padding: 0;
        background: transparent;
        border: none;
        box-shadow: none;
    }
    .postdy-tab-item {
        position: relative;
    }
    .postdy-portal-frame .postdy-tab {
        width: auto;
        padding: 0.7rem 1rem;
        position: relative;
    }
    /* Soulignement orange en bas pour onglet actif */
    .postdy-portal-frame .postdy-tab.is-active::after,
    .postdy-portal-frame .postdy-tab-item.is-active > .postdy-tab-parent::after {
        content: '';
        position: absolute;
        left: 1rem;
        right: 1rem;
        bottom: -1px;
        height: 2px;
        background: #f97316;
        border-radius: 2px 2px 0 0;
    }

    /* Dropdown : caché par défaut, visible au hover ou focus-within */
    .postdy-tab-submenu {
        position: absolute;
        top: calc(100% + 4px);
        left: 0;
        min-width: 240px;
        background: #fff;
        border: 1px solid rgba(15,27,61,0.08);
        border-radius: 10px;
        margin: 0;
        padding: 0.4rem;
        box-shadow: 0 12px 32px rgba(15,27,61,0.12);
        opacity: 0;
        visibility: hidden;
        transform: translateY(-4px);
        transition: opacity 0.15s ease, transform 0.15s ease, visibility 0.15s ease;
        z-index: 50;
        display: block;
    }
    .postdy-tab-item:hover > .postdy-tab-submenu,
    .postdy-tab-item:focus-within > .postdy-tab-submenu,
    .postdy-tab-item.is-open > .postdy-tab-submenu {
        opacity: 1;
        visibility: visible;
        transform: translateY(0);
    }
    /* Empêcher le caret de tourner sur desktop sauf si is-open via clic */
    .postdy-tab-item:hover > .postdy-tab-parent .postdy-caret {
        transform: rotate(180deg);
    }
}

/* ──── TABLET ENTRE 601 et 900px : on accepte le wrap multi-ligne ──── */
@media (min-width: 601px) and (max-width: 900px) {
    .postdy-tabs-toggle {
        display: none;
    }
    .postdy-tabs-list {
        display: flex !important;
        flex-wrap: wrap;
        gap: 0.4rem;
    }
    .postdy-tab-item { position: relative; }
    .postdy-portal-frame .postdy-tab {
        width: auto;
        padding: 0.65rem 0.85rem;
        font-size: 0.92rem;
    }
    /* Sous-menu en dropdown au tap (click) */
    .postdy-tab-submenu {
        position: absolute;
        top: calc(100% + 4px);
        left: 0;
        min-width: 220px;
        background: #fff;
        border: 1px solid rgba(15,27,61,0.08);
        border-radius: 10px;
        padding: 0.4rem;
        box-shadow: 0 12px 32px rgba(15,27,61,0.12);
        margin: 0;
        z-index: 50;
    }
}

/* ──── PETIT ESPACE EN DESSOUS DE LA NAV POUR RESPIRATION ──── */
.postdy-portal-frame .postdy-tab-content {
    padding-top: 0.5rem;
}

/* ──── HEADER PORTAL : amélioration du wrap mobile ──── */
@media (max-width: 600px) {
    .postdy-portal-frame .postdy-portal-header {
        flex-direction: column;
        align-items: stretch;
        gap: 0.75rem;
    }
    .postdy-portal-frame .postdy-portal-actions {
        justify-content: flex-end;
    }
}
