/* ==========================================================
   03 - Composants : articles, formulaires, boutons, cartes
   ========================================================== */

/* --- Articles --- */
.group h2{display:flex;align-items:center;gap:8px;margin:18px 4px 8px;font-size:.78rem;
  text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}
.dot{width:10px;height:10px;border-radius:50%;background:var(--muted)}
.dot.p1{background:var(--p1)}.dot.p2{background:var(--p2)}.dot.p3{background:var(--p3)}

.item{display:flex;align-items:center;gap:6px;background:var(--surface);border-radius:var(--radius);
  box-shadow:var(--shadow);margin-bottom:8px;padding:4px 8px 4px 4px;border-left:5px solid var(--muted);
  animation:pop .18s ease-out}
.item.p1{border-left-color:var(--p1)}.item.p2{border-left-color:var(--p2)}.item.p3{border-left-color:var(--p3)}
@keyframes pop{from{opacity:0;transform:translateY(6px)}}
.check{width:48px;height:48px;display:grid;place-items:center;flex:none}
.check span{width:26px;height:26px;border-radius:50%;border:2px solid var(--muted);display:grid;
  place-items:center;color:transparent;font-weight:700;transition:.15s}
.item.done .check span{background:var(--accent);border-color:var(--accent);color:var(--accent-fg);box-shadow:var(--glow)}
.info{flex:1;min-width:0;text-align:left;padding:6px 4px;border-radius:10px}
.info b{display:block;font-weight:600;overflow-wrap:anywhere}
.info small{color:var(--muted)}
.item.done{opacity:.55}.item.done .info b{text-decoration:line-through}
.qty{flex:none;min-width:44px;height:36px;border-radius:18px;background:var(--surface2);display:grid;
  place-items:center;font-weight:700;padding:0 12px}
.price{flex:none;min-width:64px;height:36px;border-radius:18px;background:var(--surface2);display:grid;
  place-items:center;font-weight:700;padding:0 10px;font-size:.9rem;color:var(--muted)}

/* --- Boutons et champs --- */
.primary{background:linear-gradient(135deg,var(--accent),var(--accent-2));color:var(--accent-fg);padding:0 22px;border-radius:12px;font-weight:700;box-shadow:var(--glow)}
.danger{color:var(--danger);padding:0 12px;font-weight:600}
.danger-text{color:var(--danger);padding:0;font-weight:600}
.actions{display:flex;align-items:center;gap:8px;margin-top:6px}
.grow{flex:1}
.field{display:block;margin-bottom:16px;font-size:.85rem;color:var(--muted);font-weight:600}
.field>input,.inline input{display:block;width:100%;height:48px;margin-top:6px;border:1px solid var(--line);
  background:var(--bg);border-radius:12px;padding:0 14px;font-size:1.05rem;font-weight:400;color:var(--fg)}
.opt{font-weight:400;text-transform:none;letter-spacing:0}
.inline{display:flex;gap:8px;margin-bottom:10px}
.inline input{margin:0;flex:1;min-width:0}
.stepper{display:flex;gap:8px;margin-top:6px}
.stepper button{width:56px;height:48px;border-radius:12px;background:var(--surface2);font-size:1.4rem}
.stepper input{flex:1;text-align:center;margin:0;height:48px;border:1px solid var(--line);background:var(--bg);
  border-radius:12px;font-size:1.2rem;font-weight:700;color:var(--fg);min-width:0}
.seg{display:flex;background:var(--surface2);border-radius:12px;padding:4px;gap:4px;margin-top:6px}
.seg button{flex:1;border-radius:9px;min-height:40px;font-weight:600;color:var(--muted)}
.seg button.on{background:var(--surface);color:var(--fg);box-shadow:var(--shadow)}
.seg button.p1.on{box-shadow:inset 0 -3px var(--p1),var(--shadow)}
.seg button.p2.on{box-shadow:inset 0 -3px var(--p2),var(--shadow)}
.seg button.p3.on{box-shadow:inset 0 -3px var(--p3),var(--shadow)}
.chips{display:flex;flex-wrap:wrap;gap:8px;margin:6px 0 10px}
.chips button{padding:0 16px;border-radius:999px;background:var(--surface2);color:var(--fg);font-weight:500}
.chips button.on{background:var(--accent);color:var(--accent-fg);box-shadow:0 0 14px rgba(0,230,180,.35)}
.avatar{flex:none;width:36px;height:36px;border-radius:50%;background:var(--surface2);display:grid;
  place-items:center;font-size:1rem}
.hint{margin:10px 0 0;font-size:.85rem;color:var(--muted);min-height:1.2em}
.hint.ok{color:var(--p3)}
.hint.err{color:var(--danger)}