/* recette.plus — content components (v0.8). One shared set of elements for tag pages, category/ingredient pages,
   articles and static pages. Reference with copy-ready markup: COMPONENTS.html in the theme package.
   Loaded on every page except the homepage. No JS needed except .slider buttons and the filter box (app.js). */

/* ---------- notes: astuce, à savoir, attention, erreur, bonne pratique, à retenir ---------- */
.note{--c:var(--ink-3);--bg:var(--surface);position:relative;margin-block:1.2em;padding:16px 18px 16px 52px;border-radius:var(--radius);background:var(--bg);border-left:4px solid var(--c);color:var(--ink-2);line-height:1.65}
.note::before{content:"";position:absolute;left:16px;top:17px;width:22px;height:22px;background:var(--c);-webkit-mask:var(--i) center/contain no-repeat;mask:var(--i) center/contain no-repeat}
.note__title{display:block;margin-bottom:4px;color:var(--ink);font-weight:700}
.note>*+*{margin-top:.5em}
.note ul{list-style:disc;padding-left:1.2em}
.note--tip{--c:#b45309;--bg:#fdf6e9;--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M9 18h6M10 22h4M12 2a7 7 0 0 0-4 12.7V17h8v-2.3A7 7 0 0 0 12 2z'/%3E%3C/svg%3E")}
.note--info{--c:#2563a8;--bg:#edf3fb;--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 16v-5M12 8h.01'/%3E%3C/svg%3E")}
.note--warn{--c:#c2410c;--bg:#fdf0e8;--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M10.3 3.9 1.8 18a2 2 0 0 0 1.7 3h17a2 2 0 0 0 1.7-3L13.7 3.9a2 2 0 0 0-3.4 0zM12 9v4M12 17h.01'/%3E%3C/svg%3E")}
.note--danger{--c:#b91c1c;--bg:#fcecec;--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='m15 9-6 6M9 9l6 6'/%3E%3C/svg%3E")}
.note--ok{--c:var(--herb);--bg:var(--herb-soft);--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='m8 12 3 3 5-6'/%3E%3C/svg%3E")}
.note--key{--c:var(--accent);--bg:var(--accent-soft);--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M19 21 12 16l-7 5V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z'/%3E%3C/svg%3E")}
:root[data-theme="dark"] .note{--bg:var(--surface)}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .note{--bg:var(--surface)}}

/* ---------- erreurs à éviter: the mistake and its fix ---------- */
.mistakes{display:grid;gap:12px;margin-block:1.2em}
.mistake{border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}
.mistake>p,.stat>span,.verdict>*{margin:0!important}
.mistake__err,.mistake__fix{padding:12px 16px 12px 44px;position:relative}
.mistake__err{background:var(--surface);color:var(--ink)}
.mistake__err strong,.mistake__fix strong{font-weight:700;color:var(--ink)}
.mistake__err::before,.mistake__fix::before{position:absolute;left:16px;top:11px;font-weight:700}
.mistake__err::before{content:"✕";color:#b91c1c}
.mistake__fix{color:var(--ink-2)}
.mistake__fix::before{content:"✓";color:var(--herb)}

/* ---------- verdict / avis du chef ---------- */
.verdict{margin-block:1.4em;padding:18px 20px;border-radius:var(--radius-lg);border:2px solid var(--ink);display:grid;gap:6px}
.verdict__label{font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--accent-text)}
.verdict__title{font-size:19px;font-weight:700;color:var(--ink)}

/* ---------- tables ---------- */
.table-wrap{overflow-x:auto;margin-block:1.2em;border:1px solid var(--line);border-radius:var(--radius);-webkit-overflow-scrolling:touch}
.tbl{width:100%;border-collapse:collapse;font-size:15px;line-height:1.45}
.tbl caption{caption-side:top;text-align:left;padding:12px 14px;font-weight:700;color:var(--ink)}
.tbl th,.tbl td{padding:10px 14px;text-align:left;vertical-align:top;border-bottom:1px solid var(--line)}
.tbl thead th{background:var(--surface);color:var(--ink);font-weight:700;white-space:nowrap}
.tbl tbody tr:last-child>*{border-bottom:0}
.tbl tbody th{font-weight:700;color:var(--ink)}
.tbl--compare tbody th{position:sticky;left:0;background:var(--ground)}
.tbl .yes,.tbl .no,.tbl .partial{font-weight:700;white-space:nowrap}
.tbl .yes{color:var(--herb)}.tbl .no{color:#b91c1c}.tbl .partial{color:#b45309}
.tbl .yes::before{content:"✓ "}.tbl .no::before{content:"✕ "}.tbl .partial::before{content:"≈ "}
.tbl--season{font-size:13px}
.tbl--season th,.tbl--season td{padding:6px 4px;text-align:center}
.tbl--season tbody th{text-align:left;padding-left:12px;white-space:nowrap}
.tbl--season td.on{background:var(--herb-soft);box-shadow:inset 0 0 0 3px var(--ground);border-radius:6px}
.tbl--season td.on::after{content:"";display:block;width:8px;height:8px;margin:auto;border-radius:50%;background:var(--herb)}

/* ---------- lists: étapes, checklist, pour/contre ---------- */
.steps{counter-reset:s;display:grid;gap:14px;margin-block:1.2em;padding:0!important;list-style:none!important}
.steps>li{counter-increment:s;position:relative;padding-left:46px;min-height:32px}
.steps>li::before{content:counter(s);position:absolute;left:0;top:0;width:32px;height:32px;border-radius:50%;background:var(--ink);color:var(--ground);display:grid;place-items:center;font-weight:700;font-size:14px}
.steps h3{font-size:17px;color:var(--ink);margin:3px 0 4px}
.checklist{display:grid;gap:8px;margin-block:1em;padding:0!important;list-style:none!important}
.checklist>li{position:relative;padding-left:30px}
.checklist>li::before{content:"";position:absolute;left:2px;top:5px;width:16px;height:9px;border-left:2.5px solid var(--herb);border-bottom:2.5px solid var(--herb);transform:rotate(-45deg)}
.proscons{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px;margin-block:1.2em}
.proscons>div{border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px}
.proscons h3,.proscons .proscons__title{font-size:16px;margin:0 0 8px;color:var(--ink)}
.proscons ul{display:grid;gap:6px;padding:0!important;list-style:none!important}
.proscons li{padding-left:22px;position:relative}
.pros li::before{content:"+";position:absolute;left:0;color:var(--herb);font-weight:700}
.cons li::before{content:"−";position:absolute;left:0;color:#b91c1c;font-weight:700}

/* ---------- chiffres clés ---------- */
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;margin-block:1.2em}
.stat{background:var(--surface);border-radius:var(--radius);padding:14px 16px;display:grid;gap:2px}
.stat__num{font-size:20px;font-weight:700;line-height:1.2;color:var(--ink)}
.stat__label{font-size:14px;color:var(--ink-3)}

/* ---------- cartes de liens (guides, recettes liées) ---------- */
.linkgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(260px,100%),1fr));gap:12px;margin-block:1.2em;padding:0!important;list-style:none!important}
.linkcard{display:grid;gap:4px;height:100%;padding:14px 16px;border:1px solid var(--line);border-radius:var(--radius);color:var(--ink);text-decoration:none!important}
.linkcard:hover{border-color:var(--ink);color:var(--ink)}
.linkcard__tag{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--accent-text)}
.linkcard__title{font-weight:700;line-height:1.3}
.linkcard__text{font-size:14px;color:var(--ink-3);line-height:1.5}

/* ---------- numbered recipe list (collection-item.tpl inside ol.clist) ---------- */
.clist{counter-reset:ci;display:grid;gap:28px;margin-block:20px;padding:0!important;list-style:none!important}
.citem{counter-increment:ci;display:grid;grid-template-columns:minmax(0,300px) minmax(0,1fr);gap:22px;align-items:start}
.citem__media{position:relative;display:block;border-radius:var(--radius);overflow:hidden;aspect-ratio:4/3;background:var(--ph)}
.citem__media img{width:100%;height:100%;object-fit:cover}
.citem__media::before{content:counter(ci);position:absolute;left:10px;top:10px;z-index:1;min-width:36px;height:36px;padding:0 8px;border-radius:999px;background:var(--ground);color:var(--ink);display:grid;place-items:center;font-weight:700;font-size:16px;box-shadow:0 2px 8px rgba(0,0,0,.18)}
.citem__body{display:grid;gap:8px;align-content:start}
.citem__title{font-size:clamp(19px,2vw,23px);line-height:1.25;font-weight:700;margin:0!important;color:var(--ink)}
.citem__desc{color:var(--ink-2);line-height:1.6}
.citem__title a,.tag-text .citem__title a{color:var(--ink);text-decoration:none}
.citem__title a:hover{color:var(--accent-text)}
.clist-hero{margin:8px 0 18px}
.clist-hero img{width:100%;max-height:440px;object-fit:cover;border-radius:var(--radius-lg);background:var(--ph)}
@media (max-width:640px){.citem{grid-template-columns:1fr;gap:12px}}
.linkgrid:has(>:nth-child(3)){scroll-padding-inline:var(--gutter)}

/* phones: 3+ link cards become a swipe row instead of a long column */
@media (max-width:640px){
  .linkgrid:has(>:nth-child(3)){grid-auto-flow:column;grid-auto-columns:78%;grid-template-columns:none;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;margin-inline:calc(var(--gutter)*-1);padding-inline:var(--gutter);padding-bottom:4px}
  .linkgrid:has(>:nth-child(3))::-webkit-scrollbar{display:none}
  .linkgrid:has(>:nth-child(3))>*{scroll-snap-align:start}
}

/* ---------- plats / variantes (image + texte) ---------- */
.dishes{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(240px,100%),1fr));gap:18px;margin-block:1.2em;padding:0!important;list-style:none!important}
.dish{display:grid;gap:8px;align-content:start}
.dish img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:var(--radius);margin:0!important;background:var(--ph)}
.dish h3,.dish__title{font-size:17px;font-weight:700;line-height:1.3;color:var(--ink);margin:0!important}
.dish p{font-size:15px;color:var(--ink-2)}

