@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Manrope:wght@600;700;800&display=swap');

:root {
    --ink: #18352d;
    --forest: #0c4a36;
    --green: #087957;
    --mint: #e7f4ed;
    --paper: #fbfcfa;
    --line: #dce7e0;
    --muted: #61736b;
    --accent: #e6a54b;
    --font-body: "Inter", "Segoe UI", Arial, sans-serif;
    --font-heading: "Manrope", "Segoe UI", Arial, sans-serif;
}

body {
    font-family: var(--font-body);
    line-height: 1.6;
    -webkit-font-smoothing: antialiased;
    text-rendering: optimizeLegibility;
    background: var(--paper);
    color: var(--ink);
}

h1,
h2,
h3,
h4,
h5,
h6 {
    margin-top: 0;
    margin-bottom: .75em;
    font-family: var(--font-heading);
    font-weight: 700;
    line-height: 1.18;
    letter-spacing: -.032em;
    text-wrap: balance;
    font-kerning: normal;
}

h1 {
    font-size: clamp(2.2rem, 5vw, 4.4rem);
    font-weight: 800;
    line-height: 1.06;
}

h2 {
    font-size: clamp(1.7rem, 3vw, 2.4rem);
    font-weight: 800;
    line-height: 1.12;
}

h3 {
    font-size: clamp(1.25rem, 2vw, 1.55rem);
    line-height: 1.25;
}

h4 {
    font-size: clamp(1.1rem, 1.6vw, 1.3rem);
}

h5 {
    font-size: clamp(1rem, 1.35vw, 1.15rem);
}

h6 {
    font-size: .9rem;
    letter-spacing: .01em;
}

.site-header {
    background: rgba(251, 252, 250, .94);
    backdrop-filter: blur(12px);
    border-bottom: 1px solid var(--line);
}

.brand {
    font-family: "Playfair Display", serif;
    font-weight: 700;
    font-size: 1.45rem;
    color: var(--ink);
}

.brand span {
    color: var(--green);
}

.nav-link {
    color: var(--ink);
    font-weight: 600;
}

.nav-link.active,
.nav-link:hover {
    color: var(--green);
}

.btn {
    border-radius: .35rem;
    font-weight: 700;
}

.btn-primary {
    background: var(--green);
    border-color: var(--green);
}

.btn-primary:hover,
.btn-primary:focus {
    background: var(--forest);
    border-color: var(--forest);
}

.home-hero {
    background: linear-gradient(115deg, rgba(255, 255, 255, 0.8), rgba(0, 0, 0, 0.62)), url('../images/hero_home.jpg') center/cover;
    border-bottom: 1px solid var(--line);
}

.py-lg-6 {
    padding-top: 7rem !important;
    padding-bottom: 7rem !important;
}

.home-hero h1 {
    max-width: 850px;
}

.home-hero h1 em {
    color: var(--green);
}

.hero-copy {
    color: var(--muted);
    font-size: 1.2rem;
    max-width: 680px;
    line-height: 1.7;
}

.home-hero .hero-copy {
    color: #294238;
    font-weight: 500;
    text-shadow: 0 1px 12px rgba(251, 252, 250, .75);
}

.about-section {
    position: relative;
    overflow: hidden;
    background: linear-gradient(160deg, #f7fbf8 0%, #e7f4ed 40%, #f0f7f3 100%);
    border-bottom: 1px solid var(--line);
}

.about-section::before {
    content: "";
    position: absolute;
    top: -180px;
    right: -180px;
    width: 420px;
    height: 420px;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(8, 121, 87, .08), transparent 70%);
    pointer-events: none;
}

.about-section::after {
    content: "";
    position: absolute;
    bottom: -120px;
    left: -120px;
    width: 320px;
    height: 320px;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(230, 165, 75, .06), transparent 70%);
    pointer-events: none;
}

.about-intro {
    max-width: 780px;
    margin-bottom: 3.5rem;
}

.about-intro h2 {
    font-size: clamp(1.8rem, 3.5vw, 2.7rem);
}

.about-intro h2 em {
    color: var(--green);
    font-style: normal;
}

.about-lead {
    color: var(--muted);
    font-size: 1.08rem;
    line-height: 1.8;
    max-width: 720px;
}

.about-services-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 1.5rem;
    margin-bottom: 3.5rem;
}

.about-service-card {
    position: relative;
    display: flex;
    flex-direction: column;
    justify-content: flex-end;
    min-height: 420px;
    padding: 2rem;
    border-radius: 0;
    overflow: hidden;
    border: 1px solid rgba(255, 255, 255, .15);
    box-shadow: 0 1rem 2.8rem rgba(12, 74, 54, .08);
    transition: transform .4s cubic-bezier(.16, 1, .3, 1), box-shadow .4s cubic-bezier(.16, 1, .3, 1), border-color .3s ease;
}

.about-service-card:hover {
    transform: translateY(-8px);
    border-color: rgba(255, 255, 255, .3);
    box-shadow: 0 1.8rem 4rem rgba(12, 74, 54, .25);
}

.about-service-img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
    z-index: 1;
    border-radius: 0;
    transition: transform .6s cubic-bezier(.16, 1, .3, 1);
}

.about-service-card:hover .about-service-img {
    transform: scale(1.08);
}

.about-service-overlay {
    position: absolute;
    inset: 0;
    border-radius: 0;
    background: linear-gradient(180deg, rgba(7, 28, 20, .15) 0%, rgba(7, 28, 20, .6) 45%, rgba(5, 20, 14, .95) 100%);
    z-index: 2;
    transition: background .4s ease;
}

.about-service-card:hover .about-service-overlay {
    background: linear-gradient(180deg, rgba(7, 28, 20, .25) 0%, rgba(7, 28, 20, .75) 35%, rgba(4, 16, 11, .98) 100%);
}

.about-service-content {
    position: relative;
    z-index: 3;
    display: flex;
    flex-direction: column;
}

.about-service-desc {
    color: #dbebe2;
    font-size: .92rem;
    line-height: 1.65;
    margin: 0;
    opacity: 0;
    max-height: 0;
    overflow: hidden;
    transform: translateY(16px);
    transition: opacity .4s cubic-bezier(.16, 1, .3, 1), max-height .4s cubic-bezier(.16, 1, .3, 1), transform .4s cubic-bezier(.16, 1, .3, 1), margin .4s cubic-bezier(.16, 1, .3, 1);
}

.about-service-card:hover .about-service-desc {
    opacity: 1;
    max-height: 180px;
    transform: translateY(0);
    margin-bottom: .85rem;
}

.about-service-link {
    display: inline-flex;
    align-items: center;
    justify-content: space-between;
    gap: .6rem;
    color: #fff;
    font-family: var(--font-heading);
    font-size: 1.05rem;
    font-weight: 800;
    text-decoration: none;
    padding: .85rem 1.15rem;
    background: rgba(7, 28, 20, .78);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    border: 1px solid rgba(255, 255, 255, .2);
    border-radius: 0;
    width: 100%;
    transition: background .25s ease, border-color .25s ease, color .25s ease, box-shadow .25s ease;
}

.about-service-link i {
    font-size: 1.1rem;
    transition: transform .25s ease;
}

.about-service-link:hover {
    background: var(--forest);
    border-color: rgba(255, 255, 255, .4);
    color: #fff;
}

.about-service-link:hover i {
    transform: translateX(5px);
}

.about-service-card:hover .about-service-link {
    background: var(--green);
    border-color: var(--green);
    box-shadow: 0 .5rem 1.5rem rgba(8, 121, 87, .35);
}

.about-kreatis {
    display: grid;
    grid-template-columns: 1fr 1.15fr;
    overflow: hidden;
    background: linear-gradient(135deg, #072a1e 0%, #0a4532 50%, #086b4d 100%);
    box-shadow: 0 1.5rem 4rem rgba(6, 32, 23, .25);
    border: 1px solid rgba(255, 255, 255, .1);
}

.about-kreatis-media {
    position: relative;
    width: 100%;
    min-height: 480px;
    height: 100%;
    overflow: hidden;
}

.about-kreatis-media img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
    display: block;
    transition: transform .6s cubic-bezier(.16, 1, .3, 1);
}

.about-kreatis:hover .about-kreatis-media img {
    transform: scale(1.04);
}

.about-kreatis-media-overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient(90deg, rgba(0, 0, 0, .05) 0%, rgba(7, 42, 30, .45) 100%);
    pointer-events: none;
}

