<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Dough on Recipe Book</title><link>https://recipes.uuard.com/tags/dough/</link><description>Recent content in Dough on Recipe Book</description><generator>Hugo</generator><language>en-us</language><atom:link href="https://recipes.uuard.com/tags/dough/index.xml" rel="self" type="application/rss+xml"/><item><title>Dough Ingredient Incorporation</title><link>https://recipes.uuard.com/docs/reference/dough-ingredient-incorporation/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://recipes.uuard.com/docs/reference/dough-ingredient-incorporation/</guid><description>&lt;h1 id="-dough-ingredient-incorporation"&gt;
 🥣 Dough Ingredient Incorporation
 
 &lt;a class="anchor" href="#-dough-ingredient-incorporation"&gt;#&lt;/a&gt;
 
&lt;/h1&gt;
&lt;p&gt;Guidelines for incorporating common dough ingredients into mixture.&lt;/p&gt;
&lt;h2 id="-dry-ingredients"&gt;
 🌾 Dry Ingredients
 
 &lt;a class="anchor" href="#-dry-ingredients"&gt;#&lt;/a&gt;
 
&lt;/h2&gt;
&lt;p&gt;Include at start of mix.&lt;/p&gt;
&lt;h2 id="-eggs"&gt;
 🥚 Eggs
 
 &lt;a class="anchor" href="#-eggs"&gt;#&lt;/a&gt;
 
&lt;/h2&gt;
&lt;p&gt;Add water to eggs, include all at start of mix.&lt;/p&gt;
&lt;h2 id="-fat"&gt;
 🧈 Fat
 
 &lt;a class="anchor" href="#-fat"&gt;#&lt;/a&gt;
 
&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Fat Type&lt;/th&gt;
 &lt;th&gt;Amount&lt;/th&gt;
 &lt;th&gt;Inclusion&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Solid&lt;/td&gt;
 &lt;td&gt;Low (&amp;lt; 5%)&lt;/td&gt;
 &lt;td&gt;Start of mix&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Solid&lt;/td&gt;
 &lt;td&gt;Medium (&amp;lt; 15%)&lt;/td&gt;
 &lt;td&gt;Halfway through mix&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Solid&lt;/td&gt;
 &lt;td&gt;High (&amp;gt; 15%)&lt;/td&gt;
 &lt;td&gt;Just before full development&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Liquid&lt;/td&gt;
 &lt;td&gt;Medium (&amp;lt; 15%)&lt;/td&gt;
 &lt;td&gt;Start of mix&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Liquid&lt;/td&gt;
 &lt;td&gt;High (&amp;gt; 15%)&lt;/td&gt;
 &lt;td&gt;After full development&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="-sugar"&gt;
 🍬 Sugar
 
 &lt;a class="anchor" href="#-sugar"&gt;#&lt;/a&gt;
 
&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Amount&lt;/th&gt;
 &lt;th&gt;Inclusion&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Low (&amp;lt; 12%)&lt;/td&gt;
 &lt;td&gt;Start of mix&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Medium (&amp;lt; 20%)&lt;/td&gt;
 &lt;td&gt;Add gradually&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;High (&amp;gt; 20%)&lt;/td&gt;
 &lt;td&gt;After full development&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;</description></item><item><title>Dough Shaping</title><link>https://recipes.uuard.com/docs/reference/dough-shaping/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://recipes.uuard.com/docs/reference/dough-shaping/</guid><description>&lt;h1 id="-dough-shaping"&gt;
 🤲 Dough Shaping
 
 &lt;a class="anchor" href="#-dough-shaping"&gt;#&lt;/a&gt;
 
&lt;/h1&gt;</description></item><item><title>Imo's Pizza Dough</title><link>https://recipes.uuard.com/docs/recipes/imos_pizza_dough/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://recipes.uuard.com/docs/recipes/imos_pizza_dough/</guid><description>&lt;h2 id="ingredients"&gt;
 Ingredients
 
 &lt;a class="anchor" href="#ingredients"&gt;#&lt;/a&gt;
 
