/* Poissoniva — feuille de style principale */
:root{
  --bg: oklch(0.975 0.008 80);
  --text: oklch(0.24 0.015 130);
  --link: oklch(0.35 0.06 190);
  --link-hover: oklch(0.5 0.1 40);
  --teal: oklch(0.28 0.035 200);
  --teal-dark: oklch(0.24 0.03 195);
  --cream: oklch(0.93 0.025 75);
  --section-alt: oklch(0.965 0.01 78);
  --border: oklch(0.9 0.02 70);
  --border-light: oklch(0.87 0.02 70);
  --muted: oklch(0.45 0.02 130);
  --muted-2: oklch(0.4 0.02 130);
  --muted-3: oklch(0.5 0.02 130);
  --heading: oklch(0.22 0.03 190);
  --heading-dark: oklch(0.2 0.03 190);
  --accent-warm: oklch(0.5 0.1 40);
  --accent-warm-2: oklch(0.55 0.13 40);
  --green-bg: oklch(0.93 0.03 130);
  --green-text: oklch(0.35 0.05 140);
  --success-bg: oklch(0.94 0.03 145);
  --success-text: oklch(0.3 0.06 145);
  --body-text-2: oklch(0.25 0.02 130);
  --body-text-3: oklch(0.3 0.02 130);
  --body-text-4: oklch(0.35 0.02 130);
  --body-text-5: oklch(0.55 0.02 130);
}

*{ box-sizing:border-box; }
html{ scroll-behavior:smooth; }
body{ margin:0; background:var(--bg); color:var(--text); font-family:'Manrope',sans-serif; }
h1,h2,h3{ font-family:'Newsreader',serif; }
a{ color:var(--link); text-decoration:none; }
a:hover{ color:var(--link-hover); }
input,select,textarea,button{ font-family:'Manrope',sans-serif; }
::selection{ background:oklch(0.85 0.05 70); }
img{ max-width:100%; display:block; }
.page{ min-height:100vh; display:flex; flex-direction:column; }
@keyframes fadeUp{ from{opacity:0;transform:translateY(10px);} to{opacity:1;transform:translateY(0);} }

/* ===== Announcement bar ===== */
.announcement{ background:var(--teal-dark); color:oklch(0.95 0.01 80); font-size:13px; text-align:center; padding:8px 16px; letter-spacing:0.02em; }