.about-kreatis-content {
    padding: clamp(2.5rem, 5vw, 4.2rem);
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.about-kreatis-eyebrow {
    display: inline-flex;
    align-items: center;
    gap: .45rem;
    margin-bottom: .85rem;
    color: #9fe2be;
    font-size: .78rem;
    font-weight: 800;
    letter-spacing: .12em;
    text-transform: uppercase;
}

.about-kreatis-eyebrow i {
    color: var(--accent);
}

.about-kreatis h3 {
    margin-bottom: 1rem;
    color: #fff;
    font-size: clamp(1.6rem, 2.8vw, 2.2rem);
    line-height: 1.2;
}

.about-kreatis-content>p {
    color: #d1e8db;
    font-size: .96rem;
    line-height: 1.75;
    max-width: 640px;
    margin-bottom: 1.25rem;
}

.about-kreatis-content>p strong {
    color: #fff;
    font-weight: 700;
}

.about-kreatis-tags {
    display: flex;
    flex-wrap: wrap;
    gap: .5rem;
    padding: 0;
    margin: 0 0 2rem;
    list-style: none;
}

.about-kreatis-tags li {
    padding: .45rem .85rem;
    border: 1px solid rgba(214, 237, 222, .22);
    background: rgba(255, 255, 255, .08);
    color: #e2f0e8;
    font-size: .78rem;
    font-weight: 650;
    transition: background .2s ease, border-color .2s ease;
}

.about-kreatis-tags li:hover {
    background: rgba(255, 255, 255, .16);
    border-color: rgba(255, 255, 255, .4);
}

.about-kreatis-actions {
    display: flex;
    align-items: center;
    gap: 1.25rem;
    flex-wrap: wrap;
}

.about-kreatis-actions .btn-primary {
    background: #fff;
    border-color: #fff;
    color: var(--forest);
    font-weight: 800;
    padding: .85rem 1.75rem;
}

.about-kreatis-actions .btn-primary:hover {
    background: #e7f4ed;
    border-color: #e7f4ed;
    transform: translateY(-2px);
    box-shadow: 0 .8rem 2rem rgba(2, 32, 22, .25);
}

.about-kreatis-secondary {
    color: #d6e9dc;
    font-size: .9rem;
    font-weight: 700;
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: .4rem;
    transition: color .2s ease, gap .2s ease;
}

.about-kreatis-secondary:hover {
    color: #fff;
    gap: .65rem;
    text-decoration: none;
}

@media (max-width:991.98px) {
    .about-services-grid {
        grid-template-columns: 1fr;
        gap: 1.25rem;
    }

    .about-service-card {
        min-height: 340px;
        padding: 1.5rem;
    }

    .about-service-desc {
        opacity: 1;
        max-height: none;
        transform: none;
        margin-top: .7rem;
        margin-bottom: .7rem;
    }

    .about-kreatis {
        grid-template-columns: 1fr;
    }

    .about-kreatis-media {
        min-height: 280px;
        max-height: 340px;
    }

    .about-kreatis-content {
        padding: 2rem 1.5rem;
    }
}

@media (max-width:767.98px) {
    .about-kreatis-actions .btn {
        width: 100%;
        text-align: center;
        justify-content: center;
    }
}

.eyebrow {
    color: var(--green);
    text-transform: uppercase;
    letter-spacing: .12em;
    font-size: .75rem;
    font-weight: 700;
    margin-bottom: .8rem;
}

.section-space {
    padding-top: 5.5rem;
    padding-bottom: 5.5rem;
}

.section-heading {
    display: flex;
    align-items: end;
    justify-content: space-between;
    gap: 1.5rem;
    margin-bottom: 2rem;
}

.section-heading h2 {
    margin: 0;
}

.text-link {
    color: var(--green);
    font-weight: 700;
    text-decoration: none;
}

.text-link:hover {
    color: var(--forest);
}

.section-soft {
    background: var(--mint);
}

.content-card,
.opportunity-card,
.info-panel {
    position: relative;
    background: white;
    border: 1px solid var(--line);
    overflow: hidden;
}

.content-card {
    transition: transform .2s ease, box-shadow .2s ease;
}

.content-card h2,
.content-card h3 {
    font-size: 1.05rem;
    line-height: 1.3;
}

.content-card .text-secondary {
    font-size: .8rem;
    line-height: 1.5;
}

.content-card:hover {
    transform: translateY(-4px);
    box-shadow: 0 1rem 2.5rem rgba(18, 61, 45, .12);
}

.content-image {
    width: 100%;
    height: 220px;
    object-fit: cover;
}

.card-meta {
    color: var(--muted);
    font-size: .85rem;
    font-weight: 600;
}

.line-clamp-3 {
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.opportunity-card {
    display: flex;
    flex-direction: column;
    padding: 1.55rem;
    transition: border-color .2s ease, box-shadow .2s ease;
}

.opportunity-card:hover {
    border-color: var(--green);
    box-shadow: 0 .75rem 2rem rgba(18, 61, 45, .08);
}

.opportunity-card h3,
.opportunity-card h2 {
    margin: 1.2rem 0 .75rem;
    font-size: 1.05rem;
    line-height: 1.3;
}

.opportunity-card .card-meta,
.opportunity-card .opportunity-org {
    font-size: .78rem;
}

.opportunity-card-image {
    width: calc(100% + 3.1rem);
    height: 175px;
    margin: -1.55rem -1.55rem 1.25rem;
    object-fit: cover;
}

.opportunity-detail-image {
    width: 100%;
    max-height: 430px;
    margin-bottom: 1.75rem;
    border-radius: .65rem;
    object-fit: cover;
}

.tag {
    color: var(--forest);
    background: var(--mint);
    align-self: flex-start;
    padding: .35rem .6rem;
    border-radius: 999px;
    font-size: .72rem;
    font-weight: 700;
}

.publish-cta-section {
    position: relative;
    overflow: hidden;
    width: 100%;
    color: #fff;
    background: radial-gradient(circle at 80% 18%, #1a8967 0%, transparent 35%), linear-gradient(115deg, #073c2c 0%, #0b6548 100%);
}

.publish-cta {
    display: grid;
    grid-template-columns: minmax(0, 1.25fr) minmax(300px, .75fr);
    align-items: end;
    gap: clamp(1rem, 4vw, 4rem);
    min-height: 430px;
}

.publish-cta-content {
    position: relative;
    z-index: 1;
    align-self: center;
    max-width: 690px;
    padding: clamp(3.5rem, 6vw, 5.5rem) 0;
}

.publish-cta h2 {
    max-width: 650px;
    margin-bottom: 1rem;
    color: #fff;
    font-size: clamp(2.25rem, 4vw, 3.6rem);
}

.publish-cta p:not(.eyebrow) {
    max-width: 590px;
    line-height: 1.75;
}

.publish-cta-actions {
    justify-content: flex-start;
    margin-top: 1.8rem;
}

.publish-cta .btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 190px;
    box-shadow: 0 1rem 2.5rem rgba(2, 32, 22, .2);
    transition: transform .25s ease, box-shadow .25s ease;
}

.publish-cta .btn:hover {
    transform: translateY(-3px);
    box-shadow: 0 1.35rem 3rem rgba(2, 32, 22, .28);
}

.publish-cta-visual {
    align-self: end;
    min-width: 0;
    height: 100%;
    display: flex;
    align-items: end;
    justify-content: center;
}

.publish-cta-visual img {
    display: block;
    width: min(100%, 540px);
    max-height: 460px;
    height: auto;
    object-fit: contain;
    object-position: bottom;
    filter: drop-shadow(0 20px 35px rgba(2, 27, 20, .18));
}

.kreatis-footer-cta {
    position: relative;
    overflow: hidden;
    color: #f4f8f5;
    background: radial-gradient(circle at 82% 30%, rgba(94, 180, 142, .18), transparent 35%), linear-gradient(120deg, #102f29, #173f37);
}

.kreatis-footer-cta-inner {
    display: grid;
    grid-template-columns: minmax(0, 1.12fr) minmax(320px, .88fr);
    align-items: center;
    gap: clamp(2rem, 5vw, 5rem);
    padding-top: clamp(3.5rem, 6vw, 5.5rem);
    padding-bottom: clamp(3.5rem, 6vw, 5.5rem);
}

.kreatis-footer-cta-copy {
    max-width: 690px;
}

.kreatis-footer-cta-eyebrow {
    margin-bottom: 1.1rem;
    color: #b5dfc7;
    font-size: .73rem;
    font-weight: 800;
    letter-spacing: .14em;
    text-transform: uppercase;
}

.kreatis-footer-cta h2 {
    max-width: 660px;
    margin: 0 0 1.2rem;
    color: #fff;
    font-size: clamp(2rem, 3.4vw, 3.25rem);
}

.kreatis-footer-cta-copy>p:nth-child(3) {
    max-width: 630px;
    margin: 0;
    color: #d0e2d7;
    font-size: clamp(.98rem, 1.15vw, 1.08rem);
    line-height: 1.8;
}

.kreatis-footer-cta-services {
    display: flex;
    flex-wrap: wrap;
    gap: .55rem;
    margin: 1.5rem 0 1.9rem;
    padding: 0;
    list-style: none;
    color: #e8f4ec;
    font-size: .78rem;
    font-weight: 650;
}

.kreatis-footer-cta-services li {
    padding: .45rem .75rem;
    border: 1px solid rgba(214, 237, 222, .23);
    border-radius: 999px;
    background: rgba(255, 255, 255, .07);
}

.kreatis-footer-cta-actions {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .85rem 1.25rem;
}

.kreatis-footer-cta-button {
    display: inline-flex;
    align-items: center;
    justify-content: space-between;
    gap: 1.5rem;
    min-height: 54px;
    padding: .8rem 1.3rem;
    border: 1px solid #f5f8f2;
    border-radius: .5rem;
    color: #13332d;
    background: #f5f8f2;
    font-size: .9rem;
    font-weight: 800;
    text-decoration: none;
    box-shadow: 0 1rem 2.5rem rgba(3, 23, 19, .2);
    transition: background .2s ease, transform .2s ease, box-shadow .2s ease;
}

.kreatis-footer-cta-button:hover,
.kreatis-footer-cta-button:focus-visible {
    color: #13332d;
    background: #dff0e5;
    transform: translateY(-3px);
    box-shadow: 0 1.25rem 2.75rem rgba(3, 23, 19, .25);
}

.kreatis-footer-cta-secondary {
    color: #d6e9dc;
    font-size: .84rem;
    font-weight: 650;
    text-decoration: none;
    text-underline-offset: .22rem;
}

.kreatis-footer-cta-secondary:hover,
.kreatis-footer-cta-secondary:focus-visible {
    color: #fff;
    text-decoration: underline;
}

.kreatis-footer-cta-visual {
    position: relative;
    overflow: hidden;
    aspect-ratio: 5/4;
    border: 1px solid rgba(255, 255, 255, .16);
    border-radius: 1.1rem;
    background: #214639;
    box-shadow: 0 1.7rem 4rem rgba(2, 21, 17, .3);
}

.kreatis-footer-cta-visual img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: 50% 50%;
}

@media (max-width:991.98px) {
    .publish-cta {
        grid-template-columns: minmax(0, 1fr) minmax(230px, .65fr);
    }

    .publish-cta-visual img {
        max-height: 400px;
    }

    .kreatis-footer-cta-inner {
        grid-template-columns: minmax(0, 1fr) minmax(280px, .85fr);
        gap: 2rem;
    }
}

@media (max-width:767.98px) {
    .publish-cta-section::after {
        position: absolute;
        inset: 0;
        z-index: 1;
        content: "";
        background: linear-gradient(90deg, rgba(4, 42, 31, .55), rgba(4, 42, 31, .24));
        pointer-events: none;
    }

    .publish-cta {
        position: static;
        display: block;
        min-height: 0;
    }

    .publish-cta-content {
        z-index: 2;
        max-width: none;
        padding: 3.2rem 0;
        text-shadow: 0 2px 12px rgba(2, 29, 21, .55);
    }

    .publish-cta-content .text-white-50 {
        color: #f1f8f3 !important;
    }

    .publish-cta-visual {
        position: absolute;
        inset: 0;
        z-index: 0;
        width: 100%;
        height: 100%;
        overflow: hidden;
    }

    .publish-cta-visual img {
        width: 100%;
        height: 100%;
        max-height: none;
        object-fit: cover;
        object-position: 38% center;
        filter: none;
    }

    .publish-cta .btn {
        width: 100%;
        text-shadow: none;
    }

    .kreatis-footer-cta::after {
        position: absolute;
        inset: 0;
        z-index: 1;
        content: "";
        background: linear-gradient(180deg, rgba(7, 39, 31, .38), rgba(7, 39, 31, .24));
        pointer-events: none;
    }

    .kreatis-footer-cta-inner {
        display: block;
        padding-top: 3.2rem;
        padding-bottom: 3.2rem;
    }

    .kreatis-footer-cta-copy {
        position: relative;
        z-index: 2;
        max-width: none;
        text-shadow: 0 2px 10px rgba(2, 29, 21, .4);
    }

    .kreatis-footer-cta-copy>p:nth-child(3) {
        color: #f0f7f2;
    }

    .kreatis-footer-cta-visual {
        position: absolute;
        inset: 0;
        z-index: 0;
        aspect-ratio: auto;
        border: 0;
        border-radius: 0;
        box-shadow: none;
    }

    .kreatis-footer-cta-visual img {
        object-position: 54% center;
    }

    .kreatis-footer-cta-services li {
        background: rgba(10, 47, 37, .55);
    }

    .kreatis-footer-cta-button {
        width: 100%;
        text-shadow: none;
    }

    .kreatis-footer-cta h2 {
        font-size: clamp(1.9rem, 8vw, 2.65rem);
    }
}

@media (prefers-reduced-motion:reduce) {

    .publish-cta .btn,
    .kreatis-footer-cta-button {
        transition: none;
    }
}

.site-footer {
    background: var(--forest);
    color: #d5d5c3;
    font-size: .85rem;
}

.footer-company-link {
    color: #fff;
    font-weight: 700;
    text-decoration: none;
}

.footer-company-link:hover,
.footer-company-link:focus-visible {
    color: #b9f0d9;
    text-decoration: underline;
    text-underline-offset: .2rem;
}

.page-intro {
    background: var(--mint);
    padding: 4.5rem 0 4rem;
    border-bottom: 1px solid var(--line);
}

.page-intro h1 {
    max-width: 860px;
    font-size: clamp(2.35rem, 4vw, 3.8rem);
}

.page-intro p:not(.eyebrow) {
    color: var(--muted);
    font-size: 1.1rem;
    max-width: 700px;
}

.page-intro.compact {
    padding: 3rem 0;
}

.filter-bar {
    padding: 1.25rem;
    background: white;
    border: 1px solid var(--line);
    border-radius: .65rem;
}

.form-label {
    font-weight: 700;
    font-size: .85rem;
}

.form-control,
.form-select {
    border-color: #cbd8d0;
    min-height: 44px;
}

.form-control:focus,
.form-select:focus {
    border-color: var(--green);
    box-shadow: 0 0 0 .2rem rgba(8, 121, 87, .15);
}

.result-count {
    color: var(--muted);
    font-size: .9rem;
    margin: 1.5rem 0;
}

.empty-state {
    text-align: center;
    padding: 4rem 1rem;
    border: 1px dashed #b6c9bd;
    border-radius: .65rem;
    color: var(--muted);
}

.empty-state>i {
    font-size: 2rem;
    color: var(--green);
}

.empty-state h2 {
    color: var(--ink);
    font-size: 1.75rem;
    margin-top: 1rem;
}

.detail-hero {
    height: min(560px, 70vh);
    position: relative;
    color: white;
}

.detail-hero-image {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.detail-hero-overlay {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: end;
    padding: 3rem 0;
    background: linear-gradient(0deg, rgba(5, 33, 24, .76), rgba(5, 33, 24, .04));
}

.detail-hero-overlay :is(h1, p, a) {
    text-shadow: 0 2px 14px rgba(0, 0, 0, .62);
}

.detail-hero h1 {
    max-width: 900px;
    font-size: clamp(2.4rem, 4vw, 4rem);
}

.back-link {
    color: white;
    font-size: .9rem;
    font-weight: 700;
    text-decoration: none;
}

.back-link.dark {
    color: var(--forest);
}

.detail-copy {
    color: #4e6158;
    font-size: 1.1rem;
    line-height: 1.9;
    white-space: normal;
}

.info-panel {
    padding: 1.6rem;
}

.org-logo {
    width: 56px;
    height: 56px;
    border-radius: 50%;
    object-fit: cover;
    margin-bottom: 1rem;
}

dl {
    margin: 1rem 0 0;
}

dt {
    font-size: .74rem;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: var(--muted);
    margin-top: 1rem;
}

dd {
    font-weight: 600;
    margin-bottom: 0;
}

@media (max-width:767px) {
    .py-lg-6 {
        padding-top: 4rem !important;
        padding-bottom: 4rem !important;
    }

    .section-space {
        padding-top: 3.5rem;
        padding-bottom: 3.5rem;
    }

    .section-heading {
        align-items: flex-start;
        flex-direction: column;
    }

    .publication-grid {
        --bs-gutter-x: .75rem;
        --bs-gutter-y: .75rem;
    }

    .publication-grid .content-image {
        height: clamp(105px, 31vw, 145px);
    }

    .publication-grid .content-card>.p-4 {
        padding: .8rem !important;
    }

    .publication-grid .content-card h2,
    .publication-grid .content-card h3,
    .publication-grid .opportunity-card h2,
    .publication-grid .opportunity-card h3 {
        font-size: .85rem;
        line-height: 1.3;
    }

    .publication-grid .content-card .text-secondary,
    .publication-grid .card-meta,
    .publication-grid .opportunity-org {
        font-size: .68rem;
    }

    .publication-grid .content-card .text-secondary {
        font-size: .7rem;
        line-height: 1.4;
    }

    .publication-grid .card-meta-row {
        gap: .35rem;
        margin-bottom: .6rem;
        font-size: .68rem;
    }

    .publication-grid .activity-card-footer {
        align-items: flex-start;
        flex-direction: column;
        gap: .45rem;
        padding-top: .65rem;
    }

    .publication-grid .opportunity-card {
        padding: .75rem;
    }

    .publication-grid .opportunity-card-image {
        width: calc(100% + 1.5rem);
        height: clamp(105px, 31vw, 145px);
        margin: -.75rem -.75rem .75rem;
    }

    .publication-grid .opportunity-view-count {
        top: .5rem;
        left: .5rem;
        padding: .2rem .38rem;
        font-size: .62rem;
    }

    .publication-grid .opportunity-card-classification {
        align-items: flex-start;
        flex-direction: column;
        gap: .3rem;
    }

    .publication-grid .opportunity-type,
    .publication-grid .opportunity-status {
        max-width: 100%;
        font-size: .6rem;
        white-space: normal;
    }

    .publication-grid .opportunity-card h2,
    .publication-grid .opportunity-card h3 {
        margin: .75rem 0 .5rem;
    }

    .publication-grid .card-location-row {
        align-items: flex-start;
        flex-direction: column;
        gap: .4rem;
    }

    .detail-hero-overlay {
        padding-bottom: 2rem;
    }
}

/* Espaces de gestion */
.admin-body {
    background: #f5f8f6;
    color: var(--ink);
}

.admin-shell {
    min-height: 100vh;
    display: flex;
}

.admin-sidebar {
    --bs-offcanvas-bg: #fff;
    width: 264px;
    flex: 0 0 264px;
    display: flex !important;
    flex-direction: column;
    color: #263f36;
    background: #fff;
    border-right: 1px solid #dce7e0;
    box-shadow: 8px 0 24px rgba(24, 53, 45, .035);
}

.admin-sidebar-head {
    height: 76px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0 1.4rem;
    border-bottom: 1px solid #e5ede8;
}

.admin-brand {
    color: #18352d;
    font-family: "Playfair Display", serif;
    font-size: 1.4rem;
    font-weight: 700;
    text-decoration: none;
}

.admin-brand:hover {
    color: #18352d;
}

.admin-brand span {
    color: #087957;
}

.sidebar-label {
    padding: 1.5rem 1.5rem .65rem;
    margin: 0;
    color: #71877c;
    letter-spacing: .11em;
    text-transform: uppercase;
    font-size: .68rem;
    font-weight: 800;
}

.admin-nav {
    padding: 0 .75rem;
    display: grid;
    gap: .3rem;
}

.admin-nav a,
.admin-sidebar-footer a {
    color: #40594e;
    text-decoration: none;
    display: flex;
    gap: .75rem;
    align-items: center;
    min-height: 44px;
    padding: .7rem .85rem;
    border-radius: .45rem;
    font-size: .92rem;
    font-weight: 650;
}

.admin-nav a:hover {
    color: #075f45;
    background: #f0f7f3;
}

.admin-nav a.active {
    color: #075f45;
    background: #e7f4ed;
    box-shadow: inset 3px 0 #087957;
}

.admin-nav a.active i {
    color: #087957;
}

.admin-nav i,
.admin-sidebar-footer i {
    color: #667f73;
    font-size: 1.05rem;
    width: 1.25rem;
    text-align: center;
}

.admin-sidebar-footer {
    margin-top: auto;
    padding: 1rem .75rem 1.25rem;
    border-top: 1px solid #e5ede8;
}

.admin-sidebar-footer a:hover {
    color: #075f45;
    background: #f0f7f3;
}

.admin-sidebar-footer a:last-child {
    color: #a33e35;
}

.admin-sidebar-footer a:last-child i {
    color: #b64c42;
}

.admin-sidebar-footer a:last-child:hover {
    background: #fcecea;
}

.admin-content {
    min-width: 0;
    flex: 1;
}

.admin-topbar {
    min-height: 76px;
    display: flex;
    align-items: center;
    gap: 1rem;
    justify-content: space-between;
    padding: 1rem clamp(1.25rem, 3vw, 2.75rem);
    background: white;
    border-bottom: 1px solid #e1ebe4;
}

.admin-topbar h1 {
    margin: 0;
    color: #18352d;
    font-family: "DM Sans", system-ui, sans-serif;
    font-size: 1.15rem;
    font-weight: 750;
    letter-spacing: -.02em;
}

.admin-kicker {
    margin: 0 0 .1rem;
    color: #087957;
    text-transform: uppercase;
    font-weight: 800;
    font-size: .67rem;
    letter-spacing: .1em;
}

.admin-user {
    display: flex;
    gap: .65rem;
    align-items: center;
    color: #40594e;
    font-size: .85rem;
    font-weight: 700;
}

.admin-user b {
    display: grid;
    place-items: center;
    width: 34px;
    height: 34px;
    border-radius: 50%;
    background: #e7f4ed;
    color: #0c4a36;
}

.admin-main {
    max-width: 1280px;
    padding: clamp(1.25rem, 3vw, 2.5rem);
}

.dashboard-welcome {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 1rem;
    padding: 1.5rem 1.75rem;
    margin-bottom: 1.5rem;
    border-radius: .65rem;
    background: white;
    border: 1px solid #dce7e0;
}

.dashboard-welcome p {
    margin: 0 0 .25rem;
    font-family: "Playfair Display", serif;
    font-size: 1.35rem;
    font-weight: 700;
}

.dashboard-welcome span {
    color: var(--muted);
    font-size: .9rem;
}

.super-welcome {
    color: white;
    background: var(--forest);
    border-color: var(--forest);
}

.super-welcome span {
    color: #c9ddd3;
}

.admin-stat {
    min-height: 144px;
    display: flex;
    align-items: center;
    gap: 1rem;
    padding: 1.25rem;
    background: white;
    border: 1px solid #dce7e0;
    border-radius: .65rem;
}

.admin-stat-icon {
    width: 48px;
    height: 48px;
    display: grid;
    place-items: center;
    border-radius: .55rem;
    font-size: 1.35rem;
}

.admin-stat-icon.green {
    color: var(--green);
    background: var(--mint);
}

.admin-stat-icon.orange {
    color: #a55a10;
    background: #fff1da;
}

.admin-stat-icon.slate {
    color: #40554b;
    background: #edf1ee;
}

.admin-stat span,
.admin-stat small {
    display: block;
    color: var(--muted);
    font-size: .8rem;
}

.admin-stat strong {
    display: block;
    font-size: 2rem;
    line-height: 1.1;
}

.admin-stat a {
    margin-left: auto;
    color: var(--forest);
}

.admin-panel {
    padding: 1.5rem;
    background: white;
    border: 1px solid #dce7e0;
    border-radius: .65rem;
    height: 100%;
}

.admin-panel header {
    display: flex;
    align-items: start;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: 1.25rem;
}

.admin-panel h2 {
    font-size: 1.3rem;
    margin: 0;
}

.admin-panel header>a {
    color: var(--green);
    text-decoration: none;
    font-size: .85rem;
    font-weight: 700;
}

.admin-list {
    display: grid;
}

.admin-list a {
    color: var(--ink);
    text-decoration: none;
    display: flex;
    align-items: center;
    gap: .75rem;
    padding: .85rem 0;
    border-top: 1px solid #edf1ee;
}

.admin-list a>i {
    color: var(--green);
    background: var(--mint);
    padding: .55rem;
    border-radius: .4rem;
}

.admin-list span {
    min-width: 0;
    flex: 1;
}

.admin-list strong,
.admin-list small {
    display: block;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.admin-list small {
    margin-top: .15rem;
    color: var(--muted);
    font-size: .78rem;
}

.admin-list em {
    font-size: .7rem;
    font-style: normal;
    font-weight: 700;
    color: var(--green);
    background: var(--mint);
    padding: .25rem .45rem;
    border-radius: 999px;
}

.admin-list em.draft {
    color: #995a0b;
    background: #fff0d7;
}

.admin-empty {
    padding: 2rem 1rem;
    text-align: center;
    color: var(--muted);
}

.admin-empty i {
    font-size: 1.75rem;
    color: var(--green);
}

.admin-empty p {
    margin: .7rem 0;
}

.admin-empty a {
    color: var(--green);
    font-size: .85rem;
    font-weight: 700;
}

.review-list>div {
    display: flex;
    align-items: center;
    gap: .8rem;
    padding: .85rem 0;
    border-top: 1px solid #edf1ee;
}

.review-avatar {
    display: grid;
    place-items: center;
    width: 37px;
    height: 37px;
    border-radius: 50%;
    color: var(--forest);
    background: var(--mint);
    font-size: .8rem;
    font-weight: 700;
}

.review-list span {
    min-width: 0;
}

.review-list strong,
.review-list small {
    display: block;
}

.review-list small {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    color: var(--muted);
    font-size: .78rem;
}

@media (max-width:767px) {
    .admin-sidebar {
        width: 280px;
    }

    .admin-topbar {
        align-items: flex-start;
    }

    .admin-user span {
        display: none;
    }

    .dashboard-welcome {
        align-items: flex-start;
        flex-direction: column;
    }

    .review-list>div {
        flex-wrap: wrap;
    }

    .review-list .btn {
        margin-left: 45px !important;
    }
}

.admin-table thead th {
    padding: 1rem 1.25rem;
    color: var(--muted);
    background: #f7faf8;
    border-bottom: 1px solid #dce7e0;
    font-size: .7rem;
    letter-spacing: .08em;
    text-transform: uppercase;
    white-space: nowrap;
}

.admin-table tbody td {
    padding: 1rem 1.25rem;
    border-color: #edf1ee;
}

.status-pill {
    display: inline-block;
    padding: .28rem .55rem;
    border-radius: 999px;
    font-size: .72rem;
    font-weight: 700;
}

.status-pill.success {
    color: var(--green);
    background: var(--mint);
}

.status-pill.pending {
    color: #995a0b;
    background: #fff0d7;
}

.status-pill.rejected {
    color: #a63e34;
    background: #fbe7e4;
}

/* Authentification */
.auth-page {
    min-height: 100vh;
    background: #f6f9f7;
}

.auth-shell {
    min-height: 100vh;
    display: grid;
    grid-template-columns: minmax(360px, 42%) 1fr;
}

.auth-aside {
    position: relative;
    display: flex;
    flex-direction: column;
    padding: clamp(2rem, 5vw, 4.5rem);
    color: white;
    overflow: hidden;
    background: linear-gradient(145deg, #0b4030, #146044);
}

.auth-aside::after {
    content: "";
    position: absolute;
    width: 32rem;
    height: 32rem;
    border: 1px solid rgba(255, 255, 255, .12);
    border-radius: 50%;
    right: -15rem;
    bottom: -15rem;
}

.register-aside {
    background: linear-gradient(145deg, #14573f, #087957);
}

.super-auth .auth-aside {
    background: linear-gradient(145deg, #132d3b, #1c4b59);
}

.auth-brand,
.auth-mobile-brand {
    position: relative;
    z-index: 1;
    color: white;
    text-decoration: none;
    font-family: "Playfair Display", serif;
    font-size: 1.5rem;
    font-weight: 700;
}

.auth-brand span,
.auth-mobile-brand span {
    color: #7ce0b5;
}

.auth-aside-copy {
    position: relative;
    z-index: 1;
    margin: auto 0;
    max-width: 30rem;
}

.auth-aside-copy h1 {
    font-size: clamp(2.6rem, 4vw, 4.1rem);
}

.auth-aside-copy>p:not(.eyebrow) {
    color: #d3e3db;
    font-size: 1.1rem;
    line-height: 1.7;
}

.auth-note {
    position: relative;
    z-index: 1;
    display: flex;
    gap: .8rem;
    max-width: 28rem;
    color: #d3e3db;
    font-size: .9rem;
    line-height: 1.5;
}

.auth-note i {
    color: #7ce0b5;
    font-size: 1.15rem;
}

.auth-steps {
    position: relative;
    z-index: 1;
    display: grid;
    gap: 1rem;
    padding: 0;
    margin: auto 0 0;
    list-style: none;
}

.auth-steps li {
    display: flex;
    align-items: center;
    gap: .75rem;
    color: #e4f2eb;
    font-size: .92rem;
}

.auth-steps b {
    display: grid;
    place-items: center;
    width: 26px;
    height: 26px;
    border-radius: 50%;
    border: 1px solid rgba(255, 255, 255, .45);
    font-size: .75rem;
}

.auth-form-area {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 3rem 1.5rem;
    background: var(--paper);
}

.auth-form-wrap {
    width: min(100%, 27rem);
}

.auth-form-wide {
    width: min(100%, 32rem);
}

.auth-mobile-brand {
    display: none;
    color: var(--ink);
    margin-bottom: 3rem;
}

.auth-mobile-brand span {
    color: var(--green);
}

.auth-heading {
    margin-bottom: 2rem;
}

.auth-heading h2 {
    margin: 0 0 .4rem;
    font-size: 2.3rem;
}

.auth-heading>p:not(.eyebrow) {
    margin: 0;
    color: var(--muted);
}

.auth-alert {
    display: flex;
    gap: .6rem;
    align-items: flex-start;
    padding: .8rem 1rem;
    margin-bottom: 1.25rem;
    border-radius: .4rem;
    font-size: .88rem;
    line-height: 1.4;
}

.auth-alert.success {
    color: #0d6246;
    background: var(--mint);
}

.auth-alert.error {
    color: #9e362e;
    background: #fbe9e7;
}

.auth-form {
    display: grid;
    gap: 1.15rem;
}

.auth-form label {
    display: flex;
    gap: .35rem;
    margin-bottom: .45rem;
    color: #365148;
    font-size: .84rem;
    font-weight: 700;
}

.auth-form label span {
    color: var(--muted);
    font-weight: 500;
}

.auth-input {
    display: flex;
    align-items: center;
    min-height: 50px;
    padding: 0 .85rem;
    border: 1px solid #cad9d0;
    border-radius: .4rem;
    background: white;
    transition: border-color .15s, box-shadow .15s;
}

.auth-input:focus-within {
    border-color: var(--green);
    box-shadow: 0 0 0 .2rem rgba(8, 121, 87, .13);
}

.auth-input>i {
    color: #6f887c;
    font-size: 1rem;
}

.auth-input input {
    width: 100%;
    padding: .65rem .75rem;
    border: 0;
    outline: 0;
    background: transparent;
    color: var(--ink);
    font-size: .94rem;
}

.auth-input input::placeholder {
    color: #94a89d;
}

.password-toggle {
    color: #648075;
    padding: .25rem;
    border: 0;
    background: transparent;
}

.password-toggle:hover {
    color: var(--forest);
}

.auth-submit {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: .5rem;
    min-height: 50px;
    margin-top: .25rem;
}

.auth-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1rem;
}

.auth-help {
    margin: -.65rem 0 0;
    color: var(--muted);
    font-size: .76rem;
}

.auth-links {
    margin-top: 1.5rem;
    padding-top: 1.25rem;
    border-top: 1px solid #dce7e0;
    color: var(--muted);
    font-size: .86rem;
}

.auth-links p {
    margin: 0 0 .75rem;
}

.auth-links a {
    color: var(--green);
    text-decoration: none;
    font-weight: 700;
}

.auth-back {
    display: inline-flex;
    align-items: center;
    gap: .45rem;
    margin-top: 1.75rem;
    color: var(--muted);
    text-decoration: none;
    font-size: .82rem;
}

.auth-back:hover {
    color: var(--forest);
}

@media (max-width:991px) {
    .auth-shell {
        display: block;
    }

    .auth-aside {
        display: none;
    }

    .auth-form-area {
        min-height: 100vh;
        align-items: flex-start;
        padding-top: 3rem;
    }

    .auth-mobile-brand {
        display: inline-block;
    }
}

.auth-form-wide .auth-heading {
    margin-bottom: 1.5rem;
}

@media (max-width:500px) {
    .auth-form-area {
        padding: 2rem 1.25rem;
    }

    .auth-mobile-brand {
        margin-bottom: 2.25rem;
    }

    .auth-heading h2 {
        font-size: 2rem;
    }

    .auth-grid {
        grid-template-columns: 1fr;
        gap: 1.15rem;
    }
}

/* Gestion des contenus */
.manager-heading {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 1.5rem;
    margin-bottom: 1.5rem;
}

.manager-heading h2 {
    margin: 0 0 .25rem;
    font-size: 1.85rem;
}

.manager-heading>div>span {
    color: var(--muted);
    font-size: .88rem;
}

.manager-heading .btn {
    display: inline-flex;
    align-items: center;
    gap: .45rem;
    min-height: 44px;
}

.content-cell {
    min-width: 250px;
    display: flex;
    align-items: center;
    gap: .75rem;
}

.content-cell strong,
.content-cell small {
    display: block;
    max-width: 300px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.content-cell small {
    margin-top: .15rem;
    color: var(--muted);
    font-size: .78rem;
}

.content-thumb,
.content-icon {
    width: 44px;
    height: 44px;
    flex: 0 0 44px;
    display: grid;
    place-items: center;
    overflow: hidden;
    border-radius: .4rem;
    color: var(--green);
    background: var(--mint);
}

.content-thumb img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.category-pill {
    display: inline-block;
    max-width: 180px;
    padding: .3rem .55rem;
    overflow: hidden;
    border-radius: 999px;
    color: #365148;
    background: #edf3ef;
    font-size: .72rem;
    font-weight: 700;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.row-actions {
    display: inline-flex;
    gap: .35rem;
}

.action-btn {
    display: grid;
    place-items: center;
    width: 35px;
    height: 35px;
    border: 1px solid #d4e0d9;
    border-radius: .35rem;
    color: var(--forest);
    background: white;
}

.action-btn:hover {
    color: white;
    border-color: var(--green);
    background: var(--green);
}

.action-btn.danger {
    color: #a63e34;
}

.action-btn.danger:hover {
    color: white;
    border-color: #b54137;
    background: #b54137;
}

.delete-dialog {
    padding: 1.5rem;
    border: 0;
    border-radius: .7rem;
}

.delete-dialog>.btn-close {
    margin-top: -.25rem;
}

.delete-icon {
    display: grid;
    place-items: center;
    width: 48px;
    height: 48px;
    margin: .5rem 0 1rem;
    border-radius: 50%;
    color: #aa3d33;
    background: #fbe7e4;
    font-size: 1.2rem;
}

.delete-dialog h2 {
    margin-bottom: .6rem;
    font-size: 1.45rem;
}

.delete-dialog p {
    color: var(--muted);
    font-size: .9rem;
    line-height: 1.6;
}

.delete-dialog p strong {
    color: var(--ink);
}

.delete-actions {
    display: flex;
    justify-content: flex-end;
    gap: .6rem;
    margin-top: 1.25rem;
}

.delete-actions form {
    margin: 0;
}

.admin-view-count {
    display: inline-flex;
    align-items: center;
    gap: .35rem;
    min-width: 62px;
    color: #365148;
    font-size: .8rem;
    font-weight: 800;
    white-space: nowrap;
}

.admin-view-count i {
    color: var(--green);
}

.form-heading {
    max-width: 760px;
    margin-bottom: 1.75rem;
}

.form-heading>a {
    display: inline-flex;
    align-items: center;
    gap: .4rem;
    margin-bottom: 1.25rem;
    color: var(--green);
    text-decoration: none;
    font-size: .84rem;
    font-weight: 700;
}

.form-heading h2 {
    margin: 0 0 .35rem;
    font-size: 1.85rem;
}

.form-heading p {
    margin: 0;
    color: var(--muted);
}

.editor-layout {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 285px;
    gap: 1.25rem;
    align-items: start;
}

.editor-main {
    display: grid;
    gap: 1.25rem;
}

.form-panel,
.publish-panel {
    background: white;
    border: 1px solid #dce7e0;
    border-radius: .65rem;
}

.form-panel>header {
    display: flex;
    gap: .85rem;
    padding: 1.25rem 1.4rem;
    border-bottom: 1px solid #e8efea;
}

.form-panel>header>span {
    display: grid;
    place-items: center;
    width: 28px;
    height: 28px;
    flex: 0 0 28px;
    border-radius: 50%;
    color: white;
    background: var(--green);
    font-size: .75rem;
    font-weight: 700;
}

.form-panel h3 {
    margin: 0;
    font-family: "DM Sans", sans-serif;
    font-size: 1rem;
    letter-spacing: 0;
}

.form-panel header p {
    margin: .2rem 0 0;
    color: var(--muted);
    font-size: .8rem;
}

.form-fields {
    display: grid;
    gap: 1.15rem;
    padding: 1.4rem;
}

.form-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1rem;
}

.form-fields label,
.publish-panel label {
    display: flex;
    gap: .3rem;
    margin-bottom: .4rem;
    color: #365148;
    font-size: .82rem;
    font-weight: 700;
}

.form-fields label span {
    color: var(--muted);
    font-weight: 500;
}

.form-fields .form-control,
.form-fields .form-select,
.publish-panel .form-select {
    min-height: 46px;
    border-color: #cad9d0;
    border-radius: .38rem;
}

.form-fields textarea.form-control {
    min-height: 130px;
    resize: vertical;
}

.form-fields small {
    display: block;
    margin-top: .35rem;
    color: var(--muted);
    font-size: .75rem;
}

.editor-side {
    position: sticky;
    top: 96px;
}

.publish-panel {
    display: grid;
    gap: .85rem;
    padding: 1.25rem;
}

.publish-panel .eyebrow {
    margin-bottom: .1rem;
}

.publish-help {
    display: flex;
    gap: .45rem;
    margin: .1rem 0 .45rem;
    color: var(--muted);
    font-size: .78rem;
    line-height: 1.45;
}

.publish-panel .btn {
    min-height: 44px;
}

.current-media {
    display: flex;
    align-items: center;
    gap: .55rem;
    margin-top: .6rem;
    color: var(--muted);
    font-size: .75rem;
}

.current-media img {
    width: 46px;
    height: 38px;
    border-radius: .3rem;
    object-fit: cover;
}

.security-note {
    display: flex;
    align-items: center;
    gap: .8rem;
    padding: 1rem 1.15rem;
    margin-bottom: 1.25rem;
    border: 1px solid #dce7e0;
    border-radius: .55rem;
    color: var(--forest);
    background: var(--mint);
}

.security-note>i {
    font-size: 1.35rem;
}

.security-note strong,
.security-note span {
    display: block;
}

.security-note span {
    margin-top: .1rem;
    color: var(--muted);
    font-size: .8rem;
}

@media (max-width:1050px) {
    .editor-layout {
        grid-template-columns: 1fr;
    }

    .editor-side {
        position: static;
    }

    .publish-panel {
        grid-template-columns: 1fr 1fr;
        align-items: end;
    }

    .publish-panel .eyebrow,
    .publish-help {
        grid-column: 1/-1;
    }
}

@media (max-width:767px) {
    .manager-heading {
        align-items: flex-start;
        flex-direction: column;
    }

    .manager-heading .btn {
        width: 100%;
        justify-content: center;
    }

    .form-grid,
    .publish-panel {
        grid-template-columns: 1fr;
    }

    .publish-panel>* {
        grid-column: auto !important;
    }

    .admin-table tbody td {
        min-width: 130px;
    }

    .content-cell {
        min-width: 220px;
    }

    .delete-actions {
        flex-direction: column-reverse;
    }

    .delete-actions .btn,
    .delete-actions form {
        width: 100%;
    }

    .delete-actions form .btn {
        width: 100%;
    }
}

/* Métadonnées enrichies des cartes */
.card-meta-row {
    display: flex;
    justify-content: space-between;
    gap: .75rem;
    margin-bottom: 1rem;
    color: var(--muted);
    font-size: .76rem;
    font-weight: 600;
}

.card-meta-row span {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.card-meta-row i {
    color: var(--green);
    margin-right: .2rem;
}

.activity-card-footer {
    display: flex;
    align-items: center;
    gap: .55rem;
    padding-top: 1rem;
    border-top: 1px solid #e9efeb;
    color: #365148;
    font-size: .78rem;
    font-weight: 700;
}

.card-org-logo,
.card-org-placeholder {
    width: 30px;
    height: 30px;
    flex: 0 0 30px;
    border-radius: 50%;
}

.card-org-logo {
    object-fit: cover;
    border: 1px solid #dce7e0;
}

.card-org-placeholder {
    display: grid;
    place-items: center;
    color: var(--green);
    background: var(--mint);
}

.opportunity-org {
    display: flex;
    align-items: center;
    gap: .45rem;
    margin: 0 0 .65rem;
    color: #365148;
    font-size: .85rem;
    font-weight: 700;
}

.opportunity-org i {
    color: var(--green);
}

.opportunity-card-classification {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: .35rem .75rem;
    min-height: 1.2rem;
}

.opportunity-type {
    color: #4d6259;
    font-size: .67rem;
    font-weight: 750;
    line-height: 1.25;
    letter-spacing: .055em;
    text-transform: uppercase;
}

.opportunity-status {
    display: inline-flex;
    align-items: center;
    gap: .38rem;
    flex: 0 0 auto;
    color: #53665d;
    font-size: .68rem;
    font-weight: 700;
    line-height: 1.25;
    white-space: nowrap;
}

.opportunity-status-dot {
    width: 6px;
    height: 6px;
    flex: 0 0 6px;
    border-radius: 50%;
    background: #68766f;
}

.opportunity-status.is-open .opportunity-status-dot {
    background: #087957;
}

.opportunity-status.is-urgent {
    color: #80510d;
}

.opportunity-status.is-urgent .opportunity-status-dot {
    background: #c47a12;
}

.opportunity-status.is-expired {
    color: #923b33;
}

.opportunity-status.is-expired .opportunity-status-dot {
    background: #b94b42;
}

.duration-pill {
    display: inline-block;
    padding: .3rem .5rem;
    border-radius: 999px;
    color: #365148;
    background: #edf3ef;
    font-size: .72rem;
    font-weight: 750;
}

.activity-card-footer {
    justify-content: space-between;
}

.activity-card-org {
    display: flex;
    align-items: center;
    gap: .55rem;
    min-width: 0;
}

.activity-card-org>span:last-child {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.card-view-count {
    display: inline-flex;
    align-items: center;
    gap: .3rem;
    flex: 0 0 auto;
    padding: .25rem .48rem;
    border-radius: 999px;
    color: #416258;
    background: #edf4f0;
    font-size: .7rem;
    font-weight: 800;
    white-space: nowrap;
}

.card-view-count i {
    color: var(--green);
}

.opportunity-view-count {
    position: absolute;
    top: .75rem;
    left: .75rem;
    z-index: 3;
    color: #fff;
    background: rgba(12, 37, 30, .78);
    box-shadow: 0 .3rem .9rem rgba(0, 0, 0, .16);
    backdrop-filter: blur(6px);
}

.opportunity-view-count i {
    color: #fff;
}

.card-location-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .75rem;
}

.card-location-row>span:first-child {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* Partage des publications */
.share-panel {
    padding-top: 1.2rem;
    margin-top: 1.35rem;
    border-top: 1px solid var(--line);
}

.share-panel>p {
    display: flex;
    align-items: center;
    gap: .45rem;
    margin: 0 0 .75rem;
    color: #365148;
    font-size: .78rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: .04em;
}

.share-panel>p i {
    color: var(--green);
}

.share-actions {
    display: flex;
    flex-wrap: wrap;
    gap: .5rem;
}

.share-button {
    display: grid;
    place-items: center;
    width: 40px;
    height: 40px;
    padding: 0;
    border: 1px solid #d5e1da;
    border-radius: 50%;
    color: #365148;
    background: #f7faf8;
    text-decoration: none;
    transition: transform .18s ease, color .18s ease, background .18s ease, border-color .18s ease;
}

.share-button:hover,
.share-button:focus-visible {
    transform: translateY(-2px);
    color: #fff;
    border-color: var(--green);
    background: var(--green);
}

.share-button.whatsapp:hover,
.share-button.whatsapp:focus-visible {
    border-color: #25d366;
    background: #25d366;
}

.share-button.facebook:hover,
.share-button.facebook:focus-visible {
    border-color: #1877f2;
    background: #1877f2;
}

.share-button.linkedin:hover,
.share-button.linkedin:focus-visible {
    border-color: #0a66c2;
    background: #0a66c2;
}

.share-feedback {
    display: block;
    min-height: 1.1rem;
    margin-top: .55rem;
    color: var(--green);
    font-size: .72rem;
    font-weight: 700;
}

/* Éditeur éditorial et contenu riche */
.quill-source[hidden] { display: none !important; }
.quill-editor-shell {
    min-width: 0;
    max-width: 100%;
    overflow: hidden;
    border: 1px solid #cad9d0;
    border-radius: .45rem;
    box-shadow: none;
}

.quill-editor-shell:focus-within {
    border-color: #69a88d;
    box-shadow: 0 0 0 .2rem rgba(20, 128, 91, .12);
}

.quill-editor-shell .ql-toolbar.ql-snow {
    display: flex;
    flex-wrap: wrap;
    gap: .3rem;
    padding: .55rem;
    border-bottom: 1px solid #dce7e0;
    background: #f7faf8;
}

.quill-editor-shell .ql-toolbar button {
    color: #365148;
    background: #fff;
    border-color: #d5e1da;
}

.quill-editor-shell .ql-container.ql-snow {
    border: 0;
    font: inherit;
}

.quill-editor-shell .ql-editor {
    min-height: 260px;
    padding: 1rem 1.1rem;
    color: var(--ink);
    background: #fff;
    line-height: 1.7;
}

.quill-editor-shell:fullscreen {
    display: flex;
    flex-direction: column;
    padding: 1rem;
    background: var(--paper);
}

.quill-editor-shell:fullscreen .ql-container {
    flex: 1;
    min-height: 0;
    overflow: auto;
}

.quill-editor-shell .ql-toolbar .quill-action { display: inline-grid; place-items: center; padding: 0; font-size: 1.05rem; line-height: 1; }
.quill-editor-shell .quill-table-actions { display: inline-block; max-width: 145px; font-size: .75rem; }
.quill-editor-shell .ql-editor table { width: 100%; border-collapse: collapse; }
.quill-editor-shell .ql-editor td { min-width: 50px; padding: .5rem; border: 1px solid var(--line); }
.quill-editor-shell .ql-tooltip { z-index: 2; max-width: 100%; white-space: normal; }
.quill-editor-shell .ql-picker.ql-font { width: 140px; }
.quill-editor-shell .ql-picker.ql-size { width: 85px; }
.quill-editor-shell .ql-picker.ql-font .ql-picker-label::before,
.quill-editor-shell .ql-picker.ql-font .ql-picker-item::before,
.quill-editor-shell .ql-picker.ql-size .ql-picker-label::before,
.quill-editor-shell .ql-picker.ql-size .ql-picker-item::before,
.quill-editor-shell .ql-picker.ql-header .ql-picker-label::before,
.quill-editor-shell .ql-picker.ql-header .ql-picker-item::before { content: attr(data-label); }
.quill-editor-shell .ql-toolbar button:focus-visible { outline: 2px solid var(--green); outline-offset: 1px; }
.rich-content pre { padding: 1rem; white-space: pre-wrap; background: var(--mint); }
.rich-content iframe { display: block; width: 100%; max-width: 100%; aspect-ratio: 16 / 9; height: auto; border: 0; }
.rich-content ul[data-list] { list-style: none; }
.rich-content ul[data-list="checked"] > li::before { content: '☑ '; }
.rich-content ul[data-list="unchecked"] > li::before { content: '☐ '; }
@media (max-width:575.98px) {
    .quill-editor-shell .ql-toolbar.ql-snow { padding: .5rem; }
    .quill-editor-shell .ql-toolbar .ql-formats { margin-right: .3rem; }
    .quill-editor-shell .ql-editor { padding: .75rem; min-height: 240px; }
}

.rich-content {
    overflow-wrap: anywhere;
}

.rich-content p {
    margin-bottom: 1rem;
}

.rich-content h2,
.rich-content h3,
.rich-content h4 {
    margin: 1.6rem 0 .7rem;
}

.rich-content ul,
.rich-content ol {
    padding-left: 1.4rem;
    margin-bottom: 1rem;
}

.rich-content blockquote {
    padding: .85rem 1rem;
    border-left: 4px solid var(--green);
    color: #4e6158;
    background: var(--mint);
}

.rich-content img {
    max-width: 100%;
    height: auto;
    border-radius: .45rem;
}

.rich-content table {
    width: 100%;
    margin: 1.25rem 0;
    border-collapse: collapse;
}

.rich-content th,
.rich-content td {
    padding: .65rem;
    border: 1px solid #d5e1da;
}

.rich-content a {
    color: var(--green);
    font-weight: 650;
}

/* Commentaires publics */
.comment-section {
    display: grid;
    grid-template-columns: minmax(0, .75fr) minmax(0, 1.25fr);
    gap: 2rem;
    padding: 2rem;
    border: 1px solid var(--line);
    border-radius: .8rem;
    background: #f7faf8;
}

.comment-intro h2 {
    margin: .25rem 0 .75rem;
    font-size: clamp(1.65rem, 3vw, 2.25rem);
}

.comment-intro>p:last-child {
    max-width: 460px;
    color: var(--muted);
    line-height: 1.7;
}

.comment-intro strong {
    color: var(--forest);
}

.comment-form-card {
    padding: 1.5rem;
    border: 1px solid #dce7e0;
    border-radius: .65rem;
    background: #fff;
    box-shadow: 0 .8rem 2rem rgba(18, 61, 45, .06);
}

.comment-form {
    display: grid;
    gap: 1rem;
}

.comment-form-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1rem;
}

.comment-form label {
    display: block;
    margin-bottom: .4rem;
    color: #365148;
    font-size: .82rem;
    font-weight: 750;
}

.comment-form .form-control {
    min-height: 46px;
    border-color: #cad9d0;
    border-radius: .4rem;
}

.comment-form textarea.form-control {
    min-height: 135px;
    resize: vertical;
}

.comment-form small {
    display: block;
    margin-top: .35rem;
    color: var(--muted);
    font-size: .72rem;
}

.comment-submit {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
}

.comment-submit p {
    display: flex;
    align-items: center;
    gap: .4rem;
    margin: 0;
    color: var(--muted);
    font-size: .74rem;
}

.comment-submit p i {
    color: var(--green);
}

.comment-submit .btn {
    flex: 0 0 auto;
}

.comment-honeypot {
    position: absolute !important;
    left: -10000px !important;
    width: 1px !important;
    height: 1px !important;
    overflow: hidden !important;
}

.comment-alert {
    display: flex;
    align-items: flex-start;
    gap: .55rem;
    padding: .8rem .9rem;
    margin-bottom: 1rem;
    border-radius: .4rem;
    font-size: .82rem;
    font-weight: 650;
}

.comment-alert.success {
    color: #116246;
    background: #e6f4ed;
}

.comment-alert.error {
    color: #9f3b32;
    background: #fbe8e5;
}

/* Commentaires dans l'administration */
.admin-nav .nav-count {
    display: grid;
    place-items: center;
    min-width: 22px;
    height: 22px;
    padding: 0 .35rem;
    margin-left: auto;
    border-radius: 999px;
    color: #fff;
    background: #d65747;
    font-size: .65rem;
    font-weight: 800;
}

.admin-comment-list {
    display: grid;
    gap: 1rem;
}

.admin-comment-card {
    padding: 1.25rem;
    border: 1px solid #dce7e0;
    border-radius: .65rem;
    background: #fff;
}

.admin-comment-card.is-new {
    border-left: 4px solid var(--green);
}

.admin-comment-card>header {
    display: flex;
    align-items: center;
    gap: .7rem;
    padding-bottom: .9rem;
    border-bottom: 1px solid #edf2ef;
}

.comment-author-avatar {
    display: grid;
    place-items: center;
    width: 40px;
    height: 40px;
    flex: 0 0 40px;
    border-radius: 50%;
    color: #fff;
    background: var(--green);
    font-weight: 800;
}

.admin-comment-card header strong,
.admin-comment-card header a {
    display: block;
}

.admin-comment-card header a {
    margin-top: .1rem;
    color: var(--muted);
    font-size: .76rem;
    text-decoration: none;
}

.admin-comment-card time {
    margin-left: auto;
    color: var(--muted);
    font-size: .72rem;
    white-space: nowrap;
}

.admin-comment-card>p {
    margin: 1rem 0;
    color: #41564d;
    line-height: 1.7;
}

.admin-comment-card>footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    color: var(--muted);
    font-size: .77rem;
}

.admin-comment-card footer span {
    display: flex;
    align-items: center;
    gap: .4rem;
    min-width: 0;
}

.admin-comment-card footer span i {
    color: var(--green);
}

.admin-comment-card footer a {
    flex: 0 0 auto;
    color: var(--green);
    font-weight: 750;
    text-decoration: none;
}

/* Navigation publique mobile */
.mobile-menu-trigger {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: .5rem;
    min-height: 42px;
    padding: .55rem .8rem;
    border: 1px solid #cddbd3;
    border-radius: 999px;
    color: var(--forest);
    background: #fff;
    font-size: .8rem;
    font-weight: 800;
    box-shadow: 0 .35rem 1rem rgba(18, 61, 45, .08);
}

.mobile-menu-trigger i {
    color: var(--green);
    font-size: 1rem;
}

.mobile-header-icon {
    position: relative;
    display: grid;
    place-items: center;
    width: 42px;
    height: 42px;
    flex: 0 0 42px;
    border: 1px solid #cddbd3;
    border-radius: 50%;
    color: var(--forest);
    background: #fff;
    text-decoration: none;
    box-shadow: 0 .35rem 1rem rgba(18, 61, 45, .06);
}

.mobile-header-icon:hover,
.mobile-header-icon:focus-visible,
.mobile-header-icon.active {
    color: #fff;
    border-color: var(--green);
    background: var(--green);
    outline: 0;
}

.mobile-header-icon .favorite-nav-count {
    position: absolute;
    top: -5px;
    right: -5px;
    border: 2px solid #fff;
}

.mobile-public-menu {
    --bs-offcanvas-width: min(100vw, 420px);
    position: fixed !important;
    inset: 0 0 0 auto !important;
    display: grid !important;
    grid-template-rows: auto minmax(0, 1fr) auto;
    width: var(--bs-offcanvas-width) !important;
    height: 100vh !important;
    height: 100svh !important;
    height: 100dvh !important;
    max-width: 100vw !important;
    max-height: none !important;
    overflow: hidden !important;
    border-left: 0 !important;
    color: var(--ink);
    background: #f7faf8;
    box-shadow: -1rem 0 3rem rgba(18, 61, 45, .16);
}

.mobile-public-menu .offcanvas-header {
    min-width: 0;
    padding: clamp(.85rem, 2.5vh, 1.25rem) clamp(1rem, 4vw, 1.25rem);
    border-bottom: 1px solid #dde7e1;
    background: #fff;
}

.mobile-public-menu .brand {
    min-width: 0;
    overflow: hidden;
    color: var(--forest);
    font-size: clamp(1.05rem, 5vw, 1.2rem);
    text-overflow: ellipsis;
    white-space: nowrap;
    text-decoration: none;
}

.mobile-menu-close {
    display: grid;
    place-items: center;
    width: 40px;
    height: 40px;
    flex: 0 0 40px;
    padding: 0;
    border: 1px solid #d4e0d9;
    border-radius: 50%;
    color: var(--forest);
    background: #f7faf8;
}

.mobile-public-menu .offcanvas-body {
    display: grid;
    grid-template-rows: auto minmax(0, 1fr) auto;
    min-width: 0;
    min-height: 0;
    padding: clamp(.8rem, 3vh, 1.4rem) clamp(1rem, 4vw, 1.25rem);
    overflow: hidden !important;
}

.mobile-menu-label {
    margin: 0 0 clamp(.45rem, 1.5vh, .8rem);
    color: var(--muted);
    font-size: .68rem;
    font-weight: 800;
    letter-spacing: .08em;
    text-transform: uppercase;
}

.mobile-nav-links {
    display: grid;
    align-content: start;
    gap: clamp(.45rem, 1.5vh, .7rem);
    min-width: 0;
    min-height: 0;
    padding-right: .2rem;
    overflow-x: hidden;
    overflow-y: auto;
    overscroll-behavior-y: contain;
    scrollbar-gutter: stable;
}

.mobile-nav-links>a {
    display: grid;
    grid-template-columns: clamp(38px, 7vh, 46px) minmax(0, 1fr) auto;
    align-items: center;
    gap: clamp(.55rem, 2.5vw, .75rem);
    min-width: 0;
    padding: clamp(.55rem, 1.8vh, .85rem);
    border: 1px solid #dce7e0;
    border-radius: .65rem;
    color: var(--forest);
    background: #fff;
    text-decoration: none;
}

.mobile-nav-links>.mobile-nav-disabled {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: center;
    gap: .75rem;
    min-width: 0;
    padding: clamp(.55rem, 1.8vh, .85rem);
    border: 1px dashed var(--line);
    border-radius: .65rem;
    color: var(--muted);
    background: color-mix(in srgb, var(--paper) 86%, var(--line));
    cursor: not-allowed;
}

.mobile-nav-disabled div { min-width: 0; }
.mobile-nav-disabled strong,
.mobile-nav-disabled small { display: block; }
.mobile-nav-disabled strong { color: inherit; font-size: clamp(.8rem, 2vh, .9rem); }
.mobile-nav-disabled small { margin-top: .18rem; color: inherit; font-size: clamp(.64rem, 1.6vh, .7rem); line-height: 1.35; }
.mobile-nav-disabled b,
.nav-link-disabled small { font-size: .6rem; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; }

.nav-link-disabled,
.footer-link-disabled { color: var(--muted); cursor: not-allowed; opacity: .72; }
.nav-link-disabled { display: inline-flex; align-items: center; gap: .3rem; }
.nav-link-disabled:hover { color: var(--muted); }

.mobile-nav-links>a.active {
    border-color: #7fb69f;
    box-shadow: inset 3px 0 var(--green);
}

.mobile-nav-links>a>span {
    display: grid;
    place-items: center;
    width: clamp(38px, 7vh, 46px);
    height: clamp(38px, 7vh, 46px);
    border-radius: .55rem;
    color: var(--green);
    background: var(--mint);
    font-size: clamp(.95rem, 2.5vh, 1.1rem);
}

.mobile-nav-links>a>div {
    min-width: 0;
}

.mobile-nav-links strong,
.mobile-nav-links small {
    display: block;
}

.mobile-nav-links strong {
    overflow: hidden;
    font-size: clamp(.8rem, 2vh, .9rem);
    text-overflow: ellipsis;
    white-space: nowrap;
}

.mobile-nav-links small {
    margin-top: .18rem;
    color: var(--muted);
    font-size: clamp(.64rem, 1.6vh, .7rem);
    line-height: 1.35;
}

.mobile-nav-links>a>i {
    color: #8aa096;
    font-size: .75rem;
}

.mobile-menu-cta {
    display: grid;
    grid-template-columns: clamp(36px, 6vh, 42px) minmax(0, 1fr);
    align-self: end;
    gap: clamp(.55rem, 2vh, .75rem);
    min-width: 0;
    padding: clamp(.7rem, 2.2vh, 1rem);
    margin-top: clamp(.65rem, 2.5vh, 1.25rem);
    border-radius: .7rem;
    color: #fff;
    background: var(--forest);
}

.mobile-menu-cta>i {
    display: grid;
    place-items: center;
    width: clamp(36px, 6vh, 42px);
    height: clamp(36px, 6vh, 42px);
    border-radius: 50%;
    color: #b9f0d9;
    background: rgba(255, 255, 255, .1);
}

.mobile-menu-cta>div {
    min-width: 0;
}

.mobile-menu-cta strong {
    display: block;
    font-size: clamp(.76rem, 1.9vh, .85rem);
    line-height: 1.3;
}

.mobile-menu-cta p {
    margin: .2rem 0 0;
    color: #bed0c8;
    font-size: clamp(.65rem, 1.55vh, .72rem);
    line-height: 1.4;
}

.mobile-menu-cta .btn {
    grid-column: 1/-1;
    min-height: 40px;
    margin-top: .15rem;
    white-space: normal;
}

.mobile-menu-footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .75rem;
    min-width: 0;
    padding: clamp(.65rem, 2vh, 1rem) clamp(1rem, 4vw, 1.25rem) max(clamp(.65rem, 2vh, 1rem), env(safe-area-inset-bottom));
    border-top: 1px solid #dce7e0;
    color: var(--muted);
    background: #fff;
    font-size: clamp(.67rem, 1.7vh, .72rem);
}

.mobile-menu-footer span,
.mobile-menu-footer a {
    white-space: nowrap;
}

.mobile-menu-footer a {
    overflow: hidden;
    color: var(--green);
    font-weight: 800;
    text-overflow: ellipsis;
    text-decoration: none;
}

@media (max-width:767px) {
    .comment-section {
        grid-template-columns: 1fr;
        gap: 1.25rem;
        padding: 1.25rem;
    }

    .comment-form-card {
        padding: 1.1rem;
    }

    .comment-form-grid {
        grid-template-columns: 1fr;
    }

    .comment-submit {
        align-items: stretch;
        flex-direction: column;
    }

    .comment-submit .btn {
        width: 100%;
    }

    .admin-comment-card>header {
        align-items: flex-start;
        flex-wrap: wrap;
    }

    .admin-comment-card time {
        width: 100%;
        margin-left: 48px;
    }

    .admin-comment-card>footer {
        align-items: flex-start;
        flex-direction: column;
    }
}

@media (max-width:575.98px) {
    .mobile-public-menu {
        --bs-offcanvas-width: 100vw;
    }
}

@media (max-width:359.98px) {
    .mobile-menu-trigger {
        width: 42px;
        padding: 0;
    }

    .mobile-menu-trigger span {
        position: absolute;
        width: 1px;
        height: 1px;
        overflow: hidden;
        clip: rect(0 0 0 0);
        white-space: nowrap;
    }

    .mobile-menu-footer {
        gap: .45rem;
    }
}

@media (max-width:991.98px) and (max-height:680px) {
    .mobile-menu-cta p {
        display: none;
    }

    .mobile-menu-cta .btn {
        min-height: 36px;
        padding: .35rem .6rem;
        font-size: .74rem;
    }

    .mobile-menu-footer {
        padding-top: .55rem;
        padding-bottom: max(.55rem, env(safe-area-inset-bottom));
    }
}

@media (max-width:991.98px) and (max-height:540px) {

    .mobile-menu-label,
    .mobile-nav-links small,
    .mobile-menu-cta>i,
    .mobile-menu-cta>div {
        display: none;
    }

    .mobile-public-menu .offcanvas-header {
        padding-top: .5rem;
        padding-bottom: .5rem;
    }

    .mobile-menu-close {
        width: 36px;
        height: 36px;
        flex-basis: 36px;
    }

    .mobile-public-menu .offcanvas-body {
        grid-template-rows: minmax(0, 1fr) auto;
        padding-top: .55rem;
        padding-bottom: .55rem;
    }

    .mobile-nav-links {
        gap: .35rem;
    }

    .mobile-nav-links>a {
        grid-template-columns: 34px minmax(0, 1fr) auto;
        padding: .4rem .55rem;
    }

    .mobile-nav-links>a>span {
        width: 34px;
        height: 34px;
    }

    .mobile-menu-cta {
        display: block;
        padding: .4rem;
        margin-top: .45rem;
    }

    .mobile-menu-cta .btn {
        width: 100%;
        margin: 0;
    }

    .mobile-menu-footer {
        padding-top: .4rem;
        padding-bottom: max(.4rem, env(safe-area-inset-bottom));
    }
}

@media (max-width:991.98px) and (max-height:380px) {
    .mobile-public-menu .offcanvas-header {
        padding-top: .35rem;
        padding-bottom: .35rem;
    }

    .mobile-menu-label {
        display: none;
    }

    .mobile-public-menu .offcanvas-body {
        grid-template-rows: minmax(0, 1fr) auto;
    }

    .mobile-nav-links {
        grid-template-columns: 1fr 1fr;
        align-content: center;
    }

    .mobile-nav-links>a {
        grid-template-columns: 32px minmax(0, 1fr);
    }

    .mobile-nav-links>a>span {
        width: 32px;
        height: 32px;
    }

    .mobile-nav-links>a>i {
        display: none;
    }

    .mobile-menu-cta {
        margin-top: .35rem;
    }

    .mobile-menu-footer {
        padding-top: .3rem;
        padding-bottom: max(.3rem, env(safe-area-inset-bottom));
    }
}

/* Typographie unifiée — public, administration et authentification */
.brand,
.admin-brand,
.auth-brand,
.auth-mobile-brand,
.dashboard-welcome p {
    font-family: var(--font-heading);
}

.admin-topbar h1,
.form-panel h3 {
    font-family: var(--font-heading);
    font-weight: 700;
}

button,
input,
select,
textarea {
    font-family: inherit;
}

/* Footer partagé dans les espaces de gestion */
.admin-content {
    display: flex;
    min-height: 100vh;
    flex-direction: column;
}

.admin-main {
    width: 100%;
    flex: 1 0 auto;
    padding-bottom: calc(clamp(1.25rem, 3vw, 2.5rem) + 82px);
}

.admin-site-footer {
    position: fixed;
    right: 0;
    bottom: 0;
    left: 264px;
    z-index: 1015;
    min-height: 58px;
    padding: .8rem clamp(1.25rem, 3vw, 2.75rem);
    box-shadow: 0 -.5rem 1.5rem rgba(5, 38, 27, .12);
}

.admin-site-footer>div {
    align-items: center;
    flex-wrap: wrap;
}

/* Séparation du logo et des boutons de fermeture */
.mobile-public-menu .offcanvas-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1.5rem;
}

.mobile-public-menu .offcanvas-header .brand {
    flex: 1 1 auto;
}

.mobile-public-menu .mobile-menu-close,
.admin-sidebar-head .btn-close {
    flex: 0 0 auto;
    margin-left: auto;
}

.admin-sidebar-head {
    gap: 1.25rem;
}

/* Respiration du header public sur mobile et tablette */
@media (max-width:991.98px) {
    .site-header .navbar {
        padding-right: clamp(1rem, 4.5vw, 1.5rem) !important;
        padding-left: clamp(1rem, 4.5vw, 1.5rem) !important;
    }

    .site-header .navbar-brand {
        min-width: 0;
        margin-right: 1rem;
    }

    .mobile-header-actions {
        display: flex;
        align-items: center;
        gap: clamp(.35rem, 1.8vw, .6rem);
        margin-left: auto;
    }

    .site-header .mobile-menu-trigger {
        width: 42px;
        flex: 0 0 42px;
        padding: 0;
        margin-left: 0;
    }

    .site-header .mobile-menu-trigger span {
        position: absolute;
        width: 1px;
        height: 1px;
        overflow: hidden;
        clip: rect(0 0 0 0);
        white-space: nowrap;
    }
}

@media (max-width:420px) {
    .site-header .navbar-brand {
        margin-right: .5rem;
        font-size: clamp(1.05rem, 6vw, 1.3rem);
    }

    .mobile-header-icon,
    .site-header .mobile-menu-trigger {
        width: 39px;
        height: 39px;
        min-height: 39px;
        flex-basis: 39px;
    }
}

@media (max-width:767.98px) {
    .admin-site-footer {
        left: 0;
        min-height: 70px;
        padding: .65rem 1rem max(.65rem, env(safe-area-inset-bottom));
        font-size: .75rem;
    }

    .admin-site-footer>div {
        align-items: flex-start;
    }

    .admin-main {
        padding-bottom: calc(clamp(1.25rem, 3vw, 2.5rem) + 94px);
    }
}

/* Recherche globale, favoris et navigation assistée */
.nav-icon-link {
    display: inline-flex;
    align-items: center;
    gap: .35rem;
}

.public-desktop-nav {
    gap: clamp(.75rem, 1.35vw, 1.4rem);
}

.public-publish-button {
    align-items: center;
    justify-content: center;
    min-height: 38px;
    white-space: nowrap;
}

@media (min-width:992px) {
    .site-header .navbar {
        display: grid;
        grid-template-columns: minmax(170px, 1fr) auto minmax(170px, 1fr);
        column-gap: 1.25rem;
    }

    .site-header .navbar-brand {
        justify-self: start;
        margin-right: 0;
    }

    .public-desktop-nav {
        justify-self: center;
    }

    .public-publish-button {
        justify-self: end;
    }
}

.favorite-nav-count {
    display: grid;
    place-items: center;
    min-width: 20px;
    height: 20px;
    padding: 0 .3rem;
    border-radius: 999px;
    color: #fff;
    background: var(--green);
    font-family: var(--font-body);
    font-size: .62rem;
    font-weight: 800;
}

.mobile-nav-links .favorite-nav-count {
    justify-self: end;
}

.global-search-hero {
    background: linear-gradient(120deg, #e7f4ed, #f7fbf8);
}

.global-search-form {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto;
    align-items: center;
    gap: .75rem;
    max-width: 850px;
    min-height: 62px;
    padding: .45rem .45rem .45rem 1.1rem;
    margin-top: 1.75rem;
    border: 1px solid #c8dacf;
    border-radius: .7rem;
    background: #fff;
    box-shadow: 0 .8rem 2.2rem rgba(18, 61, 45, .08);
}

.global-search-form>i {
    color: var(--green);
    font-size: 1.1rem;
}

.global-search-form input {
    width: 100%;
    min-width: 0;
    padding: .65rem 0;
    border: 0;
    outline: 0;
    color: var(--ink);
    background: transparent;
    font-size: 1rem;
}

.global-search-form .btn {
    min-height: 48px;
    padding-right: 1.25rem;
    padding-left: 1.25rem;
}

.search-guidance {
    display: flex;
    align-items: flex-start;
    gap: 1.25rem;
    padding: 2rem;
    border: 1px dashed #b8ccc0;
    border-radius: .75rem;
    background: #fff;
}

.search-guidance>i {
    display: grid;
    place-items: center;
    width: 52px;
    height: 52px;
    flex: 0 0 52px;
    border-radius: 50%;
    color: var(--green);
    background: var(--mint);
    font-size: 1.35rem;
}

.search-guidance h2 {
    margin-bottom: .4rem;
    font-size: 1.55rem;
}

.search-guidance p {
    margin: 0;
    color: var(--muted);
}

.search-summary {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 1.5rem;
    margin: 1.5rem 0 2rem;
}

.search-summary h2 {
    margin: 0;
    font-size: clamp(1.45rem, 2.5vw, 2rem);
}

.search-result-section {
    padding: 1.5rem 0 2rem;
}

.search-result-heading {
    display: flex;
    align-items: center;
    gap: .65rem;
    margin-bottom: 1rem;
}

.search-result-heading h2 {
    margin: 0;
    font-size: 1.45rem;
}

.search-result-heading span {
    display: grid;
    place-items: center;
    min-width: 28px;
    height: 28px;
    border-radius: 50%;
    color: var(--green);
    background: var(--mint);
    font-size: .75rem;
    font-weight: 800;
}

.search-result-list {
    display: grid;
    gap: .75rem;
}

.search-result-card {
    position: relative;
    display: grid;
    grid-template-columns: 120px minmax(0, 1fr) auto;
    align-items: center;
    gap: 1rem;
    min-width: 0;
    padding: .8rem;
    border: 1px solid var(--line);
    border-radius: .65rem;
    background: #fff;
}

.search-result-card>img {
    width: 120px;
    height: 92px;
    border-radius: .45rem;
    object-fit: cover;
}

.search-result-card>div {
    min-width: 0;
}

.search-result-card .tag {
    display: inline-block;
    margin-bottom: .45rem;
}

.search-result-card h3 {
    margin: 0 0 .25rem;
    font-size: 1.05rem;
}

.search-result-card h3 a {
    color: var(--ink);
    text-decoration: none;
}

.search-result-card h3 a:hover {
    color: var(--green);
}

.search-result-card p,
.search-empty-category {
    margin: 0;
    color: var(--muted);
    font-size: .82rem;
}

.favorite-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: .4rem;
    min-height: 40px;
    padding: .5rem .7rem;
    border: 1px solid #ccdbd2;
    border-radius: 999px;
    color: var(--forest);
    background: #fff;
    font-family: var(--font-body);
    font-size: .75rem;
    font-weight: 800;
    line-height: 1;
    transition: color .18s ease, background .18s ease, border-color .18s ease, transform .18s ease;
}

.favorite-button:hover,
.favorite-button:focus-visible {
    transform: translateY(-2px);
    border-color: var(--green);
    outline: 0;
}

.favorite-button.is-saved {
    color: #fff;
    border-color: var(--green);
    background: var(--green);
}

.card-favorite {
    position: absolute;
    top: .85rem;
    right: .85rem;
    z-index: 3;
    width: 42px;
    height: 42px;
    padding: 0;
    box-shadow: 0 .5rem 1.25rem rgba(18, 61, 45, .16);
}

.card-favorite .favorite-button-label {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
    white-space: nowrap;
}

.detail-favorite {
    margin-top: .75rem;
    color: #fff;
    border-color: rgba(255, 255, 255, .5);
    background: rgba(4, 35, 25, .45);
    backdrop-filter: blur(8px);
}

.detail-favorite:hover,
.detail-favorite:focus-visible {
    color: var(--forest);
    border-color: #fff;
    background: #fff;
}

.detail-favorite.is-saved {
    color: var(--forest);
    border-color: #fff;
    background: #fff;
}

.favorites-toolbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding-bottom: 1rem;
    margin-bottom: 1.25rem;
    border-bottom: 1px solid var(--line);
}

.favorites-toolbar p {
    margin: 0;
    color: var(--muted);
}

.favorites-toolbar strong {
    color: var(--ink);
}

.favorites-list {
    display: grid;
    gap: 1rem;
}

.saved-publication-card {
    display: grid;
    grid-template-columns: 160px minmax(0, 1fr) auto;
    align-items: center;
    gap: 1.25rem;
    padding: 1rem;
    border: 1px solid var(--line);
    border-radius: .7rem;
    background: #fff;
}

.saved-publication-card>img {
    width: 160px;
    height: 110px;
    border-radius: .5rem;
    object-fit: cover;
}

.saved-publication-card>div {
    min-width: 0;
}

.saved-publication-card .tag {
    display: inline-block;
    margin-bottom: .55rem;
}

.saved-publication-card h2 {
    margin: 0 0 .35rem;
}

.saved-publication-card h2 a {
    color: var(--ink);
    text-decoration: none;
}

.saved-publication-card h2 a:hover {
    color: var(--green);
}

.saved-publication-card p {
    margin: 0;
    color: var(--muted);
    font-size: .85rem;
}

.related-publication-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 1rem;
}

.related-publication-card {
    position: relative;
    overflow: hidden;
    border: 1px solid var(--line);
    border-radius: .7rem;
    background: #fff;
}

.related-publication-card>img {
    width: 100%;
    height: 170px;
    object-fit: cover;
}

.related-publication-card>div {
    padding: 1.2rem;
}

.related-publication-card h3 {
    margin: .75rem 0 .5rem;
    font-size: 1.15rem;
}

.related-publication-card h3 a {
    color: var(--ink);
    text-decoration: none;
}

.related-publication-card h3 a:hover {
    color: var(--green);
}

.related-publication-card p,
.related-publication-card small {
    display: block;
    margin: 0;
    color: var(--muted);
    font-size: .78rem;
}

.related-publication-card small {
    margin-top: .45rem;
}

.related-publication-card .card-favorite {
    padding: 0;
}

.back-to-top {
    position: fixed;
    right: clamp(1rem, 3vw, 2rem);
    bottom: clamp(1rem, 3vw, 2rem);
    z-index: 1010;
    display: grid;
    place-items: center;
    width: 46px;
    height: 46px;
    padding: 0;
    border: 0;
    border-radius: 50%;
    color: #fff;
    background: var(--green);
    box-shadow: 0 .8rem 2rem rgba(18, 61, 45, .25);
    opacity: 0;
    visibility: visible;
    transform: translateY(14px);
    transition: opacity .2s ease, visibility .2s ease, transform .2s ease, background .2s ease;
}

.back-to-top.is-visible {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
}

.back-to-top:hover,
.back-to-top:focus-visible {
    background: var(--forest);
}

@media (max-width:767.98px) {
    .global-search-form {
        grid-template-columns: auto minmax(0, 1fr);
    }

    .global-search-form .btn {
        grid-column: 1/-1;
        width: 100%;
    }

    .search-summary {
        align-items: flex-start;
        flex-direction: column;
    }

    .search-result-card,
    .saved-publication-card {
        grid-template-columns: 82px minmax(0, 1fr) auto;
        gap: .75rem;
    }

    .search-result-card>img,
    .saved-publication-card>img {
        width: 82px;
        height: 82px;
    }

    .result-favorite {
        width: 40px;
        height: 40px;
        padding: 0;
    }

    .result-favorite .favorite-button-label {
        position: absolute;
        width: 1px;
        height: 1px;
        overflow: hidden;
        clip: rect(0 0 0 0);
        white-space: nowrap;
    }

    .related-publication-grid {
        grid-template-columns: 1fr;
    }

    .related-publication-card {
        display: grid;
        grid-template-columns: 110px minmax(0, 1fr);
    }

    .related-publication-card>img {
        width: 110px;
        height: 100%;
        min-height: 150px;
    }

    .related-publication-card .card-favorite {
        top: .6rem;
        right: .6rem;
    }

    .back-to-top {
        width: 42px;
        height: 42px;
    }
}

@media (max-width:420px) {
    .search-guidance {
        padding: 1.25rem;
    }

    .search-guidance>i {
        display: none;
    }

    .search-result-card,
    .saved-publication-card {
        grid-template-columns: 68px minmax(0, 1fr);
    }

    .search-result-card>img,
    .saved-publication-card>img {
        width: 68px;
        height: 68px;
    }

    .search-result-card>.result-favorite,
    .saved-publication-card>.result-favorite {
        position: absolute;
        top: .5rem;
        right: .5rem;
    }

    .search-result-card>div,
    .saved-publication-card>div {
        padding-right: 2.5rem;
    }

    .favorites-toolbar {
        align-items: flex-start;
        flex-direction: column;
    }
}

/* Annuaire des organisations, veille et filtres avancés */

.filter-result-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    margin: 1.25rem 0;
}

.saved-search-actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: .8rem;
    flex-wrap: wrap;
}

.saved-search-actions>a {
    color: var(--green);
    font-size: .8rem;
    font-weight: 800;
    text-decoration: none;
    white-space: nowrap;
}

[data-save-search] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: .4rem;
}

