{"id":670,"date":"2026-06-11T21:14:16","date_gmt":"2026-06-11T21:14:16","guid":{"rendered":"https:\/\/stoneduck.farm\/?page_id=670"},"modified":"2026-06-12T01:41:39","modified_gmt":"2026-06-12T01:41:39","slug":"price-estimator","status":"publish","type":"page","link":"https:\/\/stoneduck.farm\/?page_id=670","title":{"rendered":"Price Estimator"},"content":{"rendered":"\n<!-- ================================================================\n  STONE DUCK FARMS - Beef Share Estimator\n  WordPress Custom HTML block  (v3 - public, clean)\n  -----------------------------------------------------------------\n  Matched to the live Products page: Playfair Display headings,\n  blue\/green palette, white cards, green-rule dividers, blue result\n  panel. No farm-settings controls (admin prices live in the PHP).\n\n  HOW TO INSERT:\n    Pages -> (your estimator page) -> Edit -> Add Block -> Custom HTML\n    Paste this entire file.\n\n  PRICES:\n    The displayed cost uses the farm\/processor rates set in\n    functions-additions.php (defaults below match those). To change\n    pricing, edit the two DEFAULT_ lines in the <script> AND the\n    matching values in the PHP, so the page and the math agree.\n\n  MARKET DATA:\n    Reads window.sdfMarketData, injected into <head> by\n    functions-additions.php. No REST API \/ fetch from the browser.\n================================================================ -->\n\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin=\"\">\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Playfair+Display:wght@500;700;900&amp;display=swap\" rel=\"stylesheet\">\n\n<style>\n.sdfest *, .sdfest *::before, .sdfest *::after { margin:0; padding:0; box-sizing:border-box; }\n.sdfest {\n  --blue:#384580; --blue-dk:#2a3360; --green:#35735d; --green-dk:#285c48;\n  --cream:#f5f1ed; --head:#4a4a4a; --soft:#5a5a5a; --muted:#6b6b6b;\n  --line:#e6ddd0; --shadow:0 3px 15px rgba(0,0,0,.08);\n  color:#4a4a4a; line-height:1.7; max-width:1100px; margin:0 auto;\n}\n.sdfest h2, .sdfest h3, .sdfest h4, .sdfest .disp {\n  font-family:'Playfair Display',Georgia,serif; font-weight:700; line-height:1.2;\n}\n\n\/* Section + heading pattern (identical to Products page) *\/\n.sdfest-sec { margin-top:54px; }\n.sdfest-sec:first-child { margin-top:0; }\n.sdfest-sec > h2 { font-size:clamp(1.7rem,3.2vw,2.3rem); color:var(--head); text-align:center; font-weight:700; }\n.sdfest-sec > .lead { text-align:center; color:var(--muted); font-style:italic; max-width:660px; margin:.5rem auto 0; }\n.sdfest-rule { width:64px; height:3px; background:var(--green); margin:14px auto 30px; border-radius:2px; }\n\n\/* Intro band *\/\n.sdfest-intro { background:#fff; border-left:5px solid var(--blue); box-shadow:var(--shadow);\n  padding:30px 36px; font-size:1.08rem; color:#4a4a4a; }\n\n\/* Two-column tool layout *\/\n.sdfest-tool { display:grid; grid-template-columns:1.4fr 1fr; gap:30px; align-items:start; }\n\n.sdfest-lbl { display:block; font-family:'Playfair Display',serif; font-weight:700;\n  font-size:.95rem; color:var(--head); margin-bottom:.6rem; }\n\n\/* Share toggle *\/\n.sdfest-toggle { display:flex; gap:14px; margin-bottom:24px; }\n.sdfest-toggle button {\n  flex:1; background:#fff; border:2px solid var(--line); border-radius:8px;\n  box-shadow:var(--shadow); padding:16px 16px; cursor:pointer; text-align:left;\n  transition:border-color .2s, transform .2s, box-shadow .2s; font-family:inherit;\n}\n.sdfest-toggle button:hover { transform:translateY(-2px); box-shadow:0 6px 20px rgba(0,0,0,.11); }\n.sdfest-toggle button.active { border-color:var(--blue); }\n.sdfest-toggle .t-name { font-family:'Playfair Display',serif; font-weight:700;\n  font-size:1.25rem; color:var(--head); display:block; }\n.sdfest-toggle button.active .t-name { color:var(--blue); }\n.sdfest-toggle .t-sub { color:var(--muted); font-size:.86rem; font-style:italic; margin-top:.2rem; display:block; }\n\n\/* Animal size *\/\n.sdfest-card { background:#fff; border-radius:8px; box-shadow:var(--shadow);\n  padding:24px 26px; border:1px solid var(--line); }\n.sdfest-sizes { display:flex; flex-direction:column; gap:10px; }\n.sdfest-size {\n  display:flex; align-items:center; gap:10px; width:100%;\n  padding:12px 16px; border-radius:6px; border:1px solid var(--line);\n  background:#fff; cursor:pointer; text-align:left; font-family:inherit;\n  font-size:.98rem; color:var(--soft); transition:border-color .2s, background .2s, color .2s;\n}\n.sdfest-size:hover { border-color:rgba(53,115,93,.4); }\n.sdfest-size.active { border:1.5px solid var(--green); background:rgba(53,115,93,.07); color:var(--green-dk); font-weight:600; }\n.sdfest-pill { font-size:.66rem; font-weight:700; letter-spacing:.08em; text-transform:uppercase;\n  background:var(--green); color:#fff; padding:2px 9px; border-radius:12px; }\n\n\/* Result panel *\/\n.sdfest-result { background:var(--blue); color:var(--cream); border-radius:8px;\n  padding:26px 28px; box-shadow:var(--shadow); }\n.sdfest-result h3 { color:#fff; font-size:1.45rem; margin-bottom:.2rem; }\n.sdfest-result .sub { font-style:italic; opacity:.85; font-size:.9rem;\n  border-left:3px solid var(--cream); padding-left:.7rem; margin:.5rem 0 1.2rem; }\n.sdfest-line { display:flex; justify-content:space-between; gap:1rem; align-items:baseline;\n  padding:.5rem 0; border-bottom:1px dotted rgba(255,255,255,.22); font-size:.96rem; }\n.sdfest-line .v { font-family:'Playfair Display',serif; font-weight:700; color:#fff; white-space:nowrap; }\n.sdfest-total { display:flex; justify-content:space-between; align-items:baseline; padding:1.1rem 0 .2rem; }\n.sdfest-total .lbl { font-family:'Playfair Display',serif; font-weight:700; font-size:1.05rem; color:#fff; }\n.sdfest-total .amt { font-family:'Playfair Display',serif; font-weight:900; font-size:2rem; color:#fff; }\n.sdfest-perlb { text-align:right; font-style:italic; font-size:.85rem; opacity:.7; margin-top:.3rem; }\n\n\/* Disclaimer *\/\n.sdfest-note { font-style:italic; color:var(--muted); font-size:.95rem; text-align:center;\n  max-width:680px; margin:26px auto 0; line-height:1.7; }\n.sdfest-note strong { font-style:normal; color:var(--soft); }\n\n\/* Market card *\/\n.sdfest-market { background:#fff; border-radius:8px; box-shadow:var(--shadow);\n  padding:24px 28px; border:1px solid var(--line); max-width:560px; margin:0 auto; }\n.sdfest-market h3 { color:var(--head); font-size:1.2rem; }\n.sdfest-market .msub { color:var(--muted); font-style:italic; font-size:.85rem; margin-top:.1rem; }\n.sdfest-mrule { width:48px; height:3px; background:var(--green); border-radius:2px; margin:12px 0 16px; }\n.sdfest-mrow { display:flex; justify-content:space-between; gap:1rem;\n  padding:.5rem 0; border-bottom:1px dotted var(--line); font-size:.95rem; }\n.sdfest-mrow:last-of-type { border-bottom:none; }\n.sdfest-mrow .mv { font-family:'Playfair Display',serif; font-weight:700; color:var(--blue); white-space:nowrap; }\n.sdfest-mnote { color:var(--muted); font-size:.8rem; margin-top:14px; line-height:1.55; }\n\n\/* Footer line *\/\n.sdfest-foot { text-align:center; margin-top:40px; color:var(--muted); }\n.sdfest-foot .brand { font-family:'Playfair Display',serif; font-weight:700;\n  letter-spacing:.04em; color:var(--green-dk); font-size:.9rem; }\n.sdfest-foot .loc { font-style:italic; font-size:.85rem; margin-top:.2rem; }\n\n@media (max-width:760px){\n  .sdfest-tool { grid-template-columns:1fr; }\n  .sdfest-toggle { flex-direction:column; }\n}\n<\/style>\n\n<div class=\"sdfest\">\n\n  <!-- Intro -->\n  <div class=\"sdfest-sec sdfest-intro\">\n    A half or whole share is the most beef for the least per pound \u2014 but because every\n    animal finishes a little differently, the final price always settles to the actual\n    hanging weight at pickup. This tool gives you a realistic range so you can plan your\n    freezer and your budget before you reserve.\n  <\/div>\n\n  <!-- Estimator -->\n  <section class=\"sdfest-sec\">\n    <h2>Estimate Your Share<\/h2>\n    <p class=\"lead\">Pick a share and an animal size to see an estimated cost range and how much beef ends up in your freezer.<\/p>\n    <div class=\"sdfest-rule\"><\/div>\n\n    <div class=\"sdfest-tool\">\n\n      <!-- Controls -->\n      <div>\n        <span class=\"sdfest-lbl\">I want a\u2026<\/span>\n        <div class=\"sdfest-toggle\">\n          <button class=\"active\" data-share=\"half\">\n            <span class=\"t-name\">Half Beef<\/span>\n            <span class=\"t-sub\">~180-220 lbs take-home<\/span>\n          <\/button>\n          <button data-share=\"whole\">\n            <span class=\"t-name\">Whole Beef<\/span>\n            <span class=\"t-sub\">~360-440 lbs take-home<\/span>\n          <\/button>\n        <\/div>\n\n        <div class=\"sdfest-card\">\n          <span class=\"sdfest-lbl\">Animal size<\/span>\n          <div class=\"sdfest-sizes\">\n            <button class=\"sdfest-size\" data-size=\"0\">Smaller animal&nbsp;\u00b7&nbsp;~950 lb live<\/button>\n            <button class=\"sdfest-size active\" data-size=\"1\">\n              Average animal&nbsp;\u00b7&nbsp;~1,100 lb live\n              <span class=\"sdfest-pill\">Typical<\/span>\n            <\/button>\n            <button class=\"sdfest-size\" data-size=\"2\">Larger animal&nbsp;\u00b7&nbsp;~1,275 lb live<\/button>\n          <\/div>\n        <\/div>\n      <\/div>\n\n      <!-- Result -->\n      <div class=\"sdfest-result\">\n        <h3>Your Estimate<\/h3>\n        <p class=\"sub\">A planning range \u2014 we settle to the ounce at pickup.<\/p>\n\n        <div class=\"sdfest-line\">\n          <span id=\"est-hang-lbl\">Hanging weight (half)<\/span>\n          <span class=\"v\" id=\"est-hang\">\u2014<\/span>\n        <\/div>\n        <div class=\"sdfest-line\">\n          <span>Approx. take-home cuts<\/span>\n          <span class=\"v\" id=\"est-take\">\u2014<\/span>\n        <\/div>\n        <div class=\"sdfest-line\">\n          <span>Beef \u2014 paid to Stone Duck<\/span>\n          <span class=\"v\" id=\"est-beef\">\u2014<\/span>\n        <\/div>\n        <div class=\"sdfest-line\">\n          <span>Processing \u2014 paid to processor<\/span>\n          <span class=\"v\" id=\"est-proc\">\u2014<\/span>\n        <\/div>\n\n        <div class=\"sdfest-total\">\n          <span class=\"lbl\">Estimated total<\/span>\n          <span class=\"amt\" id=\"est-total\">\u2014<\/span>\n        <\/div>\n        <div class=\"sdfest-perlb\" id=\"est-perlb\">calculating&#8230;<\/div>\n      <\/div>\n\n    <\/div>\n\n    <p class=\"sdfest-note\">\n      Estimates only \u2014 your final price settles to the actual hanging weight at the processor.\n      Call or text <strong>(615) 896-3475<\/strong> to reserve your share and get exact current pricing.\n    <\/p>\n  <\/section>\n\n  <!-- Market -->\n  <section class=\"sdfest-sec\">\n    <h2>This Week\u2019s Cattle Market<\/h2>\n    <p class=\"lead\">For context only \u2014 these are regional auction reference figures, not Stone Duck prices.<\/p>\n    <div class=\"sdfest-rule\"><\/div>\n\n    <div class=\"sdfest-market\">\n      <h3>Tennessee Market Pulse<\/h3>\n      <p class=\"msub\" id=\"est-mkt-date\">5-Area Daily Direct Slaughter Cattle \u2014 USDA LMPR<\/p>\n      <div class=\"sdfest-mrule\"><\/div>\n      <div class=\"sdfest-mrow\">\n        <span>Negotiated steers \u2014 live basis<\/span>\n        <span class=\"mv\" id=\"est-slaughter\">\u2014<\/span>\n      <\/div>\n      <div class=\"sdfest-mrow\">\n        <span>Negotiated steers \u2014 dressed basis<\/span>\n        <span class=\"mv\" id=\"est-feeder\">\u2014<\/span>\n      <\/div>\n      <div class=\"sdfest-mrow\">\n        <span>Source<\/span>\n        <span class=\"mv\">USDA LMPR (LM_CT100)<\/span>\n      <\/div>\n      <p class=\"sdfest-mnote\">\n        Updated weekly from the USDA Agricultural Marketing Service. These reflect the\n        live cattle market \u2014 Stone Duck\u2019s direct-to-you pricing is set separately.\n      <\/p>\n    <\/div>\n  <\/section>\n\n  \n\n<\/div><!-- \/.sdfest -->\n\n<script>\n(function () {\n  'use strict';\n\n  var DRESS = 0.63;                 \/\/ live -> hanging\n  var CUT   = 0.70;                 \/\/ hanging -> take-home\n  var SIZES = [950, 1100, 1275];    \/\/ live weights\n\n  var DEFAULT_PRICE_HW = 4.25;      \/\/ $\/lb HW - Stone Duck  (keep in sync with PHP)\n  var DEFAULT_PROC_HW  = 1.60;      \/\/ $\/lb HW - processor   (keep in sync with PHP)\n\n  var S = { share:'half', sizeIdx:1, priceHW:DEFAULT_PRICE_HW, procHW:DEFAULT_PROC_HW };\n\n  function calc() {\n    var live = SIZES[S.sizeIdx];\n    var div  = S.share === 'half' ? 2 : 1;\n    var hang = (live * DRESS) \/ div;\n    var take = hang * CUT;\n    var beef = hang * S.priceHW;\n    var proc = hang * S.procHW;\n    var tot  = beef + proc;\n    return { hang:hang, take:take, beef:beef, proc:proc, tot:tot, perLb:tot\/take };\n  }\n\n  function lbs(n)       { return '~' + Math.round(n) + ' lbs'; }\n  function range(n, sp) { sp = sp || 0.08; return '$' + Math.round(n*(1-sp)) + '\\u2013' + Math.round(n*(1+sp)); }\n  function dlb(n)       { return '$' + n.toFixed(2); }\n  function txt(id, v)   { var el = document.getElementById(id); if (el) el.textContent = v; }\n\n  function render() {\n    var r = calc();\n    txt('est-hang-lbl', 'Hanging weight (' + S.share + ')');\n    txt('est-hang',  lbs(r.hang));\n    txt('est-take',  lbs(r.take));\n    txt('est-beef',  range(r.beef));\n    txt('est-proc',  range(r.proc));\n    txt('est-total', range(r.tot, 0.10));\n    txt('est-perlb', '\\u2248 ' + dlb(r.perLb) + '\/lb take-home');\n\n    document.querySelectorAll('.sdfest-toggle button').forEach(function(b){\n      b.classList.toggle('active', b.dataset.share === S.share);\n    });\n    document.querySelectorAll('.sdfest-size').forEach(function(b){\n      b.classList.toggle('active', parseInt(b.dataset.size,10) === S.sizeIdx);\n    });\n  }\n\n  document.querySelectorAll('.sdfest-toggle button').forEach(function(b){\n    b.addEventListener('click', function(){ S.share = b.dataset.share; render(); });\n  });\n  document.querySelectorAll('.sdfest-size').forEach(function(b){\n    b.addEventListener('click', function(){ S.sizeIdx = parseInt(b.dataset.size,10); render(); });\n  });\n\n  function loadMarket() {\n    var d = window.sdfMarketData;\n    if (!d) { return; }\n    txt('est-slaughter', d.slaughter_600_800 || 'pending');\n    txt('est-feeder',    d.feeder_500_600    || 'pending');\n    if (d.report_date) {\n      txt('est-mkt-date', '5-Area Daily Direct Slaughter Cattle \\u2014 ' + d.report_date);\n    }\n  }\n\n  render();\n  loadMarket();\n}());\n<\/script>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"class_list":["post-670","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/stoneduck.farm\/index.php?rest_route=\/wp\/v2\/pages\/670","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/stoneduck.farm\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/stoneduck.farm\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/stoneduck.farm\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/stoneduck.farm\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=670"}],"version-history":[{"count":5,"href":"https:\/\/stoneduck.farm\/index.php?rest_route=\/wp\/v2\/pages\/670\/revisions"}],"predecessor-version":[{"id":681,"href":"https:\/\/stoneduck.farm\/index.php?rest_route=\/wp\/v2\/pages\/670\/revisions\/681"}],"wp:attachment":[{"href":"https:\/\/stoneduck.farm\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=670"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}