&lt;/h2&gt;
&lt;div
 id="recipe-formula-0"
 class="recipe-formula-widget"
 data-basis-mode="single"
 &gt;&lt;div class="basis-inputs" aria-label="Basis ingredient weight"&gt;&lt;label&gt;
 &lt;span&gt;All-Purpose Flour&lt;/span&gt;
 &lt;span class="basis-input-field"&gt;
 &lt;input
 type="number"
 min="0"
 step="0.01"
 inputmode="decimal"
 data-basis-input="true"
 data-ingredient-id="flour_all_purpose"
 value="100.00"
 &gt;
 &lt;span class="basis-input-unit"&gt;g&lt;/span&gt;
 &lt;/span&gt;
 &lt;/label&gt;&lt;/div&gt;&lt;table class="bakers-percent-table"&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Ingredient&lt;/th&gt;
 &lt;th&gt;Baker's %&lt;/th&gt;
 &lt;th&gt;Weight (g)&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;&lt;tr
 data-row-pct="100.00000000"
 data-is-basis="true"
 &gt;
 &lt;td&gt;All-Purpose Flour&lt;/td&gt;
 &lt;td&gt;100.00&lt;/td&gt;
 &lt;td data-weight-cell&gt;0.00&lt;/td&gt;
 &lt;/tr&gt;&lt;tr
 data-row-pct="50.00000000"
 
 &gt;
 &lt;td&gt;Water&lt;/td&gt;
 &lt;td&gt;50.00&lt;/td&gt;
 &lt;td data-weight-cell&gt;0.00&lt;/td&gt;
 &lt;/tr&gt;&lt;tr
 data-row-pct="8.00000000"
 
 &gt;
 &lt;td&gt;Oil&lt;/td&gt;
 &lt;td&gt;8.00&lt;/td&gt;
 &lt;td data-weight-cell&gt;0.00&lt;/td&gt;
 &lt;/tr&gt;&lt;tr
 data-row-pct="1.00000000"
 
 &gt;
 &lt;td&gt;Salt&lt;/td&gt;
 &lt;td&gt;1.00&lt;/td&gt;
 &lt;td data-weight-cell&gt;0.00&lt;/td&gt;
 &lt;/tr&gt;&lt;tr
 data-row-pct="1.00000000"
 
 &gt;
 &lt;td&gt;Sugar&lt;/td&gt;
 &lt;td&gt;1.00&lt;/td&gt;
 &lt;td data-weight-cell&gt;0.00&lt;/td&gt;
 &lt;/tr&gt;&lt;tr
 data-row-pct="0.50000000"
 
 &gt;
 &lt;td&gt;Instant Yeast&lt;/td&gt;
 &lt;td&gt;0.50&lt;/td&gt;
 &lt;td data-weight-cell&gt;0.00&lt;/td&gt;
 &lt;/tr&gt;&lt;/tbody&gt;
 &lt;tfoot&gt;
 &lt;tr&gt;
 &lt;th&gt;Total&lt;/th&gt;
 &lt;th&gt;160.50&lt;/th&gt;
 &lt;th data-total-weight&gt;0.00&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/tfoot&gt;
 &lt;/table&gt;
 &lt;/div&gt;

 &lt;script&gt;
 (() =&gt; {
 const root = document.getElementById("recipe-formula-0");
 if (!root) return;

 const basisInputs = root.querySelectorAll('input[data-basis-input="true"]');
 const rows = root.querySelectorAll("tr[data-row-pct]");
 const basisTotalEl = root.querySelector("[data-basis-total]");
 const basisTotalInput = root.querySelector('input[data-basis-total-input="true"]');
 const totalWeightEl = root.querySelector("[data-total-weight]");
 const basisMode = root.getAttribute("data-basis-mode");

 const parseNum = (value) =&gt; {
 const n = Number.parseFloat(value);
 return Number.isFinite(n) ? n : 0;
 };

 const update = () =&gt; {
 let basisTotal = 0;
 let totalWeight = 0;
 if (basisMode === "multi") {
 basisTotal = parseNum(basisTotalInput ? basisTotalInput.value : 0);
 } else {
 basisInputs.forEach((input) =&gt; {
 basisTotal += parseNum(input.value);
 });
 }

 if (basisTotalEl) {
 basisTotalEl.textContent = basisTotal.toFixed(2);
 }

 rows.forEach((row) =&gt; {
 const pct = parseNum(row.getAttribute("data-row-pct"));
 const weight = (pct / 100) * basisTotal;
 totalWeight += weight;
 const cell = row.querySelector("[data-weight-cell]");
 if (cell) cell.textContent = weight.toFixed(2);
 });

 if (totalWeightEl) {
 totalWeightEl.textContent = totalWeight.toFixed(2);
 }
 };

 if (basisMode === "multi") {
 if (basisTotalInput) {
 basisTotalInput.addEventListener("input", update);
 }
 } else {
 basisInputs.forEach((input) =&gt; input.addEventListener("input", update));
 }
 update();
 })();
 &lt;/script&gt;

 &lt;style&gt;
 .recipe-formula-widget .basis-inputs {
 margin: 0 0 0.75rem;
 display: grid;
 gap: 0.375rem;
 max-width: 28rem;
 }

 .recipe-formula-widget .basis-inputs label {
 display: inline-flex;
 align-items: center;
 gap: 0.75rem;
 color: var(--color-link);
 font-weight: 600;
 justify-self: start;
 }

 .recipe-formula-widget .basis-input-field {
 display: inline-flex;
 align-items: center;
 gap: 0.25rem;
 white-space: nowrap;
 }

 .recipe-formula-widget .basis-inputs input {
 width: 7rem;
 margin: 0;
 }

 .recipe-formula-widget .basis-input-unit {
 color: #6b7280;
 font-size: 0.875em;
 }

 .recipe-formula-widget table.bakers-percent-table tbody tr[data-is-basis="true"] td {
 font-weight: 600;
 color: var(--color-link);
 }
 &lt;/style&gt;