[data-save-search].is-saved {
    color: #fff;
    border-color: var(--green);
    background: var(--green);
}

.saved-search-list {
    display: grid;
    gap: .8rem;
}

.saved-search-card {
    display: grid;
    grid-template-columns: 48px minmax(0, 1fr) 38px;
    align-items: center;
    gap: 1rem;
    min-width: 0;
    padding: 1rem;
    border: 1px solid var(--line);
    border-radius: .7rem;
    background: #fff;
}

.saved-search-icon {
    display: grid;
    place-items: center;
    width: 48px;
    height: 48px;
    border-radius: .55rem;
    color: var(--green);
    background: var(--mint);
    font-size: 1.05rem;
}

.saved-search-card>div {
    min-width: 0;
}

.saved-search-card h2 {
    margin: 0 0 .25rem;
}

.saved-search-card h2 a {
    color: var(--ink);
    text-decoration: none;
}

.saved-search-card h2 a:hover {
    color: var(--green);
}

.saved-search-card p {
    margin: 0;
    overflow: hidden;
    color: var(--muted);
    font-size: .76rem;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.calendar-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: .45rem;
    margin-top: .75rem;
}

.organization-inline-link {
    position: relative;
    z-index: 3;
    min-width: 0;
    overflow: hidden;
    color: inherit;
    text-overflow: ellipsis;
    white-space: nowrap;
    text-decoration: none;
}

