/* =========================
   VARIABLES
========================= */

:root{
  --blanc:#fff;
  --noir:#000;
  --gris:#777;
  --font-main: Gabriola, "Segoe Script", Georgia, serif;
}

/* =========================
   RESET
========================= */

*{
  box-sizing:border-box;
  margin:0;
  padding:0;
}

body{
  min-height:100vh;
  background:var(--blanc);
  color:var(--noir);
  font-family:var(--font-main);
}

/* =========================
   PAGE
========================= */

.menu-page{
  padding-top:120px;
}

/* =========================
   PANIER DRAWER
========================= */

.cart-drawer{
  position:fixed;
  top:0;
  right:0;

  width:380px;
  max-width:90%;
  height:100vh;

  background:white;

  transform:translateX(100%);
  transition:transform .3s ease;

  z-index:2000;

  display:flex;
  flex-direction:column;

  border-left:3px solid var(--noir);
  box-shadow:-10px 0 20px rgba(0,0,0,.2);
}

.cart-drawer.open{
  transform:translateX(0);
}

.cart-overlay{
  position:fixed;
  inset:0;

  background:rgba(0,0,0,.4);

  opacity:0;
  pointer-events:none;

  transition:.3s ease;

  z-index:1999;
}

.cart-overlay.active{
  opacity:1;
  pointer-events:auto;
}

/* HEADER PANIER */

.cart-header{
  display:flex;
  justify-content:space-between;
  align-items:center;
  padding:20px;
  border-bottom:2px solid var(--noir);
}

.cart-header h2{
  font-size:2rem;
}

.cart-header button{
  background:none;
  border:none;
  font-size:2rem;
  cursor:pointer;
}

/* CONTENU */

.cart-items{
  flex:1;
  overflow-y:auto;
  padding:20px;
}

/* PRODUIT */

.cart-item{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:10px;
  padding:10px 0;
  border-bottom:1px solid #ddd;
}

.qty-controls{
  display:flex;
  align-items:center;
  gap:10px;
}

.qty-controls button{
  width:32px;
  height:32px;
  border:2px solid var(--noir);
  background:white;
  cursor:pointer;
  font-size:18px;
}

/* FOOTER PANIER */

.cart-footer{
  padding:20px;
  border-top:2px solid var(--noir);
  font-size:1.4rem;
  display:flex;
  align-items:center;
  justify-content:space-between;
  width:100%;
}

/* =========================
   BOUTONS GLOBAUX
========================= */

.topbar-nav a,
.categorie-btn,
.filter-btn,
.btn{
  min-height:50px;
  padding:8px 22px 10px;
  border:3px solid var(--noir);
  background:var(--blanc);
  color:var(--noir);
  font-family:var(--font-main);
  font-size:28px;
  line-height:1;
  text-decoration:none;
  cursor:pointer;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  box-shadow:6px 6px 0 var(--noir);
  transition:transform 0.2s ease,
              box-shadow 0.2s ease,
              background 0.2s ease,
              color 0.2s ease;
}

.topbar-nav a:hover,
.categorie-btn:hover,
.filter-btn:hover,
.btn:hover{
  background:var(--noir);
  color:var(--blanc);
  box-shadow:9px 9px 0 var(--gris);
  transform:translate(-3px,-3px);
}
.cart-top-btn{
  position:fixed;
  top:32px;
  right:40px;
  z-index:1500;

  min-height:50px;
  padding:8px 22px 10px;

  border:3px solid var(--noir);
  background:var(--blanc);
  color:var(--noir);

  font-family:var(--font-main);
  font-size:28px;
  line-height:1;

  text-decoration:none;
  cursor:pointer;

  display:inline-flex;
  align-items:center;
  justify-content:center;

  box-shadow:6px 6px 0 var(--noir);

  transition:transform 0.2s ease,
              box-shadow 0.2s ease,
              background 0.2s ease,
              color 0.2s ease;
}
.cart-top-btn:hover{
   background:var(--noir);
  color:var(--blanc);
  box-shadow:9px 9px 0 var(--gris);
  transform:translate(-3px,-3px);
}
.cart-drawer.open ~ .cart-top-btn{
  opacity:0;
  pointer-events:none;
  transform:translateY(-10px);
}
/* =========================
   HERO
========================= */

.menu-hero{
  text-align:center;
  margin:80px auto;
  width:min(1200px,90%);
}

.menu-hero h1{
  font-size:clamp(4rem,8vw,8rem);
  line-height:.8;
}

.menu-hero p{
  font-size:clamp(1.2rem,2vw,2rem);
}

/* =========================
   CATEGORIES
========================= */

.categories{
  display:flex;
  justify-content:center;
  flex-wrap:wrap;
  gap:25px;
  margin-bottom:100px;
}