/* ---------- sommaire, citation, chronologie, séparateur ---------- */
.toc{margin-block:1.2em;padding:14px 18px;border-radius:var(--radius);background:var(--surface)}
.toc__title{display:block;font-weight:700;color:var(--ink);margin-bottom:6px}
.toc ol{list-style:decimal;padding-left:1.3em;display:grid;gap:4px}
.toc a{text-decoration:none!important;color:var(--ink-2)}
.quote{margin-block:1.4em;padding:4px 0 4px 18px;border-left:3px solid var(--accent);font-size:19px;line-height:1.5;color:var(--ink)}
.quote cite{display:block;margin-top:6px;font-size:14px;font-style:normal;color:var(--ink-3)}
.timeline{display:grid;gap:0;margin-block:1.2em;padding:0!important;list-style:none!important;border-left:2px solid var(--line);margin-left:6px}
.timeline>li{position:relative;padding:0 0 16px 22px}
.timeline>li::before{content:"";position:absolute;left:-7px;top:6px;width:12px;height:12px;border-radius:50%;background:var(--accent)}
.timeline__time{display:block;font-weight:700;color:var(--ink)}
.sep{border:0;border-top:1px solid var(--line);margin-block:2em}

/* ---------- tag-page texts (DLE Filter top/bottom): text rhythm without .prose ---------- */
.tag-text{color:var(--ink-2);line-height:1.7}
.tag-text>.sect,.tag-text section.sect{padding-block:32px 0}
.tag-text .h2{margin-bottom:10px;color:var(--ink)}
.tag-text .h3{font-size:19px;font-weight:700;color:var(--ink);margin:26px 0 10px}
.tag-text p+p,.tag-text p+ul,.tag-text ul+p{margin-top:.9em}
.tag-text .sect>p,.tag-text .lead{max-width:76ch}
.tag-text a:not([class]){color:var(--accent-text);text-decoration:underline;text-underline-offset:3px}
.tag-text ul:not([class]){list-style:disc;padding-left:1.2em}
.tag-text ol:not([class]){list-style:decimal;padding-left:1.2em}
.tag-text .grid,.tag-text .slider,.tag-text .linkgrid,.tag-text .dishes,.tag-text .mistakes,.tag-text .steps,.tag-text .table-wrap,.tag-text .faq{margin-top:16px}
.tag-text p>.more{display:inline-block;margin-top:10px}

