:root {
  --ffss-bleu: #002654;
  --ffss-bleu-clair: #1a3d72;
  --ffss-jaune: #f4c20d;
  --ffss-jaune-fonce: #c79900;
  --ffss-bg: #f5f7fb;
  --rouge: #dc2626;
  --vert: #16a34a;
}

html, body { background: var(--ffss-bg); }

button { -webkit-tap-highlight-color: transparent; }
button:active { transform: scale(0.97); }

.btn-ffss-primary {
  background: var(--ffss-bleu);
  color: white;
}
.btn-ffss-primary:hover { background: var(--ffss-bleu-clair); }

.btn-ffss-jaune {
  background: var(--ffss-jaune);
  color: var(--ffss-bleu);
}
.btn-ffss-jaune:hover { background: var(--ffss-jaune-fonce); }

.cat-tab {
  padding: 0.75rem 1rem;
  font-weight: 600;
  border-radius: 0.5rem 0.5rem 0 0;
  cursor: pointer;
}
.cat-tab.active {
  background: var(--ffss-bleu);
  color: white;
}
.cat-tab:not(.active) {
  background: white;
  color: var(--ffss-bleu);
}

.article-btn {
  background: white;
  border: 2px solid var(--ffss-bleu);
  border-radius: 0.75rem;
  padding: 1rem 0.5rem;
  text-align: center;
  font-weight: 600;
  color: var(--ffss-bleu);
  min-height: 96px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.25rem;
  transition: all 0.05s;
  cursor: pointer;
}
.article-btn:hover { background: #eaf0fa; }
.article-btn .emoji { font-size: 1.75rem; }
.article-btn .prix {
  background: var(--ffss-jaune);
  color: var(--ffss-bleu);
  font-weight: 700;
  padding: 0.1rem 0.4rem;
  border-radius: 0.25rem;
  font-size: 0.85rem;
  margin-top: 0.25rem;
}

.ticket-line {
  display: grid;
  grid-template-columns: 1fr auto auto;
  gap: 0.5rem;
  align-items: center;
  padding: 0.5rem;
  border-bottom: 1px solid #e5e7eb;
}
.qty-btn {
  background: var(--ffss-bleu);
  color: white;
  width: 36px;
  height: 36px;
  border-radius: 50%;
  font-weight: 700;
}
.qty-btn.minus { background: #6b7280; }
.qty-btn.del { background: var(--rouge); }

.toast {
  position: fixed;
  bottom: 1rem;
  left: 50%;
  transform: translateX(-50%);
  background: var(--vert);
  color: white;
  padding: 1rem 1.5rem;
  border-radius: 0.5rem;
  font-weight: 600;
  z-index: 50;
  box-shadow: 0 10px 25px rgba(0,0,0,0.2);
  font-size: 1.1rem;
  text-align: center;
  max-width: 90%;
}
.toast.error { background: var(--rouge); }
.toast.info { background: var(--ffss-bleu); }

.banner-warn {
  background: var(--rouge);
  color: white;
  padding: 0.5rem;
  text-align: center;
  font-weight: 700;
}
.banner-info {
  background: var(--ffss-jaune);
  color: var(--ffss-bleu);
  padding: 0.4rem;
  text-align: center;
  font-weight: 600;
}

.spinner {
  width: 1rem;
  height: 1rem;
  border: 2px solid rgba(255,255,255,0.3);
  border-top-color: white;
  border-radius: 50%;
  display: inline-block;
  animation: spin 0.8s linear infinite;
}
@keyframes spin { to { transform: rotate(360deg); } }

.queue-badge {
  display: inline-block;
  background: var(--ffss-jaune);
  color: var(--ffss-bleu);
  border-radius: 1rem;
  padding: 0.25rem 0.75rem;
  font-weight: 700;
  font-size: 0.85rem;
}

@media (max-width: 640px) {
  .article-btn { min-height: 84px; font-size: 0.95rem; }
}