&lt;h2 id="process"&gt;
 Process
 
 &lt;a class="anchor" href="#process"&gt;#&lt;/a&gt;
 
&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Mix to high gluten development.&lt;/li&gt;
&lt;li&gt;Shape balls, cold ferment 24-72 hr.&lt;/li&gt;
&lt;li&gt;Roll 16 in.&lt;/li&gt;
&lt;li&gt;Preheat steel 500 °F.&lt;/li&gt;
&lt;li&gt;Lower to 450 °F.&lt;/li&gt;
&lt;li&gt;Bake 11 min.&lt;/li&gt;
&lt;li&gt;Transfer to cooling rack 6 min.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="notes"&gt;
 Notes
 
 &lt;a class="anchor" href="#notes"&gt;#&lt;/a&gt;
 
&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;167 g dough / 16 in skin.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>MOD Pizza Dough</title><link>https://recipes.uuard.com/docs/recipes/mod_pizza_dough/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://recipes.uuard.com/docs/recipes/mod_pizza_dough/</guid><description>&lt;h2 id="ingredients"&gt;
 Ingredients
 
 &lt;a class="anchor" href="#ingredients"&gt;#&lt;/a&gt;
 
&lt;/h2&gt;
&lt;div
 id="recipe-formula-0"
 class="recipe-formula-widget"
 data-basis-mode="single"
 &gt;&lt;div class="basis-inputs" aria-label="Basis ingredient weight"&gt;&lt;label&gt;
 &lt;span&gt;Bread Flour&lt;/span&gt;
 &lt;span class="basis-input-field"&gt;
 &lt;input
 type="number"
 min="0"
 step="0.01"
 inputmode="decimal"
 data-basis-input="true"
 data-ingredient-id="flour_bread"
 value="100.00"
 &gt;
 &lt;span class="basis-input-unit"&gt;g&lt;/span&gt;
 &lt;/span&gt;
 &lt;/label&gt;&lt;/div&gt;&lt;table class="bakers-percent-table"&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Ingredient&lt;/th&gt;
 &lt;th&gt;Baker's %&lt;/th&gt;
 &lt;th&gt;Weight (g)&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;&lt;tr
 data-row-pct="100.00000000"
 data-is-basis="true"
 &gt;
 &lt;td&gt;Bread Flour&lt;/td&gt;
 &lt;td&gt;100.00&lt;/td&gt;
 &lt;td data-weight-cell&gt;0.00&lt;/td&gt;
 &lt;/tr&gt;&lt;tr
 data-row-pct="50.00000000"
 
 &gt;
 &lt;td&gt;Water&lt;/td&gt;
 &lt;td&gt;50.00&lt;/td&gt;
 &lt;td data-weight-cell&gt;0.00&lt;/td&gt;
 &lt;/tr&gt;&lt;tr
 data-row-pct="5.00000000"
 
 &gt;
 &lt;td&gt;Oil&lt;/td&gt;
 &lt;td&gt;5.00&lt;/td&gt;
 &lt;td data-weight-cell&gt;0.00&lt;/td&gt;
 &lt;/tr&gt;&lt;tr
 data-row-pct="2.75000000"
 
 &gt;
 &lt;td&gt;Salt&lt;/td&gt;
 &lt;td&gt;2.75&lt;/td&gt;
 &lt;td data-weight-cell&gt;0.00&lt;/td&gt;
 &lt;/tr&gt;&lt;tr
 data-row-pct="1.00000000"
 
 &gt;
 &lt;td&gt;Sugar&lt;/td&gt;
 &lt;td&gt;1.00&lt;/td&gt;
 &lt;td data-weight-cell&gt;0.00&lt;/td&gt;
 &lt;/tr&gt;&lt;tr
 data-row-pct="0.50000000"
 
 &gt;
 &lt;td&gt;Instant Yeast&lt;/td&gt;
 &lt;td&gt;0.50&lt;/td&gt;
 &lt;td data-weight-cell&gt;0.00&lt;/td&gt;
 &lt;/tr&gt;&lt;/tbody&gt;
 &lt;tfoot&gt;
 &lt;tr&gt;
 &lt;th&gt;Total&lt;/th&gt;
 &lt;th&gt;159.25&lt;/th&gt;
 &lt;th data-total-weight&gt;0.00&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/tfoot&gt;
 &lt;/table&gt;
 &lt;/div&gt;

 &lt;script&gt;
 (() =&gt; {
 const root = document.getElementById("recipe-formula-0");
 if (!root) return;

 const basisInputs = root.querySelectorAll('input[data-basis-input="true"]');
 const rows = root.querySelectorAll("tr[data-row-pct]");
 const basisTotalEl = root.querySelector("[data-basis-total]");
 const basisTotalInput = root.querySelector('input[data-basis-total-input="true"]');
 const totalWeightEl = root.querySelector("[data-total-weight]");
 const basisMode = root.getAttribute("data-basis-mode");

 const parseNum = (value) =&gt; {
 const n = Number.parseFloat(value);
 return Number.isFinite(n) ? n : 0;
 };

 const update = () =&gt; {
 let basisTotal = 0;
 let totalWeight = 0;
 if (basisMode === "multi") {
 basisTotal = parseNum(basisTotalInput ? basisTotalInput.value : 0);
 } else {
 basisInputs.forEach((input) =&gt; {
 basisTotal += parseNum(input.value);
 });
 }

 if (basisTotalEl) {
 basisTotalEl.textContent = basisTotal.toFixed(2);
 }

 rows.forEach((row) =&gt; {
 const pct = parseNum(row.getAttribute("data-row-pct"));
 const weight = (pct / 100) * basisTotal;
 totalWeight += weight;
 const cell = row.querySelector("[data-weight-cell]");
 if (cell) cell.textContent = weight.toFixed(2);
 });

 if (totalWeightEl) {
 totalWeightEl.textContent = totalWeight.toFixed(2);
 }
 };

 if (basisMode === "multi") {
 if (basisTotalInput) {
 basisTotalInput.addEventListener("input", update);
 }
 } else {
 basisInputs.forEach((input) =&gt; input.addEventListener("input", update));
 }
 update();
 })();
 &lt;/script&gt;

 &lt;style&gt;
 .recipe-formula-widget .basis-inputs {
 margin: 0 0 0.75rem;
 display: grid;
 gap: 0.375rem;
 max-width: 28rem;
 }

 .recipe-formula-widget .basis-inputs label {
 display: inline-flex;
 align-items: center;
 gap: 0.75rem;
 color: var(--color-link);
 font-weight: 600;
 justify-self: start;
 }

 .recipe-formula-widget .basis-input-field {
 display: inline-flex;
 align-items: center;
 gap: 0.25rem;
 white-space: nowrap;
 }

 .recipe-formula-widget .basis-inputs input {
 width: 7rem;
 margin: 0;
 }

 .recipe-formula-widget .basis-input-unit {
 color: #6b7280;
 font-size: 0.875em;
 }

 .recipe-formula-widget table.bakers-percent-table tbody tr[data-is-basis="true"] td {
 font-weight: 600;
 color: var(--color-link);
 }
 &lt;/style&gt;
