/* Occasional Chef - styles de l'espace connecte (app/) et des pages d'auth.
   Ne touche pas a components.css (ecrit par ailleurs). Reutilise les tokens. */

/* ------------------------------------------------------------------ AUTH */
.auth-shell { display: flex; justify-content: center; }
.auth-card {
  width: 100%;
  max-width: 30rem;
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  padding: var(--space-7) var(--space-6);
  box-shadow: 0 10px 40px -28px rgba(36, 27, 22, 0.5);
}
.auth-card__title { font-size: var(--step-3); margin: var(--space-2) 0 var(--space-3); }
.auth-card__lead { margin-bottom: var(--space-5); }
.auth-card__alt { margin-top: var(--space-5); font-size: var(--step--1); color: var(--ink-soft); text-align: center; }
.auth-row { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-4); }
.auth-check__label { display: flex; gap: var(--space-3); align-items: flex-start; font-weight: 400; color: var(--ink-soft); font-size: var(--step--1); cursor: pointer; }
.auth-check__label input { margin-top: 0.2em; }
@media (max-width: 30rem) { .auth-row { grid-template-columns: 1fr; } }

/* --------------------------------------------------------------- LAYOUT */
.app-page { padding-top: var(--space-6); padding-bottom: var(--space-8); }
.app-head { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: var(--space-4); margin-bottom: var(--space-6); }
.app-head h1 { font-size: var(--step-3); }
.app-head p { color: var(--ink-soft); margin-top: var(--space-2); max-width: 52ch; }
.app-head__actions { display: flex; gap: var(--space-3); flex-wrap: wrap; }

.app-panel {
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  padding: var(--space-5);
}
.app-panel + .app-panel { margin-top: var(--space-5); }
.app-panel__title { font-family: var(--font-serif); font-size: var(--step-1); margin-bottom: var(--space-4); }

.app-cols { display: grid; grid-template-columns: 1.7fr 1fr; gap: var(--space-6); align-items: start; }
@media (max-width: 56rem) { .app-cols { grid-template-columns: 1fr; } }

/* ------------------------------------------------------- TABLEAU DE BORD */
.stat-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(8.5rem, 1fr)); gap: var(--space-4); }
.stat-card {
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  padding: var(--space-4) var(--space-5);
}
.stat-card__value { font-family: var(--font-serif); font-size: var(--step-3); color: var(--ink); line-height: 1; }
.stat-card__label { font-size: var(--step--1); color: var(--ink-soft); margin-top: var(--space-2); }

.quick-links { display: grid; grid-template-columns: repeat(auto-fit, minmax(12rem, 1fr)); gap: var(--space-3); }
.quick-link {
  display: flex; flex-direction: column; gap: var(--space-1);
  padding: var(--space-4); border: 1px solid var(--line); border-radius: var(--radius);
  text-decoration: none; color: var(--ink); background: var(--surface);
  transition: border-color 150ms ease, transform 150ms ease;
}
.quick-link:hover { border-color: var(--terracotta); transform: translateY(-2px); }
.quick-link strong { font-family: var(--font-serif); font-size: var(--step-0); }
.quick-link span { font-size: var(--step--1); color: var(--ink-soft); }

.activity { list-style: none; padding: 0; display: flex; flex-direction: column; }
.activity li { padding: var(--space-3) 0; border-bottom: 1px solid var(--line); font-size: var(--step-0); color: var(--ink-soft); }
.activity li:last-child { border-bottom: none; }
.activity a { color: var(--ink); text-decoration: none; font-weight: 600; }
.activity a:hover { color: var(--terracotta); }
.activity time { color: var(--ink-faint); font-size: var(--step--1); }

/* -------------------------------------------------------- LISTES RECETTES */
.recipe-rows { list-style: none; padding: 0; display: flex; flex-direction: column; gap: var(--space-3); }
.recipe-row {
  display: flex; align-items: center; gap: var(--space-4);
  padding: var(--space-3) var(--space-4);
  border: 1px solid var(--line); border-radius: var(--radius); background: var(--surface);
}
.recipe-row__thumb { width: 4rem; height: 4rem; border-radius: var(--radius-sm); object-fit: cover; background: var(--surface-sunk); flex-shrink: 0; }
.recipe-row__body { flex: 1; min-width: 0; }
.recipe-row__title { font-family: var(--font-serif); font-size: var(--step-0); }
.recipe-row__title a { color: var(--ink); text-decoration: none; }
.recipe-row__title a:hover { color: var(--terracotta); }
.recipe-row__meta { font-size: var(--step--1); color: var(--ink-faint); margin-top: var(--space-1); display: flex; gap: var(--space-3); flex-wrap: wrap; }
.recipe-row__actions { display: flex; gap: var(--space-2); flex-shrink: 0; }
.badge { display: inline-block; font-size: var(--step--1); padding: 0.15em 0.6em; border-radius: var(--radius-pill); background: var(--surface-sunk); color: var(--ink-soft); }
.badge--private { background: var(--mustard-tint); color: var(--ink-soft); }
.badge--public { background: var(--herb-tint); color: var(--herb); }

