{"id":4394,"date":"2026-08-03T23:02:10","date_gmt":"2026-08-03T23:02:10","guid":{"rendered":"https:\/\/travelshelper.com\/fr\/monde-de-la-gastronomie\/plats-nationaux-grecs\/keftedes-grecs\/"},"modified":"2026-08-03T23:02:10","modified_gmt":"2026-08-03T23:02:10","slug":"keftedes-grecs","status":"publish","type":"tsh_food","link":"https:\/\/travelshelper.com\/fr\/monde-de-la-gastronomie\/plats-nationaux-grecs\/keftedes-grecs\/","title":{"rendered":"Keftedes grecs"},"content":{"rendered":"\n<style>\n\/* Travel S Helper recipe layout v4.0 \u2014 quiet-luxury editorial UI, fully scoped. *\/\n#recipe-fr-gr-keftedes{\n  --tsh-page:#f8f5ef;\n  --tsh-paper:#ffffff;\n  --tsh-paper-warm:#fffdf9;\n  --tsh-ink:#18201e;\n  --tsh-copy:#46514e;\n  --tsh-muted:#68726f;\n  --tsh-line:#e7dfd4;\n  --tsh-line-strong:#d8cbb9;\n  --tsh-gold:#a36b12;\n  --tsh-gold-deep:#6d4307;\n  --tsh-gold-soft:#f8edda;\n  --tsh-night:#192622;\n  --tsh-night-2:#24332f;\n  --tsh-sage:#176745;\n  --tsh-sage-soft:#eaf6ef;\n  --tsh-blue:#285c9d;\n  --tsh-blue-soft:#edf4fd;\n  --tsh-rose:#994435;\n  --tsh-rose-soft:#fbefec;\n  --tsh-violet:#6c5094;\n  --tsh-violet-soft:#f4eff9;\n  --tsh-shadow-sm:0 1px 2px rgba(38,32,24,.04),0 10px 28px rgba(38,32,24,.055);\n  --tsh-shadow-md:0 1px 2px rgba(38,32,24,.05),0 18px 46px rgba(38,32,24,.075);\n  --tsh-shadow-lg:0 2px 4px rgba(38,32,24,.045),0 24px 72px rgba(38,32,24,.095);\n  --tsh-radius-xl:24px;\n  --tsh-radius-lg:18px;\n  --tsh-radius-md:14px;\n  --tsh-radius-sm:11px;\n  --tsh-ease:cubic-bezier(.2,.75,.2,1);\n  --tsh-font:\"Barlow\",\"Avenir Next\",\"Segoe UI Variable\",\"Segoe UI\",Inter,Roboto,Helvetica,Arial,sans-serif;\n  position:relative;\n  isolation:isolate;\n  box-sizing:border-box;\n  width:min(1200px,calc(100% - 24px));\n  margin:clamp(14px,2vw,30px) auto clamp(34px,5vw,64px);\n  color:var(--tsh-ink);\n  color-scheme:light;\n  font-family:var(--tsh-font);\n  font-size:16px;\n  font-weight:400;\n  font-kerning:normal;\n  font-optical-sizing:auto;\n  font-feature-settings:\"kern\" 1,\"liga\" 1,\"calt\" 1;\n  line-height:1.72;\n  text-rendering:optimizeLegibility;\n  -webkit-font-smoothing:antialiased;\n  -moz-osx-font-smoothing:grayscale;\n}\n#recipe-fr-gr-keftedes *,\n#recipe-fr-gr-keftedes *::before,\n#recipe-fr-gr-keftedes *::after{box-sizing:border-box}\n#recipe-fr-gr-keftedes :where(h2,h3,h4,p,figure,figcaption,blockquote,ul,ol,li,dl,dt,dd,table,caption){margin:0;padding:0}\n#recipe-fr-gr-keftedes :where(img){display:block;max-width:100%}\n#recipe-fr-gr-keftedes :where(a){color:var(--tsh-gold-deep);text-decoration-thickness:.08em;text-underline-offset:.18em}\n#recipe-fr-gr-keftedes :where(a,summary){-webkit-tap-highlight-color:transparent}\n#recipe-fr-gr-keftedes :where(a:focus-visible,summary:focus-visible){outline:3px solid rgba(163,107,18,.28);outline-offset:3px;border-radius:9px}\n#recipe-fr-gr-keftedes ::selection{background:var(--tsh-gold-soft);color:var(--tsh-night)}\n#recipe-fr-gr-keftedes .tsh-anchor,\n#recipe-fr-gr-keftedes .tsh-step[id]{scroll-margin-top:88px}\n#recipe-fr-gr-keftedes:lang(ar) :where(.tsh-title,.tsh-card-head h3,.tsh-stage-head h4,.tsh-faq h4,.tsh-main-kicker,.tsh-kicker,.tsh-fact dt,.tsh-control-label,.tsh-table th,.tsh-nutrition dt,.tsh-close-kicker),\n#recipe-fr-gr-keftedes:lang(zh-Hans) :where(.tsh-title,.tsh-card-head h3,.tsh-stage-head h4,.tsh-faq h4,.tsh-main-kicker,.tsh-kicker,.tsh-fact dt,.tsh-control-label,.tsh-table th,.tsh-nutrition dt,.tsh-close-kicker),\n#recipe-fr-gr-keftedes:lang(ja) :where(.tsh-title,.tsh-card-head h3,.tsh-stage-head h4,.tsh-faq h4,.tsh-main-kicker,.tsh-kicker,.tsh-fact dt,.tsh-control-label,.tsh-table th,.tsh-nutrition dt,.tsh-close-kicker),\n#recipe-fr-gr-keftedes:lang(ko) :where(.tsh-title,.tsh-card-head h3,.tsh-stage-head h4,.tsh-faq h4,.tsh-main-kicker,.tsh-kicker,.tsh-fact dt,.tsh-control-label,.tsh-table th,.tsh-nutrition dt,.tsh-close-kicker){letter-spacing:0}\n#recipe-fr-gr-keftedes:lang(ar) :where(.tsh-main-kicker,.tsh-kicker,.tsh-fact dt,.tsh-control-label,.tsh-table th,.tsh-nutrition dt,.tsh-close-kicker),\n#recipe-fr-gr-keftedes:lang(zh-Hans) :where(.tsh-main-kicker,.tsh-kicker,.tsh-fact dt,.tsh-control-label,.tsh-table th,.tsh-nutrition dt,.tsh-close-kicker),\n#recipe-fr-gr-keftedes:lang(ja) :where(.tsh-main-kicker,.tsh-kicker,.tsh-fact dt,.tsh-control-label,.tsh-table th,.tsh-nutrition dt,.tsh-close-kicker),\n#recipe-fr-gr-keftedes:lang(ko) :where(.tsh-main-kicker,.tsh-kicker,.tsh-fact dt,.tsh-control-label,.tsh-table th,.tsh-nutrition dt,.tsh-close-kicker){text-transform:none}\n\n\/* Shared card system *\/\n#recipe-fr-gr-keftedes .tsh-card{\n  position:relative;\n  overflow:hidden;\n  margin-bottom:20px;\n  border:1px solid var(--tsh-line);\n  border-radius:var(--tsh-radius-xl);\n  background:var(--tsh-paper);\n  box-shadow:var(--tsh-shadow-md);\n}\n#recipe-fr-gr-keftedes .tsh-card::after{\n  content:\"\";\n  position:absolute;\n  inset:0;\n  z-index:2;\n  border-radius:inherit;\n  box-shadow:inset 0 1px 0 rgba(255,255,255,.84);\n  pointer-events:none;\n}\n#recipe-fr-gr-keftedes .tsh-card-head{\n  --tone:var(--tsh-gold-deep);\n  --tone-bg:#faf4e9;\n  --tone-rgb:109,67,7;\n  position:relative;\n  z-index:1;\n  overflow:hidden;\n  padding:clamp(22px,2.8vw,32px) clamp(20px,3.3vw,38px);\n  border-bottom:1px solid var(--tsh-line);\n  background:\n    radial-gradient(circle at 96% 4%,rgba(var(--tone-rgb),.105),transparent 17rem),\n    linear-gradient(132deg,var(--tone-bg),#fff 74%);\n}\n#recipe-fr-gr-keftedes .tsh-card-head::before{\n  content:\"\";\n  position:absolute;\n  inset-block:clamp(22px,2.8vw,32px);\n  inset-inline-start:0;\n  width:3px;\n  border-start-end-radius:999px;\n  border-end-end-radius:999px;\n  background:var(--tone);\n}\n#recipe-fr-gr-keftedes .tsh-tone-gold{--tone:var(--tsh-gold-deep);--tone-bg:#fbf3e5;--tone-rgb:109,67,7}\n#recipe-fr-gr-keftedes .tsh-tone-sage{--tone:var(--tsh-sage);--tone-bg:var(--tsh-sage-soft);--tone-rgb:23,103,69}\n#recipe-fr-gr-keftedes .tsh-tone-blue{--tone:var(--tsh-blue);--tone-bg:var(--tsh-blue-soft);--tone-rgb:40,92,157}\n#recipe-fr-gr-keftedes .tsh-tone-rose{--tone:var(--tsh-rose);--tone-bg:var(--tsh-rose-soft);--tone-rgb:153,68,53}\n#recipe-fr-gr-keftedes .tsh-tone-violet{--tone:var(--tsh-violet);--tone-bg:var(--tsh-violet-soft);--tone-rgb:108,80,148}\n#recipe-fr-gr-keftedes .tsh-kicker{\n  display:flex;\n  align-items:center;\n  gap:10px;\n  margin-bottom:8px;\n  color:var(--tone,var(--tsh-gold-deep));\n  font-size:10px;\n  font-weight:820;\n  letter-spacing:.165em;\n  line-height:1.4;\n  text-transform:uppercase;\n}\n#recipe-fr-gr-keftedes .tsh-kicker::before{content:\"\";width:26px;height:2px;flex:0 0 auto;border-radius:999px;background:currentColor}\n#recipe-fr-gr-keftedes .tsh-card-head h3{\n  max-width:780px;\n  color:var(--tsh-ink);\n  font-size:clamp(23px,2.65vw,31px);\n  font-weight:770;\n  letter-spacing:-.03em;\n  line-height:1.16;\n  text-wrap:balance;\n}\n#recipe-fr-gr-keftedes .tsh-head-copy{\n  max-width:920px;\n  margin-top:9px;\n  color:var(--tsh-copy);\n  font-size:14.5px;\n  line-height:1.66;\n  text-wrap:pretty;\n}\n#recipe-fr-gr-keftedes .tsh-card-body{position:relative;z-index:1;padding:clamp(22px,3.2vw,38px)}\n\n\/* Masthead *\/\n#recipe-fr-gr-keftedes .tsh-masthead{\n  position:relative;\n  display:block;\n  overflow:hidden;\n  margin-bottom:20px;\n  border:1px solid var(--tsh-line-strong);\n  border-radius:26px;\n  background:var(--tsh-paper);\n  box-shadow:var(--tsh-shadow-lg);\n}\n#recipe-fr-gr-keftedes .tsh-title-wrap{\n  position:relative;\n  min-width:0;\n  padding:clamp(34px,4.3vw,54px) clamp(22px,4.6vw,58px) clamp(30px,4vw,48px);\n  background:\n    radial-gradient(circle at 100% 0%,rgba(163,107,18,.13),transparent 27rem),\n    radial-gradient(circle at 8% 90%,rgba(23,103,69,.055),transparent 20rem),\n    linear-gradient(145deg,#fffdfa,#fbf5ea);\n}\n#recipe-fr-gr-keftedes .tsh-title-wrap::after{\n  content:\"\";\n  position:absolute;\n  inset:0 0 auto;\n  height:4px;\n  background:linear-gradient(90deg,var(--tsh-gold-deep),#c9963d 46%,#ead8b7 78%,transparent);\n}\n#recipe-fr-gr-keftedes .tsh-main-kicker{\n  display:flex;\n  align-items:center;\n  gap:11px;\n  margin-bottom:14px;\n  color:var(--tsh-gold-deep);\n  font-size:10.5px;\n  font-weight:820;\n  letter-spacing:.18em;\n  line-height:1.45;\n  text-transform:uppercase;\n}\n#recipe-fr-gr-keftedes .tsh-main-kicker::before{content:\"\";width:32px;height:2px;flex:0 0 auto;border-radius:999px;background:currentColor}\n#recipe-fr-gr-keftedes .tsh-title{\n  max-width:930px;\n  color:var(--tsh-ink);\n  font-size:clamp(39px,4.6vw,61px);\n  font-weight:800;\n  letter-spacing:-.052em;\n  line-height:.99;\n  text-wrap:balance;\n}\n#recipe-fr-gr-keftedes .tsh-title-main,\n#recipe-fr-gr-keftedes .tsh-title-accent{display:block}\n#recipe-fr-gr-keftedes .tsh-title b{font-weight:860}\n#recipe-fr-gr-keftedes .tsh-title-accent{\n  max-width:880px;\n  margin-top:11px;\n  color:var(--tsh-gold);\n  font-size:.47em;\n  font-weight:660;\n  letter-spacing:-.026em;\n  line-height:1.17;\n}\n#recipe-fr-gr-keftedes .tsh-lead{\n  max-width:820px;\n  margin-top:19px;\n  color:var(--tsh-copy);\n  font-size:clamp(16px,1.65vw,18px);\n  line-height:1.68;\n  text-wrap:pretty;\n}\n#recipe-fr-gr-keftedes .tsh-tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:21px;list-style:none}\n#recipe-fr-gr-keftedes .tsh-tags li{\n  display:inline-flex;\n  align-items:center;\n  min-height:31px;\n  padding:6px 11px;\n  border:1px solid #dfc89f;\n  border-radius:999px;\n  background:rgba(255,250,241,.9);\n  color:#62400d;\n  box-shadow:inset 0 1px 0 rgba(255,255,255,.9);\n  font-size:12px;\n  font-weight:710;\n  line-height:1.2;\n}\n#recipe-fr-gr-keftedes .tsh-hero{\n  position:relative;\n  min-width:0;\n  border-block:1px solid var(--tsh-line);\n  background:#ece4d8;\n}\n#recipe-fr-gr-keftedes .tsh-hero img{\n  display:block;\n  width:100%;\n  height:auto;\n  aspect-ratio:16\/9;\n  object-fit:cover;\n  object-position:center;\n}\n#recipe-fr-gr-keftedes .tsh-hero figcaption{\n  padding:12px clamp(17px,3vw,31px);\n  border-top:1px solid var(--tsh-line);\n  background:#fff;\n  color:var(--tsh-muted);\n  font-size:12.5px;\n  line-height:1.52;\n}\n#recipe-fr-gr-keftedes .tsh-facts{\n  --tsh-fact-cols:6;\n  display:grid;\n  grid-template-columns:repeat(var(--tsh-fact-cols),minmax(0,1fr));\n  gap:1px;\n  padding:1px;\n  background:var(--tsh-line);\n}\n#recipe-fr-gr-keftedes .tsh-facts--5{--tsh-fact-cols:5}\n#recipe-fr-gr-keftedes .tsh-fact{position:relative;min-width:0;padding:15px 16px 16px;background:var(--tsh-paper-warm)}\n#recipe-fr-gr-keftedes .tsh-fact::before{content:\"\";position:absolute;inset-block:0;inset-inline-start:0;width:2px;background:linear-gradient(var(--tsh-gold),transparent 78%);opacity:.62}\n#recipe-fr-gr-keftedes .tsh-fact dt{margin-bottom:5px;color:var(--tsh-muted);font-size:9.5px;font-weight:830;letter-spacing:.135em;line-height:1.35;text-transform:uppercase}\n#recipe-fr-gr-keftedes .tsh-fact dd{color:var(--tsh-ink);font-size:15px;font-weight:780;letter-spacing:-.012em;line-height:1.3;font-variant-numeric:tabular-nums}\n\n\/* Sticky quick navigation *\/\n#recipe-fr-gr-keftedes .tsh-quick-nav{\n  position:sticky;\n  top:12px;\n  z-index:30;\n  display:flex;\n  flex-wrap:wrap;\n  gap:7px;\n  margin-bottom:20px;\n  padding:8px;\n  overflow-x:auto;\n  overscroll-behavior-inline:contain;\n  border:1px solid rgba(216,203,185,.92);\n  border-radius:17px;\n  background:rgba(255,255,255,.94);\n  box-shadow:0 1px 2px rgba(38,32,24,.045),0 12px 34px rgba(38,32,24,.075);\n  scrollbar-width:none;\n  counter-reset:tsh-nav;\n}\n#recipe-fr-gr-keftedes .tsh-quick-nav::-webkit-scrollbar{display:none}\n@supports ((-webkit-backdrop-filter:blur(14px)) or (backdrop-filter:blur(14px))){\n  #recipe-fr-gr-keftedes .tsh-quick-nav{background:rgba(255,255,255,.82);-webkit-backdrop-filter:saturate(145%) blur(14px);backdrop-filter:saturate(145%) blur(14px)}\n}\n#recipe-fr-gr-keftedes .tsh-quick-nav a{\n  counter-increment:tsh-nav;\n  display:inline-flex;\n  align-items:center;\n  gap:7px;\n  min-height:38px;\n  padding:6px 12px 6px 7px;\n  border:1px solid #e4d5bc;\n  border-radius:999px;\n  background:#fffaf2;\n  color:#58380a;\n  font-size:12.5px;\n  font-weight:730;\n  line-height:1.2;\n  text-decoration:none;\n  white-space:nowrap;\n  transition:border-color .18s var(--tsh-ease),background .18s var(--tsh-ease),color .18s var(--tsh-ease),transform .18s var(--tsh-ease),box-shadow .18s var(--tsh-ease);\n}\n#recipe-fr-gr-keftedes .tsh-quick-nav a::before{\n  content:counter(tsh-nav,decimal-leading-zero);\n  display:grid;\n  min-width:25px;\n  height:25px;\n  padding-inline:4px;\n  place-items:center;\n  border-radius:999px;\n  background:#efe1c7;\n  color:#70470a;\n  font-size:9px;\n  font-weight:850;\n  letter-spacing:.04em;\n  line-height:1;\n}\n#recipe-fr-gr-keftedes .tsh-quick-nav a:hover{border-color:#c9a15a;background:#f8edd9;box-shadow:0 5px 13px rgba(111,67,5,.08);transform:translateY(-1px)}\n#recipe-fr-gr-keftedes .tsh-quick-nav a[aria-current=\"location\"]{border-color:var(--tsh-night);background:var(--tsh-night);color:#fff}\n#recipe-fr-gr-keftedes .tsh-quick-nav a[aria-current=\"location\"]::before{background:#f1c772;color:#2b2110}\n\n\/* Editorial overview *\/\n#recipe-fr-gr-keftedes .tsh-copy-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(24px,4.2vw,52px)}\n#recipe-fr-gr-keftedes .tsh-prose p{color:var(--tsh-copy);font-size:15px;line-height:1.79;text-wrap:pretty}\n#recipe-fr-gr-keftedes .tsh-prose p+p{margin-top:15px}\n#recipe-fr-gr-keftedes .tsh-prose strong{color:var(--tsh-ink);font-weight:750}\n#recipe-fr-gr-keftedes .tsh-callout{\n  position:relative;\n  margin-top:19px;\n  padding:16px 18px 16px 20px;\n  border:1px solid #dfc89e;\n  border-inline-start:4px solid var(--tsh-gold);\n  border-radius:12px;\n  background:linear-gradient(135deg,#fff8ec,#fffdf8);\n  box-shadow:0 8px 22px rgba(111,67,5,.045);\n  color:#513b1a;\n  font-size:14px;\n  font-weight:640;\n  line-height:1.64;\n}\n#recipe-fr-gr-keftedes .tsh-key-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,230px),1fr));gap:13px;margin-top:27px}\n#recipe-fr-gr-keftedes .tsh-key{\n  --tsh-key-tone:var(--tsh-gold);\n  --tsh-key-bg:#fff8ec;\n  position:relative;\n  min-width:0;\n  overflow:hidden;\n  padding:18px;\n  border:1px solid var(--tsh-line);\n  border-radius:15px;\n  background:linear-gradient(150deg,var(--tsh-key-bg),#fff 72%);\n  box-shadow:var(--tsh-shadow-sm);\n}\n#recipe-fr-gr-keftedes .tsh-key::before{content:\"\";position:absolute;inset:0 0 auto;height:3px;background:var(--tsh-key-tone)}\n#recipe-fr-gr-keftedes .tsh-key:nth-child(2){--tsh-key-tone:var(--tsh-sage);--tsh-key-bg:#edf8f2}\n#recipe-fr-gr-keftedes .tsh-key:nth-child(3){--tsh-key-tone:var(--tsh-blue);--tsh-key-bg:#eff5fd}\n#recipe-fr-gr-keftedes .tsh-key-top{display:flex;align-items:center;gap:11px;margin-bottom:9px}\n#recipe-fr-gr-keftedes .tsh-key-no{display:grid;width:34px;height:34px;flex:0 0 auto;place-items:center;border-radius:10px;background:var(--tsh-night);box-shadow:0 5px 12px rgba(25,38,34,.15);color:#f3c873;font-size:11.5px;font-weight:860;line-height:1}\n#recipe-fr-gr-keftedes .tsh-key h4{color:var(--tsh-ink);font-size:15px;font-weight:780;line-height:1.35}\n#recipe-fr-gr-keftedes .tsh-key p{color:var(--tsh-copy);font-size:13.5px;line-height:1.61}\n#recipe-fr-gr-keftedes .tsh-plan{\n  overflow:hidden;\n  margin-top:27px;\n  border:1px solid #ded4c6;\n  border-radius:17px;\n  background:#fff;\n  box-shadow:var(--tsh-shadow-sm);\n}\n#recipe-fr-gr-keftedes .tsh-plan-head{\n  padding:18px 20px;\n  border-bottom:1px solid var(--tsh-line);\n  background:\n    radial-gradient(circle at 96% 0%,rgba(109,67,7,.09),transparent 15rem),\n    linear-gradient(135deg,#f8f3ea,#fff 86%);\n}\n#recipe-fr-gr-keftedes .tsh-plan-kicker{margin-bottom:5px;color:var(--tsh-gold-deep);font-size:9.5px;font-weight:830;letter-spacing:.145em;line-height:1.4;text-transform:uppercase}\n#recipe-fr-gr-keftedes .tsh-plan-head h4{color:var(--tsh-ink);font-size:18px;font-weight:800;letter-spacing:-.015em;line-height:1.32}\n#recipe-fr-gr-keftedes .tsh-plan-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr));gap:1px;background:var(--tsh-line);list-style:none}\n#recipe-fr-gr-keftedes .tsh-plan-item{--plan-tone:var(--tsh-gold);position:relative;min-width:0;padding:18px;background:linear-gradient(150deg,#fffdf9,#fff)}\n#recipe-fr-gr-keftedes .tsh-plan-item::before{content:\"\";position:absolute;inset:0 0 auto;height:3px;background:var(--plan-tone)}\n#recipe-fr-gr-keftedes .tsh-plan-item:nth-child(4n+2){--plan-tone:#4d6359}\n#recipe-fr-gr-keftedes .tsh-plan-item:nth-child(4n+3){--plan-tone:#66565c}\n#recipe-fr-gr-keftedes .tsh-plan-item:nth-child(4n+4){--plan-tone:#59666d}\n#recipe-fr-gr-keftedes .tsh-plan-when{display:inline-flex;margin-bottom:9px;padding:5px 8px;border:1px solid #e0d3c0;border-radius:999px;background:#faf5ed;color:#654714;font-size:10.5px;font-weight:800;line-height:1.2}\n#recipe-fr-gr-keftedes .tsh-plan-item strong{display:block;margin-bottom:6px;color:var(--tsh-ink);font-size:14.5px;font-weight:800;line-height:1.38}\n#recipe-fr-gr-keftedes .tsh-plan-item p{color:var(--tsh-copy);font-size:13px;line-height:1.6}\n\n\/* Ingredients *\/\n#recipe-fr-gr-keftedes .tsh-ingredient-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,430px),1fr));gap:15px}\n#recipe-fr-gr-keftedes .tsh-ingredient-card{overflow:hidden;border:1px solid var(--tsh-line);border-radius:16px;background:#fff;box-shadow:var(--tsh-shadow-sm)}\n#recipe-fr-gr-keftedes .tsh-ingredient-card h4{\n  position:relative;\n  padding:16px 19px 14px 23px;\n  border-bottom:1px solid var(--tsh-line);\n  background:linear-gradient(135deg,#fbf6ed,#fff);\n  color:var(--tsh-ink);\n  font-size:16px;\n  font-weight:780;\n  line-height:1.35;\n}\n#recipe-fr-gr-keftedes .tsh-ingredient-card h4::before{content:\"\";position:absolute;inset-block:17px 15px;inset-inline-start:0;width:3px;border-start-end-radius:999px;border-end-end-radius:999px;background:var(--tsh-sage)}\n#recipe-fr-gr-keftedes .tsh-ingredient-card:nth-child(2) h4::before{background:var(--tsh-gold)}\n#recipe-fr-gr-keftedes .tsh-ingredient-card ul{list-style:none}\n#recipe-fr-gr-keftedes .tsh-ingredient-card li{\n  display:grid;\n  grid-template-columns:minmax(88px,auto) minmax(0,1fr);\n  gap:13px;\n  align-items:start;\n  padding:12px 18px;\n  border-bottom:1px solid var(--tsh-line);\n  color:var(--tsh-copy);\n  font-size:14px;\n  line-height:1.52;\n}\n#recipe-fr-gr-keftedes .tsh-ingredient-card li:nth-child(even){background:#fdfbf8}\n#recipe-fr-gr-keftedes .tsh-ingredient-card li:last-child{border-bottom:0}\n#recipe-fr-gr-keftedes .tsh-amount{display:inline-flex;width:max-content;max-width:100%;min-height:26px;align-items:center;padding:3px 8px;border:1px solid #e4d8c7;border-radius:999px;background:#f8f3eb;color:var(--tsh-ink);font-size:12.5px;font-weight:800;line-height:1.25;font-variant-numeric:tabular-nums}\n#recipe-fr-gr-keftedes .tsh-ingredient-card small{display:block;margin-top:4px;color:var(--tsh-muted);font-size:12.2px;line-height:1.46}\n#recipe-fr-gr-keftedes .tsh-note-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,340px),1fr));gap:13px;margin-top:15px}\n#recipe-fr-gr-keftedes .tsh-note{\n  position:relative;\n  min-width:0;\n  padding:17px 18px;\n  padding-inline-start:51px;\n  border:1px solid var(--tsh-line);\n  border-radius:14px;\n  background:linear-gradient(145deg,#fbfaf7,#fff);\n  box-shadow:0 7px 20px rgba(38,32,24,.035);\n  color:var(--tsh-copy);\n  font-size:13.5px;\n  line-height:1.6;\n}\n#recipe-fr-gr-keftedes .tsh-note::before{content:\"i\";position:absolute;inset-block-start:17px;inset-inline-start:17px;display:grid;width:23px;height:23px;place-items:center;border:1px solid #c9aa71;border-radius:50%;background:#fff;color:var(--tsh-gold-deep);font-family:Georgia,serif;font-size:14px;font-style:italic;line-height:1}\n#recipe-fr-gr-keftedes .tsh-note strong{color:var(--tsh-ink);font-weight:780}\n\n\/* Method *\/\n#recipe-fr-gr-keftedes .tsh-stages{display:grid;gap:18px}\n#recipe-fr-gr-keftedes .tsh-stage-card{\n  --stage-tone:#73542d;\n  --stage-tone-rgb:115,84,45;\n  --stage-bg:#f8f3ea;\n  --stage-pill:#fcf8f1;\n  --stage-border:#ded0bb;\n  overflow:hidden;\n  border:1px solid #ded6ca;\n  border-radius:18px;\n  background:var(--tsh-paper-warm);\n  box-shadow:0 1px 2px rgba(38,32,24,.035),0 12px 30px rgba(38,32,24,.05);\n}\n#recipe-fr-gr-keftedes .tsh-stage-card:nth-child(4n+2){--stage-tone:#4d6359;--stage-tone-rgb:77,99,89;--stage-bg:#f2f6f3;--stage-pill:#f7faf8;--stage-border:#cfdad4}\n#recipe-fr-gr-keftedes .tsh-stage-card:nth-child(4n+3){--stage-tone:#66565c;--stage-tone-rgb:102,86,92;--stage-bg:#f6f2f3;--stage-pill:#faf7f8;--stage-border:#ddd1d5}\n#recipe-fr-gr-keftedes .tsh-stage-card:nth-child(4n+4){--stage-tone:#59666d;--stage-tone-rgb:89,102,109;--stage-bg:#f2f5f6;--stage-pill:#f7f9fa;--stage-border:#d1d9dd}\n#recipe-fr-gr-keftedes .tsh-stage-head{\n  display:grid;\n  grid-template-columns:auto minmax(0,1fr) auto;\n  gap:14px;\n  align-items:center;\n  padding:17px 20px;\n  border-bottom:1px solid var(--stage-border);\n  background:\n    radial-gradient(circle at 96% 0%,rgba(var(--stage-tone-rgb),.09),transparent 15rem),\n    linear-gradient(135deg,var(--stage-bg),#fff 86%);\n}\n#recipe-fr-gr-keftedes .tsh-stage-badge{display:grid;width:40px;height:40px;place-items:center;border:1px solid rgba(255,255,255,.42);border-radius:50%;background:linear-gradient(145deg,var(--stage-tone),rgba(25,38,34,.9));box-shadow:0 5px 13px rgba(25,38,34,.12);color:#fff;font-size:11.5px;font-weight:820;letter-spacing:.035em;line-height:1}\n#recipe-fr-gr-keftedes .tsh-stage-head h4{color:var(--tsh-ink);font-size:17px;font-weight:800;letter-spacing:-.012em;line-height:1.3}\n#recipe-fr-gr-keftedes .tsh-stage-time{padding:6px 11px;border:1px solid var(--stage-border);border-radius:999px;background:rgba(255,255,255,.72);box-shadow:inset 0 1px 0 rgba(255,255,255,.9);color:var(--stage-tone);font-size:11.5px;font-weight:760;line-height:1.2;white-space:nowrap}\n#recipe-fr-gr-keftedes .tsh-step-grid{display:grid;grid-template-columns:1fr;gap:0;background:#fff;list-style:none}\n#recipe-fr-gr-keftedes .tsh-step{\n  position:relative;\n  display:grid;\n  grid-template-columns:42px minmax(0,1fr);\n  gap:15px;\n  min-width:0;\n  padding:22px 24px;\n  border:0;\n  border-bottom:1px solid rgba(216,203,185,.68);\n  background:linear-gradient(90deg,rgba(var(--stage-tone-rgb),.035),#fff 19%);\n}\n#recipe-fr-gr-keftedes .tsh-step::before{content:\"\";position:absolute;inset-block:58px -1px;inset-inline-start:41px;width:1px;background:linear-gradient(rgba(var(--stage-tone-rgb),.34),rgba(216,203,185,.3))}\n#recipe-fr-gr-keftedes .tsh-step-grid .tsh-step:last-child{border-bottom:0}\n#recipe-fr-gr-keftedes .tsh-step:last-child::before{display:none}\n#recipe-fr-gr-keftedes .tsh-step>div{max-width:920px}\n#recipe-fr-gr-keftedes .tsh-step-no{position:relative;z-index:1;display:grid;width:36px;height:36px;place-items:center;border:1px solid rgba(var(--stage-tone-rgb),.22);border-radius:50%;background:#fff;box-shadow:0 4px 11px rgba(25,38,34,.08);color:var(--stage-tone);font-size:11px;font-weight:850;letter-spacing:.025em;line-height:1}\n#recipe-fr-gr-keftedes .tsh-step h4{margin-bottom:6px;color:var(--tsh-ink);font-size:16px;font-weight:790;letter-spacing:-.012em;line-height:1.34}\n#recipe-fr-gr-keftedes .tsh-step p{color:var(--tsh-copy);font-size:14px;line-height:1.69;text-wrap:pretty}\n#recipe-fr-gr-keftedes .tsh-cue{display:inline-flex;align-items:flex-start;gap:6px;margin-top:10px;padding:6px 10px;border:1px solid rgba(var(--stage-tone-rgb),.23);border-radius:999px;background:rgba(var(--stage-tone-rgb),.065);color:var(--stage-tone);font-size:11.5px;font-weight:760;line-height:1.38}\n#recipe-fr-gr-keftedes .tsh-cue::before{content:\"\u2713\";flex:0 0 auto;font-size:10px;font-weight:900;line-height:1.55}\n#recipe-fr-gr-keftedes .tsh-step-grid--flat{--stage-tone:#59666d;--stage-tone-rgb:89,102,109;overflow:hidden;border:1px solid var(--tsh-line);border-radius:17px}\n\n\/* Control points and troubleshooting *\/\n#recipe-fr-gr-keftedes .tsh-control-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,230px),1fr));gap:13px}\n#recipe-fr-gr-keftedes .tsh-control{\n  --control-tone:var(--tsh-gold);\n  --control-bg:#fff8ec;\n  position:relative;\n  min-width:0;\n  overflow:hidden;\n  padding:19px;\n  border:1px solid var(--tsh-line);\n  border-radius:15px;\n  background:linear-gradient(150deg,var(--control-bg),#fff 75%);\n  box-shadow:var(--tsh-shadow-sm);\n}\n#recipe-fr-gr-keftedes .tsh-control::before{content:\"\";position:absolute;inset:0 0 auto;height:3px;background:var(--control-tone)}\n#recipe-fr-gr-keftedes .tsh-control:nth-child(2){--control-tone:var(--tsh-blue);--control-bg:#eef5fd}\n#recipe-fr-gr-keftedes .tsh-control:nth-child(3){--control-tone:var(--tsh-sage);--control-bg:#edf8f2}\n#recipe-fr-gr-keftedes .tsh-control-label{margin-bottom:6px;color:var(--tsh-muted);font-size:9.5px;font-weight:840;letter-spacing:.135em;line-height:1.35;text-transform:uppercase}\n#recipe-fr-gr-keftedes .tsh-control strong{display:block;color:var(--tsh-ink);font-size:22px;font-weight:840;letter-spacing:-.025em;line-height:1.18;font-variant-numeric:tabular-nums}\n#recipe-fr-gr-keftedes .tsh-control p{margin-top:8px;color:var(--tsh-copy);font-size:13px;line-height:1.58}\n#recipe-fr-gr-keftedes .tsh-table-wrap{margin-top:19px;overflow-x:auto;border:1px solid var(--tsh-line);border-radius:15px;background:#fff;box-shadow:var(--tsh-shadow-sm)}\n#recipe-fr-gr-keftedes .tsh-table{width:100%;min-width:760px;border-collapse:collapse;table-layout:fixed}\n#recipe-fr-gr-keftedes .tsh-table caption{padding:15px 17px;border-bottom:1px solid var(--tsh-line);background:linear-gradient(135deg,#fbf8f2,#fff);text-align:start;color:var(--tsh-ink);font-size:15px;font-weight:800;line-height:1.35}\n#recipe-fr-gr-keftedes .tsh-table th{padding:12px 14px;background:var(--tsh-night-2);color:#fff;font-size:10px;font-weight:840;letter-spacing:.105em;line-height:1.35;text-align:start;text-transform:uppercase}\n#recipe-fr-gr-keftedes .tsh-table th:nth-child(1){width:24%}\n#recipe-fr-gr-keftedes .tsh-table th:nth-child(2){width:38%}\n#recipe-fr-gr-keftedes .tsh-table th:nth-child(3){width:38%}\n#recipe-fr-gr-keftedes .tsh-table td{padding:14px;border-top:1px solid var(--tsh-line);border-inline-end:1px solid var(--tsh-line);color:var(--tsh-copy);font-size:13px;line-height:1.55;vertical-align:top}\n#recipe-fr-gr-keftedes .tsh-table td:last-child,#recipe-fr-gr-keftedes .tsh-table th:last-child{border-inline-end:0}\n#recipe-fr-gr-keftedes .tsh-table tbody tr:nth-child(even){background:#fcfaf7}\n#recipe-fr-gr-keftedes .tsh-table td:first-child{color:var(--tsh-ink);font-weight:780}\n\n\/* Practical cards and FAQ *\/\n#recipe-fr-gr-keftedes .tsh-practical-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,340px),1fr));gap:13px}\n#recipe-fr-gr-keftedes .tsh-practical-card{\n  --practical-tone:var(--tsh-gold);\n  --practical-bg:#fff9ef;\n  position:relative;\n  min-width:0;\n  overflow:hidden;\n  padding:19px;\n  border:1px solid var(--tsh-line);\n  border-radius:15px;\n  background:linear-gradient(145deg,var(--practical-bg),#fff 68%);\n  box-shadow:var(--tsh-shadow-sm);\n}\n#recipe-fr-gr-keftedes .tsh-practical-card::before{content:\"\";position:absolute;inset:0 0 auto;height:3px;background:var(--practical-tone)}\n#recipe-fr-gr-keftedes .tsh-practical-card:nth-child(2){--practical-tone:var(--tsh-sage);--practical-bg:#eff8f3}\n#recipe-fr-gr-keftedes .tsh-practical-card:nth-child(3){--practical-tone:var(--tsh-blue);--practical-bg:#f0f6fd}\n#recipe-fr-gr-keftedes .tsh-practical-card:nth-child(4){--practical-tone:var(--tsh-violet);--practical-bg:#f6f1fa}\n#recipe-fr-gr-keftedes .tsh-practical-card h4{display:flex;align-items:center;gap:10px;margin-bottom:8px;color:var(--tsh-ink);font-size:15.5px;font-weight:800;line-height:1.35}\n#recipe-fr-gr-keftedes .tsh-practical-card h4::before{content:\"\";width:18px;height:2px;flex:0 0 auto;border-radius:999px;background:var(--practical-tone)}\n#recipe-fr-gr-keftedes .tsh-practical-card p,#recipe-fr-gr-keftedes .tsh-practical-card li{color:var(--tsh-copy);font-size:13.6px;line-height:1.63}\n#recipe-fr-gr-keftedes .tsh-practical-card ul,#recipe-fr-gr-keftedes .tsh-practical-card ol{margin-top:7px;padding-inline-start:20px}\n#recipe-fr-gr-keftedes .tsh-practical-card li+li{margin-top:5px}\n#recipe-fr-gr-keftedes .tsh-practical-card li::marker{color:var(--practical-tone);font-weight:850}\n#recipe-fr-gr-keftedes .tsh-swap{\n  overflow:hidden;\n  margin-top:15px;\n  border:1px solid #ded6ca;\n  border-radius:16px;\n  background:#fff;\n  box-shadow:var(--tsh-shadow-sm);\n}\n#recipe-fr-gr-keftedes .tsh-swap-head{padding:17px 20px;border-bottom:1px solid var(--tsh-line);background:linear-gradient(135deg,#f6f2f3,#fff 86%)}\n#recipe-fr-gr-keftedes .tsh-swap-head h4{margin-bottom:5px;color:var(--tsh-ink);font-size:16px;font-weight:800;line-height:1.35}\n#recipe-fr-gr-keftedes .tsh-swap-head p{color:var(--tsh-copy);font-size:13px;line-height:1.58}\n#recipe-fr-gr-keftedes .tsh-swap-list>div{display:grid;grid-template-columns:minmax(155px,.62fr) minmax(0,1.38fr);gap:16px;padding:14px 18px;border-bottom:1px solid var(--tsh-line)}\n#recipe-fr-gr-keftedes .tsh-swap-list>div:nth-child(even){background:#fdfbf8}\n#recipe-fr-gr-keftedes .tsh-swap-list>div:last-child{border-bottom:0}\n#recipe-fr-gr-keftedes .tsh-swap-list dt{color:var(--tsh-ink);font-size:13.2px;font-weight:800;line-height:1.48}\n#recipe-fr-gr-keftedes .tsh-swap-list dd{color:var(--tsh-copy);font-size:13.2px;line-height:1.58}\n#recipe-fr-gr-keftedes .tsh-swap-list dd strong{color:#66565c;font-weight:800}\n#recipe-fr-gr-keftedes .tsh-faq-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,340px),1fr));gap:13px;align-items:start}\n#recipe-fr-gr-keftedes .tsh-faq{\n  min-width:0;\n  overflow:hidden;\n  border:1px solid var(--tsh-line);\n  border-radius:15px;\n  background:#fff;\n  box-shadow:var(--tsh-shadow-sm);\n}\n#recipe-fr-gr-keftedes .tsh-faq summary{list-style:none;cursor:pointer}\n#recipe-fr-gr-keftedes .tsh-faq summary::-webkit-details-marker{display:none}\n#recipe-fr-gr-keftedes .tsh-faq-top{display:grid;grid-template-columns:38px minmax(0,1fr) 30px;gap:11px;align-items:center;min-height:68px;padding:14px 15px;background:linear-gradient(135deg,#fbf7ef,#fff)}\n#recipe-fr-gr-keftedes .tsh-faq-top::after{content:\"+\";display:grid;width:28px;height:28px;place-items:center;border:1px solid #ddcfbb;border-radius:9px;background:#fff;color:var(--tsh-gold-deep);font-size:18px;font-weight:650;line-height:1;transition:transform .18s var(--tsh-ease),background .18s var(--tsh-ease),color .18s var(--tsh-ease)}\n#recipe-fr-gr-keftedes .tsh-faq[open] .tsh-faq-top::after{content:\"\u2212\";background:var(--tsh-night);color:#f4cb79;transform:rotate(180deg)}\n#recipe-fr-gr-keftedes .tsh-faq-no{display:grid;width:35px;height:35px;place-items:center;border-radius:11px;background:var(--tsh-night);box-shadow:0 5px 12px rgba(25,38,34,.14);color:#f3c873;font-size:11px;font-weight:860;line-height:1}\n#recipe-fr-gr-keftedes .tsh-faq h4{color:var(--tsh-ink);font-size:14.5px;font-weight:800;line-height:1.38}\n#recipe-fr-gr-keftedes .tsh-faq-answer{border-top:1px solid var(--tsh-line);background:#fff}\n#recipe-fr-gr-keftedes .tsh-faq-answer p{padding:16px;color:var(--tsh-copy);font-size:13.5px;line-height:1.65}\n\n\/* Nutrition and closing *\/\n#recipe-fr-gr-keftedes .tsh-nutrition{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:1px;padding:1px;overflow:hidden;border:1px solid var(--tsh-line);border-radius:15px;background:var(--tsh-line);box-shadow:var(--tsh-shadow-sm)}\n#recipe-fr-gr-keftedes .tsh-nutrition>div{position:relative;min-width:0;padding:15px;background:linear-gradient(145deg,#fff,#fdfbf8)}\n#recipe-fr-gr-keftedes .tsh-nutrition>div::before{content:\"\";position:absolute;inset-block:0;inset-inline-start:0;width:2px;background:var(--tsh-sage);opacity:.55}\n#recipe-fr-gr-keftedes .tsh-nutrition dt{margin-bottom:5px;color:var(--tsh-muted);font-size:9px;font-weight:840;letter-spacing:.125em;line-height:1.35;text-transform:uppercase}\n#recipe-fr-gr-keftedes .tsh-nutrition dd{color:var(--tsh-ink);font-size:16px;font-weight:820;letter-spacing:-.018em;line-height:1.25;font-variant-numeric:tabular-nums}\n#recipe-fr-gr-keftedes .tsh-nutrition-note{margin-top:13px;color:var(--tsh-muted);font-size:12.5px;line-height:1.6}\n#recipe-fr-gr-keftedes .tsh-nutrition-note strong{color:var(--tsh-ink);font-weight:780}\n#recipe-fr-gr-keftedes .tsh-close{\n  position:relative;\n  overflow:hidden;\n  padding:clamp(25px,3.4vw,38px);\n  border:1px solid #31413c;\n  border-radius:21px;\n  background:\n    radial-gradient(circle at 100% 0%,rgba(243,200,115,.17),transparent 23rem),\n    linear-gradient(135deg,var(--tsh-night),var(--tsh-night-2));\n  box-shadow:var(--tsh-shadow-lg);\n}\n#recipe-fr-gr-keftedes .tsh-close::before{content:\"\";position:absolute;inset-block:0;inset-inline-start:0;width:4px;background:linear-gradient(var(--tsh-gold),#e2b968)}\n#recipe-fr-gr-keftedes .tsh-close::after{content:\"\u201c\";position:absolute;inset-inline-end:clamp(18px,4vw,48px);inset-block-start:-27px;color:rgba(255,255,255,.055);font-family:Georgia,serif;font-size:180px;line-height:1;pointer-events:none}\n#recipe-fr-gr-keftedes .tsh-close-kicker{position:relative;z-index:1;margin-bottom:7px;color:#f1c878;font-size:10px;font-weight:840;letter-spacing:.16em;text-transform:uppercase}\n#recipe-fr-gr-keftedes .tsh-close-quote{position:relative;z-index:1;max-width:930px;color:#fff;font-size:clamp(21px,2.4vw,28px);font-weight:760;letter-spacing:-.028em;line-height:1.34;text-wrap:balance}\n#recipe-fr-gr-keftedes .tsh-close-copy{position:relative;z-index:1;max-width:930px;margin-top:10px;color:#ccd6d2;font-size:13.8px;line-height:1.65}\n\n\/* Desktop refinements *\/\n@media (min-width:901px){\n  #recipe-fr-gr-keftedes .tsh-card-head--split{display:grid;grid-template-columns:minmax(0,1.18fr) minmax(260px,.72fr);column-gap:clamp(28px,4vw,52px);align-items:end}\n  #recipe-fr-gr-keftedes .tsh-card-head--split .tsh-kicker{grid-column:1;grid-row:1}\n  #recipe-fr-gr-keftedes .tsh-card-head--split h3{grid-column:1;grid-row:2}\n  #recipe-fr-gr-keftedes .tsh-card-head--split .tsh-head-copy{grid-column:2;grid-row:1\/span 2;align-self:end;margin:0;padding-inline-start:clamp(22px,3vw,34px);border-inline-start:1px solid rgba(var(--tone-rgb),.22)}\n}\n@media (min-width:1040px){\n  #recipe-fr-gr-keftedes .tsh-title-wrap{padding:54px 58px 48px}\n  #recipe-fr-gr-keftedes .tsh-title{font-size:clamp(45px,4.05vw,58px)}\n  #recipe-fr-gr-keftedes .tsh-title-accent{font-size:.455em}\n}\n\n\/* Hover polish *\/\n@media (hover:hover) and (pointer:fine){\n  #recipe-fr-gr-keftedes .tsh-key,\n  #recipe-fr-gr-keftedes .tsh-control,\n  #recipe-fr-gr-keftedes .tsh-practical-card,\n  #recipe-fr-gr-keftedes .tsh-faq,\n  #recipe-fr-gr-keftedes .tsh-ingredient-card{transition:transform .2s var(--tsh-ease),border-color .2s var(--tsh-ease),box-shadow .2s var(--tsh-ease)}\n  #recipe-fr-gr-keftedes .tsh-key:hover,\n  #recipe-fr-gr-keftedes .tsh-control:hover,\n  #recipe-fr-gr-keftedes .tsh-practical-card:hover,\n  #recipe-fr-gr-keftedes .tsh-faq:hover,\n  #recipe-fr-gr-keftedes .tsh-ingredient-card:hover{transform:translateY(-3px);border-color:#cfbfa7;box-shadow:0 2px 4px rgba(38,32,24,.035),0 16px 34px rgba(38,32,24,.08)}\n  #recipe-fr-gr-keftedes .tsh-faq-top:hover::after{border-color:#c7aa78;background:#fff8ec}\n  #recipe-fr-gr-keftedes .tsh-faq[open] .tsh-faq-top:hover::after{background:var(--tsh-night)}\n}\n\n\/* Responsive *\/\n@media (max-width:900px){\n  #recipe-fr-gr-keftedes .tsh-copy-grid{grid-template-columns:1fr}\n  #recipe-fr-gr-keftedes .tsh-key-grid,#recipe-fr-gr-keftedes .tsh-control-grid{grid-template-columns:1fr}\n  #recipe-fr-gr-keftedes .tsh-facts{--tsh-fact-cols:3}\n  #recipe-fr-gr-keftedes .tsh-nutrition{grid-template-columns:repeat(3,minmax(0,1fr))}\n}\n@media (max-width:720px){\n  #recipe-fr-gr-keftedes{width:calc(100% - 12px);margin-top:10px;font-size:15.5px}\n  #recipe-fr-gr-keftedes .tsh-anchor,\n  #recipe-fr-gr-keftedes .tsh-step[id]{scroll-margin-top:77px}\n  #recipe-fr-gr-keftedes .tsh-card,#recipe-fr-gr-keftedes .tsh-masthead{border-radius:18px}\n  #recipe-fr-gr-keftedes .tsh-title-wrap{padding:31px 19px 27px}\n  #recipe-fr-gr-keftedes .tsh-title{font-size:clamp(34px,10.8vw,46px);line-height:1.01}\n  #recipe-fr-gr-keftedes .tsh-title-accent{margin-top:10px;font-size:.52em;line-height:1.2}\n  #recipe-fr-gr-keftedes .tsh-lead{margin-top:17px;font-size:16px;line-height:1.67}\n  #recipe-fr-gr-keftedes .tsh-card-head{padding:22px 19px}\n  #recipe-fr-gr-keftedes .tsh-card-head::before{inset-block:22px;inset-inline-start:0}\n  #recipe-fr-gr-keftedes .tsh-card-head h3{font-size:clamp(22px,6.8vw,28px)}\n  #recipe-fr-gr-keftedes .tsh-card-body{padding:20px 17px}\n  #recipe-fr-gr-keftedes .tsh-quick-nav{top:6px;flex-wrap:nowrap;gap:6px;margin-bottom:18px;padding:7px;border-radius:15px}\n  #recipe-fr-gr-keftedes .tsh-quick-nav a{min-height:36px;padding-inline-end:11px;font-size:11.8px}\n  #recipe-fr-gr-keftedes .tsh-quick-nav a::before{min-width:23px;height:23px;font-size:8.5px}\n  #recipe-fr-gr-keftedes .tsh-ingredient-grid,#recipe-fr-gr-keftedes .tsh-note-grid,#recipe-fr-gr-keftedes .tsh-practical-grid,#recipe-fr-gr-keftedes .tsh-faq-grid{grid-template-columns:1fr}\n  #recipe-fr-gr-keftedes .tsh-step-grid{grid-template-columns:1fr}\n  #recipe-fr-gr-keftedes .tsh-step{border-inline-end:0;border-bottom:1px solid rgba(216,203,185,.68)}\n  #recipe-fr-gr-keftedes .tsh-step-grid .tsh-step:last-child{border-bottom:0}\n  #recipe-fr-gr-keftedes .tsh-step{grid-template-columns:36px minmax(0,1fr);gap:12px;padding:18px 16px}\n  #recipe-fr-gr-keftedes .tsh-step::before{inset-block:53px -1px;inset-inline-start:33px}\n  #recipe-fr-gr-keftedes .tsh-step:last-child::before{display:none}\n  #recipe-fr-gr-keftedes .tsh-cue{border-radius:10px}\n  #recipe-fr-gr-keftedes .tsh-table-wrap{overflow:visible;border:0;border-radius:0;background:transparent;box-shadow:none}\n  #recipe-fr-gr-keftedes .tsh-table{display:block;min-width:0;border-collapse:separate;table-layout:auto}\n  #recipe-fr-gr-keftedes .tsh-table caption{display:block;margin-bottom:10px;border:1px solid var(--tsh-line);border-radius:13px;background:#fbf8f2}\n  #recipe-fr-gr-keftedes .tsh-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}\n  #recipe-fr-gr-keftedes .tsh-table tbody{display:grid;gap:10px}\n  #recipe-fr-gr-keftedes .tsh-table tr{display:block;overflow:hidden;border:1px solid var(--tsh-line);border-radius:14px;background:#fff;box-shadow:var(--tsh-shadow-sm)}\n  #recipe-fr-gr-keftedes .tsh-table tbody tr:nth-child(even){background:#fff}\n  #recipe-fr-gr-keftedes .tsh-table td{display:grid;grid-template-columns:minmax(96px,34%) minmax(0,1fr);gap:12px;padding:12px 14px;border:0;border-bottom:1px solid var(--tsh-line);font-size:13px}\n  #recipe-fr-gr-keftedes .tsh-table td:last-child{border-bottom:0}\n  #recipe-fr-gr-keftedes .tsh-table td::before{content:attr(data-label);color:var(--tsh-muted);font-size:9px;font-weight:840;letter-spacing:.105em;line-height:1.45;text-transform:uppercase}\n  #recipe-fr-gr-keftedes .tsh-table td:first-child{background:#fbf7ef;color:var(--tsh-ink);font-size:13.5px}\n  #recipe-fr-gr-keftedes .tsh-close{border-radius:18px}\n}\n@media (max-width:520px){\n  #recipe-fr-gr-keftedes .tsh-facts{--tsh-fact-cols:2}\n  #recipe-fr-gr-keftedes .tsh-nutrition{grid-template-columns:repeat(2,minmax(0,1fr))}\n  #recipe-fr-gr-keftedes .tsh-plan-grid{grid-template-columns:1fr}\n  #recipe-fr-gr-keftedes .tsh-swap-list>div{grid-template-columns:1fr;gap:4px;padding:13px 15px}\n  #recipe-fr-gr-keftedes .tsh-stage-head{grid-template-columns:auto minmax(0,1fr)}\n  #recipe-fr-gr-keftedes .tsh-stage-time{grid-column:2;justify-self:start}\n  #recipe-fr-gr-keftedes .tsh-ingredient-card li{grid-template-columns:84px minmax(0,1fr);gap:10px;padding:12px 13px}\n  #recipe-fr-gr-keftedes .tsh-amount{font-size:11.8px}\n  #recipe-fr-gr-keftedes .tsh-faq-top{grid-template-columns:36px minmax(0,1fr) 28px;padding:13px}\n}\n@media (max-width:370px){\n  #recipe-fr-gr-keftedes{width:calc(100% - 8px)}\n  #recipe-fr-gr-keftedes .tsh-title-wrap{padding-inline:16px}\n  #recipe-fr-gr-keftedes .tsh-card-body{padding-inline:14px}\n  #recipe-fr-gr-keftedes .tsh-ingredient-card li{grid-template-columns:76px minmax(0,1fr)}\n}\n\n\/* Motion, contrast and print *\/\n@media (prefers-reduced-motion:reduce){\n  #recipe-fr-gr-keftedes *,#recipe-fr-gr-keftedes *::before,#recipe-fr-gr-keftedes *::after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}\n}\n@media (forced-colors:active){\n  #recipe-fr-gr-keftedes .tsh-card,#recipe-fr-gr-keftedes .tsh-masthead,#recipe-fr-gr-keftedes .tsh-close,#recipe-fr-gr-keftedes .tsh-quick-nav{border:1px solid CanvasText;box-shadow:none}\n  #recipe-fr-gr-keftedes .tsh-step-no,#recipe-fr-gr-keftedes .tsh-stage-badge,#recipe-fr-gr-keftedes .tsh-faq-no{border:1px solid CanvasText}\n}\n@media print{\n  #recipe-fr-gr-keftedes{width:100%;max-width:none;margin:0;color:#000;font-size:10.5pt;line-height:1.42}\n  #recipe-fr-gr-keftedes .tsh-quick-nav,#recipe-fr-gr-keftedes .tsh-hero{display:none!important}\n  #recipe-fr-gr-keftedes .tsh-masthead{display:block}\n  #recipe-fr-gr-keftedes .tsh-card,#recipe-fr-gr-keftedes .tsh-masthead,#recipe-fr-gr-keftedes .tsh-close{margin-bottom:10pt;border:1px solid #aaa;border-radius:0;box-shadow:none}\n  #recipe-fr-gr-keftedes .tsh-title-wrap,#recipe-fr-gr-keftedes .tsh-card-head,#recipe-fr-gr-keftedes .tsh-close{background:#fff!important;color:#000!important}\n  #recipe-fr-gr-keftedes .tsh-title{font-size:25pt}\n  #recipe-fr-gr-keftedes .tsh-title-accent,#recipe-fr-gr-keftedes .tsh-close-kicker,#recipe-fr-gr-keftedes .tsh-close-quote,#recipe-fr-gr-keftedes .tsh-close-copy{color:#000!important}\n  #recipe-fr-gr-keftedes .tsh-copy-grid{grid-template-columns:repeat(2,minmax(0,1fr))}\n  #recipe-fr-gr-keftedes .tsh-ingredient-grid,#recipe-fr-gr-keftedes .tsh-practical-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr))}\n  #recipe-fr-gr-keftedes .tsh-step-grid{grid-template-columns:1fr}\n  #recipe-fr-gr-keftedes .tsh-key,#recipe-fr-gr-keftedes .tsh-control,#recipe-fr-gr-keftedes .tsh-practical-card,#recipe-fr-gr-keftedes .tsh-ingredient-card,#recipe-fr-gr-keftedes .tsh-note,#recipe-fr-gr-keftedes .tsh-step,#recipe-fr-gr-keftedes .tsh-faq,#recipe-fr-gr-keftedes .tsh-plan-item,#recipe-fr-gr-keftedes .tsh-swap-list>div{box-shadow:none;break-inside:avoid}\n  #recipe-fr-gr-keftedes details.tsh-faq:not([open])>.tsh-faq-answer{display:block!important}\n  #recipe-fr-gr-keftedes .tsh-faq-top::after{display:none}\n  #recipe-fr-gr-keftedes .tsh-close::after{content:\"travelshelper.com\";position:static;display:block;margin-top:8pt;color:#666!important;font-family:inherit;font-size:8.5pt;letter-spacing:.05em}\n}\n<\/style>\n<section id=\"recipe-fr-gr-keftedes\" lang=\"fr\" dir=\"ltr\" aria-labelledby=\"recipe-title-fr-gr-keftedes\" aria-describedby=\"recipe-summary-fr-gr-keftedes\">\n<header class=\"tsh-masthead\"><div class=\"tsh-title-wrap\"><p class=\"tsh-main-kicker\">Mezz\u00e9 grec \u00e0 partager \u00b7 Pain tremp\u00e9, herbes fra\u00eeches et friture peu profonde<\/p>\n<h2 class=\"tsh-title\" id=\"recipe-title-fr-gr-keftedes\"><span class=\"tsh-title-main\"><b>Keftedes<\/b> au b\u0153uf, au porc et \u00e0 la menthe,<\/span><span class=\"tsh-title-accent\">boulettes moelleuses sous une fine cro\u00fbte dor\u00e9e \u00e0 la po\u00eale<\/span><\/h2>\n<p class=\"tsh-lead\" id=\"recipe-summary-fr-gr-keftedes\">B\u0153uf et porc hach\u00e9s sont assouplis par du pain tremp\u00e9 au lait, parfum\u00e9s de menthe, persil, origan et vinaigre, puis fa\u00e7onn\u00e9s \u00e0 45 g, l\u00e9g\u00e8rement farin\u00e9s et frits entre 170 et 175 \u00b0C.<\/p>\n<ul class=\"tsh-tags\" aria-label=\"Classification de la recette\"><li>Mezz\u00e9<\/li><li>Cuisine grecque<\/li><li>Friture peu profonde<\/li><li>Interm\u00e9diaire<\/li><\/ul><\/div>\n<figure class=\"tsh-hero\"><img loading=\"lazy\" src=\"https:\/\/travel-helper.b-cdn.net\/wp-media-folder-travel-s-helper\/wp-content\/uploads\/2026\/07\/Keftedes-3.webp\" alt=\"Keftedes brun dor\u00e9 dispos\u00e9s sur un plat avec quartiers de citron, herbes et sauce blanche \u00e0 c\u00f4t\u00e9\" width=\"1600\" height=\"900\" loading=\"lazy\" decoding=\"async\"><figcaption>La cro\u00fbte fine et r\u00e9guli\u00e8re entoure une farce moelleuse ponctu\u00e9e de menthe et de persil.<\/figcaption><\/figure><dl class=\"tsh-facts tsh-facts--6\" aria-label=\"Dur\u00e9es, quantit\u00e9 et estimation nutritionnelle\">\n      <div class=\"tsh-fact\"><dt>Quantit\u00e9<\/dt><dd>24 boulettes \u00b7 6 portions<\/dd><\/div>\n      <div class=\"tsh-fact\"><dt>Pr\u00e9paration<\/dt><dd>30 min<\/dd><\/div>\n      <div class=\"tsh-fact\"><dt>Friture<\/dt><dd>25 min<\/dd><\/div>\n      <div class=\"tsh-fact\"><dt>Refroidissement<\/dt><dd>30 min<\/dd><\/div>\n      <div class=\"tsh-fact\"><dt>Total<\/dt><dd>1 h 25<\/dd><\/div>\n      <div class=\"tsh-fact\"><dt>Par portion<\/dt><dd>\u2248 410 kcal<\/dd><\/div>\n    <\/dl><\/header>\n<nav class=\"tsh-quick-nav\" aria-label=\"Navigation rapide dans la recette\"><a href=\"#apercu-fr-gr-keftedes\">Aper\u00e7u<\/a><a href=\"#ingredients-fr-gr-keftedes\">Ingr\u00e9dients<\/a><a href=\"#preparation-fr-gr-keftedes\">Pr\u00e9paration<\/a><a href=\"#controles-fr-gr-keftedes\">Points de contr\u00f4le<\/a><a href=\"#service-fr-gr-keftedes\">Service et conservation<\/a><a href=\"#faq-fr-gr-keftedes\">Questions fr\u00e9quentes<\/a><a href=\"#nutrition-fr-gr-keftedes\">Valeurs nutritionnelles<\/a><\/nav>\n<section class=\"tsh-card tsh-anchor\" id=\"apercu-fr-gr-keftedes\" aria-labelledby=\"apercu-title-fr-gr-keftedes\"><div class=\"tsh-card-head tsh-card-head--split tsh-tone-gold\"><p class=\"tsh-kicker\">01 \u00b7 Contexte, technique et logique<\/p><h3 id=\"apercu-title-fr-gr-keftedes\">Une boulette tendre qui garde une cro\u00fbte fine et nette<\/h3><p class=\"tsh-head-copy\">Le pain doit rester humide sans couler, l\u2019oignon doit \u00eatre \u00e9goutt\u00e9 et la viande m\u00e9lang\u00e9e juste assez pour que les boulettes se tiennent.<\/p><\/div><div class=\"tsh-card-body\"><div class=\"tsh-copy-grid\"><div class=\"tsh-prose\"><p>Les keftedes sont des boulettes grecques servies comme mezz\u00e9, \u00e0 table ou dans un assortiment de petits plats. Cette version associe b\u0153uf et porc, un morceau de pain blanc de la veille tremp\u00e9 dans du lait, de l\u2019oignon r\u00e2p\u00e9, de l\u2019ail, de la menthe, du persil, de l\u2019origan et une touche de vinaigre de vin rouge. Le m\u00e9lange doit donner une boulette souple, juteuse et aromatique, pas une masse \u00e9lastique. Une farine tr\u00e8s l\u00e9g\u00e8re suffit \u00e0 former une cro\u00fbte fine pendant la friture.<\/p><p>Le pain est priv\u00e9 de sa cro\u00fbte, imbib\u00e9 cinq minutes puis press\u00e9 d\u00e9licatement. Il doit rester humide, car cette eau li\u00e9e se lib\u00e8re pendant la cuisson et prot\u00e8ge la viande du dess\u00e8chement. S\u2019il d\u00e9gouline, le m\u00e9lange devient instable; s\u2019il est essor\u00e9 \u00e0 sec, il perd son r\u00f4le. L\u2019oignon r\u00e2p\u00e9 passe dans une passoire afin d\u2019\u00e9liminer son jus libre. Il garde ainsi son parfum et sa douceur sans rendre la pr\u00e9paration aqueuse.<\/p><p>Les aromates, l\u2019\u0153uf et le pain sont r\u00e9unis avant la viande. B\u0153uf, porc, sel et poivre sont ajout\u00e9s en dernier et m\u00e9lang\u00e9s du bout des doigts. Une manipulation prolong\u00e9e extrait davantage de prot\u00e9ines et donne une texture compacte, proche d\u2019une farce p\u00e9trie. Trente minutes au r\u00e9frig\u00e9rateur raffermissent la mati\u00e8re grasse et laissent les saveurs se r\u00e9partir. Les vingt-quatre portions d\u2019environ quarante-cinq grammes cuisent alors au m\u00eame rythme.<\/p><p>La farine est appliqu\u00e9e juste avant la po\u00eale et secou\u00e9e jusqu\u2019\u00e0 ne laisser qu\u2019un voile sec. Une couche \u00e9paisse absorbe de l\u2019huile et forme des plaques farineuses. L\u2019huile doit atteindre deux centim\u00e8tres et demi \u00e0 trois centim\u00e8tres de profondeur, avec une temp\u00e9rature de 172 \u00b0C au d\u00e9part. Six \u00e0 huit boulettes par fourn\u00e9e \u00e9vitent de refroidir brutalement le bain. Elles sont tourn\u00e9es plusieurs fois pendant cinq \u00e0 six minutes pour dorer toutes les faces.<\/p><\/div><div class=\"tsh-prose\"><p>Une boulette de la premi\u00e8re fourn\u00e9e est contr\u00f4l\u00e9e au centre: la temp\u00e9rature minimale est de 71 \u00b0C. Les keftedes s\u2019\u00e9gouttent deux minutes sur une grille, et non sur une \u00e9paisseur de papier qui retient la vapeur sous la cro\u00fbte. Ils se servent dans les quinze minutes, chauds ou encore bien ti\u00e8des, avec citron, tzatziki, pain et salade tomate-concombre. Les restes se r\u00e9chauffent mieux au four qu\u2019au micro-ondes lorsque le croustillant compte.<\/p><p>Le m\u00e9lange de b\u0153uf et de porc donne un \u00e9quilibre entre go\u00fbt, gras et tenue. Un b\u0153uf tr\u00e8s maigre produirait une boulette s\u00e8che, tandis qu\u2019un exc\u00e8s de porc pourrait la rendre molle. La menthe est fra\u00eeche mais mesur\u00e9e, afin de soutenir le persil et l\u2019origan sans dominer. Le vinaigre de vin rouge n\u2019attendrit pas miraculeusement la viande; sa fonction est d\u2019apporter une pointe d\u2019acidit\u00e9 qui all\u00e8ge la friture et rend les herbes plus nettes au palais.<\/p><p>Une grille, plut\u00f4t qu\u2019une assiette plate, laisse enfin la vapeur s\u2019\u00e9chapper et pr\u00e9serve la cro\u00fbte pendant le court trajet jusqu\u2019\u00e0 la table.<\/p><\/div><\/div><div class=\"tsh-key-grid\" aria-label=\"Points cl\u00e9s de r\u00e9ussite\"><section class=\"tsh-key\"><div class=\"tsh-key-top\"><span class=\"tsh-key-no\" aria-hidden=\"true\">01<\/span><h4>Pain humide, non d\u00e9tremp\u00e9<\/h4><\/div><p>Il apporte de la tendret\u00e9 sans rel\u00e2cher de lait dans la farce.<\/p><\/section><section class=\"tsh-key\"><div class=\"tsh-key-top\"><span class=\"tsh-key-no\" aria-hidden=\"true\">02<\/span><h4>Oignon bien \u00e9goutt\u00e9<\/h4><\/div><p>Le parfum reste dans le m\u00e9lange, tandis que l\u2019exc\u00e8s d\u2019eau est \u00e9limin\u00e9.<\/p><\/section><section class=\"tsh-key\"><div class=\"tsh-key-top\"><span class=\"tsh-key-no\" aria-hidden=\"true\">03<\/span><h4>Portions de 45 g<\/h4><\/div><p>Une taille r\u00e9guli\u00e8re permet une cuisson \u00e0 c\u0153ur sans br\u00fbler la surface.<\/p><\/section><section class=\"tsh-key\"><div class=\"tsh-key-top\"><span class=\"tsh-key-no\" aria-hidden=\"true\">04<\/span><h4>Farine en voile tr\u00e8s fin<\/h4><\/div><p>Elle cr\u00e9e une cro\u00fbte l\u00e9g\u00e8re au lieu d\u2019une couche p\u00e2teuse et grasse.<\/p><\/section><\/div><\/div><\/section>\n<section class=\"tsh-card tsh-anchor\" id=\"ingredients-fr-gr-keftedes\" aria-labelledby=\"ingredients-title-fr-gr-keftedes\"><div class=\"tsh-card-head tsh-card-head--split tsh-tone-sage\"><p class=\"tsh-kicker\">02 \u00b7 Composants pes\u00e9s avec pr\u00e9cision<\/p><h3 id=\"ingredients-title-fr-gr-keftedes\">Ingr\u00e9dients pour 24 boulettes \u00b7 6 portions<\/h3><p class=\"tsh-head-copy\">Les quantit\u00e9s, l\u2019\u00e9tat des ingr\u00e9dients et leur ordre d\u2019emploi suivent la version factuelle verrouill\u00e9e de la recette.<\/p><\/div><div class=\"tsh-card-body\"><div class=\"tsh-ingredient-grid\"><section class=\"tsh-ingredient-card\" aria-labelledby=\"groupe-1-fr-gr-keftedes\"><h4 id=\"groupe-1-fr-gr-keftedes\">M\u00e9lange pour les boulettes<\/h4><ul><li><span class=\"tsh-amount\">600 g<\/span><span>b\u0153uf hach\u00e9<small>Environ 15 % de mati\u00e8re grasse.<\/small><\/span><\/li><li><span class=\"tsh-amount\">250 g<\/span><span>porc hach\u00e9<\/span><\/li><li><span class=\"tsh-amount\">120 g<\/span><span>pain blanc de la veille sans cro\u00fbte<\/span><\/li><li><span class=\"tsh-amount\">150 ml<\/span><span>lait entier<small>Pour tremper le pain.<\/small><\/span><\/li><li><span class=\"tsh-amount\">180 g<\/span><span>oignon jaune grossi\u00e8rement r\u00e2p\u00e9<small>\u00c9goutter l\u2019exc\u00e8s de liquide.<\/small><\/span><\/li><li><span class=\"tsh-amount\">2<\/span><span>gousses d\u2019ail finement r\u00e2p\u00e9es<\/span><\/li><li><span class=\"tsh-amount\">1<\/span><span>gros \u0153uf<\/span><\/li><li><span class=\"tsh-amount\">25 g<\/span><span>persil plat finement hach\u00e9<\/span><\/li><li><span class=\"tsh-amount\">15 g<\/span><span>feuilles de menthe fra\u00eeche finement hach\u00e9es<\/span><\/li><li><span class=\"tsh-amount\">1 c. \u00e0 caf\u00e9<\/span><span>origan grec s\u00e9ch\u00e9<\/span><\/li><li><span class=\"tsh-amount\">15 ml<\/span><span>vinaigre de vin rouge<\/span><\/li><li><span class=\"tsh-amount\">1\u00bd c. \u00e0 caf\u00e9<\/span><span>sel marin fin<\/span><\/li><li><span class=\"tsh-amount\">1 c. \u00e0 caf\u00e9<\/span><span>poivre noir fra\u00eechement moulu<\/span><\/li><\/ul><\/section><section class=\"tsh-ingredient-card\" aria-labelledby=\"groupe-2-fr-gr-keftedes\"><h4 id=\"groupe-2-fr-gr-keftedes\">Pour frire et servir<\/h4><ul><li><span class=\"tsh-amount\">80 g<\/span><span>farine de bl\u00e9<small>Pour un enrobage tr\u00e8s l\u00e9ger.<\/small><\/span><\/li><li><span class=\"tsh-amount\">750 ml<\/span><span>huile d\u2019olive ou huile neutre pour friture<small>Seule une partie est absorb\u00e9e.<\/small><\/span><\/li><li><span class=\"tsh-amount\">1<\/span><span>citron coup\u00e9 en quartiers<small>Pour servir.<\/small><\/span><\/li><\/ul><\/section><\/div><div class=\"tsh-note-grid\"><aside class=\"tsh-note\" role=\"note\"><strong>Allerg\u00e8nes.<\/strong> Contient bl\u00e9, lait et \u0153uf. L\u2019huile peut transmettre des allerg\u00e8nes si elle a d\u00e9j\u00e0 servi \u00e0 d\u2019autres aliments.<\/aside><aside class=\"tsh-note\" role=\"note\"><strong>Mat\u00e9riel.<\/strong> R\u00e2pe, passoire fine, grand saladier, balance, grande po\u00eale lourde, thermom\u00e8tre, pince ou \u00e9cumoire et grille.<\/aside><\/div><\/div><\/section>\n<section class=\"tsh-card tsh-anchor\" id=\"preparation-fr-gr-keftedes\" aria-labelledby=\"preparation-title-fr-gr-keftedes\"><div class=\"tsh-card-head tsh-card-head--split tsh-tone-blue\"><p class=\"tsh-kicker\">03 \u00b7 Ordre d\u2019ex\u00e9cution et signes de cuisson<\/p><h3 id=\"preparation-title-fr-gr-keftedes\">Pr\u00e9paration pas \u00e0 pas<\/h3><p class=\"tsh-head-copy\">Chaque \u00e9tape associe une dur\u00e9e, une temp\u00e9rature ou un signe visible permettant de d\u00e9cider sans deviner.<\/p><\/div><div class=\"tsh-card-body\"><div class=\"tsh-stages\"><section class=\"tsh-stage-card\" aria-labelledby=\"phase-1-fr-gr-keftedes\"><div class=\"tsh-stage-head\"><span class=\"tsh-stage-badge\" aria-hidden=\"true\">I<\/span><h4 id=\"phase-1-fr-gr-keftedes\">M\u00e9langer, refroidir et fa\u00e7onner<\/h4><span class=\"tsh-stage-time\">environ 1 h<\/span><\/div><ol class=\"tsh-step-grid\"><li class=\"tsh-step\" id=\"step-01-fr-gr-keftedes\"><span class=\"tsh-step-no\" aria-hidden=\"true\">01<\/span><div><h4>Faire tremper le pain<\/h4><p>Couvrir le pain de lait et laisser 5 minutes. Presser doucement pour qu\u2019il reste humide sans goutter, puis l\u2019\u00e9mietter dans un grand saladier.<\/p><span class=\"tsh-cue\">Le pain est souple et humide, sans lait libre.<\/span><\/div><\/li><li class=\"tsh-step\" id=\"step-02-fr-gr-keftedes\"><span class=\"tsh-step-no\" aria-hidden=\"true\">02<\/span><div><h4>Pr\u00e9parer l\u2019oignon<\/h4><p>R\u00e2per l\u2019oignon, le placer dans une passoire et presser pour retirer le liquide libre. L\u2019ajouter avec ail, \u0153uf, persil, menthe, origan et vinaigre.<\/p><span class=\"tsh-cue\">Les aromates sont finement r\u00e9partis et non aqueux.<\/span><\/div><\/li><li class=\"tsh-step\" id=\"step-03-fr-gr-keftedes\"><span class=\"tsh-step-no\" aria-hidden=\"true\">03<\/span><div><h4>M\u00e9langer la viande l\u00e9g\u00e8rement<\/h4><p>Ajouter b\u0153uf, porc, sel et poivre. M\u00e9langer du bout des doigts juste jusqu\u2019\u00e0 ce que la pr\u00e9paration soit uniforme et se tienne.<\/p><span class=\"tsh-cue\">La farce est souple, non collante et non compact\u00e9e.<\/span><\/div><\/li><li class=\"tsh-step\" id=\"step-04-fr-gr-keftedes\"><span class=\"tsh-step-no\" aria-hidden=\"true\">04<\/span><div><h4>Refroidir la pr\u00e9paration<\/h4><p>Couvrir et r\u00e9frig\u00e9rer 30 minutes.<\/p><span class=\"tsh-cue\">La graisse est raffermie et le m\u00e9lange se portionne proprement.<\/span><\/div><\/li><li class=\"tsh-step\" id=\"step-05-fr-gr-keftedes\"><span class=\"tsh-step-no\" aria-hidden=\"true\">05<\/span><div><h4>Fa\u00e7onner et fariner<\/h4><p>Diviser en 24 portions d\u2019environ 45 g et rouler avec les mains humides. Juste avant la friture, passer tr\u00e8s l\u00e9g\u00e8rement dans la farine et secouer l\u2019exc\u00e9dent.<\/p><span class=\"tsh-cue\">Chaque boulette porte une surface s\u00e8che et fine, sans amas de farine.<\/span><\/div><\/li><\/ol><\/section><section class=\"tsh-stage-card\" aria-labelledby=\"phase-2-fr-gr-keftedes\"><div class=\"tsh-stage-head\"><span class=\"tsh-stage-badge\" aria-hidden=\"true\">II<\/span><h4 id=\"phase-2-fr-gr-keftedes\">Frire et servir<\/h4><span class=\"tsh-stage-time\">environ 25 min<\/span><\/div><ol class=\"tsh-step-grid\"><li class=\"tsh-step\" id=\"step-06-fr-gr-keftedes\"><span class=\"tsh-step-no\" aria-hidden=\"true\">06<\/span><div><h4>Chauffer l\u2019huile<\/h4><p>Verser 2,5 \u00e0 3 cm d\u2019huile dans une po\u00eale large et chauffer \u00e0 172 \u00b0C.<\/p><span class=\"tsh-cue\">L\u2019huile reste entre 170 et 175 \u00b0C avant la premi\u00e8re fourn\u00e9e.<\/span><\/div><\/li><li class=\"tsh-step\" id=\"step-07-fr-gr-keftedes\"><span class=\"tsh-step-no\" aria-hidden=\"true\">07<\/span><div><h4>Frire par fourn\u00e9es<\/h4><p>D\u00e9poser 6 \u00e0 8 boulettes sans surcharger. Frire 5 \u00e0 6 minutes en les tournant plusieurs fois pour une coloration r\u00e9guli\u00e8re.<\/p><span class=\"tsh-cue\">La cro\u00fbte est brun dor\u00e9 et le centre atteint au moins 71 \u00b0C.<\/span><\/div><\/li><li class=\"tsh-step\" id=\"step-08-fr-gr-keftedes\"><span class=\"tsh-step-no\" aria-hidden=\"true\">08<\/span><div><h4>\u00c9goutter sur une grille<\/h4><p>Transf\u00e9rer sur une grille pendant 2 minutes et laisser l\u2019huile revenir \u00e0 temp\u00e9rature avant la fourn\u00e9e suivante.<\/p><span class=\"tsh-cue\">La surface reste croustillante et aucune mare grasse ne se forme.<\/span><\/div><\/li><li class=\"tsh-step\" id=\"step-09-fr-gr-keftedes\"><span class=\"tsh-step-no\" aria-hidden=\"true\">09<\/span><div><h4>Servir chauds ou ti\u00e8des<\/h4><p>Disposer avec les quartiers de citron et servir dans les 15 minutes pour profiter au mieux de la cro\u00fbte.<\/p><span class=\"tsh-cue\">Les boulettes gardent leur forme et lib\u00e8rent des jus clairs \u00e0 la coupe.<\/span><\/div><\/li><\/ol><\/section><\/div><\/div><\/section>\n<section class=\"tsh-card tsh-anchor\" id=\"controles-fr-gr-keftedes\" aria-labelledby=\"controles-title-fr-gr-keftedes\"><div class=\"tsh-card-head tsh-card-head--split tsh-tone-rose\"><p class=\"tsh-kicker\">04 \u00b7 Rep\u00e8res mesurables et corrections<\/p><h3 id=\"controles-title-fr-gr-keftedes\">Points de contr\u00f4le pour un r\u00e9sultat fiable<\/h3><p class=\"tsh-head-copy\">Le temps reste un guide; la temp\u00e9rature, la texture et le comportement de la sauce ou de la p\u00e2te confirment la cuisson r\u00e9elle.<\/p><\/div><div class=\"tsh-card-body\"><div class=\"tsh-control-grid\"><section class=\"tsh-control\"><p class=\"tsh-control-label\">Temp\u00e9rature de l\u2019huile<\/p><strong>170\u2013175 \u00b0C<\/strong><p>Les petites fourn\u00e9es aident le bain \u00e0 remonter rapidement en temp\u00e9rature.<\/p><\/section><section class=\"tsh-control\"><p class=\"tsh-control-label\">Poids par boulette<\/p><strong>environ 45 g<\/strong><p>Des portions \u00e9gales atteignent le centre au m\u00eame moment.<\/p><\/section><section class=\"tsh-control\"><p class=\"tsh-control-label\">Temp\u00e9rature au c\u0153ur<\/p><strong>71 \u00b0C<\/strong><p>Contr\u00f4ler une boulette du milieu de la premi\u00e8re fourn\u00e9e.<\/p><\/section><\/div><div class=\"tsh-table-wrap\"><table class=\"tsh-table\"><caption>Probl\u00e8mes fr\u00e9quents et corrections pratiques<\/caption><thead><tr><th scope=\"col\">Probl\u00e8me<\/th><th scope=\"col\">Cause probable<\/th><th scope=\"col\">Correction<\/th><\/tr><\/thead><tbody><tr><td data-label=\"Probl\u00e8me\">Les keftedes se d\u00e9font<\/td><td data-label=\"Cause probable\">Le pain ou l\u2019oignon a rendu trop de liquide, ou le repos au froid a \u00e9t\u00e9 omis.<\/td><td data-label=\"Correction\">\u00c9goutter les \u00e9l\u00e9ments humides et respecter trente minutes de r\u00e9frig\u00e9ration.<\/td><\/tr><tr><td data-label=\"Probl\u00e8me\">La texture est ferme et \u00e9lastique<\/td><td data-label=\"Cause probable\">La viande a \u00e9t\u00e9 longuement p\u00e9trie.<\/td><td data-label=\"Correction\">M\u00e9langer du bout des doigts seulement jusqu\u2019\u00e0 r\u00e9partition homog\u00e8ne.<\/td><\/tr><tr><td data-label=\"Probl\u00e8me\">La surface absorbe l\u2019huile<\/td><td data-label=\"Cause probable\">Le bain est trop froid ou la farine trop \u00e9paisse.<\/td><td data-label=\"Correction\">Maintenir 170\u2013175 \u00b0C et secouer tout exc\u00e9dent de farine.<\/td><\/tr><tr><td data-label=\"Probl\u00e8me\">L\u2019ext\u00e9rieur br\u00fble avant le centre<\/td><td data-label=\"Cause probable\">Les boulettes sont trop grosses ou l\u2019huile d\u00e9passe la plage.<\/td><td data-label=\"Correction\">Peser des portions de 45 g et stabiliser autour de 172 \u00b0C.<\/td><\/tr><\/tbody><\/table><\/div><\/div><\/section>\n<section class=\"tsh-card tsh-anchor\" id=\"service-fr-gr-keftedes\" aria-labelledby=\"service-title-fr-gr-keftedes\"><div class=\"tsh-card-head tsh-card-head--split tsh-tone-violet\"><p class=\"tsh-kicker\">05 \u00b7 Apr\u00e8s la cuisson<\/p><h3 id=\"service-title-fr-gr-keftedes\">Service, conservation et adaptations utiles<\/h3><p class=\"tsh-head-copy\">Les conseils retenus concernent la texture, la s\u00e9curit\u00e9, la dur\u00e9e de conservation ou un remplacement techniquement viable.<\/p><\/div><div class=\"tsh-card-body\"><div class=\"tsh-practical-grid\"><section class=\"tsh-practical-card\"><h4>Service<\/h4><p>Servir quatre boulettes par personne avec citron, tzatziki, pain et salade tomate-concombre.<\/p><\/section><section class=\"tsh-practical-card\"><h4>Conservation<\/h4><p>Refroidir dans les 2 heures et garder au r\u00e9frig\u00e9rateur jusqu\u2019\u00e0 3 jours, s\u00e9par\u00e9 des sauces humides.<\/p><\/section><section class=\"tsh-practical-card\"><h4>R\u00e9chauffage<\/h4><p>Chauffer 8 \u00e0 10 minutes \u00e0 190 \u00b0C jusqu\u2019\u00e0 74 \u00b0C au centre. \u00c9viter le micro-ondes si la cro\u00fbte compte.<\/p><\/section><section class=\"tsh-practical-card\"><h4>Cong\u00e9lation<\/h4><p>Congeler les boulettes crues fa\u00e7onn\u00e9es sur une plaque, puis en sachet jusqu\u2019\u00e0 2 mois. D\u00e9congeler au r\u00e9frig\u00e9rateur avant de fariner et frire.<\/p><\/section><\/div><\/div><\/section>\n<section class=\"tsh-card tsh-anchor\" id=\"faq-fr-gr-keftedes\" aria-labelledby=\"faq-title-fr-gr-keftedes\"><div class=\"tsh-card-head tsh-tone-gold\"><p class=\"tsh-kicker\">06 \u00b7 R\u00e9ponses aux questions pratiques<\/p><h3 id=\"faq-title-fr-gr-keftedes\">Questions fr\u00e9quentes sur la recette<\/h3><\/div><div class=\"tsh-card-body\"><div class=\"tsh-faq-grid\"><details class=\"tsh-faq\" name=\"faq-fr-gr-keftedes\"><summary class=\"tsh-faq-top\"><span class=\"tsh-faq-no\" aria-hidden=\"true\">01<\/span><h4>Peut-on cuire les keftedes au four?<\/h4><\/summary><div class=\"tsh-faq-answer\"><p>Oui, mais la cro\u00fbte sera plus s\u00e8che et moins r\u00e9guli\u00e8re. La recette verrouill\u00e9e utilise une friture peu profonde pour obtenir son contraste pr\u00e9cis.<\/p><\/div><\/details><details class=\"tsh-faq\" name=\"faq-fr-gr-keftedes\"><summary class=\"tsh-faq-top\"><span class=\"tsh-faq-no\" aria-hidden=\"true\">02<\/span><h4>Pourquoi ajouter du vinaigre?<\/h4><\/summary><div class=\"tsh-faq-answer\"><p>La petite quantit\u00e9 apporte de la fra\u00eecheur et \u00e9quilibre la richesse de la viande sans rendre la farce acide.<\/p><\/div><\/details><details class=\"tsh-faq\" name=\"faq-fr-gr-keftedes\"><summary class=\"tsh-faq-top\"><span class=\"tsh-faq-no\" aria-hidden=\"true\">03<\/span><h4>Peut-on remplacer la menthe?<\/h4><\/summary><div class=\"tsh-faq-answer\"><p>Elle peut \u00eatre r\u00e9duite, mais elle caract\u00e9rise fortement cette version. Le persil seul donne un profil plus sobre.<\/p><\/div><\/details><\/div><\/div><\/section>\n<section class=\"tsh-card tsh-anchor\" id=\"nutrition-fr-gr-keftedes\" aria-labelledby=\"nutrition-title-fr-gr-keftedes\"><div class=\"tsh-card-head tsh-card-head--split tsh-tone-sage\"><p class=\"tsh-kicker\">07 \u00b7 Estimation par portion<\/p><h3 id=\"nutrition-title-fr-gr-keftedes\">Valeurs nutritionnelles<\/h3><p class=\"tsh-head-copy\">L\u2019estimation repose sur tous les ingr\u00e9dients consomm\u00e9s et le rendement verrouill\u00e9; les marques, les pertes et le portionnage peuvent modifier les valeurs r\u00e9elles.<\/p><\/div><div class=\"tsh-card-body\"><dl class=\"tsh-nutrition\"><div><dt>Calories<\/dt><dd>\u2248 410 kcal<\/dd><\/div><div><dt>Glucides<\/dt><dd>\u2248 17 g<\/dd><\/div><div><dt>Prot\u00e9ines<\/dt><dd>\u2248 28 g<\/dd><\/div><div><dt>Lipides<\/dt><dd>\u2248 25 g<\/dd><\/div><div><dt>Fibres<\/dt><dd>\u2248 2 g<\/dd><\/div><div><dt>Sodium<\/dt><dd>\u2248 650 mg<\/dd><\/div><\/dl><p class=\"tsh-nutrition-note\"><strong>Portion:<\/strong> 4 boulettes (environ 190 g). <strong>Allerg\u00e8nes principaux:<\/strong> Contient bl\u00e9, lait et \u0153uf. L\u2019huile peut transmettre des allerg\u00e8nes si elle a d\u00e9j\u00e0 servi \u00e0 d\u2019autres aliments. Valeurs approximatives calcul\u00e9es \u00e0 partir de r\u00e9f\u00e9rences nutritionnelles standard.<\/p><\/div><\/section>\n<footer class=\"tsh-close\"><p class=\"tsh-close-kicker\">R\u00e9sultat final<\/p><p class=\"tsh-close-quote\">Une cro\u00fbte fine, un int\u00e9rieur tendre et des herbes qui restent nettes dans chaque boulette.<\/p><p class=\"tsh-close-copy\">La tendret\u00e9 vient du pain humide et du m\u00e9lange bref; le croustillant, d\u2019une farine minimale et d\u2019une huile stable. Le reste n\u2019est qu\u2019une question de portions r\u00e9guli\u00e8res.<\/p><\/footer><\/section>\n<script type=\"application\/ld+json\" id=\"recipe-schema-fr-gr-keftedes\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@type\": \"Recipe\",\n  \"name\": \"Keftedes au b\u0153uf, au porc et \u00e0 la menthe, boulettes moelleuses sous une fine cro\u00fbte dor\u00e9e \u00e0 la po\u00eale\",\n  \"description\": \"B\u0153uf et porc hach\u00e9s sont assouplis par du pain tremp\u00e9 au lait, parfum\u00e9s de menthe, persil, origan et vinaigre, puis fa\u00e7onn\u00e9s \u00e0 45 g, l\u00e9g\u00e8rement farin\u00e9s et frits entre 170 et 175 \u00b0C.\",\n  \"inLanguage\": \"fr\",\n  \"image\": [\n    \"https:\/\/travel-helper.b-cdn.net\/wp-media-folder-travel-s-helper\/wp-content\/uploads\/2026\/07\/Keftedes-2.webp\",\n    \"https:\/\/travel-helper.b-cdn.net\/wp-media-folder-travel-s-helper\/wp-content\/uploads\/2026\/07\/Keftedes-1.webp\",\n    \"https:\/\/travel-helper.b-cdn.net\/wp-media-folder-travel-s-helper\/wp-content\/uploads\/2026\/07\/Keftedes-3.webp\"\n  ],\n  \"author\": {\n    \"@type\": \"Organization\",\n    \"@id\": \"https:\/\/travelshelper.com\/#organization\",\n    \"name\": \"Travel S Helper\",\n    \"url\": \"https:\/\/travelshelper.com\"\n  },\n  \"recipeCuisine\": \"Cuisine grecque\",\n  \"recipeCategory\": \"Mezz\u00e9\",\n  \"cookingMethod\": \"Friture peu profonde\",\n  \"keywords\": \"recette de keftedes, boulettes grecques \u00e0 la menthe, keftedes au b\u0153uf et porc, boulettes grecques frites, temp\u00e9rature de cuisson des keftedes\",\n  \"prepTime\": \"PT30M\",\n  \"cookTime\": \"PT25M\",\n  \"totalTime\": \"PT1H25M\",\n  \"recipeYield\": \"24 boulettes \u00b7 6 portions\",\n  \"nutrition\": {\n    \"@type\": \"NutritionInformation\",\n    \"calories\": \"410 kcal\",\n    \"carbohydrateContent\": \"17 g\",\n    \"proteinContent\": \"28 g\",\n    \"fatContent\": \"25 g\",\n    \"fiberContent\": \"2 g\",\n    \"sodiumContent\": \"650 mg\",\n    \"servingSize\": \"4 boulettes (environ 190 g)\"\n  },\n  \"recipeIngredient\": [\n    \"600 g b\u0153uf hach\u00e9\",\n    \"250 g porc hach\u00e9\",\n    \"120 g pain blanc de la veille sans cro\u00fbte\",\n    \"150 ml lait entier\",\n    \"180 g oignon jaune grossi\u00e8rement r\u00e2p\u00e9\",\n    \"2 gousses d\u2019ail finement r\u00e2p\u00e9es\",\n    \"1 gros \u0153uf\",\n    \"25 g persil plat finement hach\u00e9\",\n    \"15 g feuilles de menthe fra\u00eeche finement hach\u00e9es\",\n    \"1 c. \u00e0 caf\u00e9 origan grec s\u00e9ch\u00e9\",\n    \"15 ml vinaigre de vin rouge\",\n    \"1\u00bd c. \u00e0 caf\u00e9 sel marin fin\",\n    \"1 c. \u00e0 caf\u00e9 poivre noir fra\u00eechement moulu\",\n    \"80 g farine de bl\u00e9\",\n    \"750 ml huile d\u2019olive ou huile neutre pour friture\",\n    \"1 citron coup\u00e9 en quartiers\"\n  ],\n  \"recipeInstructions\": [\n    {\n      \"@type\": \"HowToSection\",\n      \"name\": \"M\u00e9langer, refroidir et fa\u00e7onner\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"HowToStep\",\n          \"name\": \"Faire tremper le pain\",\n          \"url\": \"#step-01-fr-gr-keftedes\",\n          \"text\": \"Couvrir le pain de lait et laisser 5 minutes. Presser doucement pour qu\u2019il reste humide sans goutter, puis l\u2019\u00e9mietter dans un grand saladier. Le pain est souple et humide, sans lait libre.\"\n        },\n        {\n          \"@type\": \"HowToStep\",\n          \"name\": \"Pr\u00e9parer l\u2019oignon\",\n          \"url\": \"#step-02-fr-gr-keftedes\",\n          \"text\": \"R\u00e2per l\u2019oignon, le placer dans une passoire et presser pour retirer le liquide libre. L\u2019ajouter avec ail, \u0153uf, persil, menthe, origan et vinaigre. Les aromates sont finement r\u00e9partis et non aqueux.\"\n        },\n        {\n          \"@type\": \"HowToStep\",\n          \"name\": \"M\u00e9langer la viande l\u00e9g\u00e8rement\",\n          \"url\": \"#step-03-fr-gr-keftedes\",\n          \"text\": \"Ajouter b\u0153uf, porc, sel et poivre. M\u00e9langer du bout des doigts juste jusqu\u2019\u00e0 ce que la pr\u00e9paration soit uniforme et se tienne. La farce est souple, non collante et non compact\u00e9e.\"\n        },\n        {\n          \"@type\": \"HowToStep\",\n          \"name\": \"Refroidir la pr\u00e9paration\",\n          \"url\": \"#step-04-fr-gr-keftedes\",\n          \"text\": \"Couvrir et r\u00e9frig\u00e9rer 30 minutes. La graisse est raffermie et le m\u00e9lange se portionne proprement.\"\n        },\n        {\n          \"@type\": \"HowToStep\",\n          \"name\": \"Fa\u00e7onner et fariner\",\n          \"url\": \"#step-05-fr-gr-keftedes\",\n          \"text\": \"Diviser en 24 portions d\u2019environ 45 g et rouler avec les mains humides. Juste avant la friture, passer tr\u00e8s l\u00e9g\u00e8rement dans la farine et secouer l\u2019exc\u00e9dent. Chaque boulette porte une surface s\u00e8che et fine, sans amas de farine.\"\n        }\n      ]\n    },\n    {\n      \"@type\": \"HowToSection\",\n      \"name\": \"Frire et servir\",\n      \"itemListElement\": [\n        {\n          \"@type\": \"HowToStep\",\n          \"name\": \"Chauffer l\u2019huile\",\n          \"url\": \"#step-06-fr-gr-keftedes\",\n          \"text\": \"Verser 2,5 \u00e0 3 cm d\u2019huile dans une po\u00eale large et chauffer \u00e0 172 \u00b0C. L\u2019huile reste entre 170 et 175 \u00b0C avant la premi\u00e8re fourn\u00e9e.\"\n        },\n        {\n          \"@type\": \"HowToStep\",\n          \"name\": \"Frire par fourn\u00e9es\",\n          \"url\": \"#step-07-fr-gr-keftedes\",\n          \"text\": \"D\u00e9poser 6 \u00e0 8 boulettes sans surcharger. Frire 5 \u00e0 6 minutes en les tournant plusieurs fois pour une coloration r\u00e9guli\u00e8re. La cro\u00fbte est brun dor\u00e9 et le centre atteint au moins 71 \u00b0C.\"\n        },\n        {\n          \"@type\": \"HowToStep\",\n          \"name\": \"\u00c9goutter sur une grille\",\n          \"url\": \"#step-08-fr-gr-keftedes\",\n          \"text\": \"Transf\u00e9rer sur une grille pendant 2 minutes et laisser l\u2019huile revenir \u00e0 temp\u00e9rature avant la fourn\u00e9e suivante. La surface reste croustillante et aucune mare grasse ne se forme.\"\n        },\n        {\n          \"@type\": \"HowToStep\",\n          \"name\": \"Servir chauds ou ti\u00e8des\",\n          \"url\": \"#step-09-fr-gr-keftedes\",\n          \"text\": \"Disposer avec les quartiers de citron et servir dans les 15 minutes pour profiter au mieux de la cro\u00fbte. Les boulettes gardent leur forme et lib\u00e8rent des jus clairs \u00e0 la coupe.\"\n        }\n      ]\n    }\n  ]\n}\n<\/script>\n<script id=\"recipe-meta-sync-fr-gr-keftedes\">\n(function(){\n  var schemaId='recipe-schema-fr-gr-keftedes';\n  var el=document.getElementById(schemaId);\n  if(!el) return;\n  var q=function(s){return document.querySelector(s);};\n  var value=function(node){return node ? (node.content || node.getAttribute('datetime') || '') : '';};\n  var utc=function(raw){\n    if(!raw) return '';\n    if(\/Z$|[+-]d{2}:d{2}$\/.test(raw)) return raw;\n    return raw.replace(' ','T')+'Z';\n  };\n  var apply=function(data,pub,mod,pageUrl){\n    if(pub) data.datePublished=pub;\n    if(mod) data.dateModified=mod;\n    if(pageUrl){\n      data.url=pageUrl;\n      data.mainEntityOfPage=pageUrl;\n      data['@id']=pageUrl+'#recipe';\n      if(Array.isArray(data.recipeInstructions)){\n        data.recipeInstructions.forEach(function(section){\n          var steps=section && Array.isArray(section.itemListElement) ? section.itemListElement : null;\n          if(!steps && section && section['@type']==='HowToStep') steps=[section];\n          if(!steps) return;\n          steps.forEach(function(step){\n            if(step && typeof step.url==='string' && step.url.charAt(0)==='#'){\n              step.url=pageUrl+step.url;\n            }\n          });\n        });\n      }\n    }\n    if(!data.inLanguage){\n      var recipeSection=q('#recipe-fr-gr-keftedes[lang]');\n      var language=(recipeSection && recipeSection.lang) || document.documentElement.lang || '';\n      if(language) data.inLanguage=language;\n    }\n    el.textContent=JSON.stringify(data);\n  };\n  try{\n    var data=JSON.parse(el.textContent);\n    var pub=value(q('meta[property=\"article:published_time\"]'));\n    var mod=value(q('meta[property=\"article:modified_time\"]')) || value(q('meta[property=\"og:updated_time\"]'));\n\n    if(!pub || !mod){\n      document.querySelectorAll('script[type=\"application\/ld+json\"]').forEach(function(script){\n        if(script===el) return;\n        try{\n          var parsed=JSON.parse(script.textContent);\n          var nodes=Array.isArray(parsed) ? parsed : (Array.isArray(parsed['@graph']) ? parsed['@graph'] : [parsed]);\n          nodes.forEach(function(node){\n            if(!node || typeof node!=='object') return;\n            var types=Array.isArray(node['@type']) ? node['@type'] : [node['@type']];\n            var isArticle=types.some(function(type){return typeof type==='string' && \/Article|BlogPosting|NewsArticle\/.test(type);});\n            if(!isArticle) return;\n            if(!pub && node.datePublished) pub=node.datePublished;\n            if(!mod && node.dateModified) mod=node.dateModified;\n          });\n        }catch(ignore){}\n      });\n    }\n\n    if(!pub) pub=value(q('time.published[datetime],time.entry-date.published[datetime],time[itemprop=\"datePublished\"][datetime]'));\n    if(!mod) mod=value(q('time.updated-date[datetime],time.updated[datetime],time.entry-date.updated[datetime],time[itemprop=\"dateModified\"][datetime]'));\n\n    var canonical=q('link[rel=\"canonical\"]');\n    var pageUrl=canonical && canonical.href ? canonical.href : '';\n    var apiLinks=document.querySelectorAll('link[rel=\"alternate\"][type=\"application\/json\"]');\n    var api=null;\n    Array.prototype.some.call(apiLinks,function(node){\n      if(node.href && node.href.indexOf('\/wp-json\/wp\/v2\/')!==-1 && node.href.indexOf('\/oembed\/')===-1){\n        api=node;\n        return true;\n      }\n      return false;\n    });\n\n    if((!pub || !mod || !pageUrl) && api && window.fetch){\n      fetch(api.href,{credentials:'same-origin'})\n        .then(function(response){if(!response.ok) throw new Error('REST'); return response.json();})\n        .then(function(post){\n          if(!pub && post.date_gmt) pub=utc(post.date_gmt);\n          if(!mod && post.modified_gmt) mod=utc(post.modified_gmt);\n          if(!pageUrl && post.link) pageUrl=post.link;\n          apply(data,pub,mod,pageUrl);\n        })\n        .catch(function(){apply(data,pub,mod,pageUrl);});\n    }else{\n      apply(data,pub,mod,pageUrl);\n    }\n  }catch(ignore){}\n})();\n<\/script>\n<script id=\"recipe-ui-fr-gr-keftedes\">\n(function(){\n  var root=document.getElementById('recipe-fr-gr-keftedes');\n  if(!root) return;\n  var nav=root.querySelector('.tsh-quick-nav');\n  if(!nav) return;\n  var links=Array.prototype.slice.call(nav.querySelectorAll('a[href^=\"#\"]'));\n  var items=links.map(function(link){\n    var id=link.getAttribute('href').slice(1);\n    return {link:link,section:document.getElementById(id)};\n  }).filter(function(item){return item.section;});\n  if(!items.length) return;\n  var ticking=false;\n  var update=function(){\n    ticking=false;\n    var marker=Math.max(110,window.innerHeight*.2);\n    var active=items[0];\n    items.forEach(function(item){\n      if(item.section.getBoundingClientRect().top<=marker) active=item;\n    });\n    items.forEach(function(item){\n      if(item===active) item.link.setAttribute('aria-current','location');\n      else item.link.removeAttribute('aria-current');\n    });\n  };\n  var requestUpdate=function(){\n    if(ticking) return;\n    ticking=true;\n    window.requestAnimationFrame(update);\n  };\n  window.addEventListener('scroll',requestUpdate,{passive:true});\n  window.addEventListener('resize',requestUpdate,{passive:true});\n  update();\n})();\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Des keftedes grecs au b\u0153uf, porc, pain tremp\u00e9, menthe et persil, l\u00e9g\u00e8rement farin\u00e9s puis frits \u00e0 170\u2013175 \u00b0C jusqu\u2019\u00e0 71 \u00b0C au c\u0153ur.<\/p>\n","protected":false},"featured_media":4395,"parent":4170,"menu_order":0,"template":"","tags":[],"tsh_dish_type":[80,189],"tsh_national_cuisine":[145],"class_list":["post-4394","tsh_food","type-tsh_food","status-publish","has-post-thumbnail","tsh_dish_type-entrees-et-bouchees","tsh_dish_type-mezzes-et-petites-bouchees","tsh_national_cuisine-cuisine-grecque"],"_links":{"self":[{"href":"https:\/\/travelshelper.com\/fr\/wp-json\/wp\/v2\/tsh_food\/4394","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/travelshelper.com\/fr\/wp-json\/wp\/v2\/tsh_food"}],"about":[{"href":"https:\/\/travelshelper.com\/fr\/wp-json\/wp\/v2\/types\/tsh_food"}],"up":[{"embeddable":true,"href":"https:\/\/travelshelper.com\/fr\/wp-json\/wp\/v2\/tsh_food\/4170"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/travelshelper.com\/fr\/wp-json\/wp\/v2\/media\/4395"}],"wp:attachment":[{"href":"https:\/\/travelshelper.com\/fr\/wp-json\/wp\/v2\/media?parent=4394"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/travelshelper.com\/fr\/wp-json\/wp\/v2\/tags?post=4394"},{"taxonomy":"tsh_dish_type","embeddable":true,"href":"https:\/\/travelshelper.com\/fr\/wp-json\/wp\/v2\/tsh_dish_type?post=4394"},{"taxonomy":"tsh_national_cuisine","embeddable":true,"href":"https:\/\/travelshelper.com\/fr\/wp-json\/wp\/v2\/tsh_national_cuisine?post=4394"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}