:root {
    --bg: #f5f3ee;
    --surface: #ffffff;
    --text: #27231f;
    --muted: #6d665f;
    --border: #d8d1c7;
    --primary: #7a3e1d;
    --primary-dark: #5e2e15;
    --danger: #a52222;
    --success: #246b3c;
    --warning: #9a5a00;
    --shadow: 0 8px 28px rgba(38, 29, 20, .08);
    font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}

* { box-sizing: border-box; }
html { color-scheme: light; }
body { margin: 0; background: var(--bg); color: var(--text); line-height: 1.55; }
a { color: var(--primary); text-underline-offset: 2px; }
a:hover { color: var(--primary-dark); }
img { max-width: 100%; }
button, input, select, textarea { font: inherit; }
button:disabled { cursor: not-allowed; opacity: .45; }
.container { width: min(1240px, calc(100% - 2rem)); margin-inline: auto; }

.site-header { background: #2e2119; color: white; box-shadow: var(--shadow); }
.header-inner { min-height: 68px; display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
.brand { color: white; text-decoration: none; font-size: 1.2rem; font-weight: 800; }
.site-header nav { display: flex; align-items: center; flex-wrap: wrap; gap: .8rem; }
.site-header nav a, .site-header .link-button { color: white; text-decoration: none; }
.site-footer { margin-top: 4rem; padding: 2rem 0; background: #2e2119; color: #e8ded6; }
main.container { padding-top: 2rem; }

.hero { padding: 1.5rem 0 1rem; }
.hero h1, h1 { margin-top: 0; line-height: 1.1; }
.eyebrow { color: var(--primary); font-weight: 700; text-transform: uppercase; letter-spacing: .06em; font-size: .8rem; }

.card, .search-panel, .auth-card, .empty-state { background: var(--surface); border: 1px solid var(--border); border-radius: 14px; box-shadow: var(--shadow); }
.card, .search-panel { padding: 1.25rem; }
.auth-card { width: min(520px, 100%); margin: 3rem auto; padding: 2rem; }
.empty-state { padding: 2rem; text-align: center; }
.form-card { margin-bottom: 1.25rem; }

.form-grid { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 1rem; }
.field { grid-column: span 4; display: flex; flex-direction: column; gap: .35rem; min-width: 0; }
.field-wide { grid-column: span 8; }
.field-small { grid-column: span 3; }
.field > span, fieldset legend { font-weight: 700; }
.field small { color: var(--muted); }
input, select, textarea { width: 100%; border: 1px solid #bdb4a9; border-radius: 8px; padding: .65rem .75rem; background: white; color: var(--text); }
input:focus, select:focus, textarea:focus { outline: 3px solid rgba(122, 62, 29, .18); border-color: var(--primary); }
textarea { resize: vertical; }
fieldset { border: 1px solid var(--border); border-radius: 10px; padding: 1rem; margin: 0; }
.checkbox-panel { grid-column: span 6; min-height: 180px; }
.cost-panel { grid-column: span 6; display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
.cost-panel legend { grid-column: 1 / -1; }
.checkbox-list { display: grid; gap: .4rem; max-height: 260px; overflow: auto; padding-right: .25rem; }
.checkbox-list label, .check-card { display: flex; align-items: center; gap: .5rem; }
.checkbox-list input, .check-card input { width: auto; }
.checkbox-grid { grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); max-height: none; }
.check-card { grid-column: span 6; padding: .8rem; border: 1px solid var(--border); border-radius: 8px; background: #faf8f4; }

.actions, .sticky-actions, .section-heading, .results-heading { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: .75rem; }
.actions { margin-top: 1rem; justify-content: flex-start; }
.sticky-actions { position: sticky; bottom: 0; z-index: 5; padding: 1rem; margin-inline: -1rem; background: rgba(245, 243, 238, .95); backdrop-filter: blur(8px); border-top: 1px solid var(--border); justify-content: flex-start; }
.button { display: inline-flex; align-items: center; justify-content: center; border: 1px solid var(--primary); border-radius: 8px; background: var(--primary); color: white; padding: .65rem 1rem; text-decoration: none; cursor: pointer; font-weight: 700; }
.button:hover { background: var(--primary-dark); color: white; }
.button-secondary { background: white; color: var(--primary); }
.button-small { padding: .4rem .7rem; font-size: .9rem; }
.link-button { border: 0; background: transparent; padding: 0; color: var(--primary); text-decoration: underline; cursor: pointer; }
.link-button.danger, .danger { color: var(--danger); }
.inline-form { display: inline; margin: 0; }

.alert { border-radius: 10px; padding: .85rem 1rem; margin-bottom: 1rem; border: 1px solid; background: white; }
.alert-success { border-color: #8dc39b; background: #eef8f1; color: #164c29; }
.alert-error { border-color: #df9c9c; background: #fff0f0; color: #731414; }
.alert-warning { border-color: #e1bd73; background: #fff8e8; color: #6f4300; }
.alert-info { border-color: #9bbfd9; background: #eff8ff; color: #174b70; }
.notice { margin: 1rem 0; padding: 1rem; border-left: 5px solid var(--primary); background: #fffaf4; }

.table-scroll { overflow-x: auto; background: var(--surface); border: 1px solid var(--border); border-radius: 12px; }
.data-table { width: 100%; border-collapse: collapse; min-width: 760px; }
.data-table th, .data-table td { padding: .75rem; border-bottom: 1px solid var(--border); text-align: left; vertical-align: top; }
.data-table th { background: #ede8e1; white-space: nowrap; }
.data-table tr:last-child td { border-bottom: 0; }
.clickable-row { cursor: pointer; }
.clickable-row:hover td { background: #fffaf4; }
.recipe-thumb { width: 72px; height: 72px; object-fit: cover; border-radius: 8px; display: block; }
.actions-cell { display: flex; align-items: center; flex-wrap: wrap; gap: .65rem; }
.cost-warning { color: var(--warning); font-weight: 700; font-size: .86rem; }
.badge { display: inline-block; border-radius: 999px; padding: .15rem .5rem; background: #ece1d8; color: #603217; font-size: .76rem; font-weight: 700; }
.pagination { display: flex; align-items: center; justify-content: center; gap: 1rem; padding: 1.25rem; }
.results-section { margin-top: 2rem; }

.recipe-header { display: grid; grid-template-columns: 1.15fr .85fr; gap: 2rem; align-items: start; }
.recipe-main-image { width: 100%; aspect-ratio: 1; object-fit: cover; border-radius: 18px; box-shadow: var(--shadow); }
.recipe-meta { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .7rem; }
.recipe-meta div { background: white; border: 1px solid var(--border); border-radius: 10px; padding: .75rem; }
.recipe-meta dt { color: var(--muted); font-size: .85rem; }
.recipe-meta dd { margin: .2rem 0 0; font-weight: 800; }
.tag-list { display: flex; flex-wrap: wrap; gap: .5rem; padding: 0; list-style: none; }
.tag-list li { background: #ece7df; border-radius: 999px; padding: .35rem .7rem; }
.steps-list { padding-left: 1.4rem; }
.steps-list li { margin-bottom: 1rem; padding: 1rem; background: white; border: 1px solid var(--border); border-radius: 12px; }
.step-meta { display: flex; flex-wrap: wrap; gap: 1rem; color: var(--muted); }
.step-image { display: block; max-height: 420px; margin-top: 1rem; border-radius: 10px; object-fit: contain; }
.notes-list { display: grid; gap: 1rem; }
.recipe-note { padding: 1rem; border: 2px solid; border-radius: 12px; background: white; }
.note-variant { border-color: #7766b7; background: #f5f2ff; }
.note-advice { border-color: #3e8d5b; background: #f0faf3; }
.note-warning { border-color: #c47a17; background: #fff7e9; }

.stats-grid { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 1rem; margin-bottom: 2rem; }
.stat { background: white; border: 1px solid var(--border); border-radius: 12px; padding: 1rem; display: flex; flex-direction: column; box-shadow: var(--shadow); }
.stat strong { font-size: 1.8rem; }
.stat-warning { border-color: #d69b3e; background: #fff8eb; }
.admin-section { margin-top: 2rem; }
.two-columns { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
.compact-search { display: flex; gap: .5rem; width: min(520px, 100%); margin: 1rem 0; }

.collection { display: grid; gap: 1rem; }
.collection-row { position: relative; display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: .75rem; padding: 1rem 3.5rem 1rem 1rem; border: 1px solid var(--border); border-radius: 10px; background: #faf9f6; }
.component-row .component-select { grid-column: span 5; }
.step-row .field-wide, .note-row .field-wide { grid-column: span 7; }
.row-buttons { position: absolute; right: .5rem; top: .5rem; display: flex; flex-direction: column; gap: .35rem; }
.icon-button { width: 2rem; height: 2rem; border: 1px solid var(--border); border-radius: 7px; background: white; cursor: pointer; }
.existing-image { grid-column: span 4; }
.existing-image img { width: 120px; height: 120px; object-fit: cover; border-radius: 8px; display: block; margin-bottom: .4rem; }

.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }

@media (max-width: 980px) {
    .stats-grid { grid-template-columns: repeat(3, 1fr); }
    .recipe-header { grid-template-columns: 1fr; }
    .recipe-main-image { max-width: 640px; }
    .field, .field-wide, .field-small, .component-row .component-select, .step-row .field-wide, .note-row .field-wide { grid-column: span 6; }
}

@media (max-width: 680px) {
    .container { width: min(100% - 1rem, 1240px); }
    .header-inner { align-items: flex-start; padding-block: .8rem; flex-direction: column; }
    .site-header nav { gap: .6rem; font-size: .9rem; }
    .form-grid, .collection-row { display: block; }
    .field, .checkbox-panel, .cost-panel, .check-card { margin-bottom: .85rem; }
    .cost-panel { display: grid; }
    .collection-row { padding-right: 1rem; padding-top: 3.5rem; }
    .row-buttons { flex-direction: row; left: .7rem; right: auto; }
    .stats-grid, .two-columns { grid-template-columns: 1fr; }
    .recipe-meta { grid-template-columns: 1fr; }
    .auth-card { padding: 1.25rem; }
}

/* Version 3 : recherche latérale, substitutions et rendement automatique */
.search-layout { display: grid; grid-template-columns: minmax(240px, 1fr) minmax(0, 3fr); gap: 1.5rem; align-items: start; }
.filter-column { position: sticky; top: 1rem; }
.filter-column .search-panel { padding: 1rem; }
.filter-column .field { display: flex; margin-bottom: 1rem; }
.filter-details { border: 1px solid var(--border); border-radius: 10px; background: #fff; margin-bottom: .75rem; }
.filter-details summary { cursor: pointer; font-weight: 800; padding: .75rem .85rem; background: #f2eee8; border-radius: 9px; }
.filter-details[open] summary { border-bottom: 1px solid var(--border); border-radius: 9px 9px 0 0; }
.filter-details .checkbox-list { padding: .75rem; }
.compact-checkbox-list { max-height: 220px; }
.filter-help { color: var(--muted); font-size: .82rem; margin: .7rem .75rem 0; }
.vertical-cost-panel { display: grid; grid-template-columns: 1fr; grid-column: auto; margin-bottom: .75rem; gap: .65rem; }
.filter-actions { display: grid; grid-template-columns: 1fr 1fr; }
.results-column { margin-top: 0; min-width: 0; }
.results-column .data-table { min-width: 900px; }

.fieldset-card { margin-top: 1.25rem; background: #faf8f4; }
.remember-check { margin: .9rem 0; }
.collection-add-button { margin-top: 1rem; }
.component-row { display: block; padding: 1rem; }
.component-main-grid { position: relative; display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: .75rem; padding-right: 3.3rem; }
.component-main-grid .component-select { grid-column: span 4; }
.component-main-grid .field-small { grid-column: span 2; }
.component-main-grid .component-measure { grid-column: span 3; }
.subrecipe-unit-hint { color: var(--muted); }
.substitutions-block { margin: 1rem 0 0 2rem; padding: .9rem; border-left: 4px solid #c59b6d; background: #fff8ef; border-radius: 0 10px 10px 0; }
.substitutions-list { display: grid; gap: .75rem; margin-bottom: .75rem; }
.substitution-row { display: grid; grid-template-columns: auto minmax(180px, 2fr) minmax(100px, .7fr) minmax(180px, 1.4fr) auto; gap: .7rem; align-items: end; padding: .75rem; border: 1px dashed #c9a77f; border-radius: 9px; background: white; }
.substitution-label { align-self: center; font-weight: 800; color: var(--primary); white-space: nowrap; }
.conversion-preview { min-height: 1.2em; color: var(--primary); }

.ingredient-cards { display: grid; gap: 1rem; }
.ingredient-group-card { background: white; border: 1px solid var(--border); border-radius: 12px; overflow: hidden; box-shadow: 0 3px 12px rgba(38, 29, 20, .05); }
.ingredient-primary-row, .substitution-public-row { display: grid; grid-template-columns: minmax(200px, 1fr) minmax(320px, 1.5fr); gap: 1rem; padding: 1rem; align-items: start; }
.ingredient-quantity { margin-top: .25rem; color: var(--muted); }
.ingredient-cost { display: grid; gap: .25rem; }
.ingredient-cost > span { color: var(--muted); font-size: .9rem; }
.ingredient-cost > strong { font-size: 1.05rem; }
.ingredient-cost > small { color: var(--primary); font-weight: 700; }
.substitution-public-list { border-top: 1px solid var(--border); padding: .8rem 1rem; background: #fffaf4; }
.substitution-public-row { margin-top: .6rem; padding: .75rem; border: 1px dashed #c8b7a4; border-radius: 8px; background: white; }
.substitution-public-row > div:last-child { display: grid; gap: .2rem; }
.substitution-public-row span { color: var(--muted); font-size: .88rem; }
.substitution-public-row small { color: var(--primary); font-weight: 700; }
.substitution-arrow { color: var(--primary) !important; font-size: 1.2rem !important; }
.subrecipe-card { border-left: 5px solid #88725f; }

@media (max-width: 1080px) {
    .search-layout { grid-template-columns: minmax(220px, .9fr) minmax(0, 2.1fr); }
    .component-main-grid .component-select { grid-column: span 6; }
    .component-main-grid .field-small { grid-column: span 3; }
    .component-main-grid .component-measure { grid-column: span 6; }
    .substitution-row { grid-template-columns: 1fr 1fr; }
    .substitution-label { grid-column: 1 / -1; }
}

@media (max-width: 820px) {
    .search-layout { display: block; }
    .filter-column { position: static; margin-bottom: 1.25rem; }
    .filter-column .search-panel { display: block; }
    .ingredient-primary-row, .substitution-public-row { grid-template-columns: 1fr; }
    .component-main-grid { display: block; padding-top: 3rem; padding-right: 0; }
    .component-main-grid .field { margin-bottom: .75rem; }
    .substitutions-block { margin-left: 0; }
}

@media (max-width: 560px) {
    .filter-actions { grid-template-columns: 1fr; }
    .substitution-row { display: block; }
    .substitution-row .field { margin-bottom: .65rem; }
    .substitution-row .icon-button { margin-top: .25rem; }
}

/* Version 4 : mesures administrables, calories et statut testé */
.select-search-input{width:100%;margin:0 0 .35rem;padding:.55rem .65rem;border:1px solid #c8c8c8;border-radius:.4rem;background:#fff}
.badge-success{background:#e7f7ec;color:#17652b;border-color:#9fd3ad}
.badge-warning{background:#fff4d8;color:#795600;border-color:#e7c76b}
.note-note{border-color:#aeb7c2;background:#f6f8fa}
.conversion-row{display:grid;grid-template-columns:minmax(180px,2fr) repeat(3,minmax(120px,1fr)) auto auto;gap:.75rem;align-items:end}
.component-main-grid{grid-template-columns:minmax(110px,.7fr) minmax(190px,1.6fr) minmax(190px,1.6fr) minmax(100px,.7fr) minmax(180px,1.2fr) minmax(160px,1fr) auto}
.substitution-row{grid-template-columns:auto minmax(200px,2fr) minmax(100px,.7fr) minmax(180px,1.2fr) minmax(150px,1fr) auto}
.stat-card strong{font-size:1.8rem;display:block}.stat-card span{display:block;margin-top:.3rem}
@media(max-width:1000px){.component-main-grid,.substitution-row,.conversion-row{grid-template-columns:1fr 1fr}.row-buttons{grid-column:1/-1}.substitution-label{grid-column:1/-1}}
@media(max-width:650px){.component-main-grid,.substitution-row,.conversion-row{grid-template-columns:1fr}}

/* Version 4.1 : mise en page large et suppression du défilement horizontal */
html,
body {
    max-width: 100%;
    overflow-x: clip;
}

body,
main,
header,
footer,
section,
aside,
article,
nav,
form,
fieldset,
details,
div {
    min-width: 0;
}

.container {
    width: min(1760px, calc(100% - clamp(1rem, 3vw, 3rem)));
    max-width: 100%;
}

main.container {
    padding-bottom: 1rem;
}

.site-header .container,
.site-footer .container {
    width: min(1760px, calc(100% - clamp(1rem, 3vw, 3rem)));
}

.site-header nav,
.header-inner,
.actions,
.actions-cell,
.pagination,
.results-heading,
.section-heading,
.page-heading,
.compact-search {
    max-width: 100%;
}

.site-header nav a,
.site-header .link-button,
.button,
.badge,
.tag-list li {
    overflow-wrap: anywhere;
}

img,
svg,
video,
canvas,
iframe {
    max-width: 100%;
    height: auto;
}

input,
select,
textarea,
button {
    min-width: 0;
    max-width: 100%;
}

select {
    text-overflow: ellipsis;
}

pre,
code,
kbd,
samp,
a,
p,
li,
dd,
dt,
small,
label,
summary,
th,
td {
    overflow-wrap: anywhere;
    word-break: normal;
}

pre {
    white-space: pre-wrap;
}

.form-grid,
.search-layout,
.recipe-header,
.recipe-meta,
.stats-grid,
.two-columns,
.collection,
.collection-row,
.component-main-grid,
.substitution-row,
.conversion-row,
.ingredient-primary-row,
.substitution-public-row {
    max-width: 100%;
}

.form-grid > *,
.search-layout > *,
.recipe-header > *,
.recipe-meta > *,
.stats-grid > *,
.two-columns > *,
.collection > *,
.collection-row > *,
.component-main-grid > *,
.substitution-row > *,
.conversion-row > *,
.ingredient-primary-row > *,
.substitution-public-row > * {
    min-width: 0;
    max-width: 100%;
}

.search-layout {
    grid-template-columns: minmax(230px, 1fr) minmax(0, 3fr);
    gap: clamp(1rem, 2vw, 2rem);
}

.filter-column,
.results-column {
    width: 100%;
    max-width: 100%;
}

.checkbox-list {
    overflow-x: hidden;
    overflow-y: auto;
}

.checkbox-list label {
    min-width: 0;
    overflow-wrap: anywhere;
}

.table-scroll {
    width: 100%;
    max-width: 100%;
    overflow: visible;
}

.data-table,
.results-column .data-table {
    width: 100%;
    max-width: 100%;
    min-width: 0;
    table-layout: fixed;
}

.data-table th,
.data-table td {
    min-width: 0;
    white-space: normal;
    overflow-wrap: anywhere;
    hyphens: auto;
}

.data-table th a {
    display: inline;
    white-space: normal;
}

.data-table td img {
    max-width: 100%;
}

.actions-cell {
    align-content: flex-start;
}

.actions-cell form,
.actions-cell a,
.actions-cell button,
td form,
td a,
td button {
    max-width: 100%;
    white-space: normal;
}

.recipe-thumb {
    width: min(72px, 100%);
    max-width: 72px;
}

.sticky-actions {
    margin-inline: 0;
    width: 100%;
}

.component-main-grid,
.substitution-row,
.conversion-row {
    width: 100%;
}

.substitutions-block {
    max-width: 100%;
}

@media (max-width: 1300px) {
    .component-main-grid {
        grid-template-columns: repeat(3, minmax(0, 1fr));
        padding-right: 3.3rem;
    }

    .component-main-grid .field,
    .component-main-grid .component-select,
    .component-main-grid .component-select-ingredient,
    .component-main-grid .component-select-subrecipe,
    .component-main-grid .component-measure,
    .component-main-grid .component-modifier,
    .component-main-grid .field-small {
        grid-column: auto;
    }

    .substitution-row,
    .conversion-row {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .substitution-label {
        grid-column: 1 / -1;
    }
}

/* Les tableaux deviennent des cartes avant qu'une barre horizontale soit nécessaire. */
@media (max-width: 1100px) {
    .table-scroll {
        border: 0;
        border-radius: 0;
        background: transparent;
        box-shadow: none;
    }

    .data-table,
    .data-table tbody,
    .data-table tr,
    .data-table td {
        display: block;
        width: 100%;
        max-width: 100%;
    }

    .data-table thead {
        position: absolute;
        width: 1px;
        height: 1px;
        padding: 0;
        margin: -1px;
        overflow: hidden;
        clip: rect(0 0 0 0);
        clip-path: inset(50%);
        white-space: nowrap;
        border: 0;
    }

    .data-table tbody {
        display: grid;
        grid-template-columns: repeat(auto-fit, minmax(min(100%, 340px), 1fr));
        gap: 1rem;
    }

    .data-table tbody tr {
        border: 1px solid var(--border);
        border-radius: 12px;
        background: var(--surface);
        box-shadow: var(--shadow);
        overflow: hidden;
    }

    .data-table tbody td {
        display: grid;
        grid-template-columns: minmax(7.5rem, 36%) minmax(0, 1fr);
        align-items: start;
        gap: .75rem;
        padding: .65rem .8rem;
        border-bottom: 1px solid var(--border);
        text-align: left;
    }

    .data-table tbody td:last-child {
        border-bottom: 0;
    }

    .data-table tbody td::before {
        content: attr(data-label);
        color: var(--muted);
        font-weight: 800;
        font-size: .82rem;
        line-height: 1.35;
    }

    .data-table tbody td[data-label=""]::before {
        content: none;
    }

    .data-table .actions-cell {
        display: grid;
        grid-template-columns: minmax(7.5rem, 36%) minmax(0, 1fr);
        align-items: start;
    }

    .data-table .actions-cell > * {
        grid-column: 2;
    }

    .data-table .actions-cell::before {
        grid-column: 1;
        grid-row: 1 / span 20;
    }

    .recipe-thumb {
        width: 72px;
        max-width: 100%;
    }

    .search-layout {
        grid-template-columns: minmax(210px, .9fr) minmax(0, 2.1fr);
    }
}

@media (max-width: 820px) {
    .container,
    .site-header .container,
    .site-footer .container {
        width: calc(100% - 1rem);
    }

    .search-layout {
        display: block;
    }

    .filter-column {
        position: static;
    }

    .component-main-grid,
    .substitution-row,
    .conversion-row {
        grid-template-columns: 1fr 1fr;
    }

    .compact-search {
        flex-wrap: wrap;
    }

    .compact-search > * {
        flex: 1 1 14rem;
    }
}

@media (max-width: 620px) {
    .component-main-grid,
    .substitution-row,
    .conversion-row {
        grid-template-columns: 1fr;
    }

    .component-main-grid {
        padding-right: 0;
        padding-top: 3rem;
    }

    .data-table tbody {
        grid-template-columns: 1fr;
    }

    .data-table tbody td,
    .data-table .actions-cell {
        grid-template-columns: minmax(6.5rem, 42%) minmax(0, 1fr);
        gap: .55rem;
    }

    .pagination {
        flex-direction: column;
    }

    .actions,
    .sticky-actions,
    .filter-actions {
        display: grid;
        grid-template-columns: 1fr;
        width: 100%;
    }

    .actions .button,
    .sticky-actions .button,
    .filter-actions .button {
        width: 100%;
    }
}

/* Version 5 : stock, courses, planifications et ergonomie compacte */
:root {
    --gap-xs: .45rem;
    --gap-sm: .75rem;
    --gap-md: 1rem;
    --gap-lg: 1.35rem;
}

.site-header .header-inner { gap: 1rem; }
.site-header nav { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: .35rem .85rem; }
.nav-toggle { display: none; border: 1px solid rgba(255,255,255,.4); background: transparent; color: white; padding: .45rem .75rem; border-radius: 7px; }

.card { padding: clamp(.9rem, 1.4vw, 1.35rem); }
.compact-card { padding: .9rem 1rem; }
.stack { display: grid; gap: var(--gap-md); min-width: 0; }
.card-heading,.section-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: .8rem; flex-wrap: wrap; }
.card-heading h2,.card-heading h3,.section-heading h2 { margin: 0; }
.card-actions,.actions-inline { display: flex; flex-wrap: wrap; align-items: center; gap: .55rem; }
.actions-inline { margin-top: .55rem; }
.muted,.compact-list-row small { color: var(--muted); }

.dashboard-stats { display: grid; grid-template-columns: repeat(auto-fit,minmax(155px,1fr)); gap: .8rem; margin-bottom: 1rem; }
.dashboard-stats .stat-card { min-height: 96px; padding: .9rem 1rem; border: 1px solid var(--border); border-radius: 12px; background: var(--surface); box-shadow: var(--shadow); color: inherit; text-decoration: none; }
.dashboard-stats .stat-card:hover { border-color: var(--primary); transform: translateY(-1px); }
.dashboard-stats .stat-card strong { font-size: clamp(1.5rem,2vw,2rem); line-height: 1; }
.dashboard-stats .stat-card span { margin-top: .55rem; font-size: .9rem; }
.quick-actions { display: grid; gap: .55rem; }

.admin-two-columns { display: grid; grid-template-columns: minmax(0,2.15fr) minmax(280px,.85fr); gap: 1rem; align-items: start; }
.compact-grid { grid-template-columns: minmax(150px,.7fr) minmax(220px,1.3fr); }
.input-with-unit { display: grid; grid-template-columns: minmax(0,1fr) auto; align-items: center; gap: .5rem; }
.input-with-unit span { color: var(--muted); white-space: nowrap; }

.stock-grid,.planning-grid,.meal-grid { display: grid; grid-template-columns: repeat(auto-fit,minmax(min(100%,340px),1fr)); gap: .85rem; }
.stock-card,.planning-card,.meal-card { display: grid; gap: .75rem; margin: 0; }
.stock-card h2,.planning-card h2,.meal-card h3 { font-size: 1.05rem; }
.stock-state,.stock-icon { display: inline-grid; place-items: center; width: 1.55rem; height: 1.55rem; border-radius: 999px; font-weight: 900; flex: 0 0 auto; }
.stock-available,.stock-ok { color: #17652b; background: #e3f5e8; border: 1px solid #9fd3ad; }
.stock-insufficient { color: #795600; background: #fff1c9; border: 1px solid #e7c76b; }
.stock-absent,.stock-none { color: #8a1c1c; background: #fde8e8; border: 1px solid #e6aaaa; }
.stock-unknown { color: #555; background: #eee; border: 1px solid #ccc; }

.compact-metrics,.summary-list,.recipe-live-metrics { display: grid; grid-template-columns: repeat(auto-fit,minmax(115px,1fr)); gap: .55rem; margin: 0; }
.compact-metrics div,.summary-list div,.recipe-live-metrics div { min-width: 0; padding: .62rem .7rem; border-radius: 9px; background: var(--surface-alt,#f5f1ec); }
.compact-metrics dt,.summary-list dt,.recipe-live-metrics dt { font-size: .76rem; color: var(--muted); }
.compact-metrics dd,.summary-list dd,.recipe-live-metrics dd { margin: .2rem 0 0; font-weight: 800; overflow-wrap: anywhere; }
.compact-list { display: grid; gap: .45rem; }
.compact-list-row { display: flex; justify-content: space-between; align-items: center; gap: .7rem; padding: .65rem .75rem; border: 1px solid var(--border); border-radius: 9px; text-decoration: none; color: inherit; }
.compact-list-row > div:first-child { display: grid; gap: .15rem; min-width: 0; }
.compact-list-row .actions { flex: 0 0 auto; }

.meal-card { position: relative; }
.meal-select { position: absolute; right: .8rem; top: .75rem; }
.meal-card .card-heading { padding-right: 2rem; }
.is-muted { opacity: .62; }

.variant-choice-card { padding: .7rem; border: 1px solid var(--border); border-radius: 10px; display: grid; gap: .45rem; }
.variant-option,.recipe-variant-option { display: grid; grid-template-columns: auto minmax(0,1fr) auto; align-items: center; gap: .65rem; padding: .65rem .7rem; border: 1px solid var(--border); border-radius: 9px; cursor: pointer; background: white; }
.variant-option:has(input:checked),.recipe-variant-option:has(input:checked) { border-color: var(--primary); background: #fff8f1; box-shadow: 0 0 0 1px var(--primary); }
.variant-option span,.variant-text { display: grid; min-width: 0; gap: .14rem; }
.variant-option small,.variant-text small { color: var(--muted); }

.recipe-calculator-panel { margin-bottom: 1rem; }
.recipe-scale-controls { display: grid; grid-template-columns: repeat(2,minmax(160px,1fr)) auto; gap: .75rem; align-items: end; }
.recipe-live-metrics { margin-top: .9rem; grid-template-columns: repeat(auto-fit,minmax(130px,1fr)); }
.recipe-content-columns { display: grid; grid-template-columns: minmax(300px,.9fr) minmax(0,1.4fr); gap: 1rem; align-items: start; }
.recipe-content-columns section { margin: 0; }
.recipe-content-columns .ingredient-group-card { margin: 0 0 .65rem; padding: .7rem; }
.recipe-content-columns fieldset.ingredient-group-card { border: 1px solid var(--border); }
.recipe-content-columns fieldset.ingredient-group-card legend { padding: 0 .35rem; font-weight: 800; }
.recipe-variant-option { margin: .45rem 0; }
.steps-list { margin-bottom: 0; }
.steps-list li { margin-bottom: .7rem; }

.summary-panel { position: sticky; bottom: .5rem; z-index: 3; }
.filter-list-search { width: calc(100% - .8rem); margin: .4rem; padding: .5rem .6rem; border: 1px solid var(--border); border-radius: 7px; }
.results-column.is-loading { opacity: .55; pointer-events: none; }

/* Cases à cocher accolées au libellé dans tous les écrans d’administration. */
.check-inline,.meal-select,.form-check,label:has(> input[type="checkbox"]),label:has(> input[type="radio"]) { align-items: center; }
.check-inline { display: inline-flex; gap: .45rem; }
.check-inline input,label > input[type="checkbox"],label > input[type="radio"] { flex: 0 0 auto; margin: 0; }

/* Éditeur de recette plus compact. */
.collection { gap: .75rem; }
.collection-row { margin: 0; padding: .85rem; }
.component-main-grid { grid-template-columns: minmax(105px,.6fr) minmax(200px,1.5fr) minmax(105px,.55fr) minmax(180px,1fr) minmax(155px,.85fr) auto; gap: .65rem; align-items: end; }
.component-select-subrecipe { grid-column: span 2; }
.substitutions-block { margin: .65rem 0 0; padding: .65rem; }
.substitution-row { grid-template-columns: auto minmax(190px,1.4fr) minmax(95px,.5fr) minmax(170px,1fr) minmax(140px,.8fr) auto; gap: .55rem; }
.conversion-row { padding: .65rem; gap: .55rem; }

@media (max-width: 1180px) {
    .admin-two-columns,.recipe-content-columns { grid-template-columns: 1fr; }
    .summary-panel { position: static; }
    .component-main-grid { grid-template-columns: repeat(3,minmax(0,1fr)); }
}

@media (max-width: 850px) {
    .site-header .header-inner { flex-wrap: wrap; }
    .nav-toggle { display: inline-block; margin-left: auto; }
    .site-header nav { display: none; width: 100%; justify-content: flex-start; padding-top: .65rem; border-top: 1px solid rgba(255,255,255,.2); }
    .site-header nav.is-open { display: flex; }
    .recipe-scale-controls { grid-template-columns: 1fr 1fr; }
    .recipe-scale-controls .button { grid-column: 1 / -1; }
    .compact-grid { grid-template-columns: 1fr; }
}

@media (max-width: 650px) {
    .dashboard-stats { grid-template-columns: repeat(2,minmax(0,1fr)); }
    .stock-grid,.planning-grid,.meal-grid { grid-template-columns: 1fr; }
    .compact-list-row { align-items: flex-start; flex-direction: column; }
    .compact-list-row .actions { width: 100%; }
    .recipe-scale-controls { grid-template-columns: 1fr; }
    .recipe-scale-controls .button { grid-column: auto; }
    .component-main-grid,.substitution-row { grid-template-columns: 1fr; }
}
.recipe-flags { display:grid; grid-template-columns:repeat(auto-fit,minmax(230px,1fr)); gap:.65rem; margin-top:.8rem; }
.check-card { display:grid !important; grid-template-columns:auto minmax(0,1fr); align-items:start !important; gap:.65rem; padding:.7rem .8rem; border:1px solid var(--border); border-radius:9px; background:#faf8f5; }
.check-card span { display:grid; gap:.15rem; }
.check-card small { color:var(--muted); }
.admin-balanced { grid-template-columns:repeat(2,minmax(0,1fr)); }
@media(max-width:820px){.admin-balanced{grid-template-columns:1fr;}}

/* Version 5.1 : filtres graphiques, formulaires compacts et stock en masse */
.compact-hero { padding-block: .7rem 1rem; }

/* Choix exclusifs sous forme de cartes. */
.card-choice-filter { display: grid; gap: .55rem; padding: .75rem; }
.choice-card-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .45rem; }
.choice-card { position: relative; min-width: 0; }
.choice-card input { position: absolute; opacity: 0; pointer-events: none; }
.choice-card span { min-height: 46px; display: grid; align-content: center; gap: .05rem; padding: .55rem .65rem; border: 1px solid var(--border); border-radius: 9px; background: #fff; cursor: pointer; }
.choice-card strong { font-size: .85rem; line-height: 1.15; }
.choice-card small { color: var(--muted); font-size: .72rem; line-height: 1.15; }
.choice-card input:checked + span { border-color: var(--primary); background: #fff7ef; box-shadow: 0 0 0 1px var(--primary); color: var(--primary-dark); }
.choice-card input:focus-visible + span { outline: 3px solid rgba(122,62,29,.18); }

/* Double curseur. */
.range-filter { display: grid; gap: .75rem; padding: .85rem; }
.segmented-choice { display: grid; grid-auto-flow: column; grid-auto-columns: 1fr; gap: .35rem; }
.segmented-choice label { position: relative; }
.segmented-choice input { position: absolute; opacity: 0; }
.segmented-choice span { display: block; padding: .45rem .5rem; text-align: center; border: 1px solid var(--border); border-radius: 8px; background: #fff; font-weight: 700; font-size: .82rem; cursor: pointer; }
.segmented-choice input:checked + span { color: #fff; background: var(--primary); border-color: var(--primary); }
.dual-range { position: relative; height: 32px; margin: .15rem .2rem 0; }
.dual-range-track { position: absolute; inset: 14px 0 auto; height: 5px; border-radius: 999px; background: linear-gradient(to right, #d9d2ca 0 var(--range-start), var(--primary) var(--range-start) var(--range-end), #d9d2ca var(--range-end) 100%); }
.dual-range input[type="range"] { position: absolute; inset: 0; width: 100%; height: 32px; padding: 0; border: 0; background: transparent; pointer-events: none; appearance: none; }
.dual-range input[type="range"]::-webkit-slider-thumb { width: 22px; height: 22px; border: 3px solid var(--primary); border-radius: 50%; background: #fff; appearance: none; pointer-events: auto; cursor: grab; }
.dual-range input[type="range"]::-moz-range-thumb { width: 18px; height: 18px; border: 3px solid var(--primary); border-radius: 50%; background: #fff; pointer-events: auto; cursor: grab; }
.range-values { display: grid; grid-template-columns: 1fr 1fr; gap: .5rem; }
.range-values label { display: grid; gap: .25rem; padding: .5rem; border: 1px solid var(--border); border-radius: 8px; background: #fff; }
.range-values label > span { font-size: .74rem; color: var(--muted); }
.range-values input { padding: .25rem 0; border: 0; border-radius: 0; font-weight: 800; background: transparent; }
.range-values input:focus { outline: 0; box-shadow: none; }
.range-values small { color: var(--primary); font-weight: 700; }
.filter-actions { display: grid; grid-template-columns: 1fr 1fr; gap: .5rem; }

/* Haut de la recette : image et calculateur côte à côte. */
.recipe-title-heading { display: flex; justify-content: space-between; align-items: flex-start; gap: 1rem; margin-bottom: .8rem; }
.recipe-title-heading h1 { margin-bottom: .35rem; }
.recipe-top-grid { display: grid; grid-template-columns: minmax(320px, .9fr) minmax(360px, 1.1fr); gap: 1rem; align-items: stretch; }
.recipe-image-panel { margin: 0; min-width: 0; display: grid; place-items: center; border-radius: 16px; overflow: hidden; background: #ece7e0; box-shadow: var(--shadow); }
.recipe-top-grid .recipe-main-image { width: 100%; height: 100%; max-height: 480px; aspect-ratio: 4 / 3; object-fit: cover; border-radius: 0; box-shadow: none; }
.recipe-top-grid .recipe-calculator-panel { margin: 0; display: grid; align-content: start; gap: .9rem; }
.recipe-scale-controls { grid-template-columns: minmax(130px, .65fr) minmax(160px, .8fr); align-items: start; }
.recipe-scale-controls .field { grid-column: auto; }
.equivalent-portions { grid-column: 1 / -1; margin: -.25rem 0 0; color: var(--muted); font-size: .88rem; }
.calculator-buttons, .calculator-actions { display: flex; gap: .5rem; flex-wrap: wrap; }
.calculator-buttons { grid-column: 1 / -1; }
.calculator-actions { padding-top: .75rem; border-top: 1px solid var(--border); }
.recipe-metrics-row { margin: 1rem 0; grid-template-columns: repeat(7, minmax(105px, 1fr)); }

/* Tableau de bord : seules les alertes utiles sont affichées. */
.dashboard-alerts { margin-bottom: 1rem; padding: .85rem; border: 1px solid #e3aaa5; border-radius: 12px; background: #fff5f4; }
.dashboard-alerts h2 { margin: 0 0 .7rem; color: #8f2020; font-size: 1rem; }
.alert-stats { margin: 0; }
.dashboard-stats .stat-card-danger { border-color: #d88078; background: #fff0ef; color: #7c1818; }
.dashboard-stats .stat-card-warning { border-color: #e0b56b; background: #fff8e9; color: #714600; }
.alert-card { border-color: #dfa29c; background: #fff8f7; }

/* Formulaire ingrédient. */
.ingredient-edit-form { display: grid; gap: 1rem; }
.compact-form-card { padding: 1rem; }
.ingredient-main-grid { display: grid; grid-template-columns: minmax(220px, 1.35fr) minmax(150px, .65fr) minmax(220px, 1fr); gap: .75rem 1rem; align-items: start; }
.ingredient-main-grid .field { grid-column: auto; }
.ingredient-name-field { grid-column: span 1; }
.ingredient-main-grid .compact-check-card { align-self: end; min-height: 66px; }
.ingredient-measurements-card { display: grid; gap: .8rem; }
.compact-conversion-list { display: grid; gap: .65rem; }
.compact-conversion-row { display: grid; grid-template-columns: minmax(210px, 1.5fr) minmax(130px, .8fr) minmax(130px, .8fr) 100px auto 38px; gap: .6rem; align-items: end; padding: .75rem; }
.compact-conversion-row .field { grid-column: auto; }
.compact-conversion-row .conversion-favorite { padding-bottom: .65rem; white-space: nowrap; }
.compact-conversion-row .icon-button { align-self: end; margin-bottom: .1rem; }

/* Éditeur de recette. */
.recipe-admin-intro { padding: 1rem; }
.recipe-admin-top-grid { display: grid; grid-template-columns: minmax(250px, 420px) minmax(0, 1fr); gap: 1rem; align-items: start; }
.recipe-admin-image-column { position: relative; min-width: 0; }
.compact-admin-preview { width: 100%; max-height: 390px; aspect-ratio: 4 / 3; object-fit: cover; border-radius: 12px; display: block; }
.placeholder-preview { object-fit: contain; background: #eee9e2; }
.photo-delete-button { position: absolute; right: .6rem; top: .6rem; width: 2.35rem; height: 2.35rem; background: rgba(255,255,255,.94); box-shadow: var(--shadow); }
.recipe-admin-fields { display: grid; gap: .8rem; }
.compact-recipe-general { grid-template-columns: repeat(8, minmax(0, 1fr)); }
.compact-recipe-general .field-wide { grid-column: span 6; }
.compact-recipe-general .field-small { grid-column: span 2; }
.compact-flags { grid-template-columns: repeat(2, minmax(0, 1fr)); margin: 0; }
.compact-check-card { min-height: 64px; padding: .65rem .75rem; }
.compact-reference-panels { margin-bottom: 1rem; gap: 1rem; }
.editor-section { margin-top: 1rem; }
.editor-section > .section-heading { margin-bottom: .8rem; }
.editor-section > .section-heading p { margin: .15rem 0 0; color: var(--muted); }
.spaced-collection { display: grid; gap: .8rem; }
.spaced-collection > .collection-row { margin: 0; border-color: #cec5b9; box-shadow: 0 3px 10px rgba(38,29,20,.035); }
.collection-add-button { margin-top: .8rem; }
.form-submit-actions { margin-block: 1rem 2rem; }
.component-main-grid { grid-template-columns: 120px minmax(230px, 1.6fr) 125px minmax(180px, 1fr) minmax(150px, .85fr) auto; gap: .6rem; padding-right: 0; }
.component-main-grid .field, .component-main-grid .component-select-ingredient, .component-main-grid .component-select-subrecipe, .component-main-grid .component-measure, .component-main-grid .component-modifier, .component-main-grid .field-small { grid-column: auto; }
.component-main-grid .row-buttons { position: static; flex-direction: column; align-self: end; }
.substitutions-block { margin-top: .65rem; padding: .7rem; border-left: 3px solid #d6a06d; border-radius: 0 8px 8px 0; background: #fff8ef; }
.substitution-row { grid-template-columns: auto minmax(220px, 1.5fr) 120px minmax(180px, 1fr) minmax(150px, .8fr) 38px; padding: .65rem; }
.step-row { grid-template-columns: 90px minmax(260px, 1.8fr) 130px minmax(170px, .8fr) minmax(210px, 1fr) auto; align-items: start; padding: .8rem; }
.step-row .field, .step-row .field-wide, .step-row .field-small { grid-column: auto; }
.step-row .row-buttons { position: static; }
.note-row { grid-template-columns: 150px minmax(260px, 1fr) auto; align-items: start; padding: .8rem; }
.note-row .field, .note-row .field-wide { grid-column: auto; }
.note-row .row-buttons { position: static; }

/* Stock : saisie groupée sans cartes surdimensionnées. */
.stock-page-heading { margin-bottom: .7rem; }
.stock-quick-entry { margin-bottom: 1rem; }
.stock-quick-form { display: grid; grid-template-columns: minmax(200px, 1.4fr) 130px 120px minmax(160px, .8fr) minmax(200px, 1fr) auto; gap: .65rem; align-items: end; }
.stock-quick-form .field { grid-column: auto; }
.stock-bulk-panel { display: grid; gap: .8rem; }
.stock-filters { display: grid; grid-template-columns: minmax(220px, 1fr) minmax(180px, .55fr) auto auto; gap: .6rem; align-items: end; }
.stock-filters .field { grid-column: auto; }
.stock-bulk-grid { display: grid; gap: .35rem; }
.stock-bulk-header, .stock-bulk-row { display: grid; grid-template-columns: minmax(180px, 1.2fr) minmax(115px, .65fr) 105px 105px minmax(145px, .8fr) minmax(120px, .7fr) minmax(160px, 1fr); gap: .55rem; align-items: center; }
.stock-bulk-header { padding: .55rem .65rem; color: var(--muted); font-size: .76rem; font-weight: 800; text-transform: uppercase; letter-spacing: .025em; }
.stock-bulk-row { padding: .6rem .65rem; border: 1px solid var(--border); border-radius: 9px; background: #fff; transition: border-color .15s, background .15s; }
.stock-bulk-row.is-pending { border-color: #c98b50; background: #fffaf4; }
.stock-bulk-row.has-error { border-color: #c64848; background: #fff2f2; }
.stock-bulk-row label { min-width: 0; }
.stock-bulk-row input, .stock-bulk-row select { padding: .48rem .55rem; }
.stock-ingredient { display: grid; gap: .1rem; min-width: 0; }
.stock-ingredient small { color: var(--muted); }
.stock-current, .stock-preview { font-weight: 800; overflow-wrap: anywhere; }
.mobile-field-label { display: none; }
.sticky-bulk-actions { position: sticky; bottom: .5rem; z-index: 5; display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-top: .8rem; padding: .75rem 1rem; border: 1px solid #c98b50; border-radius: 10px; background: rgba(255,250,244,.97); box-shadow: var(--shadow); }
.sticky-bulk-actions[hidden] { display: none; }
.stock-history { margin-top: 1rem; }
.stock-movement-list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.stock-movement { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: .2rem .8rem; padding: .65rem .75rem; border: 1px solid var(--border); border-radius: 9px; background: #fff; }
.stock-movement > div { display: grid; }
.stock-movement small { color: var(--muted); }
.stock-movement p { grid-column: 1 / -1; margin: .15rem 0 0; color: var(--muted); }
.movement-positive { color: var(--success); }
.movement-negative { color: var(--danger); }

/* Aucun défilement horizontal : les tableaux deviennent des cartes avant débordement. */
.table-scroll { overflow-x: visible; max-width: 100%; }
.data-table { min-width: 0; table-layout: fixed; }
.data-table th, .data-table td { overflow-wrap: anywhere; }

@media (max-width: 1300px) {
    .recipe-metrics-row { grid-template-columns: repeat(4, minmax(110px, 1fr)); }
    .compact-conversion-row { grid-template-columns: minmax(200px, 1.5fr) 1fr 1fr 90px auto 38px; }
    .stock-bulk-header, .stock-bulk-row { grid-template-columns: minmax(170px, 1.2fr) 110px 100px 95px minmax(130px, .8fr) 110px minmax(140px, 1fr); }
}

@media (max-width: 1100px) {
    .recipe-top-grid, .recipe-admin-top-grid { grid-template-columns: 1fr 1fr; }
    .recipe-top-grid .recipe-main-image { max-height: 420px; }
    .ingredient-main-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .compact-conversion-row { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .compact-conversion-row .conversion-measure { grid-column: 1 / -1; }
    .compact-conversion-row .icon-button { justify-self: end; }
    .component-main-grid, .substitution-row, .step-row, .note-row { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .component-main-grid .row-buttons, .step-row .row-buttons, .note-row .row-buttons { grid-column: 1 / -1; flex-direction: row; }
    .substitution-row > .substitution-label { grid-column: 1 / -1; }
    .stock-bulk-header { display: none; }
    .stock-bulk-row { grid-template-columns: repeat(3, minmax(0, 1fr)); align-items: end; }
    .stock-ingredient { grid-column: span 2; }
    .stock-current { text-align: right; }
    .mobile-field-label { display: block; margin-bottom: .2rem; color: var(--muted); font-size: .72rem; font-weight: 700; }
}

@media (max-width: 820px) {
    .choice-card-grid { grid-template-columns: 1fr 1fr; }
    .recipe-top-grid, .recipe-admin-top-grid { grid-template-columns: 1fr; }
    .recipe-image-panel { max-width: 620px; width: 100%; margin-inline: auto; }
    .recipe-metrics-row { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .compact-recipe-general { grid-template-columns: 1fr; }
    .compact-recipe-general .field-wide, .compact-recipe-general .field-small { grid-column: auto; }
    .compact-flags { grid-template-columns: 1fr; }
    .stock-quick-form, .stock-filters { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .stock-quick-form .button, .stock-filters .button { width: 100%; }
    .stock-movement-list { grid-template-columns: 1fr; }
}

@media (max-width: 620px) {
    .choice-card-grid, .range-values, .ingredient-main-grid, .stock-quick-form, .stock-filters, .stock-bulk-row { grid-template-columns: 1fr; }
    .segmented-choice { grid-auto-flow: row; }
    .recipe-title-heading { display: grid; }
    .recipe-scale-controls { grid-template-columns: 1fr; }
    .equivalent-portions, .calculator-buttons { grid-column: auto; }
    .recipe-metrics-row { grid-template-columns: 1fr 1fr; }
    .stock-ingredient { grid-column: auto; }
    .stock-current { text-align: left; }
    .sticky-bulk-actions { align-items: stretch; flex-direction: column; }
    .sticky-bulk-actions .actions { width: 100%; }
    .component-main-grid, .substitution-row, .step-row, .note-row, .compact-conversion-row { grid-template-columns: 1fr; }
    .compact-conversion-row .conversion-measure { grid-column: auto; }
}

/* ================================================================
   Espace membres et modération — version 6
   ================================================================ */
.auth-layout { min-height: min(720px, 72vh); display: grid; place-items: center; padding-block: 2rem; }
.auth-card { width: min(100%, 560px); }
.narrow-card { width: min(100%, 760px); margin-inline: auto; }
.member-dashboard-grid, .profile-grid, .card-grid, .recipe-card-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem; }
.member-dashboard-grid .stat-card, .profile-grid > *, .list-card, .plan-card, .recipe-result-card { min-width: 0; }
.member-dashboard-grid .stat-card { min-height: 118px; display: grid; align-content: center; gap: .3rem; }
.member-dashboard-grid .stat-card strong { font-size: 1.9rem; }
.profile-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: start; }
.danger-zone { border-color: #e0aaaa; background: #fff7f7; }
.status-badge { display: inline-flex; align-items: center; width: fit-content; padding: .25rem .55rem; border-radius: 999px; font-size: .78rem; font-weight: 800; background: #ece7df; color: #554c43; }
.status-active, .status-approved, .status-open { background: #def1e4; color: #22623b; }
.status-pending, .status-pending_approval, .status-email_pending, .status-changes_requested, .status-draft { background: #fff0c9; color: #785717; }
.status-suspended, .status-refused, .status-rejected, .status-closed { background: #f7dddd; color: #842d2d; }
.status-archived { background: #e8e8e8; color: #555; }
.count-badge { display: inline-grid; place-items: center; min-width: 1.5rem; height: 1.5rem; padding-inline: .4rem; border-radius: 999px; background: var(--danger); color: #fff; font-size: .75rem; font-weight: 800; }
.list-card, .plan-card, .recipe-result-card { display: grid; gap: .7rem; padding: 1rem; border: 1px solid var(--border); border-radius: 12px; background: #fff; box-shadow: 0 3px 10px rgba(38,29,20,.035); }
.list-card header, .plan-card header, .recipe-result-card header { display: flex; justify-content: space-between; gap: .7rem; align-items: start; }
.list-card h2, .plan-card h2, .recipe-result-card h2 { margin: 0; font-size: 1.05rem; }
.mini-stats { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: .5rem; margin: 0; }
.mini-stats div { min-width: 0; padding: .55rem; border-radius: 8px; background: #f6f2ec; }
.mini-stats dt { color: var(--muted); font-size: .72rem; font-weight: 700; }
.mini-stats dd { margin: .15rem 0 0; font-weight: 800; overflow-wrap: anywhere; }
.sticky-form-actions { position: sticky; bottom: .5rem; z-index: 5; display: flex; align-items: center; justify-content: flex-end; gap: .65rem; margin-top: .8rem; padding: .75rem; border: 1px solid var(--border); border-radius: 10px; background: rgba(255,255,255,.97); box-shadow: var(--shadow); }
.sticky-form-actions [data-pending-stock-count] { margin-right: auto; font-weight: 700; color: var(--muted); }
.member-component-grid { display: grid; grid-template-columns: minmax(190px, 1.15fr) minmax(190px, 1.15fr) 110px minmax(150px, .8fr) minmax(140px, .7fr) auto; gap: .65rem; align-items: end; }
.member-component-grid .field, .member-component-grid .field-wide, .member-component-grid .field-small { grid-column: auto; }
.member-step-row { display: grid; grid-template-columns: minmax(280px, 1.8fr) 110px minmax(180px, .8fr) auto; gap: .65rem; align-items: start; padding: .75rem; }
.member-note-row { display: grid; grid-template-columns: 150px minmax(280px, 1fr) auto; gap: .65rem; align-items: start; padding: .75rem; }
.member-step-row .field, .member-step-row .field-wide, .member-step-row .field-small,
.member-note-row .field, .member-note-row .field-wide { grid-column: auto; }
.member-component-row { padding: .75rem; }
.member-recipe-actions { display: flex; flex-wrap: wrap; gap: .5rem; }
.recipe-author-line { display: flex; flex-wrap: wrap; gap: .5rem 1rem; align-items: center; color: var(--muted); }
.recipe-test-actions { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem; }

/* Stock privé : lignes compactes et saisie multiple. */
.stock-quick-card { margin-bottom: 1rem; }
#member-stock-form .stock-bulk-table { table-layout: auto; }
#member-stock-form .stock-bulk-table th:nth-child(1) { width: 18%; }
#member-stock-form .stock-bulk-table th:nth-child(2) { width: 12%; }
#member-stock-form .stock-bulk-table th:nth-child(3) { width: 12%; }
#member-stock-form .stock-bulk-table th:nth-child(4) { width: 10%; }
#member-stock-form .stock-bulk-table th:nth-child(5) { width: 14%; }
#member-stock-form .stock-bulk-table th:nth-child(6) { width: 14%; }
#member-stock-form .stock-bulk-table th:nth-child(7) { width: 20%; }
#member-stock-form tr.is-pending { background: #fffaf2; }
#member-stock-form tr.has-error { background: #fff0f0; }
#member-stock-form input, #member-stock-form select { min-width: 0; width: 100%; padding: .48rem; }

/* Planifications et listes privées. */
.plan-toolbar { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: end; gap: .8rem; margin-bottom: 1rem; }
.meal-cards { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; margin-bottom: 1rem; }
.meal-card { min-width: 0; }
.meal-card .compact-list { margin-top: .75rem; }

/* Conversations. */
.conversation-thread { display: grid; gap: .75rem; margin-block: 1rem; }
.message-bubble { width: min(82%, 780px); padding: .8rem 1rem; border: 1px solid var(--border); border-radius: 12px; background: #fff; }
.message-bubble.message-user { justify-self: start; border-bottom-left-radius: 3px; }
.message-bubble.message-admin { justify-self: end; border-bottom-right-radius: 3px; background: #f7efe5; }
.message-bubble header { display: flex; justify-content: space-between; gap: 1rem; margin-bottom: .35rem; }
.message-bubble p { margin: 0; white-space: pre-wrap; overflow-wrap: anywhere; }

/* Modération. */
dialog { width: min(92vw, 620px); border: 0; border-radius: 14px; padding: 1.2rem; box-shadow: 0 20px 60px rgba(0,0,0,.25); }
dialog::backdrop { background: rgba(24,20,17,.52); }
.moderation-list { display: grid; gap: .75rem; }
.moderation-item { padding: .8rem; border: 1px solid var(--border); border-radius: 10px; background: #fff; }
.moderation-photo { width: min(100%, 420px); max-height: 300px; object-fit: cover; border-radius: 10px; }

/* Navigation membre : éviter le débordement sans scrolling horizontal. */
.user-nav, .admin-nav, .public-nav { flex-wrap: wrap; }
.user-nav a, .admin-nav a, .public-nav a { white-space: normal; }

@media (max-width: 1200px) {
    .member-dashboard-grid, .card-grid, .recipe-card-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .member-component-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .member-component-grid .row-buttons { grid-column: 1 / -1; }
    .mini-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 900px) {
    .profile-grid, .meal-cards { grid-template-columns: 1fr; }
    #member-stock-form .stock-bulk-table thead { display: none; }
    #member-stock-form .stock-bulk-table, #member-stock-form .stock-bulk-table tbody, #member-stock-form .stock-bulk-table tr, #member-stock-form .stock-bulk-table td { display: block; width: 100%; }
    #member-stock-form .stock-bulk-table tr { margin-bottom: .75rem; padding: .7rem; border: 1px solid var(--border); border-radius: 10px; }
    #member-stock-form .stock-bulk-table td { display: grid; grid-template-columns: minmax(105px, .45fr) minmax(0, 1fr); gap: .5rem; align-items: center; padding: .35rem 0; border: 0; }
    #member-stock-form .stock-bulk-table td::before { content: attr(data-label); color: var(--muted); font-size: .76rem; font-weight: 800; }
}

@media (max-width: 680px) {
    .member-dashboard-grid, .card-grid, .recipe-card-grid, .member-component-grid, .member-step-row, .member-note-row { grid-template-columns: 1fr; }
    .message-bubble { width: 100%; }
    .sticky-form-actions { align-items: stretch; flex-direction: column; }
    .sticky-form-actions [data-pending-stock-count] { margin-right: 0; }
    .plan-toolbar { align-items: stretch; flex-direction: column; }
}

.member-component-row { display: grid; gap: .7rem; }
.member-ingredient-fields { display: grid; grid-template-columns: repeat(2,minmax(170px,1fr)); gap: .6rem; grid-column: span 2; }
.member-subrecipe-field { grid-column: span 2; }
.member-substitutions { display: grid; gap: .55rem; padding: .7rem; border-left: 3px solid #d6a06d; border-radius: 0 9px 9px 0; background: #fff8ef; }
.member-substitutions h3 { margin: 0; font-size: .95rem; }
.member-substitutions h3 small { color: var(--muted); font-weight: 500; }
.member-substitution-row { display: grid; grid-template-columns: 90px minmax(180px,1.2fr) minmax(170px,1fr) 105px minmax(140px,.8fr) minmax(130px,.7fr); gap: .5rem; align-items: end; padding: .55rem; border: 1px solid #ead8c6; border-radius: 8px; background: #fff; }
.member-substitution-row .field { grid-column: auto; }
.substitution-index { align-self: center; color: var(--muted); font-size: .75rem; font-weight: 800; }
[data-member-component][data-component-kind="ingredient"] [data-member-subrecipe-field] { display: none; }
[data-member-component][data-component-kind="subrecipe"] [data-member-ingredient-fields],
[data-member-component][data-component-kind="subrecipe"] [data-member-measure-field],
[data-member-component][data-component-kind="subrecipe"] [data-member-modifier-field],
[data-member-component][data-component-kind="subrecipe"] [data-member-substitutions] { display: none; }
@media (max-width: 1250px) {
    .member-substitution-row { grid-template-columns: repeat(3,minmax(0,1fr)); }
    .substitution-index { grid-column: 1 / -1; }
}
@media (max-width: 760px) {
    .member-ingredient-fields, .member-substitution-row { grid-template-columns: 1fr; grid-column: auto; }
    .member-subrecipe-field { grid-column: auto; }
}

/* Version 6 : comptes membres et modération */
.moderation-section-picker {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
    gap: .65rem;
    padding: 1rem;
    border: 1px solid var(--border, #d9dde3);
    border-radius: .8rem;
}
.moderation-section-picker legend { font-weight: 700; padding: 0 .4rem; }
.moderation-section-picker .choice-card {
    display: flex;
    align-items: center;
    gap: .55rem;
    min-height: 2.8rem;
    padding: .65rem .75rem;
    border: 1px solid var(--border, #d9dde3);
    border-radius: .65rem;
    background: #fff;
}
.component-review-list > li + li { margin-top: .75rem; }
.moderation-substitutions { margin: .45rem 0 0 1rem; padding-left: 1rem; }
.moderation-substitutions li + li { margin-top: .3rem; }
.status-email_pending, .status-pending_approval { background: #fff4cc; color: #704d00; }
.status-active, .status-approved { background: #dcf7e7; color: #145c36; }
.status-suspended, .status-refused, .status-rejected { background: #fde1e1; color: #8a1c1c; }
.status-draft, .status-archived, .status-deleted { background: #e9edf2; color: #46505c; }
.status-changes_requested { background: #ffe9c7; color: #744000; }
@media (max-width: 720px) {
    .moderation-section-picker { grid-template-columns: 1fr; }
}
.suggested-measurements { padding: 1rem; border: 1px solid var(--border, #d9dde3); border-radius: .8rem; }
.suggested-measurements legend { font-weight: 700; padding: 0 .4rem; }
.suggested-measurement-grid { display: grid; gap: .7rem; }
.suggested-measurement-row { display: grid; grid-template-columns: minmax(180px, 1fr) minmax(130px, .45fr) minmax(130px, .45fr); gap: .7rem; align-items: end; padding: .7rem; border-radius: .65rem; background: #f7f8fa; }
@media (max-width: 720px) { .suggested-measurement-row { grid-template-columns: 1fr; } }

/* ================================================================
   Version 6.1 - sélecteurs de recettes, repas et PDF
   ================================================================ */
.single-column-list,
.planning-grid.single-column-list,
.card-grid.single-column-list { grid-template-columns: 1fr !important; }
.spaced-list { gap: .65rem; }
.spaced-list .compact-list-row { border: 1px solid var(--border); border-radius: 10px; padding: .75rem; background: #fff; }
.section-footer-action { margin-top: .85rem; padding-top: .8rem; border-top: 1px solid var(--border); }

.recipe-picker { display: grid; gap: 1rem; }
.recipe-picker-filters { display: grid; grid-template-columns: minmax(220px, 1.1fr) minmax(190px, .8fr) minmax(300px, 1fr); gap: .75rem; align-items: end; }
.picker-tested { min-width: 0; }
.picker-tested legend { font-size: .8rem; font-weight: 800; margin-bottom: .35rem; }
.compact-choice-grid { grid-template-columns: repeat(auto-fit, minmax(110px, 1fr)); }
.recipe-picker-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: .75rem; }
.recipe-picker-card { min-width: 0; display: grid; grid-template-columns: 82px minmax(0,1fr); gap: .7rem; align-items: center; padding: .55rem; border: 1px solid var(--border); border-radius: 11px; background: #fff; color: inherit; text-decoration: none; transition: border-color .15s, transform .15s, box-shadow .15s; }
.recipe-picker-card:hover, .recipe-picker-card:focus-visible { border-color: var(--accent); transform: translateY(-1px); box-shadow: var(--shadow); }
.recipe-picker-card img { width: 82px; height: 72px; object-fit: cover; border-radius: 8px; }
.recipe-picker-card-body { min-width: 0; display: grid; gap: .18rem; }
.recipe-picker-card-body strong, .recipe-picker-card-body small { overflow-wrap: anywhere; }
.recipe-picker-card-body small { color: var(--muted); font-size: .73rem; }

.scale-mode-picker, .course-card-picker { margin-bottom: .9rem; }
.scale-mode-picker legend, .course-card-picker legend { font-weight: 800; margin-bottom: .35rem; }
.scale-input-grid { display: grid; grid-template-columns: repeat(3, minmax(160px, 1fr)); gap: .75rem; align-items: start; }
.scale-input-grid .is-inactive { opacity: .5; }
.course-choice-grid { display: grid; grid-template-columns: repeat(4, minmax(110px, 1fr)); gap: .5rem; }
.variant-groups-grid { display: grid; gap: .8rem; }
.variant-options-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); gap: .55rem; }
.variant-choice-card { min-width: 0; }
.variant-option { height: 100%; }

.meal-list-one-column { display: grid; grid-template-columns: 1fr; gap: .85rem; }
.meal-card-title { display: flex; gap: .8rem; align-items: flex-start; min-width: 0; }
.meal-select-inline { display: inline-flex; align-items: center; gap: .35rem; flex: 0 0 auto; padding: .35rem .5rem; border-radius: 8px; background: #f5f0e9; font-size: .75rem; font-weight: 700; }
.select-all-meals { white-space: nowrap; }
.single-column-choice-list { display: grid; gap: .55rem; }
.single-column-choice-list .choice-card { min-height: 3.3rem; }

@media (max-width: 1050px) {
  .recipe-picker-filters { grid-template-columns: 1fr 1fr; }
  .picker-tested { grid-column: 1 / -1; }
  .course-choice-grid { grid-template-columns: repeat(2, minmax(0,1fr)); }
}
@media (max-width: 720px) {
  .recipe-picker-filters, .scale-input-grid { grid-template-columns: 1fr; }
  .picker-tested { grid-column: auto; }
  .recipe-picker-grid { grid-template-columns: 1fr; }
  .recipe-picker-card { grid-template-columns: 72px minmax(0,1fr); }
  .recipe-picker-card img { width: 72px; height: 64px; }
  .course-choice-grid { grid-template-columns: 1fr 1fr; }
  .meal-card-title { flex-direction: column; }
}

.batch-count-field { grid-column: 1 / -1; width: min(100%, 300px); }