.organization-inline-link:hover {
    color: var(--green);
    text-decoration: underline;
}

.organization-card-links {
    position: relative;
    z-index: 3;
    display: flex;
    flex-wrap: wrap;
    gap: .35rem .85rem;
    margin-top: .8rem;
}

.organization-card-links a {
    display: inline-flex;
    align-items: center;
    gap: .3rem;
    color: var(--green);
    font-size: .72rem;
    font-weight: 800;
    text-decoration: none;
}

.organization-card-links a:hover {
    text-decoration: underline;
}

.organization-card-links a i {
    font-size: .85rem;
}

.organization-detail-link {
    color: var(--ink);
    text-decoration: none;
}

.organization-detail-link:hover {
    color: var(--green);
}

.organization-detail-link i {
    color: var(--green);
    font-size: .85em;
}

.directory-summary {
    margin-bottom: 1.25rem;
    color: var(--muted);
}

.directory-summary p {
    margin: 0;
}

.directory-summary strong {
    color: var(--ink);
}

.organization-directory-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1rem;
}

.organization-directory-card {
    position: relative;
    display: grid;
    grid-template-columns: 84px minmax(0, 1fr);
    gap: 1.15rem;
    min-width: 0;
    padding: 1.35rem;
    border: 1px solid var(--line);
    border-radius: .8rem;
    background: #fff;
    box-shadow: 0 .6rem 1.8rem rgba(18, 61, 45, .04);
    transition: transform .2s ease, border-color .2s ease, box-shadow .2s ease;
}