/* ===== Header ===== */
.site-header{ position:sticky; top:0; z-index:40; background:oklch(0.985 0.006 80 / 0.97); backdrop-filter:blur(6px); border-bottom:1px solid var(--border); }
.header-row{ max-width:1280px; margin:0 auto; padding:14px 24px; display:flex; align-items:center; gap:24px; flex-wrap:wrap; }
.logo{ background:none; border:none; cursor:pointer; padding:0; display:flex; align-items:center; gap:8px; }
.logo span{ font-family:'Newsreader',serif; font-size:24px; font-weight:600; letter-spacing:0.01em; color:oklch(0.22 0.03 190); }
.main-nav{ display:flex; gap:20px; flex:1; flex-wrap:wrap; font-size:14.5px; font-weight:500; }
.main-nav a{ color:var(--body-text-3); }
.main-nav a.active{ color:var(--teal); font-weight:700; }
.header-actions{ display:flex; align-items:center; gap:14px; }
.search-input{ border:1px solid var(--border-light); border-radius:20px; padding:7px 14px; font-size:13.5px; width:170px; background:oklch(0.98 0.005 80); outline:none; }
.icon-btn{ background:none; border:none; cursor:pointer; position:relative; font-size:18px; color:var(--body-text-3); }
.badge{ position:absolute; top:-6px; right:-8px; background:var(--accent-warm-2); color:#fff; font-size:10px; border-radius:50%; width:16px; height:16px; display:flex; align-items:center; justify-content:center; }
.acct-btn{ background:none; border:none; cursor:pointer; font-size:14px; color:var(--body-text-3); white-space:nowrap; }
.cart-btn{ background:var(--teal); color:#fff; border:none; border-radius:20px; padding:8px 16px; cursor:pointer; font-size:13.5px; font-weight:600; display:flex; align-items:center; gap:6px; }
.cat-strip{ max-width:1280px; margin:0 auto; padding:0 24px 10px; display:flex; gap:16px; font-size:13px; overflow-x:auto; color:var(--muted-2); }
.cat-strip a{ white-space:nowrap; color:var(--muted-2); }

/* ===== Hero ===== */
.hero{ background:var(--cream); padding:90px 24px 100px; text-align:center; }
.hero h1{ font-size:52px; font-weight:600; margin:0 0 18px; color:var(--heading-dark); max-width:800px; margin-inline:auto; }
.hero p{ font-size:17px; color:var(--muted); max-width:560px; margin:0 auto 32px; line-height:1.6; }
.hero-actions{ display:flex; gap:14px; justify-content:center; flex-wrap:wrap; }
.btn-primary{ background:var(--teal); color:#fff; border:none; padding:14px 28px; border-radius:24px; font-size:15px; font-weight:600; cursor:pointer; }
.btn-outline{ background:#fff; color:var(--teal); border:1px solid var(--teal); padding:14px 28px; border-radius:24px; font-size:15px; font-weight:600; cursor:pointer; }
.hero.small{ padding:60px 24px 70px; }
.hero.small h1{ font-size:38px; }

/* ===== Sections ===== */
.section{ max-width:1280px; margin:0 auto; padding:64px 24px; }
.section.alt{ background:var(--section-alt); }
.section.alt > .inner{ max-width:1280px; margin:0 auto; }
.section-title{ font-size:30px; text-align:center; margin:0 0 40px; color:var(--heading); }
.section-title.left{ text-align:left; margin-bottom:8px; }
.section-sub{ color:var(--muted); margin:0 0 32px; text-align:left; }

/* ===== Grids ===== */
.grid-cats{ display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:18px; }
.grid-4{ display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:20px; }
.grid-3{ display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:20px; }
@media (max-width:1000px){ .grid-cats{grid-template-columns:repeat(3,1fr);} .grid-4{grid-template-columns:repeat(2,1fr);} .grid-3{grid-template-columns:repeat(2,1fr);} }
@media (max-width:640px){ .grid-cats{grid-template-columns:repeat(2,1fr);} .grid-4{grid-template-columns:1fr;} .grid-3{grid-template-columns:1fr;} }

/* Category tile */
.cat-tile{ border:none; background:var(--section-alt); border-radius:10px; padding:0; cursor:pointer; text-align:left; overflow:hidden; display:block; }
.cat-tile .thumb{ aspect-ratio:1; overflow:hidden; }
.cat-tile .thumb img{ width:100%; height:100%; object-fit:cover; }
.cat-tile .label{ padding:12px 14px; font-size:13.5px; font-weight:600; color:oklch(0.28 0.03 150); }

/* Product card */
.product-card{ background:#fff; border-radius:10px; overflow:hidden; box-shadow:0 1px 3px oklch(0 0 0 / 0.06); position:relative; }
.product-card .fav-btn{ position:absolute; top:10px; right:10px; z-index:2; background:oklch(0.98 0.005 80 / 0.9); border:none; width:30px; height:30px; border-radius:50%; cursor:pointer; font-size:15px; }
.product-card .open-btn{ width:100%; background:none; border:none; padding:0; cursor:pointer; text-align:left; display:block; }
.product-card .thumb{ aspect-ratio:1; overflow:hidden; }
.product-card .thumb img{ width:100%; height:100%; object-fit:cover; }
.product-card .body{ padding:14px 16px 16px; }
.product-card .brand{ font-size:11px; color:var(--accent-warm); font-weight:700; text-transform:uppercase; letter-spacing:0.03em; margin-bottom:4px; }
.product-card .name{ font-size:14px; font-weight:600; color:var(--body-text-2); margin-bottom:8px; line-height:1.3; min-height:36px; }
.product-card .price-row{ display:flex; align-items:baseline; gap:8px; }
.product-card .price{ font-size:16px; font-weight:700; color:var(--teal-dark); }
.product-card .unit{ font-size:11.5px; color:var(--body-text-5); }

/* Recipe / article card */
.media-card{ border:none; background:#fff; border-radius:10px; overflow:hidden; cursor:pointer; text-align:left; box-shadow:0 1px 3px oklch(0 0 0 / 0.06); display:block; width:100%; }
.media-card .thumb{ aspect-ratio:16/10; overflow:hidden; }
.media-card .thumb img{ width:100%; height:100%; object-fit:cover; }
.media-card .body{ padding:16px; }
.media-card .eyebrow{ font-size:11px; color:var(--accent-warm); font-weight:700; text-transform:uppercase; letter-spacing:0.04em; margin-bottom:6px; }
.media-card .title{ font-size:15.5px; font-weight:600; color:var(--body-text-2); }

/* Banner CTA */
.banner-cta{ background:var(--teal-dark); color:oklch(0.95 0.01 80); padding:56px 24px; }
.banner-cta .inner{ max-width:1280px; margin:0 auto; display:flex; align-items:center; justify-content:space-between; gap:24px; flex-wrap:wrap; }
.banner-cta h2{ font-size:28px; margin:0 0 8px; }
.banner-cta p{ margin:0; opacity:0.85; max-width:440px; }
.banner-cta .btn-light{ background:oklch(0.95 0.01 80); color:var(--teal-dark); border:none; padding:14px 26px; border-radius:24px; font-weight:700; cursor:pointer; white-space:nowrap; }

/* ===== Footer ===== */
.site-footer{ background:var(--teal-dark); color:oklch(0.85 0.01 80); padding:56px 24px 28px; }
.footer-grid{ max-width:1280px; margin:0 auto; display:grid; grid-template-columns:1.4fr 1fr 1fr 1fr; gap:32px; margin-bottom:36px; }
.footer-grid h3{ font-weight:700; font-size:12.5px; text-transform:uppercase; letter-spacing:0.03em; margin:0 0 14px; opacity:0.7; font-family:'Manrope',sans-serif; }
.footer-brand{ font-family:'Newsreader',serif; font-size:22px; color:#fff; margin-bottom:12px; }
.footer-desc{ font-size:13px; line-height:1.7; opacity:0.8; max-width:280px; }
.footer-links{ display:flex; flex-direction:column; gap:8px; font-size:13px; }
.footer-links a{ color:oklch(0.85 0.01 80); }
.footer-bottom{ max-width:1280px; margin:0 auto; border-top:1px solid oklch(0.4 0.03 195); padding-top:20px; font-size:12px; opacity:0.7; line-height:1.7; }
@media (max-width:900px){ .footer-grid{ grid-template-columns:1fr 1fr; } }
@media (max-width:520px){ .footer-grid{ grid-template-columns:1fr; } }

/* ===== Buttons / forms ===== */
.btn{ cursor:pointer; border:none; border-radius:8px; font-weight:700; font-size:14.5px; padding:13px 24px; background:var(--teal); color:#fff; }
.btn.block{ width:100%; }
.btn.secondary{ background:none; border:1px solid var(--border-light); color:var(--text); font-weight:600; border-radius:20px; padding:10px 18px; font-size:13.5px; }
.btn.ghost{ background:none; border:none; color:var(--muted); cursor:pointer; font-size:13px; }
.field{ width:100%; padding:11px; border:1px solid var(--border-light); border-radius:6px; margin-bottom:12px; font-size:14px; }
.field-row{ display:grid; grid-template-columns:1fr 1fr; gap:12px; margin-bottom:12px; }
label.checkbox{ display:flex; gap:8px; align-items:flex-start; font-size:12.5px; color:var(--muted); }

/* Back link */
.back-link{ background:none; border:none; color:var(--muted); cursor:pointer; font-size:13px; margin-bottom:20px; display:inline-block; }

/* Tags */
.tag{ background:var(--green-bg); color:var(--green-text); font-size:11.5px; font-weight:600; padding:4px 10px; border-radius:12px; display:inline-block; }

/* Boutique layout */
.boutique-layout{ max-width:1280px; margin:0 auto; padding:40px 24px 80px; display:grid; grid-template-columns:230px 1fr; gap:32px; }
.boutique-layout aside h3{ font-size:14px; font-weight:700; text-transform:uppercase; letter-spacing:0.03em; color:var(--body-text-3); margin:0 0 14px; font-family:'Manrope',sans-serif; }
.filter-list{ display:flex; flex-direction:column; gap:8px; margin-bottom:28px; }
.filter-list button{ background:none; border:none; text-align:left; cursor:pointer; padding:2px 0; font-size:13.5px; font-weight:500; color:var(--muted-2); }
.filter-list button.active{ font-weight:700; color:var(--teal); }
.filter-select{ width:100%; padding:8px; border-radius:6px; border:1px solid var(--border-light); margin-bottom:28px; font-size:13.5px; }
.diet-list{ display:flex; flex-direction:column; gap:10px; margin-bottom:28px; font-size:13.5px; color:var(--muted-2); }
.diet-list label,.avail-label{ display:flex; gap:8px; align-items:center; }
.boutique-head{ display:flex; justify-content:space-between; align-items:baseline; margin-bottom:24px; flex-wrap:wrap; gap:12px; }
.boutique-head h1{ font-size:28px; margin:0; color:var(--heading); }
.boutique-count{ font-size:13.5px; color:var(--muted); }
.empty-msg{ color:var(--muted); padding:40px 0; }
@media (max-width:800px){ .boutique-layout{ grid-template-columns:1fr; } }

/* Product detail */
.product-detail{ max-width:1100px; margin:0 auto; padding:40px 24px 80px; }
.product-detail-grid{ display:grid; grid-template-columns:1fr 1fr; gap:48px; }
.product-detail .thumb{ aspect-ratio:1; border-radius:10px; overflow:hidden; }
.product-detail .thumb img{ width:100%; height:100%; object-fit:cover; }
.product-detail .brand{ font-size:12px; color:var(--accent-warm); font-weight:700; text-transform:uppercase; letter-spacing:0.04em; margin-bottom:8px; }
.product-detail h1{ font-size:30px; margin:0 0 10px; color:var(--heading-dark); }
.product-detail .desc{ color:var(--muted); line-height:1.6; margin:0 0 20px; }
.price-line{ display:flex; align-items:baseline; gap:10px; margin-bottom:6px; }
.price-line .amount{ font-size:26px; font-weight:700; color:var(--teal-dark); }
.price-line .per-unit{ font-size:13px; color:var(--muted-3); }
.weight-line{ font-size:13px; color:var(--muted-3); margin-bottom:20px; }
.tag-row{ display:flex; gap:6px; flex-wrap:wrap; margin-bottom:20px; }
.buy-row{ display:flex; gap:12px; margin-bottom:28px; }
.buy-row .btn{ flex:1; }
.fav-toggle{ border:1px solid var(--border-light); background:#fff; border-radius:8px; padding:15px 18px; cursor:pointer; font-size:16px; }
.avail-line{ font-size:12.5px; color:var(--muted); margin-bottom:24px; }
.spec-table{ border-top:1px solid var(--border); }
.spec-row{ padding:14px 0; border-bottom:1px solid var(--border); }
.spec-row b{ font-size:13px; }
.spec-row .val{ font-size:13.5px; color:var(--body-text-4); margin-top:4px; }
.nutrition-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:6px; font-size:13px; color:var(--body-text-4); margin-top:8px; }
@media (max-width:800px){ .product-detail-grid{ grid-template-columns:1fr; } .nutrition-grid{ grid-template-columns:1fr 1fr; } }

/* Cart */
.cart-wrap{ max-width:1000px; margin:0 auto; padding:40px 24px 80px; }
.cart-wrap h1{ font-size:30px; margin:0 0 28px; color:var(--heading); }
.cart-grid{ display:grid; grid-template-columns:1fr 320px; gap:32px; }
.cart-line{ display:flex; gap:16px; padding:16px 0; border-bottom:1px solid var(--border); align-items:center; }
.cart-line .thumb{ width:76px; height:76px; border-radius:8px; overflow:hidden; flex-shrink:0; }
.cart-line .thumb img{ width:100%; height:100%; object-fit:cover; }
.cart-line .info{ flex:1; }
.cart-line .info .name{ font-weight:600; font-size:14.5px; }
.cart-line .info .meta{ font-size:12.5px; color:var(--muted-3); margin-top:2px; }
.qty-ctrl{ display:flex; align-items:center; gap:8px; }
.qty-ctrl button{ width:26px; height:26px; border:1px solid var(--border-light); background:#fff; border-radius:6px; cursor:pointer; }
.qty-ctrl span{ width:20px; text-align:center; font-size:13.5px; }
.line-total{ width:70px; text-align:right; font-weight:700; font-size:14.5px; }
.cart-empty{ text-align:center; padding:60px 0; color:var(--muted); }
.summary-box{ background:var(--section-alt); border-radius:10px; padding:24px; align-self:start; }
.summary-row{ display:flex; justify-content:space-between; font-size:13.5px; margin-bottom:10px; color:var(--muted-2); }
.summary-total{ display:flex; justify-content:space-between; font-size:17px; font-weight:700; border-top:1px solid var(--border-light); padding-top:14px; margin-bottom:20px; }
@media (max-width:800px){ .cart-grid{ grid-template-columns:1fr; } }

/* Checkout */
.checkout-wrap{ max-width:720px; margin:0 auto; padding:40px 24px 80px; }
.checkout-steps{ display:flex; gap:8px; margin-bottom:32px; font-size:12.5px; color:var(--muted-3); flex-wrap:wrap; }
.checkout-steps span.step{ font-weight:500; color:var(--muted-3); }
.checkout-steps span.step.active{ font-weight:700; color:var(--teal); }
.checkout-wrap h1{ font-family:'Newsreader',serif; font-size:26px; margin:0 0 20px; }
.pay-option{ display:flex; gap:12px; align-items:flex-start; padding:16px; border:1px solid var(--border-light); border-radius:8px; margin-bottom:12px; cursor:pointer; }
.summary-mini{ background:var(--section-alt); border-radius:8px; padding:18px; margin-bottom:24px; font-size:13.5px; }
.summary-mini .row{ display:flex; justify-content:space-between; margin-bottom:6px; }
.summary-mini .row.total{ font-weight:700; padding-top:8px; border-top:1px solid var(--border-light); }
.confirm-box{ text-align:center; padding:40px 0; }
.confirm-check{ font-size:44px; margin-bottom:12px; }
.order-num{ font-family:'Space Mono',monospace; }
.checkout-step{ display:none; }
.checkout-step.visible{ display:block; }

/* Account */
.account-wrap{ max-width:420px; margin:0 auto; padding:60px 24px 80px; }
.account-wrap h1{ font-size:26px; margin:0 0 24px; text-align:center; }
.tabs{ display:flex; gap:8px; margin-bottom:24px; background:var(--section-alt); border-radius:20px; padding:4px; }
.tabs button{ flex:1; border:none; background:transparent; padding:9px; border-radius:16px; cursor:pointer; font-weight:600; font-size:13.5px; }
.tabs button.active{ background:#fff; }
.tab-pane{ display:none; }
.tab-pane.visible{ display:block; }

/* FAQ */
.faq-wrap{ max-width:760px; margin:0 auto; padding:40px 24px 80px; }
.faq-wrap h1{ font-size:30px; margin:0 0 32px; color:var(--heading); }
.faq-item{ border-bottom:1px solid var(--border); }
.faq-q{ width:100%; background:none; border:none; text-align:left; padding:16px 0; cursor:pointer; display:flex; justify-content:space-between; align-items:center; font-size:15px; font-weight:600; color:var(--body-text-2); }
.faq-a{ color:var(--muted); margin:0 0 18px; line-height:1.6; display:none; }
.faq-item.open .faq-a{ display:block; }

/* Simple content pages */
.simple-wrap{ max-width:720px; margin:0 auto; padding:60px 24px 80px; }
.simple-wrap h1{ font-size:32px; margin:0 0 24px; color:var(--heading-dark); }
.simple-wrap p{ color:var(--muted-2); line-height:1.8; margin:0 0 20px; font-size:15.5px; }
.info-box{ background:var(--section-alt); border-radius:10px; padding:24px; font-size:13.5px; color:var(--muted); line-height:1.7; }

/* Narrow content (recipe/article/legal) */
.narrow-wrap{ max-width:760px; margin:0 auto; padding:40px 24px 80px; }
.narrow-wrap.article{ max-width:720px; }
.narrow-wrap .eyebrow{ font-size:11px; color:var(--accent-warm); font-weight:700; text-transform:uppercase; letter-spacing:0.04em; margin-bottom:8px; }
.narrow-wrap h1{ font-size:28px; margin:0 0 16px; color:var(--heading-dark); }
.narrow-wrap .hero-img{ aspect-ratio:16/8; border-radius:10px; overflow:hidden; margin-bottom:24px; }
.narrow-wrap .hero-img img{ width:100%; height:100%; object-fit:cover; }
.narrow-wrap p.intro{ color:var(--muted-2); line-height:1.7; margin-bottom:24px; }
.narrow-wrap h3{ font-size:15px; margin:0 0 10px; }
.narrow-wrap ul,.narrow-wrap ol{ color:var(--muted-2); line-height:1.8; margin:0 0 24px; padding-left:20px; }
.narrow-wrap p{ color:var(--muted-2); line-height:1.75; margin:0 0 16px; }

/* Legal */
.legal-nav{ display:flex; gap:16px; flex-wrap:wrap; margin-bottom:32px; font-size:12.5px; }
.legal-nav a{ color:var(--muted-3); font-weight:500; }
.legal-nav a.active{ color:var(--teal); font-weight:700; }
.legal-wrap h1{ font-size:28px; margin:0 0 24px; color:var(--heading-dark); }
.legal-wrap h3{ font-size:15px; margin:24px 0 8px; color:var(--body-text-2); }
.legal-wrap p{ color:var(--body-text-4); line-height:1.7; margin:0 0 10px; font-size:13.5px; }

/* Contact */
.contact-wrap{ max-width:640px; margin:0 auto; padding:60px 24px 80px; }
.contact-wrap h1{ font-size:30px; margin:0 0 8px; color:var(--heading-dark); }
.contact-wrap > p.lead{ color:var(--muted); margin:0 0 32px; }
.success-box{ background:var(--success-bg); border-radius:10px; padding:24px; color:var(--success-text); }
.contact-footer-info{ margin-top:40px; font-size:13px; color:var(--muted-3); line-height:1.7; }

/* Toast */
.toast{ position:fixed; bottom:90px; left:50%; transform:translateX(-50%); background:var(--teal-dark); color:#fff; padding:12px 22px; border-radius:24px; font-size:13.5px; font-weight:600; z-index:80; animation:fadeUp 0.2s ease; display:none; }
.toast.visible{ display:block; }

/* Cookie banner */
.cookie-banner{ position:fixed; bottom:0; left:0; right:0; background:#fff; border-top:1px solid var(--border-light); padding:20px 24px; z-index:90; box-shadow:0 -4px 20px oklch(0 0 0/0.08); display:none; }
.cookie-banner.visible{ display:block; }
.cookie-inner{ max-width:1100px; margin:0 auto; }
.cookie-row{ display:flex; justify-content:space-between; align-items:center; gap:24px; flex-wrap:wrap; }
.cookie-row p{ font-size:13px; color:var(--body-text-4); margin:0; max-width:640px; line-height:1.6; }
.cookie-actions{ display:flex; gap:10px; flex-wrap:wrap; }
.cookie-prefs-grid{ display:grid; grid-template-columns:repeat(5,1fr); gap:14px; margin-bottom:16px; }
.cookie-prefs-grid label{ font-size:12.5px; font-weight:700; display:flex; flex-direction:column; gap:4px; }
.cookie-panel{ display:none; }
.cookie-panel.visible{ display:block; }

/* Page hero image (about/contact banners not needed, but breadcrumb spacing) */
.page-title-block{ max-width:1280px; margin:0 auto; padding:40px 24px 10px; }
.page-title-block h1{ font-size:30px; margin:0 0 10px; color:var(--heading); }
.page-title-block p{ color:var(--muted); margin:0 0 32px; max-width:600px; }
.listing-wrap{ max-width:1280px; margin:0 auto; padding:0 24px 80px; }