/* ---------- slider: scroll row + previous/next buttons (added by app.js on devices with a mouse) ---------- */
.slider{position:relative}
.slider .rail{scrollbar-width:none}
.slider .rail::-webkit-scrollbar{display:none}
.slider__btn{position:absolute;top:calc(50% - 40px);z-index:2;width:44px;height:44px;border-radius:50%;border:1px solid var(--line);background:var(--ground);color:var(--ink);display:grid;place-items:center;cursor:pointer;box-shadow:0 4px 14px rgba(0,0,0,.12)}
.slider__btn:hover{border-color:var(--ink)}
.slider__btn[disabled]{opacity:0;pointer-events:none}
.slider__btn--prev{left:-14px}.slider__btn--next{right:-14px}
.slider__btn svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}
@media (hover:none),(max-width:640px){.slider__btn{display:none}}

/* ---------- ingredient tiles, families, A–Z, season ---------- */
.tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:18px 14px}
.rail--tiles{grid-auto-columns:150px!important;gap:14px}
.tile{display:grid;gap:8px;text-align:center;font-weight:700;font-size:14px;line-height:1.3;color:var(--ink)}
.tile img,.tile__ph{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:var(--radius);background:var(--ph)}
.tile:hover img{filter:brightness(.95)}
.fams{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(220px,100%),1fr));gap:22px}
.fam{display:grid;gap:6px;align-content:start}
.fam__link{display:grid;gap:4px;color:var(--ink)}
.fam__link img{width:100%;aspect-ratio:16/10;object-fit:cover;border-radius:var(--radius);background:var(--ph)}
.fam__name{font-size:18px;font-weight:700;margin-top:4px}
.fam__count{font-size:13px;color:var(--ink-3)}
.fam__top{font-size:14px;color:var(--ink-3);line-height:1.5}
.fam__top a{color:var(--ink-2);text-decoration:underline;text-decoration-color:var(--line);text-underline-offset:3px}
.ing-search input{width:100%;max-width:560px;min-height:50px;padding:0 18px;border:1px solid var(--line);border-radius:999px;background:var(--ground);font-size:16px}
.ing-search input:focus{outline:none;border-color:var(--ink)}
.az-bar{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:18px;position:sticky;top:64px;z-index:3;background:var(--ground);padding-block:8px}
.az-bar a{min-width:34px;height:34px;display:grid;place-items:center;border-radius:8px;background:var(--surface);font-weight:700;font-size:14px}
.az-bar a:hover{background:var(--ink);color:var(--ground)}
.az{columns:4 200px;column-gap:28px}
.az__group{break-inside:avoid;margin-bottom:18px}
.az__letter{font-size:20px;font-weight:700;color:var(--accent-text);margin:18px 0 6px;scroll-margin-top:120px}
.az__group .az__letter{margin-top:0}
.az__list{display:grid;gap:3px}
.az__list a{color:var(--ink-2)}
.az__list a:hover{color:var(--accent-text)}
.chips--wrap{flex-wrap:wrap!important;overflow:visible!important;margin-inline:0!important;padding-inline:0!important}
.ing-facts{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px}
.ing-facts__season{font-weight:700;color:var(--herb)}
.season-bar{display:grid;grid-template-columns:repeat(12,minmax(0,28px));gap:3px;width:100%;max-width:400px}
.season-bar li a,.season-bar li{display:grid;place-items:center;height:28px;border-radius:6px;font-size:12px;font-weight:700;color:var(--ink-3);background:var(--surface)}
.season-bar li.on,.season-bar li.on a{background:var(--herb);color:#fff}
.season-bar li[aria-current]{box-shadow:0 0 0 2px var(--ink)}
.cal summary{list-style:none}
.cal summary::-webkit-details-marker{display:none}
.cal[open] summary{margin-bottom:12px}
.page-head__media{position:relative}
.season-badge{position:absolute;left:12px;top:12px;padding:6px 12px;border-radius:999px;font-size:13px;font-weight:700;line-height:1.2;box-shadow:0 2px 10px rgba(0,0,0,.18)}
.season-badge--on{background:var(--herb);color:#fff}
.season-badge--off{background:#fff;color:#57534e}
.season-badge--year{background:#fff;color:var(--herb)}
.ing-search{position:relative;max-width:560px}
.ing-results{margin-top:10px;display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.ing-results a{display:inline-flex;align-items:center;min-height:36px;padding:0 14px;border-radius:999px;background:var(--surface);font-weight:700;font-size:14px}
.ing-results a:first-of-type{background:var(--ink);color:var(--ground)}
.ing-results p{width:100%;font-size:14px;color:var(--ink-3)}
.more{font-weight:700;font-size:15px;color:var(--accent-text);white-space:nowrap}

/* ---------- v0.13: Menu du jour / Menu de la semaine (RP Menus) ---------- */
.menu-head .lead:empty{display:none}
.menu-date{font-weight:700;color:var(--ink-3);margin:4px 0 18px}
.menu-main .eyebrow,.menu-around .eyebrow{display:block;margin-bottom:10px}
.citem--menu{grid-template-columns:minmax(0,300px) minmax(0,1fr)}
.citem--menu .citem__media::before{content:none}
.menu-main .citem--menu{grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:28px}
.menu-main .citem__title{font-size:clamp(24px,3vw,32px)}
.menu-around{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(260px,100%),1fr));gap:24px}
.menu-daynav{position:sticky;top:64px;z-index:3;background:var(--ground);padding-block:10px;margin-bottom:6px}
.menu-day{padding-block:24px;border-top:1px solid var(--line);scroll-margin-top:130px}
.menu-day>h2{display:flex;align-items:center;gap:10px;margin-bottom:14px}
.menu-day.is-today>h2 .badge{position:static;font-size:12px}
.menu-day__info,.menu-day__side,.menu-day__note{font-size:14px;color:var(--ink-3);margin-top:8px}
.menu-day__note{color:var(--ink-2)}
.shopping__intro{color:var(--ink-3);font-size:14px;margin:-6px 0 16px}
.shopping__groups{columns:3 240px;column-gap:32px}
.shopping__group{break-inside:avoid;margin-bottom:20px}
.shopping__group .h3{font-size:16px;margin-bottom:6px}
.shopping__list li{padding:5px 0;border-bottom:1px solid var(--line)}
.shopping__list label{display:flex;gap:10px;align-items:flex-start;cursor:pointer}
.shopping__list input{width:18px;height:18px;margin-top:3px;flex:none;accent-color:var(--herb)}
.shopping__list input:checked+span{text-decoration:line-through;color:var(--ink-3)}
@media (max-width:640px){.menu-main .citem--menu,.citem--menu{grid-template-columns:1fr}}
@media print{
  .hdr,.ftr,.crumbs,.menu-daynav,.menu-actions,.ad,.moments,.skip{display:none!important}
  .menu-day{break-inside:avoid;padding-block:10px}
  .citem--menu{grid-template-columns:110px 1fr!important;gap:12px}
  .citem--menu .citem__desc,.citem--menu .more{display:none}
  .shopping{break-before:page}
  .shopping__list input{accent-color:#000}
}
/* v0.15: evening profile under each day of the weekly menu (RP Menus 1.3) */
.menu-day__profile{font-size:13px;font-weight:700;letter-spacing:.02em;color:var(--accent-text);margin:-8px 0 12px}

/* ---------- v0.16: shopping list details + admin recipe check ---------- */
.shopping__list li{display:flex;flex-wrap:wrap;align-items:flex-start;column-gap:10px}
.shopping__list label{flex:1 1 auto}
.shopping__src{font-size:13px;color:var(--ink-3);margin-left:28px;flex-basis:100%}
.shopping__src summary{cursor:pointer;display:inline;color:var(--ink-3);text-decoration:underline;text-decoration-color:var(--line);text-underline-offset:3px}
.shopping__src ul{margin:4px 0 2px;padding-left:16px!important;list-style:disc!important}
.shopping__doubt{color:#b45309;font-weight:700}
.rp-check{margin:14px 0 18px}
.rp-check ul{list-style:disc;padding-left:1.2em;font-size:14px}
@media print{.shopping__src{display:none}}
/* v0.17: links between the weekly menus (classique, petit budget, végétarien) */
.menu-themes{padding-top:28px}
.menu-themes .h3{font-size:17px;margin-bottom:10px}
@media print{.menu-themes{display:none}}

/* ---------- v0.19: today stands out in the weekly menu ---------- */
.menu-day.is-today{position:relative;margin:14px calc(var(--gutter) * -0.5);padding:22px calc(var(--gutter) * 0.5) 24px;border-top:0;border-radius:var(--radius-lg);background:var(--accent-soft);box-shadow:inset 4px 0 0 var(--accent)}
.menu-day.is-today + .menu-day{border-top:0}
.menu-day.is-today>h2 .badge{position:static;display:inline-flex;align-items:center;gap:6px;padding:5px 12px;border-radius:999px;background:var(--accent);color:#fff;font-size:13px;font-weight:700;letter-spacing:.02em;text-transform:none}
.menu-day.is-today>h2 .badge::before{content:"";width:7px;height:7px;border-radius:50%;background:#fff}
.menu-day.is-today .menu-day__profile{color:var(--ink)}
.menu-daynav .chip--on{background:var(--accent);color:#fff}
@media print{.menu-day.is-today{background:none;box-shadow:none;margin:0;padding:10px 0}}

/* ---------- v0.23: seasonal recipe pages /recettes-de-saison/ (RP Season) ---------- */
.season-lead p{margin:0}
.season-market{margin-top:14px}
.season-jump{padding-top:18px}
.season-jump .chip{background:var(--ground);border-color:var(--line)}
.stars{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(300px,100%),1fr));gap:18px}
.star{display:grid;grid-template-columns:110px minmax(0,1fr);gap:14px;align-items:start;padding:14px;border:1px solid var(--line);border-radius:var(--radius)}
.star__media img{width:110px;height:auto;aspect-ratio:4/3;object-fit:cover;border-radius:10px;background:var(--ph)}
.star__name{font-size:18px;font-weight:700;margin-bottom:6px}
.star__name a{color:var(--ink)}
.star__links{display:grid;gap:4px;margin-bottom:8px;font-size:14px;line-height:1.4}
.star__links a{color:var(--ink-2);text-decoration:underline;text-decoration-color:var(--line);text-underline-offset:3px}
.star__links a:hover{color:var(--accent-text)}
.season-market-lists{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(220px,100%),1fr));gap:18px 28px}
.season-market__col .h3{font-size:16px;margin-bottom:8px}
.season-names{display:flex;flex-wrap:wrap;gap:4px 12px;font-size:15px}
.season-names a{color:var(--ink-2);text-decoration:underline;text-decoration-color:var(--line);text-underline-offset:3px}
.season-names a:hover{color:var(--accent-text)}
.season-next{margin-top:28px}
.season-months{padding-top:28px}
.season-months .h3{font-size:17px;margin-bottom:10px}
.season-months__more{margin-top:14px;font-size:15px}
.season-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(200px,100%),1fr));gap:12px}
.season-card{display:grid;gap:4px;height:100%;padding:14px 16px;border:1px solid var(--line);border-radius:var(--radius);color:var(--ink)}
.season-card:hover{border-color:var(--ink);color:var(--ink)}
.season-card.is-current{background:var(--accent-soft);border-color:var(--accent)}
.season-card__month{font-size:18px;font-weight:700}
.season-card__products{font-size:14px;color:var(--ink-3)}
@media (max-width:640px){.star{grid-template-columns:84px minmax(0,1fr)}.star__media img{width:84px}}

/* ===== Service pages: search, favorites, author news, profile, messages ===== */
/* lists of cards (search, favorites, /user/x/news/): DLE's #dle-content becomes the grid, everything else spans it */
.page--list #dle-content{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(230px,100%),1fr));gap:32px 22px}
.page--list #dle-content>:not(.card){grid-column:1/-1}
.page--list #dle-content>script{display:none}
.search-head{display:flex;flex-direction:column;gap:12px;padding-top:8px}
.search-head__field{max-width:640px}
.search-head__field .icon{color:var(--ink-3)}
.search-head__field input{flex:1;min-width:0;border:0;background:transparent;font-size:16px;outline:none}
.search-head__msg{color:var(--ink-3);font-size:15px}
.search-ext{max-width:640px}
.search-ext select{width:100%}
.search-ext__btns{display:flex;gap:10px;flex-wrap:wrap;margin-top:10px}
.search-line{grid-column:1/-1}
.profile{padding-top:8px}
.profile__head{display:flex;gap:24px;align-items:flex-start;flex-wrap:wrap}
.profile__avatar{width:112px;height:112px;border-radius:50%;object-fit:cover;background:var(--surface);flex:none}
.profile__text{flex:1 1 320px;min-width:0;display:flex;flex-direction:column;gap:10px}
.profile__meta{color:var(--ink-3);font-size:15px}
.profile__online{color:var(--herb)}
.profile__bio{max-width:68ch;color:var(--ink-2)}
.profile__social:empty{display:none}
.profile__actions{display:flex;gap:10px;flex-wrap:wrap}
.profile .stats{max-width:420px;margin-top:24px}
.profile__edit{margin-block:16px 32px}
.profile__edit>summary{cursor:pointer}
.profile__edit .form{margin-top:16px;max-width:640px}
.profile__edit .form .h3{margin-top:18px}
.profile__edit .xfields{width:100%}
.profile__edit .xfields td{padding:4px 0;display:block}
.form select,.form input[type=file]{width:100%}
.form .check label{font-weight:400}
.pm{display:flex;flex-direction:column;gap:16px;padding-top:8px;max-width:820px}
.pm__nav a{display:inline-flex;align-items:center;min-height:36px;padding:0 14px;border-radius:999px;background:var(--surface);color:var(--ink)}
.pm__head{display:flex;gap:12px;align-items:center;margin-bottom:12px}
.pm__head img{border-radius:50%;object-fit:cover}
.pm__list table{width:100%;border-collapse:collapse}
.pm__list td,.pm__list th{padding:10px 8px;border-bottom:1px solid var(--line);text-align:left}
.pm__actions a{color:var(--accent-text)}
.pm__btns{display:flex;gap:10px;flex-wrap:wrap;margin-top:10px}
/* theme hubs (RP Themes) */
.theme-links .chips{margin-top:4px}
.theme-menu{margin-top:2px}

/* ===== RP Search: /recherche/ ===== */
.srch{padding-top:8px}
.srch__form{display:flex;flex-direction:column;gap:14px}
.srch__field{max-width:680px}
.srch__field .icon{color:var(--ink-3)}
.srch__note{margin-top:14px;color:var(--ink-2)}
.srch__pages{display:flex;flex-direction:column;gap:8px;margin-top:18px}
.srch__count{margin-top:18px;color:var(--ink-3)}
.srch__count b{color:var(--ink)}
.srch__active{margin-top:10px;align-items:center}
.srch__clear{font-size:14px;font-weight:700;color:var(--accent-text);padding:0 6px}
.srch__filters{margin-top:12px}
.srch__toggle{cursor:pointer;list-style:none}
.srch__toggle::-webkit-details-marker{display:none}
.srch__groups{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.srch__group{position:relative}
.srch__gbtn{display:inline-flex;align-items:center;gap:6px;min-height:40px;padding:0 14px;border:1px solid var(--line);border-radius:999px;background:var(--ground);font-size:15px;font-weight:700;cursor:pointer;list-style:none;white-space:nowrap}
.srch__gbtn::-webkit-details-marker{display:none}
.srch__gbtn:hover,.srch__group[open]>.srch__gbtn{border-color:var(--ink)}
.srch__gbtn .icon{width:16px;height:16px;transition:transform .2s}
.srch__group[open]>.srch__gbtn .icon{transform:rotate(180deg)}
.srch__group.is-on>.srch__gbtn{background:var(--ink);border-color:var(--ink);color:var(--ground)}
.srch__gval{font-weight:400}
.srch__panel{position:absolute;top:calc(100% + 6px);left:0;z-index:30;width:max-content;max-width:min(440px,90vw);padding:12px;background:var(--ground);border:1px solid var(--line);border-radius:16px;box-shadow:0 12px 32px rgba(0,0,0,.14)}
.srch__panel .chips{flex-wrap:wrap}
.srch__group:nth-last-child(-n+2) .srch__panel{left:auto;right:0}
.srch__n{font-size:12px;color:var(--ink-3);font-weight:400}
.chip--on .srch__n{color:inherit;opacity:.8}
.srch__results{padding-top:24px}
.srch__empty{margin-top:16px;display:flex;flex-direction:column;gap:12px}
@media (min-width:900px){
  .srch__filters[open]>.srch__toggle{display:none}
  .srch__groups{margin-top:4px}
}
@media (max-width:899px){
  /* phones: each group open, title above a scrolling row of chips */
  .srch__groups{display:grid;gap:14px}
  .srch__gbtn{display:block;min-height:0;padding:0;border:0;background:none;margin-bottom:6px}
  .srch__gbtn .icon,.srch__gval{display:none}
  .srch__group.is-on>.srch__gbtn{background:none;color:inherit}
  .srch__gtitle{font-size:13px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3)}
  .srch__panel{position:static;width:auto;max-width:none;padding:0;border:0;box-shadow:none;background:none}
  .srch__panel .chips{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin-inline:calc(var(--gutter)*-1);padding-inline:var(--gutter);padding-bottom:4px}
  .srch__panel .chips::-webkit-scrollbar{display:none}
}

/* ===== Recipe hub /recettes/ + course pages (RP Hub) ===== */
.hub-top{display:flex;flex-direction:column;gap:16px;margin-top:8px}
.hub-search{max-width:640px}
.hub-search input{flex:1;min-width:0;border:0;background:transparent;font-size:16px;outline:none}
.hub-jump{font-size:15px}
.hub-tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:10px;padding:0;list-style:none}
.hub-tile{display:flex;flex-direction:column;gap:6px;height:100%;color:var(--ink)}
.hub-tile__img{display:block;aspect-ratio:4/3;border-radius:var(--radius);overflow:hidden;background:var(--ph)}
.hub-tile__img img{width:100%;height:100%;object-fit:cover;transition:transform .3s}
.hub-tile:hover .hub-tile__img img{transform:scale(1.04)}
.hub-tile__name{font-weight:700;line-height:1.2;hyphens:auto;-webkit-hyphens:auto;overflow-wrap:break-word}
.hub-tile__n{font-size:13px;color:var(--ink-3)}
.hub-short__title{font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);margin-bottom:6px}
.hub-sub{display:flex;flex-direction:column;gap:14px}
.hub-sub__grps{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(260px,100%),1fr));gap:12px}
.hub-sub__grp{border:1px solid var(--line);border-radius:var(--radius);padding:12px 14px;display:flex;flex-direction:column;gap:8px}
.hub-sub__title{font-weight:700;color:var(--ink)}
.hub-sub__title span,.hub-n{font-size:12px;font-weight:400;color:var(--ink-3)}
.hub-listhead{align-items:flex-end}
.hub-listhead__n{font-size:14px;color:var(--ink-3)}
.hub-listhead .btn .icon{width:18px;height:18px}
@media (min-width:1100px){.hub-tiles{grid-template-columns:repeat(7,1fr);gap:14px}}
@media (max-width:599px){
  /* phones: compact rows (small square photo + name and count), 2 per line */
  .hub-tiles{grid-template-columns:1fr 1fr;gap:8px}
  .hub-tile{display:grid;grid-template-columns:52px 1fr;grid-template-rows:auto auto;column-gap:10px;row-gap:0;align-content:center;padding:6px;border:1px solid var(--line);border-radius:var(--radius)}
  .hub-tile__img{grid-row:1 / 3;width:52px;height:52px;aspect-ratio:auto;border-radius:10px}
  .hub-tile__name{align-self:end}
  .hub-tile__n{align-self:start}
  .hub-tile__name{font-size:15px}
  .hub-tile__n{font-size:12px}
}