&lt;h2 id="process"&gt;
 Process
 
 &lt;a class="anchor" href="#process"&gt;#&lt;/a&gt;
 
&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Combine and mix dough medium development.&lt;/li&gt;
&lt;li&gt;Divide.&lt;/li&gt;
&lt;li&gt;Shape dough into ball.&lt;/li&gt;
&lt;li&gt;Lightly oil ball.&lt;/li&gt;
&lt;li&gt;Store in air-tight container and refrigerate.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="notes"&gt;
 Notes
 
 &lt;a class="anchor" href="#notes"&gt;#&lt;/a&gt;
 
&lt;/h2&gt;
&lt;h3 id="usable-life-of-dough"&gt;
 Usable Life of Dough.
 
 &lt;a class="anchor" href="#usable-life-of-dough"&gt;#&lt;/a&gt;
 
&lt;/h3&gt;
&lt;p&gt;Usable life of dough is determined by:&lt;/p&gt;</description></item><item><title>Shakespeare's Pizza Dough</title><link>https://recipes.uuard.com/docs/recipes/shakespeares_pizza_dough/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://recipes.uuard.com/docs/recipes/shakespeares_pizza_dough/</guid><description>&lt;h2 id="ingredients"&gt;
 Ingredients
 
 &lt;a class="anchor" href="#ingredients"&gt;#&lt;/a&gt;
 