/* ------------------------------------------------------------ FORMULAIRES */
.form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0 var(--space-4); }
@media (max-width: 40rem) { .form-grid { grid-template-columns: 1fr; } }
.field--full { grid-column: 1 / -1; }
.repeater { display: flex; flex-direction: column; gap: var(--space-2); }
.repeater__row { display: flex; gap: var(--space-2); }
.repeater__row .input, .repeater__row .textarea { flex: 1; }
.repeater__remove {
  flex-shrink: 0; border: 1px solid var(--line); background: var(--surface);
  border-radius: var(--radius-sm); width: 2.4rem; cursor: pointer; color: var(--ink-soft);
}
.repeater__remove:hover { border-color: var(--danger); color: var(--danger); }
.repeater__add { align-self: flex-start; }

.ai-panel { border: 1px dashed var(--line-strong); border-radius: var(--radius); padding: var(--space-5); background: var(--surface-sunk); }
.ai-panel--off { text-align: center; }
.ai-panel__badge { display: inline-block; font-size: var(--step--1); text-transform: uppercase; letter-spacing: 0.06em; color: var(--mustard); font-weight: 700; }

/* ---------------------------------------------------------- MEAL PLANNER */
.planner-toolbar { display: flex; flex-wrap: wrap; gap: var(--space-3); align-items: center; justify-content: space-between; margin-bottom: var(--space-5); }
.planner-grid { display: grid; grid-template-columns: 6rem repeat(7, minmax(8rem, 1fr)); gap: 1px; background: var(--line); border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; min-width: 56rem; }
.planner-scroll { overflow-x: auto; }
.planner-cell { background: var(--surface); padding: var(--space-3); min-height: 5rem; }
.planner-cell--head { background: var(--surface-sunk); font-weight: 600; text-align: center; font-size: var(--step--1); }
.planner-cell--slot { background: var(--surface-sunk); font-weight: 600; font-size: var(--step--1); display: flex; align-items: center; }
.planner-cell.is-target { outline: 2px dashed var(--terracotta); outline-offset: -2px; }
.planner-item { font-size: var(--step--1); background: var(--terracotta-tint); border-radius: var(--radius-sm); padding: 0.3em 0.5em; margin-bottom: var(--space-2); display: flex; justify-content: space-between; gap: 0.4em; align-items: flex-start; }
.planner-item button { border: none; background: none; cursor: pointer; color: var(--ink-faint); font-size: 1.1em; line-height: 1; padding: 0; }
.planner-item button:hover { color: var(--danger); }
.planner-add { border: 1px dashed var(--line-strong); background: none; border-radius: var(--radius-sm); width: 100%; padding: 0.3em; cursor: pointer; color: var(--ink-faint); font-size: 1.1em; }
.planner-add:hover { border-color: var(--terracotta); color: var(--terracotta); }

.search-results { list-style: none; padding: 0; margin: var(--space-3) 0 0; max-height: 18rem; overflow-y: auto; border: 1px solid var(--line); border-radius: var(--radius); }
.search-results li { padding: 0; border-bottom: 1px solid var(--line); }
.search-results li:last-child { border-bottom: none; }
.search-results button { width: 100%; text-align: left; border: none; background: none; padding: var(--space-3) var(--space-4); cursor: pointer; font: inherit; color: var(--ink); }
.search-results button:hover { background: var(--surface-sunk); }

.modal-backdrop { position: fixed; inset: 0; background: rgba(36, 27, 22, 0.45); display: none; align-items: center; justify-content: center; padding: var(--space-4); z-index: 200; }
.modal-backdrop[data-open="true"] { display: flex; }
.modal { background: var(--surface); border-radius: var(--radius-lg); padding: var(--space-6); width: 100%; max-width: 32rem; max-height: 85vh; overflow-y: auto; }
.modal__title { font-family: var(--font-serif); font-size: var(--step-1); margin-bottom: var(--space-4); }