.organization-directory-card:hover {
    transform: translateY(-3px);
    border-color: #a8c9b9;
    box-shadow: 0 1rem 2.2rem rgba(18, 61, 45, .09);
}

.organization-directory-logo,
.organization-profile-logo {
    display: grid;
    place-items: center;
    overflow: hidden;
    border: 1px solid #d6e3db;
    color: #fff;
    background: linear-gradient(145deg, var(--green), var(--forest));
    font-family: var(--font-heading);
    font-weight: 800;
}

.organization-directory-logo {
    width: 84px;
    height: 84px;
    border-radius: 50%;
    font-size: 2rem;
}

.organization-directory-logo img,
.organization-profile-logo img {
    width: 100%;
    height: 100%;
    object-fit: contain;
    background: #fff;
}

.verified-organization {
    display: inline-flex;
    align-items: center;
    gap: .3rem;
    margin-bottom: .45rem;
    color: var(--green);
    font-size: .68rem;
    font-weight: 850;
    letter-spacing: .04em;
    text-transform: uppercase;
}

.organization-directory-card h2 {
    margin: 0 0 .3rem;
    font-size: 1.3rem;
}

.organization-directory-card p {
    margin: 0;
    color: var(--muted);
    font-size: .8rem;
}

.organization-directory-description {
    min-height: 3.5em;
    margin-top: .7rem !important;
    line-height: 1.55;
}

.organization-directory-stats {
    display: flex;
    gap: .55rem;
    flex-wrap: wrap;
    margin-top: .9rem;
}

.organization-directory-stats span {
    padding: .3rem .55rem;
    border-radius: 999px;
    color: #426057;
    background: #edf4f0;
    font-size: .7rem;
}

.organization-directory-stats strong {
    color: var(--forest);
}

.directory-filter {
    display: flex;
    align-items: end;
    gap: .65rem;
    margin-bottom: 1.25rem;
}

.directory-filter>div {
    flex: 1 1 auto;
}

.directory-filter .btn {
    min-height: 46px;
}

.organization-search-result {
    grid-template-columns: 92px minmax(0, 1fr) auto;
}

.organization-search-result .organization-result-logo {
    display: grid;
    place-items: center;
    width: 92px;
    height: 92px;
    padding: 0;
    overflow: hidden;
    border-radius: 50%;
    color: #fff;
    background: linear-gradient(145deg, var(--green), var(--forest));
    font-family: var(--font-heading);
    font-size: 1.8rem;
    font-weight: 800;
}

.organization-result-logo img {
    width: 100%;
    height: 100%;
    object-fit: contain;
    background: #fff;
}

.organization-search-result .verified-organization {
    margin-bottom: .35rem;
}

.organization-search-result .result-arrow {
    display: grid;
    place-items: center;
    width: 40px;
    height: 40px;
    border: 1px solid #ccdbd2;
    border-radius: 50%;
    color: var(--green);
    text-decoration: none;
}

.organization-search-result .result-arrow:hover {
    color: #fff;
    background: var(--green);
}

.organization-profile-hero {
    padding: clamp(2.2rem, 6vw, 4rem) 0;
    background: linear-gradient(120deg, #e5f3eb 0%, #f8fbf9 65%, #eef5f1 100%);
    border-bottom: 1px solid var(--line);
}

.back-link.dark {
    color: var(--forest);
}

.organization-profile-heading {
    display: flex;
    align-items: center;
    gap: clamp(1.25rem, 4vw, 2.5rem);
    margin-top: 2.2rem;
}

.organization-profile-logo {
    width: clamp(110px, 15vw, 150px);
    height: clamp(110px, 15vw, 150px);
    flex: 0 0 auto;
    border-radius: 50%;
    font-size: 3rem;
    box-shadow: 0 1rem 2.5rem rgba(18, 61, 45, .12);
}

.organization-profile-heading h1 {
    margin: 0;
    font-size: clamp(2rem, 5vw, 4rem);
}

.organization-profile-meta {
    display: flex;
    gap: 1rem;
    flex-wrap: wrap;
    margin-top: .85rem;
    color: var(--muted);
    font-size: .82rem;
}

.organization-profile-meta i {
    color: var(--green);
}

.organization-profile-overview {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(280px, 360px);
    gap: clamp(2rem, 6vw, 5rem);
    align-items: start;
}

.organization-profile-overview>div>p:last-child {
    max-width: 780px;
    color: #40564d;
    line-height: 1.85;
}

.organization-profile-facts {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: .75rem;
    padding: 1.2rem;
    border: 1px solid var(--line);
    border-radius: .8rem;
    background: #fff;
}

.organization-profile-facts>div {
    padding: 1rem;
    border-radius: .6rem;
    background: var(--mint);
}

.organization-profile-facts strong,
.organization-profile-facts span {
    display: block;
}

.organization-profile-facts strong {
    color: var(--forest);
    font-family: var(--font-heading);
    font-size: 1.7rem;
}

.organization-profile-facts span {
    color: var(--muted);
    font-size: .72rem;
}

.organization-profile-facts .btn {
    grid-column: 1/-1;
}

.organization-logo-preview img {
    width: 64px;
    height: 64px;
    border-radius: 50%;
    object-fit: contain;
}

.profile-status-note {
    display: flex;
    gap: .7rem;
    padding: .85rem;
    border-radius: .55rem;
    color: var(--forest);
    background: var(--mint);
}

.profile-status-note>i {
    color: var(--green);
    font-size: 1.2rem;
}

.profile-status-note strong,
.profile-status-note span {
    display: block;
}

.profile-status-note span {
    margin-top: .15rem;
    color: var(--muted);
    font-size: .72rem;
}

@media (max-width:767.98px) {
    .filter-result-row {
        align-items: flex-start;
        flex-direction: column;
    }

    .saved-search-actions {
        width: 100%;
        justify-content: flex-start;
    }

    .saved-search-actions [data-save-search] {
        flex: 1 1 230px;
    }

    .organization-directory-grid {
        grid-template-columns: 1fr;
    }

    .directory-filter {
        align-items: stretch;
        flex-direction: column;
    }

    .organization-profile-heading {
        align-items: flex-start;
    }

    .organization-profile-overview {
        grid-template-columns: 1fr;
    }

    .organization-profile-facts {
        max-width: none;
    }

    .organization-search-result {
        grid-template-columns: 82px minmax(0, 1fr) auto;
    }

    .organization-search-result .organization-result-logo {
        width: 82px;
        height: 82px;
    }
}

@media (max-width:479.98px) {
    .saved-search-card {
        grid-template-columns: 42px minmax(0, 1fr) 36px;
        gap: .7rem;
        padding: .8rem;
    }

    .saved-search-icon {
        width: 42px;
        height: 42px;
    }

    .organization-directory-card {
        grid-template-columns: 64px minmax(0, 1fr);
        gap: .85rem;
        padding: 1rem;
    }

    .organization-directory-logo {
        width: 64px;
        height: 64px;
        font-size: 1.5rem;
    }

    .organization-directory-stats {
        grid-column: 1/-1;
    }

    .organization-profile-heading {
        flex-direction: column;
    }

    .organization-profile-logo {
        width: 92px;
        height: 92px;
    }

    .organization-profile-facts {
        grid-template-columns: 1fr;
    }

    .organization-profile-facts .btn {
        grid-column: auto;
    }

    .organization-search-result {
        grid-template-columns: 68px minmax(0, 1fr) 40px;
    }

    .organization-search-result .organization-result-logo {
        width: 68px;
        height: 68px;
    }
}

/* Publicités d'entreprises : parcours public et validation centrale */
.public-publish-menu {
    justify-self: end;
}

.public-publish-menu .dropdown-menu {
    min-width: 245px;
    padding: .45rem;
    margin-top: .55rem;
    border: 1px solid var(--line);
    border-radius: .65rem;
    box-shadow: 0 1rem 2.5rem rgba(18, 61, 45, .14);
}

.public-publish-menu .dropdown-item {
    display: flex;
    align-items: center;
    gap: .55rem;
    padding: .7rem .8rem;
    border-radius: .4rem;
    color: var(--forest);
    font-size: .82rem;
    font-weight: 700;
}

.public-publish-menu .dropdown-item:hover,
.public-publish-menu .dropdown-item:focus {
    color: var(--forest);
    background: var(--mint);
}

.public-publish-menu .dropdown-item i {
    color: var(--green);
    font-size: 1rem;
}

.publish-cta-actions {
    display: flex;
    align-items: center;
    gap: .7rem;
    flex-wrap: wrap;
    justify-content: flex-start;
}

.publish-cta-actions .btn {
    min-width: 0;
    white-space: nowrap;
}

.publish-cta-actions .btn-outline-light {
    border: 1px solid rgba(255, 255, 255, .7);
    color: #fff;
    box-shadow: none;
}

.publish-cta-actions .btn-outline-light:hover {
    color: var(--forest);
    background: #fff;
}

.advertise-intro {
    background: linear-gradient(115deg, #e7f4ed, #f7fbf8);
}

.advertise-intro .btn {
    margin-top: 1.25rem;
}

.advertise-layout {
    display: grid;
    grid-template-columns: minmax(0, 1.65fr) minmax(260px, .8fr);
    gap: clamp(1.5rem, 5vw, 4rem);
    align-items: start;
}

.advertise-form-panel {
    min-width: 0;
    padding: clamp(1.25rem, 3vw, 2.25rem);
    border: 1px solid var(--line);
    border-radius: .8rem;
    background: #fff;
    box-shadow: 0 1rem 2.5rem rgba(18, 61, 45, .05);
}

.advertise-form-panel h2 {
    margin-bottom: .4rem;
}

.advertise-form {
    display: grid;
    gap: 1.15rem;
    margin-top: 1.6rem;
}

.advertise-form-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1rem;
}

.advertise-form label {
    display: block;
    margin-bottom: .4rem;
    color: var(--forest);
    font-size: .82rem;
    font-weight: 800;
}

.advertise-form label>span {
    color: #bb4d40;
}

.advertise-form label>span.optional {
    color: var(--muted);
    font-weight: 500;
}

.advertise-form .form-control {
    min-height: 46px;
    border-color: #cdded2;
    border-radius: .45rem;
}

.advertise-form textarea.form-control {
    min-height: 145px;
}

.advertise-form small {
    display: block;
    margin-top: .35rem;
    color: var(--muted);
    font-size: .75rem;
}

.advertise-form .btn {
    justify-self: start;
}

.advertise-honeypot {
    position: absolute;
    left: -10000px;
    width: 1px;
    height: 1px;
    overflow: hidden;
}

.advertise-privacy {
    display: flex;
    align-items: start;
    gap: .5rem;
    margin: 0;
    color: var(--muted);
    font-size: .76rem;
    line-height: 1.5;
}

.advertise-privacy i {
    color: var(--green);
    font-size: 1rem;
}

.advertise-form .quill-editor-shell {
    max-width: 100%;
}

.advertise-form .ql-toolbar {
    display: flex;
    flex-wrap: wrap;
    gap: .2rem;
}

.advertise-editor-status {
    display: block;
    min-height: 1.2em;
    margin-top: .4rem;
    color: var(--green);
    font-size: .76rem;
}

.advertise-editor-status.is-error {
    color: #ad453a;
}

.advertise-aside {
    display: grid;
    gap: 1rem;
}

.advertise-info-card {
    padding: 1.2rem;
    border: 1px solid var(--line);
    border-radius: .7rem;
    background: #fff;
}

.advertise-info-card>span {
    display: block;
    margin-bottom: .5rem;
    color: var(--green);
    font-size: 1.3rem;
}

.advertise-info-card h3 {
    margin-bottom: .35rem;
    font-size: 1.15rem;
}

.advertise-info-card p {
    margin: 0;
    color: var(--muted);
    font-size: .82rem;
    line-height: 1.6;
}

.advertise-ngo-note {
    padding: 1.35rem;
    border-radius: .7rem;
    color: #fff;
    background: var(--forest);
}

.advertise-ngo-note p {
    margin: .5rem 0 .85rem;
    color: #d7e8df;
    font-size: .82rem;
}

.advertise-ngo-note a {
    color: #fff;
    font-size: .82rem;
    font-weight: 800;
}

.sponsored-section {
    padding-top: 1.5rem;
}

.sponsored-directory-intro { background: linear-gradient(120deg, var(--mint), var(--paper)); }
.sponsored-directory-intro h1 { max-width: 900px; }
.sponsored-directory .filter-bar { margin-inline: 0; }
.sponsored-pagination { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 1rem; }

@media (min-width: 992px) and (max-width: 1399.98px) {
    .site-header .public-desktop-nav { gap: .65rem; }
}

.sponsored-disclosure,
.sponsored-label {
    color: #6b5a33;
    font-size: .7rem;
    font-weight: 800;
    letter-spacing: .05em;
    text-transform: uppercase;
}

.sponsored-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 1rem;
}