&lt;/h2&gt;
&lt;div
 id="recipe-formula-0"
 class="recipe-formula-widget"
 data-basis-mode="single"
 &gt;&lt;div class="basis-inputs" aria-label="Basis ingredient weight"&gt;&lt;label&gt;
 &lt;span&gt;Bread Flour&lt;/span&gt;
 &lt;span class="basis-input-field"&gt;
 &lt;input
 type="number"
 min="0"
 step="0.01"
 inputmode="decimal"
 data-basis-input="true"
 data-ingredient-id="flour_bread"
 value="100.00"
 &gt;
 &lt;span class="basis-input-unit"&gt;g&lt;/span&gt;
 &lt;/span&gt;
 &lt;/label&gt;&lt;/div&gt;&lt;table class="bakers-percent-table"&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Ingredient&lt;/th&gt;
 &lt;th&gt;Baker's %&lt;/th&gt;
 &lt;th&gt;Weight (g)&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;&lt;tr
 data-row-pct="100.00000000"
 data-is-basis="true"
 &gt;
 &lt;td&gt;Bread Flour&lt;/td&gt;
 &lt;td&gt;100.00&lt;/td&gt;
 &lt;td data-weight-cell&gt;0.00&lt;/td&gt;
 &lt;/tr&gt;&lt;tr
 data-row-pct="50.00000000"
 
 &gt;
 &lt;td&gt;Water&lt;/td&gt;
 &lt;td&gt;50.00&lt;/td&gt;
 &lt;td data-weight-cell&gt;0.00&lt;/td&gt;
 &lt;/tr&gt;&lt;tr
 data-row-pct="2.50000000"
 
 &gt;
 &lt;td&gt;Sugar&lt;/td&gt;
 &lt;td&gt;2.50&lt;/td&gt;
 &lt;td data-weight-cell&gt;0.00&lt;/td&gt;
 &lt;/tr&gt;&lt;tr
 data-row-pct="2.00000000"
 
 &gt;
 &lt;td&gt;Instant Yeast&lt;/td&gt;
 &lt;td&gt;2.00&lt;/td&gt;
 &lt;td data-weight-cell&gt;0.00&lt;/td&gt;
 &lt;/tr&gt;&lt;tr
 data-row-pct="2.00000000"
 
 &gt;
 &lt;td&gt;Salt&lt;/td&gt;
 &lt;td&gt;2.00&lt;/td&gt;
 &lt;td data-weight-cell&gt;0.00&lt;/td&gt;
 &lt;/tr&gt;&lt;tr
 data-row-pct="2.00000000"
 
 &gt;
 &lt;td&gt;Oil&lt;/td&gt;
 &lt;td&gt;2.00&lt;/td&gt;
 &lt;td data-weight-cell&gt;0.00&lt;/td&gt;
 &lt;/tr&gt;&lt;/tbody&gt;
 &lt;tfoot&gt;
 &lt;tr&gt;
 &lt;th&gt;Total&lt;/th&gt;
 &lt;th&gt;158.50&lt;/th&gt;
 &lt;th data-total-weight&gt;0.00&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/tfoot&gt;
 &lt;/table&gt;
 &lt;/div&gt;

 &lt;script&gt;
 (() =&gt; {
 const root = document.getElementById("recipe-formula-0");
 if (!root) return;

 const basisInputs = root.querySelectorAll('input[data-basis-input="true"]');
 const rows = root.querySelectorAll("tr[data-row-pct]");
 const basisTotalEl = root.querySelector("[data-basis-total]");
 const basisTotalInput = root.querySelector('input[data-basis-total-input="true"]');
 const totalWeightEl = root.querySelector("[data-total-weight]");
 const basisMode = root.getAttribute("data-basis-mode");

 const parseNum = (value) =&gt; {
 const n = Number.parseFloat(value);
 return Number.isFinite(n) ? n : 0;
 };

 const update = () =&gt; {
 let basisTotal = 0;
 let totalWeight = 0;
 if (basisMode === "multi") {
 basisTotal = parseNum(basisTotalInput ? basisTotalInput.value : 0);
 } else {
 basisInputs.forEach((input) =&gt; {
 basisTotal += parseNum(input.value);
 });
 }

 if (basisTotalEl) {
 basisTotalEl.textContent = basisTotal.toFixed(2);
 }

 rows.forEach((row) =&gt; {
 const pct = parseNum(row.getAttribute("data-row-pct"));
 const weight = (pct / 100) * basisTotal;
 totalWeight += weight;
 const cell = row.querySelector("[data-weight-cell]");
 if (cell) cell.textContent = weight.toFixed(2);
 });

 if (totalWeightEl) {
 totalWeightEl.textContent = totalWeight.toFixed(2);
 }
 };

 if (basisMode === "multi") {
 if (basisTotalInput) {
 basisTotalInput.addEventListener("input", update);
 }
 } else {
 basisInputs.forEach((input) =&gt; input.addEventListener("input", update));
 }
 update();
 })();
 &lt;/script&gt;

 &lt;style&gt;
 .recipe-formula-widget .basis-inputs {
 margin: 0 0 0.75rem;
 display: grid;
 gap: 0.375rem;
 max-width: 28rem;
 }

 .recipe-formula-widget .basis-inputs label {
 display: inline-flex;
 align-items: center;
 gap: 0.75rem;
 color: var(--color-link);
 font-weight: 600;
 justify-self: start;
 }

 .recipe-formula-widget .basis-input-field {
 display: inline-flex;
 align-items: center;
 gap: 0.25rem;
 white-space: nowrap;
 }

 .recipe-formula-widget .basis-inputs input {
 width: 7rem;
 margin: 0;
 }

 .recipe-formula-widget .basis-input-unit {
 color: #6b7280;
 font-size: 0.875em;
 }

 .recipe-formula-widget table.bakers-percent-table tbody tr[data-is-basis="true"] td {
 font-weight: 600;
 color: var(--color-link);
 }
 &lt;/style&gt;