/* --------------------------------------------------------- LISTE COURSES */
.shop-list { list-style: none; padding: 0; display: flex; flex-direction: column; }
.shop-group__title { font-family: var(--font-serif); font-size: var(--step-0); text-transform: capitalize; margin: var(--space-5) 0 var(--space-2); color: var(--terracotta); }
.shop-item { display: flex; align-items: center; gap: var(--space-3); padding: var(--space-2) 0; border-bottom: 1px solid var(--line); }
.shop-item input[type="checkbox"] { width: 1.15rem; height: 1.15rem; accent-color: var(--terracotta); flex-shrink: 0; }
.shop-item__name { flex: 1; }
.shop-item.is-checked .shop-item__name { text-decoration: line-through; color: var(--ink-faint); }
.shop-item__qty { font-size: var(--step--1); color: var(--ink-faint); }
.shop-item__remove { border: none; background: none; cursor: pointer; color: var(--ink-faint); font-size: 1.1em; }
.shop-item__remove:hover { color: var(--danger); }
.list-switch { display: flex; flex-wrap: wrap; gap: var(--space-2); margin-bottom: var(--space-5); }
.list-switch a { padding: 0.4em 0.9em; border: 1px solid var(--line); border-radius: var(--radius-pill); text-decoration: none; color: var(--ink-soft); font-size: var(--step--1); }
.list-switch a.is-active { background: var(--ink); color: #fff; border-color: var(--ink); }

/* ------------------------------------------------------------ COMMUNAUTE */
.community-card__author { display: flex; align-items: center; justify-content: space-between; gap: var(--space-3); margin-top: var(--space-2); font-size: var(--step--1); }
.community-card__author a { color: var(--ink-soft); text-decoration: none; font-weight: 600; }
.community-card__author a:hover { color: var(--terracotta); }

/* --------------------------------------------------------------- BILLING */
.plan-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr)); gap: var(--space-5); }
.plan {
  border: 1px solid var(--line); border-radius: var(--radius-lg); padding: var(--space-6) var(--space-5);
  background: var(--surface); display: flex; flex-direction: column; gap: var(--space-4);
}
.plan--current { border-color: var(--terracotta); box-shadow: 0 0 0 1px var(--terracotta); }
.plan__name { font-family: var(--font-serif); font-size: var(--step-2); }
.plan__price { font-size: var(--step-3); font-family: var(--font-serif); }
.plan__price span { font-size: var(--step--1); color: var(--ink-faint); font-family: var(--font-sans, inherit); }
.plan__features { list-style: none; padding: 0; display: flex; flex-direction: column; gap: var(--space-2); font-size: var(--step-0); color: var(--ink-soft); flex: 1; }
.plan__features li { padding-left: 1.4em; position: relative; }
.plan__features li::before { content: "✓"; position: absolute; left: 0; color: var(--herb); }
.plan__badge { font-size: var(--step--1); color: var(--terracotta); font-weight: 700; }

/* ---------------------------------------------------------------- DIVERS */
.rating-widget__stars--input .rating-star { background: none; border: none; cursor: pointer; font-size: 1.4rem; color: var(--mustard); padding: 0 0.05em; line-height: 1; }
.comment-list { list-style: none; padding: 0; display: flex; flex-direction: column; gap: var(--space-4); margin-top: var(--space-5); }
.comment { border-bottom: 1px solid var(--line); padding-bottom: var(--space-4); }
.comment:last-child { border-bottom: none; }
.comment__author { font-weight: 600; color: var(--ink); }
.comment__body { color: var(--ink-soft); margin-top: var(--space-1); }
.danger-zone { border: 1px solid var(--danger); border-radius: var(--radius); padding: var(--space-5); margin-top: var(--space-6); }
.danger-zone h2 { color: var(--danger); font-size: var(--step-1); }
.inline-form { display: inline; }
.btn--danger { background: var(--danger); color: #fff; }
.btn--danger:hover { background: #8f2b1f; color: #fff; }
.muted-note { font-size: var(--step--1); color: var(--ink-faint); }

/* Tableaux de comparaison et de conversion des pages publiques */
.compare-table { width: 100%; border-collapse: collapse; font-size: var(--step--1); margin-block: var(--space-4); }
.compare-table th, .compare-table td { text-align: left; padding: 0.55em 0.7em; border-bottom: 1px solid var(--line, #ddd); vertical-align: top; }
.compare-table th { font-weight: 600; color: var(--ink-soft); }
.compare-table td:first-child { font-weight: 600; }
.table-scroll { overflow-x: auto; }
.converter { display: grid; grid-template-columns: repeat(auto-fit, minmax(9rem, 1fr)); gap: var(--space-3); align-items: end; margin-block: var(--space-4); }
.converter__out { font-size: var(--step-1); font-weight: 600; margin-top: var(--space-3); min-height: 1.6em; }