@media (max-width:991.98px) {
    .sponsored-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

.sponsored-card {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    min-width: 0;
    overflow: hidden;
    border: 1px solid #e4dfcf;
    border-radius: .75rem;
    background: #fffdf8;
}

.sponsored-placeholder {
    display: grid;
    place-items: center;
    color: #a98042;
    background: #f6efdf;
    font-size: 2.5rem;
}

.sponsored-card>div:last-child {
    display: flex;
    align-items: flex-start;
    flex-direction: column;
    min-width: 0;
    padding: 1.25rem;
}

.sponsored-card h3 {
    margin: .5rem 0;
    font-size: .95rem;
    line-height: 1.3;
}

.sponsored-card p {
    margin: 0 0 1rem;
    color: #55645c;
    font-size: .75rem;
    line-height: 1.5;
}

.sponsored-card a {
    margin-top: auto;
    color: var(--forest);
    font-size: .82rem;
    font-weight: 800;
    text-decoration: none;
}

.sponsored-card a:hover {
    text-decoration: underline;
}

.sponsored-copy {
    width: 100%;
    margin: 0 0 1rem;
    overflow-wrap: anywhere;
    color: #55645c;
    font-size: .83rem;
    line-height: 1.55;
}

.sponsored-copy p {
    margin: 0 0 .7rem;
}

.sponsored-copy img,
.sponsored-copy iframe {
    max-width: 100%;
}

.sponsored-copy iframe {
    display: block;
    max-height: 260px;
}

.sponsored-copy table {
    display: block;
    max-width: 100%;
    overflow-x: auto;
}

.advertisement-review-description img,
.advertisement-review-description iframe {
    max-width: 100%;
}

.sponsored-card>div:last-child>a {
    margin-top: auto;
}

.sponsored-copy a {
    margin-top: 0;
}

.advertisement-review-list {
    display: grid;
    gap: 1rem;
}

.advertisement-review-card {
    min-width: 0;
}

.advertisement-review-top {
    display: flex;
    align-items: center;
    gap: 1rem;
}

.advertisement-review-top>img,
.advertisement-review-placeholder {
    width: 100px;
    height: 82px;
    flex: 0 0 100px;
    border-radius: .5rem;
    object-fit: cover;
}

.advertisement-review-placeholder {
    display: grid;
    place-items: center;
    color: var(--green);
    background: var(--mint);
    font-size: 1.5rem;
}

.advertisement-review-top h2 {
    margin: 0 0 .45rem;
    font-size: 1.3rem;
}

.advertisement-review-description {
    margin: 1rem 0;
    color: #445a50;
    line-height: 1.6;
}

.advertisement-review-meta {
    display: flex;
    flex-wrap: wrap;
    gap: .4rem 1.5rem;
    color: var(--muted);
    font-size: .79rem;
}

.advertisement-review-meta i {
    color: var(--green);
}

.advertisement-destination {
    display: inline-block;
    max-width: 100%;
    margin-top: .8rem;
    overflow-wrap: anywhere;
    color: var(--green);
    font-size: .79rem;
}

.advertisement-review-actions {
    display: flex;
    align-items: end;
    gap: .7rem;
    flex-wrap: wrap;
    padding-top: 1rem;
    margin-top: 1rem;
    border-top: 1px solid var(--line);
}

.advertisement-approve-form {
    display: flex;
    align-items: end;
    gap: .6rem;
    flex-wrap: wrap;
}

.advertisement-approve-form label {
    align-self: center;
    color: var(--forest);
    font-size: .78rem;
    font-weight: 800;
}

.advertisement-approve-form .form-control {
    width: 175px;
    min-height: 36px;
}

.advertisement-review-actions .btn {
    min-height: 36px;
}

@media (max-width:1199.98px) and (min-width:992px) {
    .public-desktop-nav {
        gap: .6rem;
    }

    .public-desktop-nav .nav-link {
        font-size: .78rem;
    }

    .public-publish-menu .public-publish-button {
        padding-right: .65rem !important;
        padding-left: .65rem !important;
        font-size: .75rem;
    }
}

@media (max-width:767.98px) {
    .advertise-layout {
        grid-template-columns: 1fr;
    }

    .advertise-aside {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .sponsored-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: .7rem;
    }

    .sponsored-card .sponsored-card-body {
        padding: .85rem;
    }

    .sponsored-card h3 {
        font-size: .82rem;
        line-height: 1.3;
    }

    .sponsored-card p,
    .sponsored-copy {
        font-size: .68rem;
        line-height: 1.4;
    }

    .sponsored-card-actions {
        align-items: flex-start;
        flex-direction: column;
    }

    .publish-cta-actions {
        width: 100%;
        justify-content: stretch;
    }

    .publish-cta-actions .btn {
        width: 100%;
        white-space: normal;
    }
}

@media (max-width:575.98px) {

    .advertise-form-grid,
    .advertise-aside {
        grid-template-columns: 1fr;
    }

    .advertise-form .btn {
        width: 100%;
    }

    .advertisement-review-top>img,
    .advertisement-review-placeholder {
        width: 72px;
        height: 72px;
        flex-basis: 72px;
    }

    .advertisement-approve-form {
        width: 100%;
    }

    .advertisement-approve-form .form-control {
        width: 100%;
    }

    .advertisement-approve-form label {
        width: 100%;
    }

    .advertisement-review-actions form,
    .advertisement-review-actions .btn {
        width: 100%;
    }
}

.advertise-social-fields {
    min-width: 0;
    margin: 0;
    padding: 1rem;
    border: 1px solid var(--line);
    border-radius: .55rem;
}

.advertise-social-fields legend {
    float: none;
    width: auto;
    margin: 0 0 .3rem;
    padding: 0 .2rem;
    color: var(--forest);
    font-size: .9rem;
    font-weight: 800;
}

.advertise-social-fields legend .optional {
    color: var(--muted);
    font-size: .78rem;
    font-weight: 500;
}

.advertise-social-fields p {
    margin: 0 0 1rem;
    color: var(--muted);
    font-size: .78rem;
}

.advertise-social-fields label i {
    margin-right: .25rem;
    color: var(--green);
}

.sponsored-card .sponsored-media {
    appearance: none;
    display: block;
    width: 100%;
    min-width: 0;
    aspect-ratio: 16/9;
    padding: 0;
    margin: 0;
    overflow: hidden;
    border: 0;
    color: inherit;
    background: none;
    cursor: pointer;
}

.sponsored-card .sponsored-media:focus-visible,
.sponsored-open:focus-visible {
    outline: 3px solid rgba(29, 122, 76, .35);
    outline-offset: -3px;
}

.sponsored-media img,
.sponsored-media .sponsored-placeholder {
    display: grid;
    place-items: center;
    width: 100%;
    height: 100%;
    min-height: 0;
    object-fit: cover;
}

.sponsored-card .sponsored-card-body {
    display: flex;
    align-items: flex-start;
    flex-direction: column;
    min-width: 0;
    padding: 1.25rem;
}

.sponsored-social-links {
    display: flex;
    flex-wrap: wrap;
    gap: .45rem;
    margin: .2rem 0 .9rem;
}

.sponsored-card .sponsored-social-links a {
    display: grid;
    place-items: center;
    width: 34px;
    height: 34px;
    margin: 0;
    border: 1px solid #dce6dd;
    border-radius: 50%;
    color: var(--forest);
    background: #fff;
    font-size: 1rem;
}

.sponsored-card .sponsored-social-links a:hover {
    border-color: var(--green);
    color: var(--green);
}

.sponsored-card-actions {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .75rem;
    flex-wrap: wrap;
    width: 100%;
    margin-top: auto;
}

.sponsored-open {
    display: inline-flex;
    align-items: center;
    gap: .35rem;
    padding: 0;
    margin: 0;
    border: 0;
    color: var(--forest);
    background: transparent;
    font-size: .82rem;
    font-weight: 800;
    text-align: left;
    cursor: pointer;
}

.sponsored-open:hover {
    color: var(--green);
    text-decoration: underline;
}

.advertisement-review-social {
    display: flex;
    flex-wrap: wrap;
    gap: .5rem 1rem;
    margin-top: .5rem;
}

.advertisement-review-social a {
    color: var(--green);
    font-size: .79rem;
    font-weight: 700;
}


.sponsored-modal .modal-content {
    overflow: hidden;
    border: 0;
    border-radius: .9rem;
    box-shadow: 0 1.5rem 4rem rgba(16, 52, 39, .24);
}

.sponsored-modal .modal-header {
    align-items: flex-start;
    gap: 1rem;
    padding: 1.15rem clamp(1rem, 3vw, 2rem);
    border-bottom: 1px solid var(--line);
}

.sponsored-modal .modal-title {
    margin: .2rem 0 0;
    color: var(--forest);
    font-size: clamp(1.35rem, 2.5vw, 2rem);
}

.sponsored-modal .modal-body {
    padding: 0;
}

.sponsored-modal-visual {
    width: 100%;
    aspect-ratio: 16/6;
    margin: 0;
    overflow: hidden;
    background: #f6efdf;
}

.sponsored-modal-visual img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.sponsored-modal-content {
    padding: clamp(1rem, 3vw, 2rem);
}

.sponsored-modal .sponsored-copy {
    margin-bottom: 1.25rem;
    color: #40564c;
    font-size: .94rem;
    line-height: 1.72;
}

.sponsored-modal .sponsored-copy iframe {
    max-height: 480px;
}

.sponsored-modal .sponsored-contacts a {
    width: fit-content;
    overflow-wrap: anywhere;
    color: var(--forest);
    font-size: .86rem;
    font-weight: 700;
    text-decoration: none;
}

.sponsored-modal .sponsored-contacts a:hover {
    color: var(--green);
    text-decoration: underline;
}

.sponsored-modal .sponsored-social-links a {
    display: grid;
    place-items: center;
    width: 38px;
    height: 38px;
    border: 1px solid #dce6dd;
    border-radius: 50%;
    color: var(--forest);
    background: #fff;
    font-size: 1.05rem;
    text-decoration: none;
}

.sponsored-modal .sponsored-social-links a:hover {
    border-color: var(--green);
    color: var(--green);
}

.sponsored-modal-footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    flex-wrap: wrap;
    padding-top: 1rem;
    margin-top: .5rem;
    border-top: 1px solid var(--line);
}

.sponsored-modal-stats {
    display: flex;
    align-items: center;
    gap: 1rem;
    flex-wrap: wrap;
    color: var(--muted);
    font-size: .8rem;
    font-weight: 700;
}

.sponsored-modal-stats i {
    color: var(--green);
}

@media (max-width:575.98px) {
    .sponsored-modal .modal-content {
        border-radius: 0;
    }

    .sponsored-modal-visual {
        aspect-ratio: 16/9;
    }

    .sponsored-modal-footer {
        align-items: stretch;
        flex-direction: column;
    }

    .sponsored-modal-footer .btn {
        width: 100%;
    }

    .sponsored-open {
        font-size: .76rem;
    }
}

/* Publicités payantes et espace entreprise */
.advertise-plan-overview {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: .65rem;
    margin: 1.2rem 0;
}

.advertise-plan-overview>div {
    display: grid;
    gap: .1rem;
    padding: 1rem;
    border: 1px solid #d5e8da;
    border-radius: .6rem;
    background: #f7fbf8;
}

.advertise-plan-overview strong {
    color: var(--forest);
    font-size: .78rem;
}

.advertise-plan-overview b {
    color: var(--green);
    font-size: 1.4rem;
}

.advertise-plan-overview span {
    color: var(--muted);
    font-size: .75rem;
}

.advertise-signin {
    display: grid;
    gap: .6rem;
    padding: 1.5rem;
    border-radius: .7rem;
    background: var(--mint);
}

.advertise-signin>i {
    color: var(--green);
    font-size: 1.5rem;
}

.advertise-signin h3 {
    margin: 0;
    font-size: 1.25rem;
}

.advertise-signin p {
    margin: 0;
    color: #486458;
    font-size: .86rem;
}

.advertise-signin>div {
    display: flex;
    flex-wrap: wrap;
    gap: .55rem;
    margin-top: .5rem;
}

.advertise-account-note {
    margin: .8rem 0 0;
    color: var(--muted);
    font-size: .83rem;
}

.advertise-account-note a {
    color: var(--green);
    font-weight: 700;
}

.advertise-plan-choices,
.advertise-public-contacts {
    min-width: 0;
    margin: 0;
    padding: 1rem;
    border: 1px solid var(--line);
    border-radius: .6rem;
}

.advertise-plan-choices legend,
.advertise-public-contacts legend {
    float: none;
    width: auto;
    margin: 0 0 .5rem;
    padding: 0 .2rem;
    color: var(--forest);
    font-size: .9rem;
    font-weight: 800;
}

.advertise-plan-choices legend span {
    color: #bb4d40;
}

.advertise-plan-choices>div {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: .55rem;
}

.advertise-plan-choice {
    display: flex !important;
    align-items: center;
    gap: .5rem;
    min-width: 0;
    margin: 0 !important;
    padding: .75rem;
    border: 1px solid #d6e4da;
    border-radius: .5rem;
    cursor: pointer;
}

.advertise-plan-choice:has(input:checked) {
    border-color: var(--green);
    background: var(--mint);
}

.advertise-plan-choice input {
    accent-color: var(--green);
}

.advertise-plan-choice span {
    display: grid;
    min-width: 0;
}

.advertise-plan-choice strong {
    color: var(--forest);
}

.advertise-plan-choice small {
    margin: 0;
}

.advertise-plan-choice b {
    margin-left: auto;
    white-space: nowrap;
    color: var(--green);
    font-size: .9rem;
}

.advertise-public-contacts p {
    margin: 0 0 .85rem;
    color: var(--muted);
    font-size: .78rem;
}

.advertise-payment-box {
    padding: 1.1rem;
    border: 1px solid #e6d7ad;
    border-radius: .6rem;
    background: #fffcf3;
}

.advertise-payment-box>span {
    display: block;
    margin-bottom: .4rem;
    color: #75602b;
    font-size: .85rem;
    font-weight: 800;
}

.advertise-payment-box p {
    margin: 0 0 .85rem;
    color: #5e5a48;
    font-size: .82rem;
}

.advertise-payment-box strong {
    color: var(--forest);
    font-size: 1.05rem;
}

.sponsored-contacts {
    display: grid;
    gap: .3rem;
    width: 100%;
    margin: .15rem 0 .9rem;
}

.sponsored-card .sponsored-contacts a {
    width: fit-content;
    margin: 0;
    overflow-wrap: anywhere;
    color: var(--forest);
    font-size: .76rem;
    font-weight: 700;
}

.sponsored-contacts i {
    margin-right: .35rem;
    color: var(--green);
}

.advertiser-shell .admin-sidebar-footer form {
    margin: 0;
}

.advertiser-shell .admin-sidebar-footer button {
    display: flex;
    align-items: center;
    gap: .7rem;
    width: 100%;
    padding: .55rem .7rem;
    border: 0;
    color: inherit;
    background: transparent;
    font-size: .83rem;
    text-align: left;
}

.advertiser-shell .admin-sidebar-footer button:hover {
    color: #fff;
}

.advertiser-payment-instructions {
    display: flex;
    gap: 1rem;
    padding: 1.2rem;
    margin-bottom: 1.25rem;
    border: 1px solid #e5d8b2;
    border-radius: .7rem;
    background: #fffaf0;
}

.advertiser-payment-instructions>i {
    color: #a6761e;
    font-size: 1.5rem;
}

.advertiser-payment-instructions strong {
    color: var(--forest);
}

.advertiser-payment-instructions p {
    margin: .2rem 0 0;
    color: #675f49;
    font-size: .82rem;
}

.advertiser-ads-list {
    display: grid;
    gap: 1rem;
}

.advertiser-ad-heading {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    flex-wrap: wrap;
}

.advertiser-ad-heading h2 {
    margin: 0;
    font-size: 1.3rem;
}

.advertiser-ad-facts {
    display: flex;
    flex-wrap: wrap;
    gap: .5rem 1.2rem;
    margin: 1rem 0;
    color: #466156;
    font-size: .82rem;
    font-weight: 700;
}

.advertiser-ad-facts i {
    color: var(--green);
}

.advertiser-ad-date {
    margin: 0 0 .75rem;
    color: var(--muted);
    font-size: .83rem;
}

.advertiser-proof-form {
    display: grid;
    gap: .55rem;
    max-width: 500px;
    padding: 1rem;
    border: 1px solid var(--line);
    border-radius: .55rem;
    background: #f9fcfa;
}

.advertiser-proof-form label {
    color: var(--forest);
    font-size: .82rem;
    font-weight: 800;
}

.advertiser-proof-form small {
    color: var(--muted);
    font-size: .75rem;
}

.advertiser-proof-form button {
    justify-self: start;
}

.advertiser-proof-link {
    display: inline-flex;
    gap: .4rem;
    margin-top: .8rem;
    color: var(--green);
    font-size: .8rem;
    font-weight: 800;
}

.advertisement-payment-summary {
    padding: .8rem 1rem;
    margin-top: .85rem;
    border-radius: .5rem;
    background: #f4f8f5;
    color: #425e51;
    font-size: .8rem;
    overflow-wrap: anywhere;
}

.advertisement-payment-summary a {
    color: var(--green);
    font-weight: 700;
}

.advertisement-payment-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: end;
    gap: .8rem;
    padding-top: 1rem;
    margin-top: 1rem;
    border-top: 1px solid var(--line);
}

.advertisement-payment-actions form:last-child {
    display: flex;
    align-items: end;
    flex-wrap: wrap;
    gap: .5rem;
}

.advertisement-payment-actions label {
    color: var(--forest);
    font-size: .78rem;
    font-weight: 800;
}

.advertisement-payment-actions input {
    width: min(100%, 320px);
}

.advertisement-plans-form {
    display: grid;
    gap: 1.3rem;
}

.advertisement-plans-form>div:first-of-type {
    max-width: 400px;
}

.advertisement-plans-form label {
    display: block;
    margin: 0 0 .4rem;
    color: var(--forest);
    font-size: .82rem;
    font-weight: 800;
}

.advertisement-plans-form small {
    color: var(--muted);
    font-size: .75rem;
}

.advertisement-plan-admin-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 1rem;
}

.advertisement-plan-admin-grid fieldset {
    display: grid;
    gap: .3rem;
    min-width: 0;
    padding: 1rem;
    border: 1px solid var(--line);
    border-radius: .6rem;
}

.advertisement-plan-admin-grid legend {
    float: none;
    width: auto;
    margin: 0 0 .4rem;
    color: var(--forest);
    font-size: 1rem;
    font-weight: 800;
}

.advertisement-plan-admin-grid .form-control {
    margin-bottom: .55rem;
}

.advertisement-plan-admin-grid .plan-active {
    display: flex;
    align-items: center;
    gap: .5rem;
    margin-top: .35rem;
}

.advertisement-plans-form>button {
    justify-self: start;
}

@media (max-width:991.98px) {
    .advertisement-plan-admin-grid {
        grid-template-columns: 1fr;
    }
}

@media (max-width:767.98px) {
    .advertise-plan-overview {
        grid-template-columns: 1fr 1fr 1fr;
    }

    .advertise-plan-choices>div {
        grid-template-columns: 1fr;
    }
}