&lt;h2 id="process"&gt;
 Process
 
 &lt;a class="anchor" href="#process"&gt;#&lt;/a&gt;
 
&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Add water to bowl.&lt;/li&gt;
&lt;li&gt;Add dry.&lt;/li&gt;
&lt;li&gt;Mix for 2 min.&lt;/li&gt;
&lt;li&gt;Add oil.&lt;/li&gt;
&lt;li&gt;Mix until smooth, 10 to 15 min, no more than.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="notes"&gt;
 Notes
 
 &lt;a class="anchor" href="#notes"&gt;#&lt;/a&gt;
 
&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;16 in. dough ball&lt;/th&gt;
 &lt;th style="text-align: right"&gt;Amount&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Thin&lt;/td&gt;
 &lt;td style="text-align: right"&gt;14 oz&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Regular&lt;/td&gt;
 &lt;td style="text-align: right"&gt;25 oz&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Thick&lt;/td&gt;
 &lt;td style="text-align: right"&gt;32 oz&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Topping&lt;/th&gt;
 &lt;th style="text-align: right"&gt;Amount&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Sauce&lt;/td&gt;
 &lt;td style="text-align: right"&gt;6.25 oz&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Cheese, regular&lt;/td&gt;
 &lt;td style="text-align: right"&gt;12 oz&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Cheese, extra&lt;/td&gt;
 &lt;td style="text-align: right"&gt;18 oz&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;</description></item></channel></rss>