/* ================== Variables globales ================== */
:root {
    --green: #2dbf62;
    --green-600: #1ea152;
    --border: #dfe7e4;
    --text: #2a2e30;
    --muted: #6d7479;
    --radius: 6px;
    --shadow: 0 2px 10px rgba(0,0,0,.06);
    --gap: 14px;
    --font: system-ui,-apple-system,"Segoe UI",Roboto,Ubuntu,Arial,sans-serif;
    --header-h: 112px;
    --content-gap: 8px;
}

/* ================== Bases ================== */
* { box-sizing: border-box; }
body, html { margin:0; font-family: var(--font); color: var(--text); overflow-x: hidden; }
.container { max-width: 1100px; margin:0 auto; padding:0 16px; }
.after-header { padding-top: calc(var(--header-h) + var(--content-gap)); }
.page-header { display:block; }
.page-header .status-bar { margin:6px 0 12px; }

/* ================== Header / titre ================== */
.page-title h1 { margin:0; font-size:28px; font-weight:800; color:#212121; }
.page-title .strong { color:#1e1e1e; letter-spacing:.5px; }
.page-title .underline { width:140px; height:6px; background:var(--green); margin:6px 0 16px 0; }
.status-bar { margin:8px 0 12px; }
.status-button {
    background:var(--green);
    color:#fff;
    border:none;
    border-radius:4px;
    padding:10px 16px;
    font-weight:700;
    cursor:pointer;
    max-width: 200px;
}
.status-button .caret { font-weight:900; margin-left:6px; }

/* ================== Filtres ================== */
.filters {
    border:1px solid var(--green);
    padding:14px;
    border-radius:4px;
    margin-bottom:16px;
    background:#fdfdfd;
}
.filters form {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
}
.filters input.filter-input,
.filters select.filter-select {
    flex: 1 1 200px;
    min-width: 150px;
    max-width: 100%;
    height:46px;
    padding:0 14px;
    border-radius:6px;
    border:1px solid #d0d0d0;
    background:#fff;
    font-size:14px;
    box-sizing: border-box;
}
.filters button.submit-button {
    flex: 0 0 auto;
    height:46px;
    background: var(--green);
    color:#fff;
    border:none;
    border-radius:6px;
    font-weight:700;
    font-size:14px;
    cursor:pointer;
    padding:0 20px;
    white-space: nowrap;
}
.filters button.submit-button:hover { background: var(--green-600); }

/* Media queries filtres */
@media(max-width:576px){
    .filters form { flex-direction: column; }
    .filters input.filter-input,
    .filters select.filter-select,
    .filters button.submit-button { width:100%; }
}

/* ================== Laboratoires / cartes ================== */
.partner-card {
    max-width: 100%;
    margin: 16px auto 24px;
    border:1px solid var(--green);
    border-radius: var(--radius);
    background:#fff;
    padding: 14px;
    box-shadow: var(--shadow);
}
.partner-card.wide { max-width: 980px; }
.partner-title {
    font-size:22px;
    font-weight:800;
    margin:0 0 10px;
    position:relative;
}
.partner-title::after {
    content:"";
    position:absolute;
    left:0; bottom:-6px;
    width:60px; height:4px;
    background:var(--green);
    border-radius:3px;
}
.partner-form { margin-top:18px; }
.input, .select {
    width:100%;
    height:46px;
    padding:10px 12px;
    border:1px solid #e0e0e0;
    border-radius:6px;
    background:#fff;
    color:var(--text);
    outline:none;
    transition:border-color .15s ease, box-shadow .15s ease;
    appearance:none;
}
.select {
    background-image:
        linear-gradient(45deg, transparent 50%, var(--muted) 50%),
        linear-gradient(135deg, var(--muted) 50%, transparent 50%),
        linear-gradient(to right, transparent, transparent);
    background-position:
        calc(100% - 22px) 19px,
        calc(100% - 16px) 19px,
        100% 0;
    background-size:6px 6px, 6px 6px, 2.5rem 2.5rem;
    background-repeat:no-repeat;
}
.input::placeholder{ color:#9aa3a9; }
.input:focus, .select:focus {
    border-color:var(--green);
    box-shadow:0 0 0 3px rgba(45,191,98,.14);
}
.btn-primary {
    width:100%;
    height:46px;
    border:none;
    border-radius:6px;
    background:var(--green);
    color:#fff;
    font-weight:700;
    font-size:16px;
    cursor:pointer;
}
.btn-primary:hover { background: var(--green-600); }

/* ================== Grilles responsive ================== */
.grid-2 {
    display:grid;
    grid-template-columns:1fr;
    gap:var(--gap);
}
.span-2 { grid-column:1 / -1; }
@media(min-width:768px){
    .grid-2 { grid-template-columns:1fr 1fr; gap:16px; }
    .span-2 { grid-column:1 / 3; }
}

/* ================== Valorisation ================== */
.valorisation-grid {
    display:grid;
    grid-template-columns:1fr;
    gap:18px;
    width:100%;
}
@media(min-width:700px){ .valorisation-grid{ grid-template-columns:1fr 1fr; } }
@media(min-width:1100px){ .valorisation-grid{ grid-template-columns:1fr 1fr 1fr 1fr; } }
.valorisation-card {
    background:#f2f4f5;
    border:1px solid #bfe0c6;
    border-radius:10px;
    padding:14px 16px;
    box-shadow:0 2px 8px rgba(0,0,0,.08);
    word-break: break-word;
}
.valorisation-card:hover {
    transform:translateY(-1px);
    box-shadow:0 8px 18px rgba(0,0,0,.12);
    border-color:#8ecfa0;
}
.valorisation-titre { margin:0 0 10px; color:#1e8c3f; font-weight:700; line-height:1.18; }
.valorisation-date, .valorisation-porteur { margin:6px 0; }
.valorisation-tags { margin:6px 0; }

/* ================== Partenariats / accords ================== */
.partners-section { max-width:1200px; margin:12px auto 28px; padding:0 16px; }
.partners-title { margin:0 0 14px; font-size:22px; font-weight:800; position:relative; }
.partners-title::after { content:""; position:absolute; left:0; bottom:-6px; width:60px; height:4px; background:var(--green); border-radius:3px; }
.partners-grid {
    display:grid;
    grid-template-columns:1fr;
    gap:16px;
    width:100%;
}
@media(min-width:700px){ .partners-grid{ grid-template-columns:1fr 1fr; } }
@media(min-width:1100px){ .partners-grid{ grid-template-columns:1fr 1fr 1fr 1fr; } }
.partner-card {
    background:#f5f6f6;
    border:1px solid #cfe9d5;
    border-radius:8px;
    padding:14px 16px;
    box-shadow:0 2px 8px rgba(0,0,0,.08);
    word-break: break-word;
}
.partner-card h5 { font-size:18px; font-weight:700; margin-bottom:8px; line-height:1.25; }
.partner-card p { margin:4px 0; font-size:14px; color:#364046; }
.partner-tags .tag {
    display:inline-block;
    margin-right:6px;
    margin-top:6px;
    background:#fff;
    border:1px solid #d9e6dc;
    color:#1e2c22;
    padding:4px 8px;
    border-radius:999px;
    font-weight:700;
    font-size:13px;
    box-shadow:0 1px 2px rgba(0,0,0,.04);
}

/* ================== Petits écrans ================== */
@media(max-width:480px){
    .partner-card, .valorisation-card { padding:12px; }
    .partners-title, .valorisations h4 { font-size:20px; }
    .partner-card h5 { font-size:16px; }
    .btn-primary, .submit-button { height:46px; }
    .filters { padding:12px; }
}