@media (max-width:575.98px) {
    .advertise-plan-overview {
        grid-template-columns: 1fr;
    }

    .advertiser-payment-instructions {
        align-items: flex-start;
    }

    .advertisement-payment-actions,
    .advertisement-payment-actions form:last-child {
        display: grid;
        width: 100%;
    }

    .advertisement-payment-actions input {
        width: 100%;
    }
}

/* Cartes des opportunités similaires */
.related-opportunities .section-heading {
    align-items: center;
    flex-wrap: wrap;
}

.related-opportunities .section-heading>div {
    min-width: 0;
}

.related-opportunities .section-heading .text-link {
    flex-shrink: 0;
}

.related-opportunities .related-publication-card {
    display: flex;
    flex-direction: column;
    min-width: 0;
}

.related-opportunities .related-publication-card>img {
    display: block;
    flex: none;
    width: 100%;
    height: auto;
    min-height: 0;
    aspect-ratio: 16/9;
    object-fit: cover;
}

.related-opportunities .related-publication-body {
    display: flex;
    flex: 1;
    flex-direction: column;
    min-width: 0;
    padding: 1.1rem;
    overflow-wrap: anywhere;
}

.related-opportunities .tag {
    max-width: 100%;
    white-space: normal;
}

.related-opportunities .related-publication-actions {
    display: flex;
    justify-content: flex-end;
    padding-top: 1rem;
    margin-top: auto;
}

.related-opportunities .related-favorite {
    position: static;
    flex-shrink: 0;
    min-height: 44px;
    margin: 0;
    white-space: nowrap;
}

.related-opportunities .related-favorite:focus-visible {
    outline: 2px solid var(--green);
    outline-offset: 3px;
}

@media (min-width:768px) and (max-width:1199.98px) {
    .related-opportunities .related-publication-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width:767.98px) {
    .related-opportunities .related-publication-grid {
        grid-template-columns: minmax(0, 1fr);
    }

    .related-opportunities .related-publication-card {
        display: grid;
        grid-template-columns: clamp(80px, 23vw, 130px) minmax(0, 1fr);
        align-items: start;
    }

    .related-opportunities .related-publication-card>img {
        width: 100%;
        height: auto;
        aspect-ratio: 1/1;
    }

    .related-opportunities .related-publication-body {
        padding: .85rem;
    }

    .related-opportunities .related-publication-card h3 {
        font-size: 1.05rem;
        line-height: 1.35;
    }

    .related-opportunities .related-publication-actions {
        padding-top: .8rem;
    }
}

/* Documents PDF des opportunités */
.opportunity-document-field {
    padding-top: .2rem;
}

.current-document {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto;
    align-items: center;
    gap: .75rem;
    padding: .8rem .9rem;
    margin-top: .7rem;
    border: 1px solid #d7e3dc;
    border-radius: .5rem;
    color: var(--forest);
    background: #f7faf8;
    text-decoration: none;
}

.current-document>i:first-child {
    color: #c74338;
    font-size: 1.5rem;
}

.current-document>i:last-child {
    color: var(--green);
}

.current-document strong,
.current-document small {
    display: block;
}

.current-document small {
    margin: 0;
}

.current-document:hover {
    border-color: var(--green);
    color: var(--green);
}

.opportunity-document-card {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto;
    align-items: center;
    gap: 1rem;
    padding: 1.25rem;
    margin-top: 1.5rem;
    border: 1px solid #d6e3dc;
    border-radius: .7rem;
    background: #f7faf8;
}

.opportunity-document-card>span {
    display: grid;
    place-items: center;
    width: 52px;
    height: 52px;
    border-radius: .55rem;
    color: #c74338;
    background: #fbe9e7;
    font-size: 1.6rem;
}

.opportunity-document-card strong {
    display: block;
    color: var(--forest);
}

.opportunity-document-card p {
    margin: .2rem 0 0;
    color: var(--muted);
    font-size: .82rem;
}

.opportunity-document-card .btn {
    white-space: nowrap;
}

.opportunity-pdf-button {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: .4rem;
    margin-top: 1rem;
    border-color: #c74338;
    color: #a7352c;
}

.opportunity-pdf-button:hover,
.opportunity-pdf-button:focus-visible {
    border-color: #a7352c;
    color: #fff;
    background: #a7352c;
}

@media (max-width:575.98px) {
    .opportunity-document-card {
        grid-template-columns: auto minmax(0, 1fr);
    }

    .opportunity-document-card .btn {
        grid-column: 1/-1;
        width: 100%;
    }
}

/* Images des bandeaux de listes publiques */
.page-intro-illustrated {
    padding: clamp(4.5rem, 7vw, 6rem) 0;
    background-color: #e7f4ed;
    background-repeat: no-repeat;
    background-size: cover;
}

.page-intro-illustrated h1 {
    max-width: 680px;
}

.page-intro-illustrated p:not(.eyebrow) {
    max-width: 600px;
    color: #213e33;
    font-weight: 600;
    text-shadow: 0 1px 10px rgba(241, 248, 243, .8);
}

.opportunities-intro {
    background-image: linear-gradient(90deg, rgba(241, 248, 243, .65), rgba(241, 248, 243, .32) 45%, rgba(241, 248, 243, .04) 82%), url('../images/hero_emploi.jpg');
    background-position: center, center 52%;
}

.activities-intro {
    background-image: linear-gradient(90deg, rgba(241, 248, 243, .68), rgba(241, 248, 243, .35) 45%, rgba(241, 248, 243, .05) 82%), url('../images/hero_activite.jpg');
    background-position: center, center 54%;
}

.organizations-intro {
    background-image: linear-gradient(90deg, rgba(241, 248, 243, .7), rgba(241, 248, 243, .38) 45%, rgba(241, 248, 243, .05) 82%), url('../images/hero_organisation.jpg');
    background-position: center, center 54%;
}

.advertise-intro.page-intro-illustrated {
    background-image: linear-gradient(90deg, rgba(241, 248, 243, .6), rgba(241, 248, 243, .3) 45%, rgba(241, 248, 243, .04) 82%), url('../images/advertise-hero.webp');
    background-position: center, center 55%;
}

@media (max-width:767.98px) {
    .page-intro-illustrated {
        padding: 3.8rem 0;
    }

    .opportunities-intro {
        background-image: linear-gradient(90deg, rgba(241, 248, 243, .66), rgba(241, 248, 243, .36)), url('../images/hero_emploi.jpg');
        background-position: center, 67% center;
    }

    .activities-intro {
        background-image: linear-gradient(90deg, rgba(241, 248, 243, .7), rgba(241, 248, 243, .4)), url('../images/hero_activite.jpg');
        background-position: center, 65% center;
    }

    .organizations-intro {
        background-image: linear-gradient(90deg, rgba(241, 248, 243, .72), rgba(241, 248, 243, .43)), url('../images/hero_organisation.jpg');
        background-position: center, 66% center;
    }

    .advertise-intro.page-intro-illustrated {
        background-image: linear-gradient(90deg, rgba(241, 248, 243, .62), rgba(241, 248, 243, .36)), url('../images/advertise-hero.webp');
        background-position: center, 68% center;
    }
}

.auth-forgot-link {
    display: block;
    margin-top: .5rem;
    color: var(--green);
    font-size: .81rem;
    font-weight: 700;
    text-align: right;
    text-decoration: none;
}

.auth-forgot-link:hover,
.auth-forgot-link:focus-visible {
    color: var(--forest);
    text-decoration: underline;
}

.account-password-panel {
    max-width: 680px;
}

.account-password-submit {
    justify-self: start;
    min-height: 46px;
}

/* Keep cards and buttons square across the interface. */
button,
input[type="button"],
input[type="reset"],
input[type="submit"],
a[role="button"],
.btn,
[class$="-btn"],
[class*="-btn "],
[class$="-button"],
[class*="-button "],
.card,
[class$="-card"],
[class*="-card "] {
    border-radius: 0 !important;
}

/* Public content hierarchy refinement */
.organization-identity {
    position: relative;
    z-index: 3;
    display: flex;
    align-items: center;
    gap: .65rem;
    width: 100%;
    min-width: 0;
    padding-top: .8rem;
    margin-top: auto;
    border-top: 1px solid #e4ece7;
}

.organization-identity-logo {
    display: grid;
    place-items: center;
    width: 34px;
    height: 34px;
    flex: 0 0 34px;
    overflow: hidden;
    border: 1px solid #d5e1da;
    border-radius: 50%;
    color: var(--forest);
    background: #f1f6f3;
    font-family: var(--font-heading);
    font-size: .8rem;
    font-weight: 800;
}

.organization-identity-logo img {
    width: 100%;
    height: 100%;
    object-fit: contain;
    background: #fff;
}

.organization-identity-copy {
    display: block;
    min-width: 0;
}

.organization-identity-role,
.organization-identity-name {
    display: block;
}

.organization-identity-role {
    margin-bottom: .1rem;
    color: #708078;
    font-size: .6rem;
    font-weight: 700;
    letter-spacing: .045em;
    line-height: 1.2;
    text-transform: uppercase;
}

.organization-identity-role i {
    margin-left: .15rem;
    color: var(--green);
}

