/* ==========================================================================
   ORGANISMES — sections d'interface complètes, composées de molécules.
   Rendues côté JS par scripts/ui/organisms.js.
   ========================================================================== */

/* --- Accueil ------------------------------------------------------------ */
.scan-cta{background:var(--blue);border-radius:var(--r-5xl);padding:20px;color:#fff;display:grid;grid-template-columns:minmax(0,1fr) 92px;
  gap:12px;align-items:center;cursor:pointer;border:none;text-align:left;width:100%;margin-bottom:12px}
.scan-cta[hidden]{display:none}
.scan-cta b{display:block;font-size:1.15rem;margin-bottom:4px}
.scan-cta span{font-size:13px;opacity:.85}
.scan-cta .scan-cta__icon{width:84px;height:84px;border-radius:var(--r-4xl);background:#fff;color:var(--blue);display:grid;place-items:center;font-size:40px}

.idea-row{gap:14px;padding-bottom:6px;margin-right:calc(-1 * var(--gutter-r))}
.idea-card{flex:none;width:250px;background:var(--soft);border-radius:var(--r-3xl);padding:16px;display:grid;grid-template-columns:96px 1fr;gap:10px;align-items:center;--ring-offset:2px}
.idea-card svg{width:96px;height:96px}
.idea-card .idea-card__title{font-weight:700;font-size:13px;line-height:1.25}
.idea-card .idea-card__price{font-weight:800;font-size:1.25rem;margin:4px 0}
.idea-card .idea-card__desc{font-size:11px;color:var(--muted);line-height:1.35}
.idea-card .idea-card__plus{display:flex;justify-content:flex-end;align-items:center;gap:8px;margin-top:6px}
.idea-card .idea-card__plus > i{flex:1;height:1px;background:var(--ink)}
.idea-card .idea-card__plus b{width:24px;height:24px;border-radius:50%;background:var(--ink);color:#fff;display:grid;place-items:center;font-size:16px;font-style:normal}

.fav-card{background:var(--soft);border-radius:var(--r-3xl);padding:16px;display:grid;grid-template-columns:120px minmax(0,1fr);gap:12px;align-items:center}
.fav-card svg{width:120px;height:110px}
.fav-card .fav-card__actions{display:flex;justify-content:flex-end;gap:8px}
.fav-card .fav-card__actions span{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;color:#fff;font-size:14px}
.fav-card .fav-card__title{font-weight:700;font-size:14px;margin-top:8px}
.fav-card .fav-card__meta{font-size:12px;color:var(--muted);margin:4px 0 10px}
.fav-card .fav-card__price{border-top:1px solid var(--ink);padding-top:8px;text-align:right;font-weight:800;font-size:1.2rem}

/* --- Scan du frigo ------------------------------------------------------ */
.scanner{position:relative;border-radius:var(--r-5xl);overflow:hidden;background:var(--surface-alt);border:1px solid var(--line)}
.scanner img{display:block;width:100%;height:auto}
.scanner--preview{max-height:340px}
.scanner--preview img{opacity:.55;filter:saturate(.8)}
.scanner .scanner__line{position:absolute;left:0;right:0;height:4px;background:var(--blue);box-shadow:0 0 20px var(--blue);opacity:0}
.scanner.scanning .scanner__line{opacity:1;animation:scan 1.3s ease-in-out 2}
@keyframes scan{0%{top:0}50%{top:98%}100%{top:0}}

/* --- Recettes proposées ------------------------------------------------- */
.recipe-card{display:grid;grid-template-columns:1fr;gap:10px;padding:10px 10px 14px;border-radius:var(--r-2xl);border:2px solid transparent;background:#fff;
  box-shadow:0 2px 0 var(--line);margin-bottom:10px;width:100%;box-sizing:border-box}
.recipe-card[aria-pressed="true"]{border-color:var(--blue);background:var(--soft)}
.recipe-card--skeleton{cursor:default}
.recipe-card .thumb{height:150px;border-radius:var(--r-lg);position:relative;overflow:hidden}
.recipe-card .thumb svg{width:140px;height:140px;position:relative;filter:drop-shadow(0 8px 14px rgba(0,0,0,.18))}
.recipe-card .recipe-card__tag{position:absolute;left:10px;top:10px;background:#fff;color:var(--ink);font-size:11px;font-weight:700;padding:4px 9px;border-radius:var(--r-pill)}
.recipe-card .recipe-card__name,.recipe-card .recipe-card__meta{padding:0 4px}
.recipe-card .recipe-card__name{font-weight:700;font-size:14px;line-height:1.25;transition:opacity .2s}
.recipe-card .recipe-card__meta{display:flex;gap:10px;font-size:12px;color:var(--muted);margin-top:4px;font-variant-numeric:tabular-nums;flex-wrap:wrap}
.recipe-card .recipe-card__meta b{color:var(--ink)}
.recipe-card .skeleton-line{height:14px;background:var(--soft);border-radius:6px;width:70%}

.basket{border:1.5px dashed var(--line);border-radius:var(--r-xl);padding:14px;font-size:13px;margin:6px 0 14px}
.basket h3{margin:0 0 8px;font-size:14px;display:flex;justify-content:space-between}
.basket ul{list-style:none;margin:0;padding:0}
.basket li{display:flex;justify-content:space-between;gap:8px;padding:3px 0;font-variant-numeric:tabular-nums}
.basket em{font-style:normal;color:var(--green);font-size:11px;font-weight:600}

/* --- Fiche recette ------------------------------------------------------ */
.dish-hero{background:var(--blue);border-radius:var(--r-5xl);padding:20px 20px 0;color:#fff;text-align:center;margin-top:10px;position:relative}
.dish-hero h3{font-size:1rem;letter-spacing:.06em;text-transform:uppercase;font-weight:600}
.dish-desc{font-size:13px;color:#444;text-align:center;line-height:1.6;margin:14px 0 18px}

.review-box{background:var(--soft);border-radius:var(--r-2xl);padding:14px;margin:6px 0 16px}
.review-box h3{margin:0 0 10px;font-size:15px;display:flex;justify-content:space-between;align-items:center}
.review-box .rating{margin-top:12px}
.review-box .field{padding:10px 12px;margin:10px 0;background:#fff}

/* --- Partage ------------------------------------------------------------ */
.trophy{background:var(--blue);border-radius:var(--r-5xl);padding:20px;color:#fff;--orb-size:160px;--orb-offset:-50px;--orb-alpha:.08}
.trophy h3{text-align:center;margin:0 0 14px;font-size:1.05rem;line-height:1.3}
.trophy .trophy__foot{display:flex;justify-content:space-between;font-size:11px;opacity:.8;margin-top:14px}

/* NB : display:flex l'emporte sur l'attribut [hidden] — comportement d'origine conservé. */
.sheet[hidden]{display:none}
.sheet{position:fixed;inset:0;z-index:8;background:rgba(20,20,30,.45);display:flex;align-items:flex-end;justify-content:center}
.sheet>div{background:#fff;width:100%;max-width:var(--col);border-radius:var(--r-5xl) var(--r-5xl) 0 0;
  padding:20px var(--gutter-r) calc(24px + var(--safe-b)) var(--gutter-l);max-height:90%;overflow:auto}
.sheet h3{margin:0 0 14px;font-size:1.05rem;display:flex;justify-content:space-between;align-items:center}
.sheet .sheet__hint{font-size:12px;margin-top:14px}
.sheet .sheet__hint--center{text-align:center;margin-top:10px}
.sheet .field{padding:12px;margin:12px 0}
.story-preview{width:min(220px,60%);margin:0 auto 14px;aspect-ratio:9/16;border-radius:var(--r-xl);overflow:hidden;box-shadow:var(--shadow-float-strong)}
.story-preview canvas{width:100%;height:100%;display:block}

/* --- Bibliothèque ------------------------------------------------------- */
.library-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:12px}
.library-item{position:relative}
.library-card{position:relative;width:100%;background:var(--soft);border-radius:var(--r-2xl);padding:10px;display:grid;gap:6px;cursor:pointer;border:none;text-align:left;font:inherit;color:inherit}
.library-card .library-card__badge{position:absolute;top:16px;left:16px;background:var(--leaf);color:#fff;font-size:11px;font-weight:700;line-height:1;padding:5px 8px;border-radius:var(--r-pill);box-shadow:var(--shadow-chip);font-variant-numeric:tabular-nums}
.library-card .thumb{aspect-ratio:1;border-radius:var(--r-md)}
.library-card .thumb svg{width:78%;height:78%}
.library-card .thumb img{border-radius:var(--r-md)}
.library-card .library-card__name{font-weight:700;font-size:13px;line-height:1.25;min-height:2.5em}
.library-card .library-card__meta{display:flex;justify-content:space-between;font-size:11px;color:var(--muted);font-variant-numeric:tabular-nums}
.library-card .library-card__meta b{color:var(--ink);font-size:13px}
.empty-state{grid-column:1/-1;text-align:center;color:var(--muted);font-size:14px;padding:30px 10px}

/* --- Défis -------------------------------------------------------------- */
/* Panneau : base commune des cartes de la page Défis. */
.panel{border-radius:var(--r-4xl);padding:18px;margin-bottom:14px;display:grid;gap:12px}

.challenge-card{color:#fff;gap:10px;--orb-size:140px;--orb-offset:-40px;--orb-alpha:.1}
.challenge-card h3{font-size:1.15rem}
.challenge-card p{margin:0;font-size:13px;opacity:.9;max-width:34ch}
.challenge-card .challenge-card__row{display:flex;justify-content:space-between;align-items:center;gap:10px;font-size:12px;position:relative;z-index:1}
.challenge-card .challenge-card__join{background:#fff;color:var(--ink);font-weight:700;font-size:13px;padding:10px 16px;border-radius:var(--r-sm);--ring-color:#fff;--ring-offset:2px}
.challenge-card .challenge-card__join[aria-pressed="true"]{background:rgba(255,255,255,.2);color:#fff}

.season-card{background:var(--grad-season)}
.season-card p{margin:0;font-size:13px;color:var(--season-text)}
.season-card .season-card__dishes{gap:10px;margin-right:-18px;padding-bottom:2px}

.maraude-card{background:#fff;border:2px solid var(--leaf-line)}
.contest-card{background:#fff;border:2px solid var(--line)}

/* --- Coquille (template) : notification, toast, navigation -------------- */
.notif{position:fixed;left:50%;top:calc(10px + var(--safe-t));transform:translate(-50%,-140%);width:min(440px,calc(100% - 24px));
  background:rgba(255,255,255,.97);backdrop-filter:blur(10px);border-radius:var(--r-2xl);box-shadow:0 14px 40px -10px rgba(0,0,0,.35);
  padding:12px 14px;display:flex;gap:12px;align-items:center;z-index:12;transition:transform .45s cubic-bezier(.2,.9,.3,1.2);
  cursor:pointer;border:none;text-align:left;font:inherit;color:var(--ink)}
.notif.on{transform:translate(-50%,0)}
.notif .notif__app{width:42px;height:42px;border-radius:var(--r-sm);background:var(--blue);display:grid;place-items:center;flex:none;overflow:hidden}
.notif .notif__app .mascot{width:38px;height:38px;border-radius:var(--r-xs);padding:5px}
.notif .notif__body{flex:1;min-width:0}
.notif small{color:var(--muted);font-size:11px;display:flex;justify-content:space-between}
.notif b{display:block;font-size:14px}
.notif .notif__text{font-size:13px;color:var(--ink-2)}

.toast{position:fixed;left:50%;bottom:calc(100px + var(--safe-b));transform:translate(-50%,20px);opacity:0;background:var(--ink);color:#fff;
  padding:12px 18px;border-radius:var(--r-md);font-size:14px;transition:.3s;z-index:9;pointer-events:none;max-width:90vw;text-align:center}
.toast.on{opacity:1;transform:translate(-50%,0)}

.nav{position:fixed;left:50%;transform:translateX(-50%);bottom:0;width:100%;max-width:var(--col);
  padding:0 var(--gutter-r) calc(14px + var(--safe-b)) var(--gutter-l);z-index:5}
.nav .nav__bar{background:var(--blue);border-radius:var(--r-4xl);display:flex;justify-content:space-around;align-items:center;height:68px;box-shadow:0 10px 30px -10px rgba(58,86,212,.6)}
.nav button{width:52px;height:52px;border-radius:50%;display:grid;place-items:center;color:#fff;--ring-offset:2px;
  border:4px solid transparent;box-shadow:0 0 0 0 #fff;
  transition:transform .35s cubic-bezier(.2,.9,.3,1.2),background-color .25s,color .25s,border-color .25s,box-shadow .25s}
.nav button:active{transform:scale(.9)}
.nav button[aria-current="true"]{background:#fff;color:var(--blue);border-color:var(--blue);box-shadow:0 0 0 4px #fff;transform:translateY(-14px)}
.nav button[aria-current="true"]:active{transform:translateY(-14px) scale(.92)}

/* --- Simulation viande → végétal ---------------------------------------- */
.swap-card{background:var(--leaf-tint);border:1px solid var(--leaf-line);border-radius:var(--r-xl);padding:14px;margin-top:8px;display:grid;gap:8px}
.swap-card__what{margin:0;font-size:13px}
.swap-card__headline{margin:0;font-size:13px}
.swap-card__headline b{display:block;font-size:2rem;font-weight:800;color:var(--leaf);line-height:1.1}
.swap-card .text-sub{font-size:11px}

/* --- Paramètres ---------------------------------------------------------- */
.settings-actions{display:grid;gap:10px;margin-top:16px}