.filter-btn.active{
  background:var(--noir);
  color:var(--blanc);
}

/* =========================
   SECTIONS
========================= */

.categorie{
  margin-bottom:120px;
}

.categorie h2{
  text-align:center;
  font-size:clamp(3rem,5vw,5rem);
  margin-bottom:50px;
}

/* =========================
   GRID
========================= */

.grid{
  width:min(1180px,calc(100% - 40px));
  margin:auto;
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(220px,270px));
  justify-content:center;
  align-items:stretch;
  gap:24px;
}

/* =========================
   CARDS
========================= */

.card{
  display:flex;
  flex-direction:column;
  min-width:0;
  background:var(--blanc);
  border:2px solid var(--noir);
  box-shadow:4px 4px 0 var(--noir);
  text-align:center;
  overflow:hidden;
  transition:transform .2s ease,box-shadow .2s ease;
}

.card:hover{
  transform:translateY(-2px);
  box-shadow:4px 6px 0 var(--noir);
}

.card img{
  width:100%;
  height:155px;
  object-fit:contain;
  background:#fff;
  display:block;
}

.card h3{
  font-size:28px;
  line-height:1.15;
  margin:12px 12px 8px;
  overflow-wrap:anywhere;
}

.card p{
  font-size:18px;
  line-height:1.3;
  padding:0 14px;
  overflow-wrap:anywhere;
}

.card strong{
  display:block;
  margin:10px 0 12px;
  font-size:23px;
  line-height:1.2;
}

/* =========================
   PAGE PANIER
========================= */

.panier-page{
  width:min(1200px,90%);
  margin:auto;
  padding-top:120px;
  padding-bottom:80px;
}

.panier-liste{
  display:flex;
  flex-direction:column;
  gap:30px;
  margin-top:60px;
}

.panier-produit{
  display:flex;
  align-items:center;
  gap:30px;
  border:3px solid var(--noir);
  background:var(--blanc);
  box-shadow:10px 10px 0 var(--noir);
  padding:20px;
  transition:.25s ease;
}

.panier-produit:hover{
  transform:translate(-5px,-5px);
  box-shadow:15px 15px 0 var(--noir);
}

.panier-produit img{
  width:220px;
  height:170px;
  object-fit:contain;
  border-right:2px solid #ddd;
  padding-right:20px;
}

.panier-infos{
  flex:1;
  display:flex;
  flex-direction:column;
  justify-content:center;
  gap:12px;
}

.panier-infos h2{
  font-size:3rem;
  line-height:.9;
}

.panier-infos p{
  font-size:1.5rem;
}

.panier-infos strong{
  font-size:2rem;
}

.panier-total{
  margin-top:60px;
  display:flex;
  justify-content:space-between;
  align-items:center;
  border-top:3px solid var(--noir);
  padding-top:30px;
}

.panier-total h2{
  font-size:3rem;
}

/* BOUTON FINALISER */

.btn-finaliser{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:12px;
  min-height:56px;
  padding:14px 24px;
  border:2px solid #111;
  border-radius:12px;
  background:#111;
  color:#fff;
  font-family:Georgia,serif;
  font-size:20px;
  font-weight:bold;
  font-style:normal;
  line-height:1.3;
  text-decoration:none;
  cursor:pointer;
  box-shadow:0 4px 10px rgba(0,0,0,.15);
  transition:background .2s ease,transform .2s ease;
}

.btn-finaliser:hover{
  background:#333;
  color:#fff;
  text-decoration:none;
  box-shadow:0 6px 14px rgba(0,0,0,.18);
  transform:translateY(-1px);
}

/* =========================
   MOBILE
========================= */

@media(max-width:900px){

  .grid{
    grid-template-columns:repeat(2,minmax(0,270px));
  }

  .panier-produit{
    flex-direction:column;
    text-align:center;
  }

  .panier-produit img{
    width:100%;
    height:220px;
    border-right:none;
    border-bottom:2px solid #ddd;
    padding:0 0 20px;
  }

  .panier-total{
    flex-direction:column;
    gap:25px;
  }
}

.card .btn {
  align-self:center;
  min-height:44px;
  padding:8px 18px;
  margin: auto 14px 16px;
  font-size:23px;
  border-width:2px;
  box-shadow:3px 3px 0 #111;
}
.card .stock-badge { align-self:center; margin: auto 14px 16px; }
.btn-finaliser:focus-visible { outline:3px solid #777; outline-offset:4px; }
.btn-finaliser::after { content:'→'; font-family:Arial,sans-serif; font-size:22px; }
@media(max-width:560px) {
  .grid { grid-template-columns:minmax(0,300px); }
}