.organization-identity-name {
    overflow: hidden;
    color: var(--ink);
    font-size: .76rem;
    font-weight: 750;
    line-height: 1.25;
    text-decoration: none;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.organization-identity-name:hover {
    color: var(--green);
    text-decoration: underline;
}

.image-view-count,
.sponsored-view-count {
    position: absolute;
    top: .75rem;
    left: .75rem;
    z-index: 3;
    color: #fff;
    background: rgba(12, 37, 30, .78);
    box-shadow: 0 .3rem .9rem rgba(0, 0, 0, .16);
    backdrop-filter: blur(6px);
}

.image-view-count i,
.sponsored-view-count i {
    color: #fff;
}

.sponsored-section-note {
    max-width: 310px;
    margin: 0;
    color: var(--muted);
    font-size: .72rem;
    line-height: 1.45;
    text-align: right;
}

.sponsored-card {
    position: relative;
    border-color: #ded9ca;
    background: #fff;
}

.sponsored-card-context {
    width: 100%;
    padding-bottom: .6rem;
    border-bottom: 1px solid #ece8de;
}

.sponsored-label,
.sponsored-company {
    display: block;
}

.sponsored-label {
    color: #7a6842;
    font-size: .6rem;
    font-weight: 750;
    letter-spacing: .055em;
    text-transform: uppercase;
}

.sponsored-company {
    margin-top: .16rem;
    overflow: hidden;
    color: #4b463a;
    font-size: .72rem;
    font-weight: 700;
    line-height: 1.25;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.sponsored-card h3 {
    margin: .75rem 0 .45rem;
}

.sponsored-card-summary {
    display: -webkit-box;
    margin-bottom: .8rem !important;
    overflow: hidden;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 3;
}

.sponsored-card .sponsored-open {
    width: 100%;
    justify-content: space-between;
    padding-top: .65rem;
    margin-top: auto;
    border-top: 1px solid #ece8de;
}

.sponsored-modal .sponsored-company {
    margin-top: .2rem;
    font-size: .78rem;
}

.organization-directory-stats {
    display: flex;
    gap: 1.25rem;
    padding: .8rem 0 0;
    margin: .9rem 0 0;
    border-top: 1px solid #e4ece7;
}

.organization-directory-stats div {
    display: flex;
    flex-direction: column-reverse;
    gap: .08rem;
}

.organization-directory-stats dt {
    color: var(--muted);
    font-size: .66rem;
    font-weight: 650;
}

.organization-directory-stats dd {
    margin: 0;
    color: var(--forest);
    font-family: var(--font-heading);
    font-size: 1rem;
    font-weight: 800;
    line-height: 1.1;
}

.verified-organization {
    letter-spacing: 0;
    text-transform: none;
}

@media (max-width:767.98px) {
    .organization-identity {
        gap: .5rem;
        padding-top: .65rem;
    }

    .organization-identity-logo {
        width: 28px;
        height: 28px;
        flex-basis: 28px;
        font-size: .7rem;
    }

    .organization-identity-role {
        font-size: .54rem;
    }

    .organization-identity-name {
        font-size: .66rem;
    }

    .image-view-count,
    .sponsored-view-count {
        top: .5rem;
        left: .5rem;
        padding: .2rem .38rem;
        font-size: .62rem;
    }

    .sponsored-section-note {
        max-width: none;
        font-size: .68rem;
        text-align: left;
    }

    .sponsored-card-summary {
        -webkit-line-clamp: 2;
    }

    .organization-directory-stats {
        gap: .8rem;
    }
}

.result-kind {
    color: #4d6259;
    font-size: .67rem;
    font-weight: 750;
    letter-spacing: .055em;
    line-height: 1.25;
    text-transform: uppercase;
}

.result-context {
    display: flex;
    flex-wrap: wrap;
    gap: .2rem .65rem;
}

.result-context span+span::before {
    margin-right: .65rem;
    color: #a1ada7;
    content: "·";
}

.result-context i {
    margin-left: .18rem;
    color: var(--green);
}

/* Verified partner network */
.partners-section {
    border-top: 1px solid #e2eae5;
    background: #f7faf8;
}

.partners-inner {
    display: grid;
    grid-template-columns: minmax(230px, .7fr) minmax(0, 1.3fr);
    align-items: center;
    gap: clamp(2rem, 5vw, 5rem);
    padding-top: clamp(2.6rem, 5vw, 4.25rem);
    padding-bottom: clamp(2.6rem, 5vw, 4.25rem);
}

.partners-heading {
    max-width: 430px;
}

.partners-eyebrow {
    margin: 0 0 .55rem;
    color: var(--green);
    font-size: .68rem;
    font-weight: 850;
    letter-spacing: .12em;
    text-transform: uppercase;
}

.partners-heading h2 {
    margin: 0 0 .65rem;
    color: var(--ink);
    font-size: clamp(1.45rem, 2.3vw, 2rem);
    line-height: 1.18;
}

.partners-heading>p:last-child {
    margin: 0;
    color: var(--muted);
    font-size: .84rem;
    line-height: 1.6;
}

.partners-list {
    display: flex;
    align-items: flex-start;
    justify-content: center;
    flex-wrap: wrap;
    gap: 1.25rem clamp(1rem, 2vw, 1.75rem);
}

.partner-item {
    display: flex;
    align-items: center;
    flex: 0 1 108px;
    flex-direction: column;
    gap: .65rem;
    min-width: 0;
    color: #30483f;
    text-align: center;
    text-decoration: none;
}

.partner-logo {
    display: grid;
    place-items: center;
    width: 78px;
    height: 78px;
    overflow: hidden;
    border: 1px solid #d7e2dc;
    border-radius: 50%;
    background: #fff;
    box-shadow: 0 .55rem 1.4rem rgba(18, 61, 45, .07);
    transition: transform .18s ease, border-color .18s ease, box-shadow .18s ease;
}

.partner-logo img {
    width: 100%;
    height: 100%;
    padding: .55rem;
    object-fit: contain;
    background: #fff;
}

.partner-name {
    display: -webkit-box;
    overflow: hidden;
    font-size: .7rem;
    font-weight: 750;
    line-height: 1.35;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
}

.partner-item:hover,
.partner-item:focus-visible {
    color: var(--green);
}

.partner-item:hover .partner-logo,
.partner-item:focus-visible .partner-logo {
    border-color: #8bbca5;
    box-shadow: 0 .75rem 1.7rem rgba(18, 61, 45, .12);
    transform: translateY(-2px);
}

.partner-item:focus-visible {
    outline: 2px solid var(--green);
    outline-offset: 5px;
}

@media (max-width:767.98px) {
    .partners-inner {
        display: block;
        padding-top: 2.5rem;
        padding-bottom: 2.5rem;
    }

    .partners-heading {
        max-width: 520px;
        margin: 0 auto 1.75rem;
        text-align: center;
    }

    .partners-list {
        gap: 1.15rem .85rem;
    }

    .partner-item {
        flex-basis: calc(50% - .5rem);
        max-width: 140px;
    }

    .partner-logo {
        width: 68px;
        height: 68px;
    }
}

@media (prefers-reduced-motion:reduce) {
    .partner-logo {
        transition: none;
    }
}

.site-logo {
    height: 48px;
    width: auto;
    display: block;
}

/* Newsletter and public footer */
:root { --hover-yellow: #f4c95d; }
.newsletter-section { background: var(--mint); border-top: 1px solid var(--line); scroll-margin-top: 110px; }
.newsletter-inner { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(2rem, 5vw, 5rem); align-items: center; padding-block: clamp(2.5rem, 5vw, 4rem); }
.newsletter-eyebrow { display: inline-flex; align-items: center; gap: .55rem; margin-bottom: 1rem; color: var(--green); font-size: .72rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.newsletter-copy h2 { max-width: 540px; font-size: clamp(1.8rem, 3vw, 2.65rem); }
.newsletter-copy p { max-width: 490px; margin: 0; color: var(--muted); font-size: .95rem; }
.newsletter-form { padding: 1.8rem; border: 1px solid #d4e4da; border-radius: 1rem; background: var(--paper); box-shadow: 0 .75rem 2.5rem rgba(12,74,54,.05); }
.newsletter-form > label:first-of-type { display: block; margin-bottom: .6rem; color: var(--ink); font-size: .8rem; font-weight: 700; }
.newsletter-input-group { display: flex; gap: .55rem; }
.newsletter-input-group input { min-width: 0; width: 100%; padding: .85rem 1rem; border: 1px solid #cbdcd2; border-radius: .5rem; background: #fff; color: var(--ink); font-size: .88rem; }
.newsletter-input-group input:focus-visible { border-color: var(--green); outline: 3px solid rgba(8,121,87,.16); outline-offset: 2px; }
.newsletter-submit { display: inline-flex; flex-shrink: 0; align-items: center; justify-content: center; gap: .65rem; padding: .85rem 1.1rem; border-radius: .5rem; white-space: nowrap; font-size: .85rem; }
.newsletter-consent { display: flex; align-items: flex-start; gap: .6rem; margin-top: 1rem; color: var(--muted); font-size: .72rem; line-height: 1.5; cursor: pointer; }
.newsletter-consent input { flex-shrink: 0; width: 15px; height: 15px; margin-top: .15rem; accent-color: var(--green); }
.newsletter-trap { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
.newsletter-notice { margin: 1rem 0 0; font-size: .8rem; }
.newsletter-notice-success { color: var(--forest); }
.newsletter-notice-error { color: #a32b24; }
.public-site-footer { color: #d7e7de; }
.footer-grid { display: grid; grid-template-columns: 1.2fr .85fr .85fr 1.15fr; gap: 2.5rem; padding-block: 3.5rem; }
.footer-brand { display: inline-block; margin-bottom: 1rem; color: #fff; font-family: var(--font-heading); font-size: 1.85rem; font-weight: 800; letter-spacing: -.04em; text-decoration: none; }
.footer-brand:hover { color: #fff; }
.footer-brand-dot { color: var(--accent); }
.footer-brand-column > p, .footer-expertise > p { margin: 0 0 1.2rem; color: #bbd2c6; font-size: .83rem; line-height: 1.8; }
.footer-signature { display: inline-flex; gap: .5rem; align-items: flex-start; color: var(--accent); font-size: .75rem; }
.footer-grid h2 { margin-bottom: 1.1rem; color: #fff; font-size: .92rem; letter-spacing: 0; }
.footer-links { display: flex; flex-direction: column; gap: .65rem; margin: 0; padding: 0; list-style: none; }
.footer-links a, .footer-bottom > a { color: #d7e7de; font-size: .8rem; text-decoration: none; transition: color .18s ease; }
.footer-links a:hover, .footer-links a:focus-visible, .footer-bottom a:hover, .footer-bottom a:focus-visible { color: var(--hover-yellow); text-decoration: underline; text-underline-offset: .25rem; }
.footer-expertise-eyebrow { display: block; margin-bottom: .55rem; color: var(--accent); font-size: .6rem; font-weight: 750; letter-spacing: .09em; text-transform: uppercase; }
.footer-expertise h2 { margin-bottom: .7rem; font-size: 1.25rem; }
.footer-bottom { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 1rem; padding-block: 1.3rem; border-top: 1px solid rgba(255,255,255,.15); color: #b5cec0; font-size: .73rem; }
.footer-bottom .footer-company-link { font-size: inherit; }

/* Warm yellow feedback for mouse and keyboard interaction. */
.btn { transition: background-color .18s ease, border-color .18s ease, color .18s ease; }
.btn:not(:disabled):not(.disabled):is(:hover, :focus-visible),
.kreatis-footer-cta-button:is(:hover, :focus-visible),
.back-to-top:is(:hover, :focus-visible),
.mobile-menu-trigger:is(:hover, :focus-visible),
.mobile-menu-close:is(:hover, :focus-visible),
.action-btn:not(:disabled):is(:hover, :focus-visible),
.share-button:not(:disabled):not(.disabled):is(:hover, :focus-visible),
.favorite-button:not(:disabled):not(.disabled):is(:hover, :focus-visible),
.opportunity-pdf-button:is(:hover, :focus-visible),
.sponsored-open:not(:disabled):is(:hover, :focus-visible),
.advertiser-shell .admin-sidebar-footer button:not(:disabled):is(:hover, :focus-visible) {
    background: var(--hover-yellow);
    border-color: var(--hover-yellow);
    color: var(--forest);
}
.btn:focus-visible, .kreatis-footer-cta-button:focus-visible { outline: 3px solid var(--hover-yellow); outline-offset: 4px; box-shadow: none; }

@media (max-width: 991.98px) {
    .newsletter-inner { grid-template-columns: 1fr; gap: 1.5rem; }
    .newsletter-copy { max-width: 650px; }
    .footer-grid { grid-template-columns: 1fr 1fr; gap: 2rem; padding-block: 2.5rem; }
}
@media (max-width: 575.98px) {
    .newsletter-form { padding: 1.25rem; }
    .newsletter-input-group { flex-direction: column; }
    .newsletter-submit { width: 100%; }
    .footer-grid { gap: 2rem 1.25rem; }
    .footer-brand-column, .footer-expertise { grid-column: 1 / -1; }
    .footer-bottom { flex-direction: column; align-items: flex-start; gap: .6rem; }
    .site-logo { max-width: 185px; height: auto; max-height: 48px; }
}
@media (prefers-reduced-motion: reduce) {
    .btn, .footer-links a { transition: none; }
}

/* Contact — Material 3 Expressive, scoped to this page. */
.seo-discovery { padding-top: clamp(2.5rem, 5vw, 4rem); padding-bottom: clamp(2.5rem, 5vw, 4rem); }
.seo-discovery h2 { max-width: 850px; }
.seo-discovery > p:not(.eyebrow) { max-width: 910px; color: var(--muted); }
.region-filter { display: flex; align-items: flex-end; gap: .85rem; max-width: 620px; margin: 1.5rem 0; }
.region-filter-field { flex: 1; min-width: 0; }
.region-filter label { display: block; margin-bottom: .45rem; font-size: .78rem; font-weight: 700; }
.region-filter .form-select { min-height: 48px; border-color: var(--line); background-color: #fff; color: var(--ink); font-size: .88rem; }
.region-filter .btn { min-height: 48px; padding-inline: 1.2rem; font-size: .82rem; white-space: nowrap; }
.seo-discovery-business a { color: var(--green); font-weight: 700; }
html[data-theme="dark"] .region-filter .form-select { background-color: var(--raised); border-color: var(--line); }
@media (max-width: 575.98px) {
    .region-filter { flex-direction: column; align-items: stretch; }
}
.contact-page {
    --contact-surface: #fff;
    --contact-tonal: #edf5ee;
    --contact-warm: #f6f3e9;
    --contact-elevation: 0 4px 18px rgba(24, 53, 45, .035);
    background: linear-gradient(180deg, #edf5ee 0, var(--paper) 430px);
}
.contact-shell { padding-top: clamp(2.5rem, 5vw, 4.5rem); padding-bottom: clamp(3rem, 5vw, 5rem); }
.contact-hero { display: grid; grid-template-columns: 1.35fr 1fr; align-items: center; gap: clamp(2rem, 6vw, 6rem); margin-bottom: 3.5rem; }
.contact-kicker { display: inline-flex; align-items: center; gap: .6rem; padding: .55rem 1rem; margin-bottom: 1.35rem; border: 1px solid #cadfcd; border-radius: 999px; background: #e0eddf; color: var(--forest); font-size: .8rem; font-weight: 700; }
.contact-hero h1 { margin-bottom: 1.2rem; font-size: clamp(2.7rem, 4.6vw, 4.6rem); letter-spacing: -.055em; line-height: 1.08; }
.contact-hero h1 span { color: var(--green); }
.contact-hero-copy > p { max-width: 560px; margin-bottom: 0; color: #4d6258; font-size: 1rem; line-height: 1.8; }
.contact-hero-note { position: relative; padding: 2rem; border-radius: 36px 36px 36px 8px; background: var(--contact-tonal); border: 1px solid var(--line); }
.contact-note-symbol { display: grid; place-items: center; width: 64px; height: 64px; margin-bottom: 1.25rem; border-radius: 24px 24px 24px 6px; background: #d6e9d7; color: var(--forest); font-size: 1.8rem; transform: rotate(-5deg); }
.contact-hero-note > p { font-size: 1.2rem; line-height: 1.6; margin-bottom: 1.2rem; }
.contact-location { display: flex; align-items: flex-start; gap: .45rem; color: #4d6258; font-size: .76rem; line-height: 1.6; }
.contact-section-heading { display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; margin-bottom: 1.2rem; }
.contact-section-heading h2 { font-size: 1.5rem; margin: 0; }
.contact-section-heading p { color: #4d6258; font-size: .88rem; margin: 0; }
.contact-method-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem; }
.contact-method { display: flex; flex-direction: column; align-items: flex-start; min-width: 0; padding: 1.7rem; background: var(--contact-surface); border: 1px solid var(--line); border-radius: 28px; box-shadow: var(--contact-elevation); }
.contact-method-office { background: var(--contact-tonal); }
.contact-method-icon { display: grid; place-items: center; width: 54px; height: 54px; border-radius: 18px; color: var(--forest); background: #e0eddf; font-size: 1.4rem; margin-bottom: 1.45rem; }
.contact-method-email .contact-method-icon { background: #f6edcf; }
.contact-method-office .contact-method-icon { background: #d6e9d7; border-radius: 50%; }
.contact-method-label { display: block; color: #50685b; font-weight: 700; font-size: .73rem; letter-spacing: .035em; margin-bottom: .55rem; }
.contact-method h3 { font-size: 1.4rem; margin-bottom: .7rem; }
.contact-method > p { color: #4d6258; font-size: .88rem; line-height: 1.7; margin-bottom: 1.4rem; }
.contact-link-group { display: grid; gap: .55rem; width: 100%; margin-top: auto; }
.contact-page .contact-action { display: flex; align-items: center; justify-content: space-between; gap: .65rem; min-height: 48px; padding: .75rem .9rem; border: 1px solid transparent; border-radius: 16px; background: var(--contact-tonal); color: var(--forest); font-size: .84rem; font-weight: 700; text-decoration: none; transition: background-color .18s ease, border-radius .22s ease, box-shadow .18s ease; }
.contact-action > span:not(.visually-hidden) { min-width: 0; overflow-wrap: anywhere; }
.contact-action > i { flex: 0 0 auto; font-size: 1rem; }
.contact-method address { font-style: normal; font-size: .92rem; line-height: 1.9; margin-bottom: 1.5rem; }
.contact-page .contact-map-action { width: 100%; margin-top: auto; background: var(--forest); color: #fff; }
.contact-expertise { display: grid; grid-template-columns: 64px minmax(0, 1fr) auto; gap: 1.4rem; align-items: center; margin-top: 1.5rem; padding: 1.8rem; background: var(--contact-warm); border: 1px solid var(--line); border-radius: 28px; }
.contact-expertise-icon { display: grid; place-items: center; width: 64px; height: 64px; border-radius: 50%; background: #f4e7b8; color: var(--forest); font-size: 1.9rem; }
.contact-expertise-copy h2 { font-size: 1.45rem; margin-bottom: .5rem; }
.contact-expertise-copy > p { color: #4d6258; font-size: .86rem; margin-bottom: .9rem; }
.contact-service-chips { display: flex; flex-wrap: wrap; gap: .4rem; list-style: none; padding: 0; margin: 0; }
.contact-service-chips li { padding: .3rem .7rem; border-radius: 999px; border: 1px solid #d5dacb; font-size: .7rem; color: #42584b; }
.contact-expertise-actions { display: flex; flex-direction: column; align-items: center; gap: .8rem; }
.contact-page .contact-project-action { background: var(--forest); color: #fff; white-space: nowrap; border-radius: 999px; padding-inline: 1.15rem; }
.contact-expertise-site { font-size: .76rem; color: var(--forest); text-decoration: none; }
.contact-expertise-site:hover { text-decoration: underline; text-underline-offset: .25rem; }
html body .contact-page .contact-action:is(:hover, :focus-visible) { color: var(--forest) !important; background: #f4c95d; border-radius: 24px; box-shadow: 0 3px 10px rgba(24,53,45,.1); }
html body .contact-page .contact-action:is(:hover, :focus-visible) :is(span, i) { color: #0c4a36 !important; }
.contact-page a:focus-visible { outline: 3px solid var(--green); outline-offset: 4px; }
html[data-theme="dark"] .contact-page {
    --contact-surface: #1b2d23; --contact-tonal: #243b2e; --contact-warm: #2d3225;
    --contact-elevation: none;
    background: linear-gradient(180deg, #1c3429 0, var(--paper) 430px);
}
html[data-theme="dark"] .contact-page :is(.contact-kicker, .contact-note-symbol, .contact-method-icon) { background: #304b39; border-color: var(--line); color: var(--ink); }
html[data-theme="dark"] .contact-page :is(.contact-method-email .contact-method-icon, .contact-expertise-icon) { background: #50452a; color: var(--ink); }
html[data-theme="dark"] .contact-page .contact-service-chips li { border-color: #64735f; }
html[data-theme="dark"] .contact-page :is(.contact-map-action, .contact-project-action) { background: #087957; }
@media (max-width: 1199.98px) {
    .contact-method { padding: 1.3rem; }
    .contact-page .contact-action { font-size: .78rem; padding-inline: .7rem; }
    .contact-expertise { grid-template-columns: minmax(0, 1fr) auto; }
    .contact-expertise-icon { display: none; }
}
@media (max-width: 767.98px) {
    .contact-hero { grid-template-columns: 1fr; gap: 1.75rem; margin-bottom: 2.25rem; }
    .contact-hero-note { padding: 1.5rem; }
    .contact-note-symbol { width: 48px; height: 48px; margin-bottom: .8rem; border-radius: 16px 16px 16px 4px; font-size: 1.5rem; }
    .contact-hero-note > p { font-size: 1.05rem; }
    .contact-section-heading { display: block; }
    .contact-section-heading p { margin-top: .5rem; }
    .contact-method-grid { grid-template-columns: 1fr; }
    .contact-method { padding: 1.5rem; }
    .contact-method-icon { margin-bottom: 1rem; }
    .contact-page .contact-action { font-size: .86rem; padding-inline: .9rem; }
    .contact-expertise { grid-template-columns: 1fr; padding: 1.5rem; gap: 1.25rem; }
    .contact-expertise-actions { align-items: flex-start; }
    .contact-page .contact-project-action { width: 100%; }
}
@media (prefers-reduced-motion: reduce) { .contact-page .contact-action { transition: none; } }

/* Compact public navigation and non-blocking page loading status. */
.site-header .public-desktop-nav .nav-link { font-size: .86rem; }
.site-header .public-publish-menu .public-publish-button { font-size: .8rem; }
.site-header .public-publish-menu .dropdown-toggle::after { display: none; }
.site-header .public-publish-menu .dropdown-item { font-size: .78rem; }
.site-header .public-publish-menu .dropdown-menu { min-width: 220px; }
.mobile-public-menu .mobile-nav-links strong { font-size: .83rem; }
.mobile-public-menu .mobile-nav-links small { font-size: .68rem; }
.page-loader[hidden] { display: none !important; }
.page-loader { position: fixed; z-index: 1100; bottom: 1.5rem; left: 50%; transform: translateX(-50%); display: flex; align-items: center; gap: .9rem; max-width: calc(100vw - 2rem); padding: .65rem 1.25rem .65rem .65rem; border: 1px solid var(--line); border-radius: 999px; background: rgba(251, 252, 250, .97); box-shadow: 0 8px 32px rgba(12, 74, 54, .16); color: var(--forest); font-size: .8rem; font-weight: 600; pointer-events: none; backdrop-filter: blur(12px); }
.page-loader-ring { position: relative; display: block; flex: 0 0 40px; width: 40px; height: 40px; }
.page-loader-ring::before { content: ''; position: absolute; inset: 0; border: 3px solid #dce7e0; border-top-color: #087957; border-right-color: #f4c95d; border-radius: 50%; animation: kazi-page-spin .9s linear infinite; }
.page-loader-ring::after { content: ''; position: absolute; inset: 15px; border-radius: 50%; background: #087957; }
html[data-theme="dark"] .page-loader { background: rgba(27, 45, 35, .97); border-color: var(--line); color: var(--ink); }
html[data-theme="dark"] .page-loader-ring::before { border-color: #344d3f; border-top-color: #62d5a5; border-right-color: #f4c95d; }
html[data-theme="dark"] .page-loader-ring::after { background: #62d5a5; }
@keyframes kazi-page-spin { to { transform: rotate(360deg); } }
@media (min-width: 992px) and (max-width: 1199.98px) {
    .site-header .public-desktop-nav .nav-link { font-size: .76rem; }
    .site-header .public-publish-menu .public-publish-button { font-size: .72rem; }
}
@media (prefers-reduced-motion: reduce) { .page-loader-ring::before { animation: none; } }

/* Publicités compactes et identité certifiée. */
.sponsored-label {
    text-transform: none;
    letter-spacing: .025em;
}
.sponsored-company-line {
    display: flex;
    align-items: center;
    gap: .32rem;
    width: 100%;
    min-width: 0;
    margin-top: .16rem;
}
.sponsored-company-line .sponsored-company { margin-top: 0; }
.sponsored-company-logo {
    width: 1.55rem;
    height: 1.55rem;
    padding: .12rem;
    border: 1px solid var(--line);
    border-radius: 50%;
    background: #fff;
    object-fit: contain;
}
.company-certification {
    display: inline-grid;
    place-items: center;
    flex: 0 0 auto;
    color: #15803d;
    font-size: .82rem;
    line-height: 1;
}
html[data-theme="dark"] body .company-certification,
html[data-theme="dark"] body .company-certification i { color: #4ade80 !important; }
.sponsored-card .sponsored-card-body { padding: 1rem; }
.sponsored-card h3 {
    display: -webkit-box;
    overflow: hidden;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
}
.sponsored-card-summary { -webkit-line-clamp: 2; }
.back-to-top {
    aspect-ratio: 1;
    border-radius: 999px !important;
}
.back-to-top i { font-size: 1.35rem; line-height: 1; }

/* Super Admin publication workspace */
.publication-manager-welcome { margin-bottom: 1rem; }
.publication-manager-stats {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: .8rem;
    margin-bottom: 1rem;
}
.publication-manager-stats>div {
    display: grid;
    grid-template-columns: auto 1fr auto;
    align-items: center;
    gap: .65rem;
    padding: .9rem 1rem;
    border: 1px solid var(--line);
    border-radius: 14px;
    background: var(--paper);
}
.publication-manager-stats i { color: var(--green); font-size: 1.1rem; }
.publication-manager-stats span { color: var(--muted); font-size: .82rem; font-weight: 700; }
.publication-manager-stats strong { color: var(--ink); font-size: 1.35rem; }
.publication-manager-filter { height: auto; margin-bottom: 1rem; padding: 1rem; }
.publication-manager-filter form {
    display: grid;
    grid-template-columns: minmax(220px, 1.5fr) repeat(2, minmax(155px, .75fr)) auto auto;
    align-items: end;
    gap: .75rem;
}
.publication-manager-filter label { display: block; margin-bottom: .35rem; color: var(--ink); font-size: .76rem; font-weight: 700; }
.publication-manager-heading { display: flex; justify-content: space-between; margin: 1.2rem 0 .7rem; color: var(--muted); }
.publication-manager-heading p { margin: 0; }
.publication-manager-list { display: grid; gap: .8rem; }
.publication-manager-card {
    display: grid;
    grid-template-columns: 96px minmax(0, 1fr) auto;
    align-items: center;
    gap: 1rem;
    height: auto;
    padding: .85rem;
}
.publication-manager-media {
    display: grid;
    place-items: center;
    width: 96px;
    aspect-ratio: 1;
    overflow: hidden;
    border-radius: 12px;
    color: var(--green);
    background: var(--soft);
}
.publication-manager-media img { width: 100%; height: 100%; object-fit: cover; }
.publication-manager-media i { font-size: 1.5rem; }
.publication-manager-body { min-width: 0; }
.publication-manager-tags { display: flex; align-items: center; gap: .45rem; margin-bottom: .4rem; }
.publication-kind { color: var(--green); font-size: .68rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; }
.publication-manager-body h2 { margin: 0 0 .3rem; overflow-wrap: anywhere; font-size: 1.08rem; }
.publication-manager-publisher { margin: 0; color: var(--ink); font-size: .84rem; font-weight: 700; }
.publication-manager-context { margin: .18rem 0 0; color: var(--muted); font-size: .78rem; }
.publication-manager-actions { display: flex; align-items: center; justify-content: flex-end; gap: .45rem; flex-wrap: wrap; }
.publication-manager-actions form { margin: 0; }
.super-publication-edit-form .current-media { margin-top: .7rem; }

.super-publication-heading { margin-bottom: 1.25rem; }
.super-publication-heading .eyebrow { margin-bottom: .35rem; }
.publication-type-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: .8rem;
}
.publication-type-option { cursor: pointer; margin: 0; }
.publication-type-option input {
    position: absolute;
    inline-size: 1px;
    block-size: 1px;
    opacity: 0;
}
.publication-type-option>span {
    display: grid;
    grid-template-columns: auto 1fr;
    gap: .2rem .7rem;
    min-height: 100%;
    padding: 1rem;
    border: 1px solid var(--line);
    border-radius: 16px;
    background: var(--paper);
    transition: border-color .2s ease, box-shadow .2s ease, transform .2s ease;
}
.publication-type-option i {
    grid-row: 1 / 3;
    display: grid;
    place-items: center;
    align-self: start;
    width: 2.35rem;
    height: 2.35rem;
    border-radius: 12px;
    background: color-mix(in srgb, var(--green) 12%, transparent);
    color: var(--green);
    font-size: 1.15rem;
}
.publication-type-option strong { align-self: end; color: var(--ink); }
.publication-type-option small { color: var(--muted); line-height: 1.35; }
.publication-type-option:is(:hover, .is-selected)>span {
    border-color: var(--green);
    box-shadow: 0 10px 24px color-mix(in srgb, var(--green) 12%, transparent);
    transform: translateY(-1px);
}
.publication-type-option input:focus-visible+span { outline: 3px solid color-mix(in srgb, var(--green) 25%, transparent); outline-offset: 2px; }
.publication-fields { display: grid; gap: 1rem; margin: 0; padding: 0; border: 0; min-width: 0; }
@media (max-width: 767.98px) {
    .publication-manager-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .publication-manager-filter form { grid-template-columns: 1fr; }
    .publication-manager-card { grid-template-columns: 72px minmax(0, 1fr); align-items: start; }
    .publication-manager-media { width: 72px; }
    .publication-manager-actions { grid-column: 1 / -1; justify-content: stretch; }
    .publication-manager-actions .btn,
    .publication-manager-actions form { flex: 1; }
    .publication-manager-actions form .btn { width: 100%; }
    .publication-type-grid { grid-template-columns: 1fr; }
    .publication-type-option>span { min-height: auto; }
}

@media (max-width: 420px) {
    .publication-manager-stats { grid-template-columns: 1fr; }
}

@media (max-width: 575.98px) {
    .sponsored-grid { grid-template-columns: minmax(0, 1fr); gap: .65rem; }
    .sponsored-card {
        grid-template-columns: 112px minmax(0, 1fr);
        min-height: 116px;
        align-items: stretch;
        border-radius: .7rem;
    }
    .sponsored-card .sponsored-media { height: 100%; aspect-ratio: auto; }
    .sponsored-card .sponsored-card-body { padding: .65rem .72rem; }
    .sponsored-card-context { padding-bottom: .2rem; border-bottom: 0; }
    .sponsored-label { font-size: .56rem; }
    .sponsored-company { font-size: .68rem; }
    .company-certification { font-size: .72rem; }
    .sponsored-card h3 { margin: .38rem 0; font-size: .8rem; }
    .sponsored-card-summary { display: none; }
    .sponsored-card .sponsored-open {
        padding-top: .42rem;
        font-size: .72rem;
    }
}

@media (max-width: 359.98px) {
    .sponsored-card { grid-template-columns: 94px minmax(0, 1fr); }
}
