{"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-08-11T19:35:20","modified_gmt":"2026-08-11T19:35:20","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  (v5 - manual market pricing)\n  -----------------------------------------------------------------\n  Matched to the live Products page: Playfair Display headings,\n  blue\/green palette, white cards, green-rule dividers, blue result\n  panel.\n\n  HOW TO INSERT:\n    Pages -> (your estimator page) -> Edit -> Add Block -> Custom HTML\n    Paste this entire file.\n\n  ** WEEKLY UPDATE - this is the only thing you change regularly **\n    In the <script> near the bottom, find the block labelled\n    \"WEEKLY PRICING\" and edit:\n      MARKET_PER_LB  - feeder-steer $\/lb from AMS report 2082\n      OVER_MARKET    - your markup over market, $\/lb live\n      PROC_PER_HANG  - processor fee, $\/lb hanging\n    Everything on the page recomputes from those three numbers.\n\n  This block is fully self-contained. It no longer pulls from the\n  USDA API or reads window.sdfMarketData - you can remove the old\n  functions-additions.php \/ code snippet if you want.\n================================================================ -->\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>Freezer space needed<\/span>\n          <span class=\"v\" id=\"est-freezer\">\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  <!-- Freezer guide -->\n  <section class=\"sdfest-sec\">\n    <h2>Will It Fit In My Freezer?<\/h2>\n    <p class=\"lead\">Vacuum-sealed beef packs to roughly 35\u201340 lbs per cubic foot. Here\u2019s what that means in real freezers.<\/p>\n    <div class=\"sdfest-rule\"><\/div>\n\n    <div class=\"sdfest-tool\">\n      <div class=\"sdfest-card\">\n        <span class=\"sdfest-lbl\">A half beef (~180\u2013220 lbs)<\/span>\n        <p style=\"margin-bottom:1rem;\">Needs roughly <strong>5\u20137 cubic feet<\/strong>. That\u2019s about a small standalone chest or upright freezer \u2014 or it will crowd, but fit, the freezer compartment of a large fridge if you clear it out first.<\/p>\n        <span class=\"sdfest-lbl\">A whole beef (~360\u2013440 lbs)<\/span>\n        <p>Needs roughly <strong>10\u201313 cubic feet<\/strong>. This will <em>not<\/em> fit in a kitchen fridge-freezer. Plan on a dedicated chest or upright freezer \u2014 a common 15\u201316 cu ft model handles a whole beef with room to spare.<\/p>\n      <\/div>\n\n      <div class=\"sdfest-result\">\n        <h3>Freezer Sizes, Roughly<\/h3>\n        <p class=\"sub\">For comparison, when you\u2019re sizing up a freezer.<\/p>\n        <div class=\"sdfest-line\">\n          <span>Fridge-top freezer<\/span>\n          <span class=\"v\">~4\u20136 cu ft<\/span>\n        <\/div>\n        <div class=\"sdfest-line\">\n          <span>Small chest \/ upright<\/span>\n          <span class=\"v\">~5\u20137 cu ft<\/span>\n        <\/div>\n        <div class=\"sdfest-line\">\n          <span>Mid-size chest \/ upright<\/span>\n          <span class=\"v\">~9\u201313 cu ft<\/span>\n        <\/div>\n        <div class=\"sdfest-line\">\n          <span>Large chest \/ upright<\/span>\n          <span class=\"v\">~15\u201322 cu ft<\/span>\n        <\/div>\n        <p class=\"sub\" style=\"margin-top:1rem;border:none;padding-left:0;\">If you\u2019re buying a freezer for a share, get it set up and cold a day or two before pickup.<\/p>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <!-- Market -->\n  <section class=\"sdfest-sec\">\n    <h2>How We Price It<\/h2>\n    <p class=\"lead\">Our share price tracks the live cattle market \u2014 you pay a fair, transparent amount over it.<\/p>\n    <div class=\"sdfest-rule\"><\/div>\n\n    <div class=\"sdfest-market\">\n      <h3>This Week\u2019s Pricing<\/h3>\n      <p class=\"msub\" id=\"est-mkt-source\">AMS 2082 feeder steers, ~920 lb<\/p>\n      <div class=\"sdfest-mrule\"><\/div>\n      <div class=\"sdfest-mrow\">\n        <span>Market price (live weight)<\/span>\n        <span class=\"mv\" id=\"est-market-price\">\u2014<\/span>\n      <\/div>\n      <div class=\"sdfest-mrow\">\n        <span>Your price (live weight)<\/span>\n        <span class=\"mv\" id=\"est-your-price\">\u2014<\/span>\n      <\/div>\n      <div class=\"sdfest-mrow\">\n        <span>Source<\/span>\n        <span class=\"mv\">USDA AMS Report 2082<\/span>\n      <\/div>\n      <p class=\"sdfest-mnote\">\n        Beef is priced per pound of live weight, set just above the weekly market.\n        Processing is paid per pound of hanging weight. Your final total settles to\n        the actual weight of your animal at the processor.\n      <\/p>\n    <\/div>\n  <\/section>\n\n  <!-- Footer line -->\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  (placeholder; verify vs real share)\n  var SIZES = [950, 1100, 1275];    \/\/ live weights\n\n  \/\/ Freezer packing: vacuum-sealed cuts pack ~35-40 lb per cubic foot.\n  \/\/ We show a range using both ends.\n  var LB_PER_CUFT_LOW  = 35;        \/\/ looser pack -> more space\n  var LB_PER_CUFT_HIGH = 40;        \/\/ denser pack -> less space\n\n  \/* =====================================================================\n     WEEKLY PRICING - EDIT THESE THREE NUMBERS EACH WEEK\n     ---------------------------------------------------------------------\n     MARKET_PER_LB : feeder-steer price from USDA AMS report 2082, weight\n                     class nearest 1000 lb, as DOLLARS PER POUND.\n                     (A \"$321\/cwt\" quote = $3.21 per lb -> enter 3.21)\n     OVER_MARKET   : how much over market you charge, $\/lb LIVE weight.\n     PROC_PER_HANG : processor fee per pound of HANGING weight.\n                     $2.90 lands a half at about $1,000.\n     Customer pays  (MARKET_PER_LB + OVER_MARKET) per lb of LIVE weight,\n     plus           PROC_PER_HANG per lb of HANGING weight.\n  ===================================================================== *\/\n  var MARKET_PER_LB = 3.30        \/\/ $\/lb live  (AMS 2082, ~920 lb feeder steer)\n  var OVER_MARKET   = 1.50;         \/\/ $\/lb live over market\n  var PROC_PER_HANG = 2.25       \/\/ $\/lb hanging (half ~ $1,000)\n  var MKT_LABEL     = 'AMS 2082 feeder steers, ~93 lb';  \/\/ shown in panel\n\n  var S = { share:'half', sizeIdx:1 };\n\n  function calc() {\n    var live      = SIZES[S.sizeIdx];\n    var div       = S.share === 'half' ? 2 : 1;\n    var liveShare = live \/ div;                              \/\/ live lbs in the share\n    var hang      = (live * DRESS) \/ div;                    \/\/ hanging lbs\n    var take      = hang * CUT;                              \/\/ take-home lbs\n    var beef      = liveShare * (MARKET_PER_LB + OVER_MARKET); \/\/ priced on LIVE weight\n    var proc      = take * PROC_PER_HANG;                    \/\/ processing on HANGING weight\n    var tot       = beef + proc;\n    var cuftLo = take \/ LB_PER_CUFT_HIGH;   \/\/ denser pack -> fewer cu ft\n    var cuftHi = take \/ LB_PER_CUFT_LOW;    \/\/ looser pack -> more cu ft\n    return { hang:hang, take:take, beef:beef, proc:proc, tot:tot, perLb:tot\/take,\n             cuftLo:cuftLo, cuftHi:cuftHi };\n  }\n\n  function lbs(n)       { return '~' + Math.round(n) + ' lbs'; }\n  function cuft(lo, hi) { return '~' + Math.round(lo) + '\\u2013' + Math.round(hi) + ' cu ft'; }\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-freezer', cuft(r.cuftLo, r.cuftHi));\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    txt('est-market-price', '$' + MARKET_PER_LB.toFixed(2) + '\/lb');\n    txt('est-your-price',   '$' + (MARKET_PER_LB + OVER_MARKET).toFixed(2) + '\/lb');\n    txt('est-mkt-source',   MKT_LABEL);\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":723,"href":"https:\/\/stoneduck.farm\/index.php?rest_route=\/wp\/v2\/pages\/670\/revisions\/723"}],"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}]}}