/* RP Page Builder 1.1 components (v0.41) */.rp-c{padding-block:32px 0}.rp-c ul.chips,.rp-c ul.linkgrid{list-style:none;padding:0;margin-block:0}.rp-c .page-head{margin-block:0}.rp-c .faq{margin:0}.rp-c .note{margin-block:0}.rp-links{columns:2 220px;column-gap:28px;list-style:none;margin:0;padding:0}.rp-links li{break-inside:avoid;border-bottom:1px solid var(--line)}.rp-links a{display:block;padding:10px 0;color:var(--ink);font-weight:600;text-decoration:none}.rp-links a:hover,.rp-links a:focus-visible{color:var(--accent);text-decoration:underline}
/* RP Page Builder 1.1.1 lists (v0.42) */.rp-links--bare{columns:2 220px;column-gap:28px}.rp-links--bare>a{display:block;break-inside:avoid;padding:10px 0;border-bottom:1px solid var(--line);color:var(--ink);font-weight:600;text-decoration:none}.rp-links--bare>a:hover,.rp-links--bare>a:focus-visible{color:var(--accent);text-decoration:underline}.rp-catgroups{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(300px,100%),1fr));gap:8px 32px}.rp-catgroup .h3{margin:18px 0 10px}.rp-catgroup .h3 a{color:var(--ink);text-decoration:none}.rp-catgroup .h3 a:hover{color:var(--accent)}.rp-catgroup .chips{flex-wrap:wrap;margin:0;padding:0;list-style:none}.rp-c .tiles{list-style:none;padding:0;margin:0}.rp-c .tile .muted{font-weight:400;font-size:12px}.rp-c .sect__head .muted{font-weight:400}
/* v0.48: Catalogue filters (RP Page Builder 1.2.0, search-page markup) */.rp-c--catalogue .srch__filters{margin:0 0 16px}.rp-c--catalogue .srch__active{margin:-4px 0 18px}.rp-c--catalogue .srch__empty{margin:8px 0 24px}@media (min-width:900px){.rp-c--catalogue .srch__groups{margin-top:0}.rp-c--catalogue .rp-sort{margin-left:auto}.rp-c--catalogue .rp-sort .srch__panel{left:auto;right:0}}
/* v0.49: an older ".rp-c ul.chips" rule (padding:0; margin-block:0) won over the filter rows: phone chip rows lost their side padding (chips at the screen edge) and the chosen-filter row lost its bottom space */@media (max-width:899px){.rp-c .srch__panel ul.chips{padding-inline:var(--gutter);padding-bottom:4px}}.rp-c.rp-c--catalogue ul.srch__active{margin:0 0 20px}
