{
  "version": 3,
  "sources": ["/cdn/shop/t/2/assets/gllf-sim-season.js?nc=1792676926"],
  "sourcesContent": ["/* gllf-sim-season v756 \u00B7 heart scenes in the characters\u2019 own voices, with a narrator */\n/* Lavender Farm Simulator \u2014 v650 \u00B7 The Season update.\n   Harvest lots graded by the weather and the cut \u00B7 Saturday Bloom Hour \u00B7 share cards and the season postcard \u00B7\n   Partners Harvest \u00B7 the Herbarium \u00B7 Weekly Wants and heart scenes \u00B7 a weekly story chapter \u00B7 the Roadside Stand and\n   the Lavender Gazette \u00B7 Gold Seedlings and the Master Distiller challenge \u00B7 the Craft bench \u00B7 season setbacks \u00B7\n   your own cultivar \u00B7 family crest and heritage plants \u00B7 your Lavender Year \u00B7 the Lavender Calendar \u00B7 streamer mode.\n   Everything here is added to the game; nothing is removed. Saves ride along in the farm's own save (state.g650).\n   Trades, partner stills, Gold Seedlings and sachets are checked by the farm server. */\n(function () {\n  'use strict';\n  if (window.GLLFSeason650) return;\n  var SOC = 'https://gllf-farm-social-l54lvix44a-uc.a.run.app';\n  var GAME_URL = 'https://greatlakeslavenderfarm.com/pages/lavender-farm-simulator';\n  var FARM = { lat: 43.121, lon: -85.56 };\n  var BASE = String(window.GLLF_ASSET_BASE || '/cdn/shop/t/2/assets/').split('?')[0];\n\n  /* ---------------- small helpers ---------------- */\n  function root() { return document.getElementById('lfg-simulator-root'); }\n  function game() { var r = root(); return r && r._lfg; }\n  function st() { try { var g = game(); return g && g.state(); } catch (e) { return null; } }\n  function save() { try { game().save(); } catch (e) {} }\n  function redraw() { try { game().render(); } catch (e) {} }\n  function say(m) { try { game().say(m); } catch (e) {} }\n  function xp(n) { try { game().addXp(n); } catch (e) {} }\n  function hit(ev, arg) { try { window.GLLFTel && GLLFTel.hit && GLLFTel.hit(ev, arg); } catch (e) {} }\n  function esc(t) { return String(t == null ? '' : t).replace(/[&<>\"']/g, function (c) { return { '&': '&amp;', '<': '&lt;', '>': '&gt;', '\"': '&quot;', \"'\": '&#39;' }[c]; }); }\n  function el(tag, cls, html) { var e = document.createElement(tag); if (cls) e.className = cls; if (html != null) e.innerHTML = html; return e; }\n  function art(id) { try { return window.GLLFArt && GLLFArt.url ? GLLFArt.url(id) : ''; } catch (e) { return ''; } }\n  function fmt(n) { return Math.round(+n || 0).toLocaleString('en-US'); }\n  function lsGet(k) { try { return localStorage.getItem(k); } catch (e) { return null; } }\n  function lsSet(k, v) { try { localStorage.setItem(k, v); } catch (e) {} }\n  function pick(a, r) { return a[Math.floor(r() * a.length) % a.length]; }\n  function seeded(str) { var h = 1779033703 ^ String(str).length; for (var i = 0; i < String(str).length; i++) { h = Math.imul(h ^ String(str).charCodeAt(i), 3432918353); h = h << 13 | h >>> 19; }\n    return function () { h = Math.imul(h ^ h >>> 16, 2246822507); h = Math.imul(h ^ h >>> 13, 3266489909); h ^= h >>> 16; return (h >>> 0) / 4294967296; }; }\n  function hex(n) { var a = new Uint8Array(n); try { crypto.getRandomValues(a); } catch (e) { for (var i = 0; i < n; i++) a[i] = Math.floor(Math.random() * 256); } return Array.prototype.map.call(a, function (x) { return ('0' + x.toString(16)).slice(-2); }).join(''); }\n  function streamer() { return document.documentElement.classList.contains('g65-stream'); }\n  function farmName() { var s = st(); return streamer() ? 'A lavender farm' : String((s && s.farm) || 'My Lavender Farm').slice(0, 40); }\n\n  /* Detroit time (the real farm's clock) */\n  function detroit(d) {\n    d = d || new Date(); var o = {};\n    try { new Intl.DateTimeFormat('en-US', { timeZone: 'America/Detroit', weekday: 'short', year: 'numeric', month: '2-digit', day: '2-digit', hour: '2-digit', minute: '2-digit', hour12: false })\n      .formatToParts(d).forEach(function (p) { o[p.type] = p.value; }); } catch (e) { o = { weekday: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'][d.getDay()], year: d.getFullYear(), month: d.getMonth() + 1, day: d.getDate(), hour: d.getHours(), minute: d.getMinutes() }; }\n    var h = +o.hour % 24;\n    return { wd: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'].indexOf(o.weekday), y: +o.year, m: +o.month, d: +o.day, h: h, min: +o.minute };\n  }\n  function dayId() { var t = detroit(); return t.y + '-' + ('0' + t.m).slice(-2) + '-' + ('0' + t.d).slice(-2); }\n  function weekId() { var t = detroit(), dt = new Date(Date.UTC(t.y, t.m - 1, t.d)); dt.setUTCDate(dt.getUTCDate() - ((t.wd + 6) % 7)); return dt.toISOString().slice(0, 10); }\n  function absWeek(s) { s = s || st() || {}; return ((+s.year || 1) * 4 + (+s.season || 0)) * 13 + (+s.week || 1); }\n\n  /* the season's save, inside the farm's own save */\n  var KEEP = 'g650keep';\n  function D() {\n    var s = st(); if (!s) return null;\n    var d = s.g650; if (!d || typeof d !== 'object') d = s.g650 = {};\n    if (!d.v) {\n      d.v = 1; d.lots = []; d.goods = []; d.press = {}; d.hearts = {}; d.scenes = {}; d.lore = []; d.tl = []; d.gold = []; d.seeds = [];\n      d.n = 0; d.diff = 'gentle'; d.prot = {}; d.crest = null; d.mothers = []; d.cv = []; d.pass = {}; d.yr = {}; d.wk = {}; d.day = {}; d.ch = { n: 0, w: 0 }; d.listed = {};\n      /* the crest, heritage plants and named cultivars carry on even if the farm is passed on and started fresh */\n      try { var k = JSON.parse(lsGet(KEEP) || 'null'); if (k) { d.crest = k.crest || null; d.mothers = k.mothers || []; d.cv = k.cv || []; } } catch (e) {}\n    }\n    ['lots', 'goods', 'lore', 'tl', 'gold', 'seeds', 'mothers', 'cv'].forEach(function (k) { if (!Array.isArray(d[k])) d[k] = []; });\n    ['press', 'hearts', 'scenes', 'prot', 'pass', 'yr', 'wk', 'day', 'listed'].forEach(function (k) { if (!d[k] || typeof d[k] !== 'object') d[k] = {}; });\n    if (!d.ch || typeof d.ch !== 'object') d.ch = { n: 0, w: 0 };\n    return d;\n  }\n  function keepHeritage(d) { var g = 1; try { g = +(window.GLLFPrestige && GLLFPrestige.info && GLLFPrestige.info().gen) || 1; } catch (e) {} lsSet(KEEP, JSON.stringify({ crest: d.crest, mothers: d.mothers, cv: d.cv, gen: g })); }\n  function ids(d) { if (!d.pid || !/^[a-f0-9]{16}$/.test(d.pid)) { d.pid = hex(8); d.psec = hex(12); save(); } return { pid: d.pid, psec: d.psec }; }\n\n  /* the game's own cultivar list, and planting into the first free plot */\n  function cultivars() { try { var g = game(), dd = typeof g.data === 'function' ? g.data() : g.data; return (dd && dd.cultivars) || []; } catch (e) { return []; } }\n  function cvFind(name) { var n = String(name || '').toLowerCase().replace(/\u2019/g, \"'\"), L = cultivars(), c = null;\n    L.forEach(function (x) { var xn = String(x.name || '').toLowerCase().replace(/\u2019/g, \"'\"); if (!c && xn === n) c = x; });\n    if (!c) L.forEach(function (x) { var xn = String(x.name || '').toLowerCase().replace(/\u2019/g, \"'\"); if (!c && (xn.indexOf(n) === 0 || n.indexOf(xn) === 0)) c = x; });\n    return c; }\n  function freePlot() { var s = st(); if (!s || !Array.isArray(s.plants)) return -1; for (var i = 0; i < s.plants.length; i++) { if (s.plants[i]) continue; var el = document.querySelector('#lfg-field .lfg-plot[data-plot=\"' + i + '\"]'); if (el && !el.classList.contains('locked')) return i; } return -1; }\n  function plantIn(cv, name, why) {\n    var s = st(), i = freePlot(); if (!s || !cv) return -1; if (i < 0) { toast('<b>No free plot</b><span>Clear or open a plot in your Lavender Field, then try again.</span>', 6000); return -1; }\n    s.plants[i] = { id: cv.id, name: String(name || cv.name).slice(0, 90), stage: 1, age: 0, moist: 65, health: 85, color: cv.color || '#7a52b8', pollinator: false };\n    try { s.records.planted = (+s.records.planted || 0) + 1; } catch (e) {} save(); redraw(); ding(880);\n    toast('<b>\uD83C\uDF31 ' + esc(name || cv.name) + ' is in plot ' + (i + 1) + '</b><span>' + esc(why || 'A strong young start, watered in.') + '</span>', 6000);\n    return i;\n  }\n\n  /* coins through the game's ledger when it has one */\n  function coins(n, label, id) {\n    var s = st(), g = game(); if (!s || !n) return;\n    var ok = false;\n    try { var eco = root()._lfgEconomy; if (eco && eco.post) { var o = eco.post({ id: 'g650-' + (id || hex(6)), amount: Math.abs(n), kind: n > 0 ? 'income' : 'expense', label: label, category: n > 0 ? 'gifts' : 'supplies', source: 'farm' }); ok = !!(o && (o.ok || o.duplicate)); } } catch (e) {}\n    if (!ok) s.coins = Math.max(0, (+s.coins || 0) + n);\n    try { g.save(); } catch (e) {}\n  }\n\n  /* counters for the day, the week and the year */\n  function bump(k, n) {\n    var d = D(); if (!d) return; n = n || 1;\n    var w = weekId(), dy = dayId(), y = String(detroit().y);\n    if (d.wk.id !== w) d.wk = { id: w, c: {} };\n    if (d.day.id !== dy) d.day = { id: dy, c: {} };\n    if (d.yr.y !== y) d.yr = { y: y, c: {} };\n    [d.wk, d.day, d.yr].forEach(function (b) { b.c = b.c || {}; b.c[k] = (+b.c[k] || 0) + n; });\n    passPts(k, n);\n  }\n  function wkc(k) { var d = D(); return d && d.wk.id === weekId() && d.wk.c ? +d.wk.c[k] || 0 : 0; }\n  function dyc(k) { var d = D(); return d && d.day.id === dayId() && d.day.c ? +d.day.c[k] || 0 : 0; }\n  function yrc(k) { var d = D(); return d && d.yr.y === String(detroit().y) && d.yr.c ? +d.yr.c[k] || 0 : 0; }\n\n  /* farm server */\n  function api(route, body) {\n    return fetch(SOC + '/v1/' + route, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(body || {}) })\n      .then(function (r) { return r.json().catch(function () { return {}; }).then(function (j) { return [r.status, j]; }); }, function () { return [0, { error: 'Couldn\u2019t reach the farm. Check your connection and try again.' }]; });\n  }\n  function apiMe(route, body) { var d = D(); if (!d) return Promise.resolve([0, { error: 'The farm is still loading.' }]); var me = ids(d); return api(route, Object.assign({ pid: me.pid, psec: me.psec }, body || {})); }\n\n  /* a soft chime (no sound files) */\n  var AC = null;\n  function ding(f, v) {\n    try { if (lsGet('gllf.sfx') === 'off') return; AC = AC || new (window.AudioContext || window.webkitAudioContext)(); var o = AC.createOscillator(), g = AC.createGain(), t = AC.currentTime;\n      o.type = 'sine'; o.frequency.value = f || 880; g.gain.setValueAtTime(0.0001, t); g.gain.exponentialRampToValueAtTime(v || 0.18, t + 0.01); g.gain.exponentialRampToValueAtTime(0.0001, t + 0.9);\n      o.connect(g); g.connect(AC.destination); o.start(t); o.stop(t + 1); } catch (e) {}\n  }\n\n  /* toasts (one at a time, above everything, never on top of another) */\n  var toastEl = null, toastQ = [];\n  function toast(html, ms, onTap) {\n    toastQ.push([html, ms || 6000, onTap]); if (!toastEl) nextToast();\n  }\n  function nextToast() {\n    var t = toastQ.shift(); if (!t) { toastEl = null; return; }\n    toastEl = el('div', 'g65-toast', t[0]); toastEl.setAttribute('role', 'status');\n    var x = el('button', 'g65-toast__x', '\u2715'); x.type = 'button'; x.setAttribute('aria-label', 'Close'); toastEl.appendChild(x);\n    var gone = false, done = function () { if (gone) return; gone = true; if (toastEl && toastEl.parentNode) toastEl.parentNode.removeChild(toastEl); setTimeout(nextToast, 250); };\n    toastEl.addEventListener('click', function (e) { if (e.target.closest('.g65-toast__x')) return done(); var b = e.target.closest('[data-t]'); if (b && t[2]) { t[2](b.getAttribute('data-t')); done(); } });\n    document.body.appendChild(toastEl); setTimeout(done, t[1]);\n  }\n\n  /* sheets (pop-up panels) */\n  var sheet = null;\n  function closeSheet() { if (!sheet) return; var s = sheet; sheet = null; document.removeEventListener('keydown', escKey, true); if (s.el.parentNode) s.el.parentNode.removeChild(s.el); try { s.onClose && s.onClose(); } catch (e) {} try { s.back && s.back.focus && s.back.focus(); } catch (e) {} }\n  function escKey(e) { if (e.key === 'Escape') { e.stopPropagation(); closeSheet(); } }\n  function openSheet(title, build, opts) {\n    closeSheet(); opts = opts || {};\n    var w = el('div', 'g65-sheet' + (opts.wide ? ' g65-sheet--wide' : '')); w.setAttribute('role', 'dialog'); w.setAttribute('aria-modal', 'true'); w.setAttribute('aria-label', title);\n    var c = el('div', 'g65-card'), h = el('div', 'g65-card__head', '<h2>' + esc(title) + '</h2>'), x = el('button', 'g65-x', '\u2715'); x.type = 'button'; x.setAttribute('aria-label', 'Close');\n    h.appendChild(x); c.appendChild(h); var body = el('div', 'g65-card__body'); c.appendChild(body); w.appendChild(c);\n    w.addEventListener('click', function (e) { if (e.target === w || e.target.closest('.g65-x')) closeSheet(); });\n    /* never put our close button on top of another panel's close button */\n    try { var tr = document.elementFromPoint(window.innerWidth - 34, 34); if (tr && tr.closest && tr.closest('button, [role=\"button\"]')) w.classList.add('g65-sheet--low'); } catch (e) {}\n    document.body.appendChild(w); sheet = { el: w, body: body, onClose: opts.onClose, back: document.activeElement };\n    document.addEventListener('keydown', escKey, true);\n    try { build(body); } catch (e) { body.innerHTML = '<p>Something went wrong opening this. Try again in a moment.</p>'; }\n    try { x.focus({ preventScroll: true }); } catch (e) {}\n    return body;\n  }\n\n  /* ================= 1. Harvest lots: graded by the weather, the time of the cut and the bloom stage ================= */\n  var GRADES = {\n    select: { name: 'Distiller\u2019s Select', short: 'Select', ic: '\u2B50', col: '#c99a1a', coin: 40, xp: 10, price: 400 },\n    premium: { name: 'Premium', short: 'Premium', ic: '\uD83D\uDC9C', col: '#7446b0', coin: 20, xp: 6, price: 220 },\n    market: { name: 'Market Grade', short: 'Market', ic: '\uD83E\uDEBB', col: '#9a7cc6', coin: 8, xp: 3, price: 120 },\n    field: { name: 'Field Run', short: 'Field run', ic: '\uD83C\uDF3F', col: '#8a8f7a', coin: 3, xp: 2, price: 60 }\n  };\n  function family(cv) {\n    var t = String(cv || '').toLowerCase();\n    if (/stoechas|spanish|anouk|bandera|otto|kew red|ballerina/.test(t)) return 'spanish';\n    if (/latifolia|spike/.test(t)) return 'spike';\n    if (/intermedia|grosso|provence|phenomenal|super|giant|seal|edelweiss|abrial|impress|dutch|fat spike|riverina|gros|lavandin|hidcote giant|sussex|white spike/.test(t)) return 'lavandin';\n    return 'english';\n  }\n  var FAM = { english: 'English lavender', lavandin: 'Lavandin', spike: 'Spike lavender', spanish: 'Spanish lavender' };\n  var FAMCOL = { english: '#5b2f91', lavandin: '#6c5bd0', spike: '#7a8a50', spanish: '#9b3f8a' };\n  function wxNow() {\n    var s = st(), f = s && s.time && Array.isArray(s.time.forecast) && s.time.forecast[0];\n    if (!f) return { c: 'Fair', hi: 72, sun: 2 };\n    var c = String(f.condition || 'Fair'), sun = /sun|clear/i.test(c) ? 3 : /partly|fair/i.test(c) ? 2 : /rain|storm|shower|drizzle|thunder|snow/i.test(c) ? 0 : 1;\n    return { c: c, hi: +f.high || 70, sun: sun, date: f.date || '' };\n  }\n  function gameMinute() { var s = st(); var m = s && s.time && +s.time.minute; return isFinite(m) ? m : 600; }\n  function clock(m) { var h = Math.floor(m / 60) % 24, mm = ('0' + (m % 60)).slice(-2); return (h % 12 || 12) + ':' + mm + (h < 12 ? ' AM' : ' PM'); }\n  function grade(stage, wx, minute, health, cv, wood) {\n    var sc = stage === 4 ? 40 : stage === 5 ? 28 : 22;\n    sc += [0, 10, 18, 25][wx.sun] || 10;\n    sc += wx.hi >= 68 && wx.hi <= 86 ? 10 : wx.hi > 90 ? 3 : 6;\n    sc += minute >= 300 && minute < 660 ? 20 : minute < 900 && minute >= 660 ? 12 : 6;\n    sc += Math.round((Math.max(0, Math.min(100, +health || 70)) / 100) * 10);\n    if (bloomHourLive()) sc += 8;\n    sc -= Math.round(Math.max(0, Math.min(100, +wood || 0)) / 100 * 15);\n    var d = D(); if (d && d.mothers.indexOf(String(cv)) >= 0) sc += 5;\n    sc = Math.max(0, Math.min(100, sc));\n    var g = sc >= 85 && stage === 4 ? 'select' : sc >= 70 ? 'premium' : sc >= 50 ? 'market' : 'field';\n    return { score: sc, g: g };\n  }\n  function oilOf(fam, sc, stage) {\n    var b = { english: [36, 38, 0.6], lavandin: [32, 28, 7], spike: [40, 3, 15], spanish: [5, 1, 18] }[fam] || [34, 32, 2];\n    var k = (sc - 60) / 40, lin = b[0] + 4 * k + (stage === 4 ? 2 : 0), la = b[1] + 6 * k + (stage === 4 ? 3 : stage === 5 ? -2 : 0), cam = Math.max(0.2, b[2] - 2 * k);\n    var r = function (x) { return Math.round(Math.max(0.2, x) * 10) / 10; };\n    var note = fam === 'english' ? 'sweet, floral and soft' : fam === 'lavandin' ? 'bright and herbal, with a fresh camphor lift' : fam === 'spike' ? 'sharp, clean and camphor-forward' : 'resinous and piney';\n    return { lin: r(lin), la: r(la), cam: r(cam), note: note };\n  }\n  var snap = null, lastHarv = null;\n  function plotTags() { var t = {}; document.querySelectorAll('#lfg-field .lfg-plot[data-plot]').forEach(function (p) { var g = p.querySelector('.tag'); t[p.getAttribute('data-plot')] = g ? String(g.textContent || '').trim().toUpperCase() : ''; }); return t; }\n  function watchHarvest() {\n    var s = st(); if (!s || !s.records || !Array.isArray(s.plants)) return;\n    var h = +s.records.harvested || 0, cur = s.plants.map(function (p) { return p ? { id: p.id, name: p.name, stage: +p.stage || 0, health: +p.health || 70, wood: +p.woodiness || 0 } : null; }), tags = plotTags();\n    trackRecords(s);\n    if (lastHarv === null || !snap) { lastHarv = h; snap = { p: cur, t: tags }; return; }\n    if (h > lastHarv) {\n      var cut = [];\n      snap.p.forEach(function (p, i) { var n = cur[i]; if (p && p.stage >= 3 && (!n || n.stage < p.stage)) cut.push({ i: i, p: p, tag: snap.t[i] || '' }); });\n      if (!cut.length) { var best = null; snap.p.forEach(function (p, i) { if (p && (!best || p.stage > best.p.stage)) best = { i: i, p: p, tag: snap.t[i] || '' }; }); if (best) cut.push(best); }\n      var by = {}; cut.forEach(function (c) { var k = c.p.name || c.p.id; (by[k] = by[k] || []).push(c); });\n      Object.keys(by).forEach(function (k) { makeLot(by[k]); });\n    }\n    lastHarv = h; snap = { p: cur, t: tags };\n  }\n  function makeLot(cuts) {\n    var d = D(); if (!d) return;\n    var p0 = cuts[0].p, tg = cuts.map(function (c) { return c.tag; }).join(' ');\n    var stg = /BLOOM/.test(tg) ? 4 : /READY/.test(tg) ? 5 : /BUD/.test(tg) ? 3 : Math.max(3, Math.min(5, cuts.reduce(function (m, c) { return Math.max(m, c.p.stage); }, 3)));\n    var wx = wxNow(), mn = gameMinute(), hp = cuts.reduce(function (a, c) { return a + c.p.health; }, 0) / cuts.length;\n    var wd = cuts.reduce(function (a, c) { return a + (+c.p.wood || 0); }, 0) / cuts.length;\n    var gr = grade(stg, wx, mn, hp, p0.name, wd), fam = family(p0.name + ' ' + p0.id), G = GRADES[gr.g];\n    d.n = (+d.n || 0) + 1;\n    var lot = { wood: Math.round(wd), id: 'L' + d.n + '-' + hex(2), n: d.n, cv: p0.name || 'Lavender', fam: fam, qty: cuts.length, g: gr.g, sc: gr.score, stage: stg,\n      wx: wx.c + ', ' + Math.round(wx.hi) + '\u00B0F', t: mn, gdate: wx.date, at: Date.now(), oil: oilOf(fam, gr.score, stg), bh: bloomHourLive() ? 1 : 0 };\n    d.lots.unshift(lot); if (d.lots.length > 60) d.lots.length = 60;\n    var bonus = G.coin * lot.qty * (lot.bh ? 2 : 1);\n    coins(bonus, 'Harvest lot ' + lot.n + ' \u00B7 ' + G.name, 'lot-' + lot.id); xp(G.xp);\n    bump('lots'); bump(gr.g); if (gr.g === 'select' || gr.g === 'premium') bump('premiumplus');\n    if (gr.g === 'select') press('cv:' + String(p0.id || p0.name), { t: lot.cv, kind: fam, from: 'A Distiller\u2019s Select lot' });\n    hit('lot', gr.g); save();\n    toast('<b>' + G.ic + ' Lot #' + lot.n + ' \u00B7 ' + esc(lot.cv) + '</b><span>' + esc(G.name) + ' \u00B7 cut at ' + clock(mn) + ' ' + (stg === 4 ? 'at half-open' : stg === 5 ? 'in full bloom' : 'in bud') + ' \u00B7 ' + esc(lot.wx) + '</span>' +\n      '<span>+' + fmt(bonus) + ' coins' + (lot.bh ? ' (Bloom Hour \u00D72)' : '') + '</span><span class=\"g65-toast__row\"><button type=\"button\" data-t=\"lot\">See the lot card</button><button type=\"button\" data-t=\"share\">Share</button></span>', 9000,\n      function (k) { if (k === 'lot') openLot(lot.id); else shareLot(lot); });\n  }\n  function lotHtml(l) {\n    var G = GRADES[l.g] || GRADES.market, bar = function (lbl, v, max, col) { return '<div class=\"g65-oil__row\"><span>' + lbl + '</span><i><b style=\"width:' + Math.min(100, v / max * 100) + '%;background:' + col + '\"></b></i><em>' + v + '%</em></div>'; };\n    return '<div class=\"g65-lot\" style=\"--g:' + G.col + '\"><div class=\"g65-lot__top\"><span class=\"g65-lot__g\">' + G.ic + ' ' + esc(G.name) + '</span><span>Lot #' + l.n + '</span></div>' +\n      '<h3>' + esc(l.cv) + ' <small>' + esc(FAM[l.fam] || '') + '</small></h3>' +\n      '<p class=\"g65-lot__meta\">Cut at ' + clock(l.t) + ', ' + (l.stage === 4 ? 'buds half-open' : l.stage === 5 ? 'in full bloom' : 'still in bud') + ' \u00B7 ' + esc(l.wx) + ' \u00B7 ' + l.qty + ' plot' + (l.qty > 1 ? 's' : '') + (l.bh ? ' \u00B7 cut during Bloom Hour' : '') + '</p>' +\n      '<div class=\"g65-oil\"><b>Oil profile</b>' + bar('Linalool', l.oil.lin, 50, '#7446b0') + bar('Linalyl acetate', l.oil.la, 50, '#b48ad8') + bar('Camphor', l.oil.cam, 20, '#7a8a50') + '<p>Aroma: ' + esc(l.oil.note) + '.</p></div>' +\n      '<p class=\"g65-lot__why\">' + esc(lotWhy(l)) + '</p></div>';\n  }\n  function lotWhy(l) {\n    if (l.g === 'select') return 'Why it\u2019s Select: a morning cut at half-open buds on a good weather day keeps the most sweet esters in the oil.';\n    var tips = [];\n    if (l.stage !== 4) tips.push(l.stage === 5 ? 'cut a little earlier, when about half the buds are open' : 'wait until about half the buds are open for oil (buds are perfect for dried bundles)');\n    if (!(l.t >= 300 && l.t < 660)) tips.push('cut in the morning, before the heat of the day');\n    if (/rain|storm|shower|drizzle/i.test(l.wx)) tips.push('wait for a dry day');\n    if ((+l.wood || 0) > 40) tips.push('prune your older, woody plants or renew the row from a heritage mother plant');\n    return tips.length ? 'For a better grade next time: ' + tips.join('; ') + '.' : 'A fine lot. Healthy, well-watered plants grade higher.';\n  }\n  function openLot(id) {\n    var d = D(); if (!d) return; var l = d.lots.filter(function (x) { return x.id === id; })[0]; if (!l) return;\n    openSheet('Harvest lot #' + l.n, function (b) {\n      b.innerHTML = lotHtml(l) + '<div class=\"g65-actions\"><button type=\"button\" class=\"g65-btn\" data-a=\"share\">Share this lot card</button><button type=\"button\" class=\"g65-btn g65-btn--soft\" data-a=\"all\">All harvest lots</button></div>';\n      b.addEventListener('click', function (e) { var a = e.target.closest('[data-a]'); if (!a) return; if (a.getAttribute('data-a') === 'share') shareLot(l); else hub('lots'); });\n    });\n  }\n\n  /* ================= 2. Saturday Bloom Hour (10 to 11 AM at the farm, Detroit time) ================= */\n  var SEEDS = [\n    { id: 'melissa-lilac', name: 'Melissa Lilac', note: 'a pale lilac English lavender with a sweet, almost fruity scent' },\n    { id: 'royal-velvet', name: 'Royal Velvet', note: 'deep violet spikes that hold their color when dried' },\n    { id: 'folgate', name: 'Folgate', note: 'an early blue-violet English lavender loved by cooks' },\n    { id: 'sharon-roberts', name: 'Sharon Roberts', note: 'a reblooming English lavender that flowers twice in a good year' },\n    { id: 'bettys-blue', name: 'Betty\u2019s Blue', note: 'dense, dark blue heads that are a favorite for bundles' },\n    { id: 'violet-intrigue', name: 'Violet Intrigue', note: 'long, dark spikes and a strong, sweet fragrance' },\n    { id: 'tuckers-early', name: 'Tucker\u2019s Early', note: 'one of the first to bloom each summer' },\n    { id: 'thumbelina-leigh', name: 'Thumbelina Leigh', note: 'a tiny, tidy plant that blooms again and again' }\n  ];\n  function bloomHourLive() { var t = detroit(); return t.wd === 6 && t.h === 10; }\n  function bloomWeekend() { var t = detroit(); return (t.wd === 6 && t.h >= 10) || t.wd === 0; }\n  function seedOfWeek() { var w = weekId(), n = 0; for (var i = 0; i < w.length; i++) n = (n * 31 + w.charCodeAt(i)) >>> 0; return SEEDS[n % SEEDS.length]; }\n  function untilBloom() {\n    var t = detroit(), days = (6 - t.wd + 7) % 7, mins = days * 1440 + (10 * 60) - (t.h * 60 + t.min);\n    if (mins < 0) mins += 7 * 1440; var dd = Math.floor(mins / 1440), hh = Math.floor((mins % 1440) / 60), mm = mins % 60;\n    return dd ? dd + ' day' + (dd > 1 ? 's' : '') + ' ' + hh + ' hr' : hh ? hh + ' hr ' + mm + ' min' : mm + ' min';\n  }\n  var farmWx = null;\n  var WMO = { 0: 'clear and sunny', 1: 'mostly sunny', 2: 'partly cloudy', 3: 'cloudy', 45: 'foggy', 48: 'foggy', 51: 'drizzly', 53: 'drizzly', 55: 'drizzly', 61: 'rainy', 63: 'rainy', 65: 'pouring', 71: 'snowy', 73: 'snowy', 75: 'snowy', 80: 'showery', 81: 'showery', 82: 'stormy', 95: 'stormy', 96: 'stormy', 99: 'stormy' };\n  function realFarmWeather() {\n    if (farmWx && Date.now() - farmWx.at < 30 * 60000) return Promise.resolve(farmWx);\n    try { var c = JSON.parse(lsGet('g650wx') || 'null'); if (c && Date.now() - c.at < 30 * 60000) { farmWx = c; return Promise.resolve(c); } } catch (e) {}\n    return fetch('https://api.open-meteo.com/v1/forecast?latitude=' + FARM.lat + '&longitude=' + FARM.lon + '&current=temperature_2m,weather_code&temperature_unit=fahrenheit&timezone=America%2FDetroit')\n      .then(function (r) { return r.ok ? r.json() : null; }).then(function (j) {\n        var cur = j && j.current; if (!cur) return null;\n        farmWx = { at: Date.now(), t: Math.round(+cur.temperature_2m), code: +cur.weather_code, txt: WMO[+cur.weather_code] || 'mild' }; lsSet('g650wx', JSON.stringify(farmWx)); return farmWx;\n      }).catch(function () { return null; });\n  }\n  function cuttingSeason() { var t = detroit(), md = t.m * 100 + t.d; return md >= 615 && md <= 815; }\n  function bloomCard(box) {\n    var d = D(); if (!d) return; var sd = seedOfWeek(), got = d.bh && d.bh.w === weekId(), live = bloomHourLive(), wk = bloomWeekend();\n    var h = '<div class=\"g65-bh' + (live ? ' is-live' : '') + '\"><div class=\"g65-bh__ic\">\uD83C\uDF38</div><div><b>' + (live ? 'Bloom Hour is on now!' : 'Saturday Bloom Hour') + '</b>' +\n      '<p>' + (live ? 'Until 11 AM at the farm (Detroit time): harvest lots get a better grade and double coins.' : 'Every Saturday, 10 to 11 AM at the farm (Detroit time). Starts in ' + untilBloom() + '.') + '</p>' +\n      '<p class=\"g65-bh__wx\" data-bhwx>At the farm right now: checking the weather\u2026</p>' +\n      (cuttingSeason() ? '<p>It\u2019s cutting season at the real farm. Saturday harvests line up with our real cutting days.</p>' : '') +\n      '<p>This week\u2019s limited seed: <b>' + esc(sd.name) + '</b>, ' + esc(sd.note) + '.</p>' +\n      (got ? '<p class=\"g65-ok\">\u2714 You picked up this week\u2019s seed.</p>' + (d.bh.planted ? '' : '<button type=\"button\" class=\"g65-btn g65-btn--soft\" data-bh=\"plant\">Plant it in your field</button>') : wk ? '<button type=\"button\" class=\"g65-btn\" data-bh=\"seed\">Pick up the ' + esc(sd.name) + ' seed</button>' : '<p class=\"g65-muted\">The seed can be picked up from Saturday 10 AM through Sunday night.</p>') +\n      '<p class=\"g65-bh__news\" data-bhnews></p></div></div>';\n    box.innerHTML = h;\n    realFarmWeather().then(function (w) { var p = box.querySelector('[data-bhwx]'); if (p) p.textContent = w ? 'At the farm right now: ' + w.t + '\u00B0F, ' + w.txt + '.' : 'At the farm: the weather report is resting. Try again later.'; });\n    whatsNewTop().then(function (n) { var p = box.querySelector('[data-bhnews]'); if (p && n) p.innerHTML = 'This week\u2019s update: <b>' + esc(n.title) + '</b>. ' + esc(String(n.text || '').slice(0, 160)) + (String(n.text || '').length > 160 ? '\u2026' : ''); });\n    var b = box.querySelector('[data-bh=\"seed\"]'); if (b) b.addEventListener('click', function () { claimSeed(); bloomCard(box); });\n    var b2 = box.querySelector('[data-bh=\"plant\"]'); if (b2) b2.addEventListener('click', function () { var c = cvFind(sd.name); if (!c) { b2.textContent = 'This variety isn\\u2019t in the field catalog yet'; return; } if (plantIn(c, c.name, 'Your Bloom Hour seed, started in a pot and planted out.') >= 0) { d.bh.planted = 1; save(); bloomCard(box); } });\n  }\n  function claimSeed() {\n    var d = D(); if (!d || !bloomWeekend() || (d.bh && d.bh.w === weekId())) return;\n    var sd = seedOfWeek(); d.bh = { w: weekId(), id: sd.id };\n    press('bh:' + sd.id, { t: sd.name, kind: 'bloom', from: 'Saturday Bloom Hour' });\n    realFarmWeather().then(function (w) {\n      var extra = !w ? 25 : w.code <= 1 ? 60 : w.code <= 3 ? 40 : 25, total = 120 + extra;\n      coins(total, 'Bloom Hour seed \u00B7 ' + sd.name, 'bh-' + weekId()); xp(15); bump('bloomhour');\n      var r = seeded(d.pid + weekId()); if (r() < 0.25) newSeedling('bloom', sd.name);\n      hit('bloom_hour', bloomHourLive() ? 'live' : 'seed'); save();\n      toast('<b>\uD83C\uDF38 ' + esc(sd.name) + ' seed</b><span>Pressed into your Herbarium. +' + total + ' coins' + (w ? ' (the farm is ' + esc(w.txt) + ' today)' : '') + '.</span>', 7000);\n    });\n  }\n  var wnCache = null;\n  function whatsNewTop() {\n    if (wnCache) return Promise.resolve(wnCache);\n    return fetch(BASE + 'gllf-sim-whats-new.json?d=' + dayId(), { credentials: 'same-origin' }).then(function (r) { return r.ok ? r.json() : null; }).then(function (j) { wnCache = Array.isArray(j) && j[0] || null; return wnCache; }).catch(function () { return null; });\n  }\n\n  /* ================= 4. Share cards (Bloom Card, lot card, season postcard, year card) ================= */\n  function canvas(w, h) { var c = document.createElement('canvas'); c.width = w; c.height = h; return c; }\n  function rr(x, cx, y, w, h, r) { x.beginPath(); x.moveTo(cx + r, y); x.arcTo(cx + w, y, cx + w, y + h, r); x.arcTo(cx + w, y + h, cx, y + h, r); x.arcTo(cx, y + h, cx, y, r); x.arcTo(cx, y, cx + w, y, r); x.closePath(); }\n  function frame(x, title, sub) {\n    var W = 1200, H = 630, g = x.createLinearGradient(0, 0, W, H); g.addColorStop(0, '#fbf6ee'); g.addColorStop(1, '#efe4f7'); x.fillStyle = g; x.fillRect(0, 0, W, H);\n    x.fillStyle = '#5a3c86'; x.fillRect(0, 0, W, 12); x.fillRect(0, H - 12, W, 12);\n    x.fillStyle = '#3b2160'; x.font = '800 54px Lato, system-ui, sans-serif'; x.fillText(title, 60, 100);\n    x.fillStyle = '#5b4a6e'; x.font = '600 28px Lato, system-ui, sans-serif'; if (sub) x.fillText(sub, 60, 146);\n    x.fillStyle = '#5a3c86'; x.font = '800 26px Lato, system-ui, sans-serif'; x.fillText('Play free: greatlakeslavenderfarm.com', 60, H - 40);\n    crestDraw(x, W - 150, 40, 100);\n  }\n  function crestDraw(x, cx, y, s) {\n    var d = D(), c = d && d.crest; if (!c) return;\n    x.save(); x.translate(cx, y);\n    x.fillStyle = c.col || '#5a3c86'; x.beginPath();\n    if (c.shape === 'round') x.arc(s / 2, s / 2, s / 2, 0, Math.PI * 2); else if (c.shape === 'banner') { x.moveTo(0, 0); x.lineTo(s, 0); x.lineTo(s, s); x.lineTo(s / 2, s * 0.8); x.lineTo(0, s); }\n    else { x.moveTo(0, 0); x.lineTo(s, 0); x.lineTo(s, s * 0.55); x.quadraticCurveTo(s, s * 0.95, s / 2, s * 1.1); x.quadraticCurveTo(0, s * 0.95, 0, s * 0.55); }\n    x.closePath(); x.fill(); x.fillStyle = '#fff'; x.font = Math.round(s * 0.5) + 'px serif'; x.textAlign = 'center'; x.fillText(c.em || '\uD83E\uDEBB', s / 2, s * 0.68); x.restore();\n  }\n  function toBlob(c) { return new Promise(function (res) { try { c.toBlob(function (b) { res(b); }, 'image/png'); } catch (e) { res(null); } }); }\n  function shareCard(c, name, text, kind) {\n    var url = GAME_URL + '?ref=' + (kind || 'card');\n    toBlob(c).then(function (blob) {\n      var file = null; try { file = blob && new File([blob], name, { type: 'image/png' }); } catch (e) {}\n      if (file && navigator.canShare && navigator.canShare({ files: [file] })) {\n        navigator.share({ files: [file], title: 'Lavender Farm', text: text + ' ' + url }).then(function () { hit('share', kind); bump('share'); }, function () {});\n        return;\n      }\n      openSheet('Share your card', function (b) {\n        var src = blob ? URL.createObjectURL(blob) : c.toDataURL('image/png');\n        b.innerHTML = '<img class=\"g65-shareimg\" alt=\"Your card\" src=\"' + src + '\"><p>' + esc(text) + '</p><div class=\"g65-actions\">' +\n          '<a class=\"g65-btn\" download=\"' + esc(name) + '\" href=\"' + src + '\">Save the picture</a><button type=\"button\" class=\"g65-btn g65-btn--soft\" data-a=\"copy\">Copy the words and link</button></div>' +\n          '<p class=\"g65-muted\">Save the picture, then add it to a post with the words and link.</p>';\n        b.querySelector('[data-a=\"copy\"]').addEventListener('click', function (e) { try { navigator.clipboard.writeText(text + ' ' + url); e.target.textContent = 'Copied'; } catch (x) {} });\n        b.querySelector('a[download]').addEventListener('click', function () { hit('share', kind); bump('share'); });\n      });\n    });\n  }\n  function shareLot(l) {\n    var c = canvas(1200, 630), x = c.getContext('2d'), G = GRADES[l.g];\n    frame(x, G.name + ' \u00B7 Lot #' + l.n, l.cv + ' \u00B7 ' + (FAM[l.fam] || '') + ' \u00B7 ' + farmName());\n    x.fillStyle = '#3b2160'; x.font = '600 30px Lato, system-ui, sans-serif'; x.fillText('Cut at ' + clock(l.t) + ', ' + (l.stage === 4 ? 'half-open' : l.stage === 5 ? 'full bloom' : 'in bud') + ' \u00B7 ' + l.wx, 60, 210);\n    [['Linalool', l.oil.lin, 50, '#7446b0'], ['Linalyl acetate', l.oil.la, 50, '#b48ad8'], ['Camphor', l.oil.cam, 20, '#7a8a50']].forEach(function (r, i) {\n      var y = 270 + i * 80; x.fillStyle = '#3b2160'; x.font = '700 28px Lato, system-ui, sans-serif'; x.fillText(r[0], 60, y + 30);\n      x.fillStyle = '#e4d8f0'; rr(x, 330, y, 640, 40, 20); x.fill(); x.fillStyle = r[3]; rr(x, 330, y, Math.max(40, 640 * Math.min(1, r[1] / r[2])), 40, 20); x.fill();\n      x.fillStyle = '#3b2160'; x.fillText(r[1] + '%', 990, y + 30);\n    });\n    shareCard(c, 'lavender-lot-' + l.n + '.png', 'My ' + G.name + ' lavender lot from the Lavender Farm Simulator.', 'lot');\n  }\n  function shareBloom() {\n    var d = D(); if (!d) return; var c = canvas(1200, 630), x = c.getContext('2d'), s = st() || {};\n    var lots = d.lots.filter(function (l) { return Date.now() - l.at < 7 * 864e5; }).slice(0, 28).reverse();\n    var streak = 0; try { var dv = JSON.parse(lsGet('gllf-daily-v1') || 'null'); streak = +(dv && (dv.streak || dv.n)) || 0; } catch (e) {}\n    frame(x, 'My Bloom Card', farmName() + ' \u00B7 Year ' + (s.year || 1) + ', week ' + (s.week || 1));\n    var cols = 7; for (var i = 0; i < 28; i++) { var l = lots[i], cx = 60 + (i % cols) * 92, cy = 190 + Math.floor(i / cols) * 92; x.fillStyle = l ? GRADES[l.g].col : '#e6dcef'; rr(x, cx, cy, 78, 78, 14); x.fill(); }\n    x.fillStyle = '#3b2160'; x.font = '700 30px Lato, system-ui, sans-serif';\n    var y0 = 220; [lots.filter(function (l) { return l.g === 'select'; }).length + ' Distiller\u2019s Select', lots.length + ' harvest lots this week', streak ? streak + '-day visit streak' : '', d.cv[0] ? 'Bred here: \u2018' + d.cv[0].name + '\u2019' : '', d.title ? d.title : ''].filter(Boolean).forEach(function (t, i) { x.fillText(t, 740, y0 + i * 52); });\n    shareCard(c, 'my-bloom-card.png', 'My week on the lavender farm.', 'bloom');\n  }\n\n  /* ================= 4b. Season time-lapse postcard ================= */\n  var lastWeekKey = null;\n  function frameNow() { var s = st(); if (!s || !Array.isArray(s.plants)) return ''; return s.plants.map(function (p) { return p ? String(Math.max(1, Math.min(5, +p.stage || 1))) : '.'; }).join(''); }\n  function watchWeek() {\n    var s = st(); if (!s) return; var k = (s.year || 1) + '-' + (s.season || 0) + '-' + (s.week || 1);\n    if (lastWeekKey === null) { lastWeekKey = k; return; }\n    if (k === lastWeekKey) return;\n    var prevSeason = +String(lastWeekKey).split('-')[1]; lastWeekKey = k;\n    var d = D(); if (!d) return;\n    d.tl.push({ k: k, f: frameNow() }); if (d.tl.length > 40) d.tl.splice(0, d.tl.length - 40);\n    weekAdvanced(d, s);\n    if (prevSeason === 1 && (+s.season || 0) === 2 && d.tl.length >= 4) toast('<b>\uD83D\uDDBC\uFE0F Your season postcard is ready</b><span>Bare ground to full bloom, one picture.</span><span class=\"g65-toast__row\"><button type=\"button\" data-t=\"pc\">See it</button></span>', 9000, function () { postcard(); });\n    save();\n  }\n  function drawField(x, f, cx, cy, w) {\n    var n = Math.max(1, f.length), cols = Math.min(6, Math.ceil(Math.sqrt(n * 1.6))), cell = w / cols;\n    x.fillStyle = '#c9a77c'; rr(x, cx - 6, cy - 6, w + 12, Math.ceil(n / cols) * cell + 12, 14); x.fill();\n    for (var i = 0; i < n; i++) { var ch = f.charAt(i), px = cx + (i % cols) * cell + cell / 2, py = cy + Math.floor(i / cols) * cell + cell / 2;\n      if (ch === '.') { x.fillStyle = '#a5815a'; x.beginPath(); x.arc(px, py, cell * 0.12, 0, 7); x.fill(); continue; }\n      var stg = +ch; x.fillStyle = stg <= 2 ? '#7da35a' : '#5f8a45'; x.beginPath(); x.arc(px, py, cell * (0.18 + stg * 0.05), 0, 7); x.fill();\n      if (stg >= 3) { x.fillStyle = stg === 3 ? '#9d84c9' : stg === 4 ? '#7a52b8' : '#5b2f91'; for (var k = 0; k < stg + 1; k++) { var a = k / (stg + 1) * 6.28; x.beginPath(); x.arc(px + Math.cos(a) * cell * 0.22, py + Math.sin(a) * cell * 0.22, cell * 0.08, 0, 7); x.fill(); } } }\n  }\n  function framesPick(d) {\n    var tl = d.tl.slice(), score = function (f) { return f.f.split('').reduce(function (a, c) { return a + (c === '.' ? 0 : +c); }, 0); };\n    if (tl.length <= 6) return tl; var best = 0; tl.forEach(function (f, i) { if (score(f) >= score(tl[best])) best = i; });\n    var start = 0; for (var i = best; i >= 0; i--) if (score(tl[i]) <= score(tl[start])) start = i;\n    var out = []; for (var j = 0; j < 6; j++) out.push(tl[Math.round(start + (best - start) * j / 5)]); return out;\n  }\n  function postcard() {\n    var d = D(); if (!d || d.tl.length < 3) { toast('<b>Your postcard needs a few more weeks</b><span>Advance a few weeks and it fills in.</span>', 5000); return; }\n    var fr = framesPick(d), c = canvas(1200, 630), x = c.getContext('2d');\n    frame(x, 'From bare ground to full bloom', farmName() + ' \u00B7 my season on the farm');\n    fr.forEach(function (f, i) { drawField(x, f.f, 60 + i * 185, 200, 160); x.fillStyle = '#3b2160'; x.font = '700 22px Lato, system-ui, sans-serif'; var p = f.k.split('-'); x.fillText('Week ' + p[2], 70 + i * 185, 470); });\n    openSheet('Your season postcard', function (b) {\n      var live = canvas(600, 400); live.className = 'g65-tl'; b.appendChild(live); var lx = live.getContext('2d'), i = 0;\n      var tick = function () { if (!live.isConnected) return; lx.fillStyle = '#fbf6ee'; lx.fillRect(0, 0, 600, 400); drawField(lx, d.tl[i % d.tl.length].f, 150, 40, 300); lx.fillStyle = '#3b2160'; lx.font = '700 22px Lato, system-ui, sans-serif'; lx.fillText('Week ' + d.tl[i % d.tl.length].k.split('-')[2], 20, 380); i++; setTimeout(tick, 450); };\n      tick();\n      var a = el('div', 'g65-actions', '<button type=\"button\" class=\"g65-btn\" data-a=\"s\">Share the postcard</button>'); b.appendChild(a);\n      a.querySelector('[data-a=\"s\"]').addEventListener('click', function () { shareCard(c, 'my-lavender-season.png', 'My lavender season, from bare ground to full bloom.', 'postcard'); });\n    });\n  }\n\n  /* ================= 7. Weekly Wants and heart scenes ================= */\n  var PEOPLE = {\n    sierra: { name: 'Sierra', art: 'staff-greenhouse-1', ic: '\uD83D\uDC69\u200D\uD83C\uDF3E', voice: { pitch: 1.15, rate: 0.95 } },\n    andrew: { name: 'Andrew', art: 'staff-greenhouse-2', ic: '\uD83E\uDDD1\u200D\uD83C\uDF3E', voice: { pitch: 0.95, rate: 0.95 } },\n    max: { name: 'Max', art: 'staff-greenhouse-3', ic: '\uD83D\uDCE6', voice: { pitch: 1.0, rate: 1.0 } },\n    huckleberry: { name: 'Huckleberry', art: 'huckleberry-portrait-three-quarter', ic: '\uD83D\uDC3E', voice: { pitch: 1.0, rate: 0.9 }, dog: true },\n    finnegan: { name: 'Finnegan', art: 'finnegan-pose-01', ic: '\uD83D\uDC15', voice: { pitch: 1.0, rate: 0.9 }, dog: true }\n  };\n  var WANTS = {\n    water: { t: 'Water {n} plant{s}', n: [10, 15, 20], k: 'water' },\n    plant: { t: 'Plant {n} lavender{s}', n: [2, 3, 4], k: 'plant' },\n    harvest: { t: 'Make {n} harvest lot{s}', n: [2, 3, 4], k: 'lots' },\n    select: { t: 'Make {n} Distiller\u2019s Select lot{s}', n: [1], k: 'select' },\n    premium: { t: 'Make {n} lot{s} graded Premium or better', n: [1, 2], k: 'premiumplus' },\n    sell: { t: 'Make {n} sale{s}', n: [2, 3], k: 'sell' },\n    bundle: { t: 'Tie {n} bundle{s} at the Craft bench', n: [1, 2], k: 'bundle' },\n    oil: { t: 'Distill oil {n} time{s} at the Craft bench', n: [1], k: 'distill' },\n    wand: { t: 'Weave {n} lavender wand{s}', n: [1], k: 'wand' },\n    prune: { t: 'Prune the rows {n} time{s}', n: [1], k: 'prune' },\n    walk: { t: 'Walk the farm in 3D {n} time{s}', n: [1, 2], k: 'walk3d' },\n    today: { t: 'Finish Today on the farm {n} time{s}', n: [2, 3], k: 'today' },\n    stand: { t: 'Put {n} thing{s} on your Roadside Stand', n: [1], k: 'stand' },\n    chapter: { t: 'Read this week\u2019s story chapter', n: [1], k: 'chapter' }\n  };\n  var LIKES = { sierra: ['select', 'bundle', 'sell', 'premium', 'today'], andrew: ['sell', 'stand', 'today', 'harvest', 'chapter'], max: ['oil', 'plant', 'harvest', 'premium', 'water'], huckleberry: ['walk', 'prune', 'water', 'harvest'], finnegan: ['walk', 'today', 'plant', 'wand'] };\n  var HINTS = {\n    sierra: 'Hi! I\u2019m putting together a gift box this week. Could you help me with a few things? I left a list in your Weekly Wants.',\n    andrew: 'Busy week at the farm stand. If you can lend a hand, my list is in your Weekly Wants. Thank you!',\n    max: 'Orders are stacking up in the greenhouse. I wrote down what would help most. It\u2019s in your Weekly Wants.',\n    huckleberry: 'Huckleberry left a muddy paw print on your list. He\u2019d like a few things this week (see Weekly Wants).',\n    finnegan: 'Finnegan brought you a slightly soggy note. He has a few wishes this week (see Weekly Wants).'\n  };\n  function weekWants() {\n    var d = D(); if (!d) return null; var w = weekId();\n    if (d.want && d.want.w === w) return d.want;\n    var me = ids(d), r = seeded(me.pid + w), list = {};\n    Object.keys(PEOPLE).forEach(function (who) { var likes = LIKES[who].slice(), n = 2 + Math.floor(r() * 3), out = [];\n      while (out.length < n && likes.length) { var k = likes.splice(Math.floor(r() * likes.length), 1)[0], W = WANTS[k]; out.push({ k: k, n: pick(W.n, r), done: false }); }\n      list[who] = out; });\n    d.want = { w: w, list: list, base: snapCounts() };\n    phoneHints(w); save(); return d.want;\n  }\n  function snapCounts() { return {}; }\n  function wantHave(it) { return wkc(WANTS[it.k].k); }\n  function phoneHints(w) {\n    var s = st(); if (!s || !s.phone || !Array.isArray(s.phone.messages)) return;\n    Object.keys(PEOPLE).forEach(function (who) { var id = 'g650-want-' + w + '-' + who; if (s.phone.messages.some(function (m) { return m && m.id === id; })) return;\n      s.phone.messages.unshift({ id: id, type: 'digest', icon: PEOPLE[who].ic, from: PEOPLE[who].name, subject: 'Weekly Wants', body: HINTS[who], created: +s.week || 1, due: null, status: 'new', unread: true, tab: 'field', payload: {}, escalations: 0 }); });\n  }\n  function giveWant(who, i) {\n    var d = D(), W = weekWants(); if (!d || !W) return; var it = W.list[who] && W.list[who][i]; if (!it || it.done || wantHave(it) < it.n) return;\n    it.done = true; d.hearts[who] = (+d.hearts[who] || 0) + 1; coins(30, PEOPLE[who].name + '\u2019s Weekly Want', 'want-' + W.w + who + i); xp(8); bump('wants'); hit('wants', who); ding(988);\n    var h = d.hearts[who], lv = h >= 10 ? 3 : h >= 6 ? 2 : h >= 3 ? 1 : 0;\n    if (h === 3) press('fr:' + who, { t: PEOPLE[who].name + '\u2019s pressed flower', kind: 'friend', from: 'Three hearts with ' + PEOPLE[who].name });\n    if (lv && !d.scenes[who + lv]) { d.scenes[who + lv] = Date.now(); save(); setTimeout(function () { scene(who, lv); }, 300); }\n    save();\n  }\n  var SCENES = {\n    sierra: [\n      ['Sierra wipes her hands on her apron and smiles.', 'You know, when we planted the first rows here, I wasn\u2019t sure a single plant would make it through the winter.', 'Now look at you, growing lots I\u2019d be proud to put our name on.', 'Thank you for caring about the little things. That\u2019s what makes lavender good.'],\n      ['Sierra hands you a small paper envelope.', 'These are seeds my grandmother saved. Nothing fancy, but they\u2019ve come a long way.', 'I\u2019d like you to keep a few. Farms are made of people who pass things on.'],\n      ['Sierra sits beside you at the end of a long row, watching the bees.', 'Some days the work feels endless. Then a guest smells a bundle and closes their eyes, and I remember why.', 'You\u2019re part of this farm now. I mean that.']\n    ],\n    andrew: [\n      ['Andrew is stacking crates by the farm stand.', 'You\u2019ve been a huge help this week. The stand ran smoother than it has all season.', 'If you ever want to try a new idea, bring it to me. That\u2019s how this place keeps growing.'],\n      ['Andrew pulls out an old event poster from the first Lavender Days.', 'Twelve people came. We were thrilled.', 'Last year it was thousands. Every one of them started as somebody\u2019s friend telling them about us.'],\n      ['Andrew leans on the fence as the sun goes down.', 'People ask me what we sell here. I tell them: a reason to slow down for an afternoon.', 'You get it. Thanks for being here.']\n    ],\n    max: [\n      ['Max looks up from a pile of packing slips.', 'Hey, those lots you sent were perfect. Two customers wrote in just to say how good they smelled.', 'I printed one note and stuck it on the greenhouse door.'],\n      ['Max shows you a tray of tiny cuttings.', 'Propagation day. Each one of these will be a full plant in two seasons.', 'Want to name one? Kidding. Mostly.'],\n      ['Max hands you a mug of something warm.', 'Busy weeks are easier when somebody\u2019s got your back.', 'You\u2019re on my list of people I\u2019d call first.']\n    ],\n    huckleberry: [\n      ['Huckleberry trots over with something in his mouth.', 'It\u2019s a very dirty, very loved tennis ball. He drops it at your feet and waits.', 'You throw it. He is, without a doubt, the happiest dog in Michigan.'],\n      ['Huckleberry leads you to a quiet spot behind the barn.', 'He digs, proudly, and uncovers an old garden trowel with initials carved in the handle.', 'He looks at you like he solved a mystery. Maybe he did.'],\n      ['Huckleberry curls up next to you in the shade of the lavender.', 'He sighs a big, contented dog sigh.', 'Some friendships don\u2019t need any words at all.']\n    ],\n    finnegan: [\n      ['Finnegan bounds down the row, ears flying.', 'He leans his whole golden weight against your legs, the way he only does with family.', 'Consider yourself officially adopted.'],\n      ['Finnegan brings you one of his treasures: a pinecone.', 'He sets it down very carefully and wags so hard his whole body wiggles.', 'It is, to him, the finest gift in the world.'],\n      ['Finnegan rests his chin on your knee while you sort stems.', 'Every now and then he looks up to make sure you\u2019re still there.', 'You are. And so is he.']\n    ]\n  };\n  function speak(lines, v, who) {\n    try { if (who && window.GLLFVoice) { var P0 = PEOPLE[who] || {}; GLLFVoice.seq(who, lines.map(function (l) { return P0.dog || /^(Sierra|Andrew|Max)\\s/.test(l) ? ['narrator', l] : l; })); return; } } catch (e) {}\n    try { if (window.GLLFSpeak && GLLFSpeak.say && (!GLLFSpeak.ok || GLLFSpeak.ok())) { GLLFSpeak.say(lines.join(' ')); return; } } catch (e) {}\n    try { var ss = window.speechSynthesis; if (!ss) return; ss.cancel(); lines.forEach(function (t) { var u = new SpeechSynthesisUtterance(t); u.rate = (v && v.rate) || 0.95; u.pitch = (v && v.pitch) || 1; u.lang = 'en-US'; ss.speak(u); }); } catch (e) {}\n  }\n  function scene(who, lv) {\n    var P = PEOPLE[who], lines = (SCENES[who] || [])[lv - 1]; if (!lines) return;\n    hit('wants', 'scene');\n    openSheet(P.name + ' \u00B7 a heart scene', function (b) {\n      var pic = art(P.art);\n      b.innerHTML = '<div class=\"g65-scene\">' + (pic ? '<img alt=\"\" src=\"' + esc(pic) + '\" onerror=\"this.remove()\">' : '') + '<div class=\"g65-scene__lines\">' + lines.map(function (l) { return '<p>' + esc(l) + '</p>'; }).join('') + '</div></div>' +\n        '<div class=\"g65-actions\"><button type=\"button\" class=\"g65-btn\" data-a=\"v\">\u25B6 Hear it read aloud</button></div>';\n      b.querySelector('[data-a=\"v\"]').addEventListener('click', function () { speak(lines, P.voice, who); });\n    }, { onClose: function () { try { window.GLLFVoice && GLLFVoice.stop(); } catch (e) {} try { window.speechSynthesis && speechSynthesis.cancel(); } catch (e) {} } });\n  }\n  function wantsHtml() {\n    var d = D(), W = weekWants(); if (!d || !W) return '';\n    return '<div class=\"g65-wants\">' + Object.keys(PEOPLE).map(function (who) {\n      var P = PEOPLE[who], h = +d.hearts[who] || 0, pic = art(P.art), next = h < 3 ? 3 : h < 6 ? 6 : h < 10 ? 10 : 0;\n      return '<div class=\"g65-want\"><div class=\"g65-want__who\">' + (pic ? '<img alt=\"\" src=\"' + esc(pic) + '\" onerror=\"this.replaceWith(document.createTextNode(\\'' + P.ic + '\\'))\">' : P.ic) + '<div><b>' + esc(P.name) + '</b><small>' + '\u2764\uFE0F'.repeat(Math.min(10, h)) + (h ? ' ' : '') + h + ' heart' + (h === 1 ? '' : 's') + (next ? ' \u00B7 next scene at ' + next : ' \u00B7 best friends') + '</small></div></div><ul>' +\n        W.list[who].map(function (it, i) { var have = Math.min(it.n, wantHave(it)), ok = have >= it.n;\n          return '<li class=\"' + (it.done ? 'is-done' : '') + '\"><span>' + esc(WANTS[it.k].t.replace('{n}', it.n).replace('{s}', it.n === 1 ? '' : 's')) + '</span><em>' + (it.done ? '\u2714 Given' : have + ' / ' + it.n) + '</em>' + (!it.done && ok ? '<button type=\"button\" class=\"g65-btn g65-btn--sm\" data-give=\"' + who + '|' + i + '\">Give</button>' : '') + '</li>'; }).join('') +\n        '</ul>' + [1, 2, 3].filter(function (lv) { return d.scenes[who + lv]; }).map(function (lv) { return '<button type=\"button\" class=\"g65-link\" data-scene=\"' + who + '|' + lv + '\">Replay heart scene ' + lv + '</button>'; }).join(' ') + '</div>';\n    }).join('') + '</div>';\n  }\n\n  /* ================= 8. The weekly story: The Lost Seed Ledger ================= */\n  var STORY = [\n    { t: 'A loose page', p: /board/i, txt: 'While sweeping the barn you find a brittle page tucked behind a beam. It\\u2019s from a seed ledger, dated 1931, listing a lavender called \\u201CMarigold\\u2019s Blue.\\u201D No one at the farm has heard of it. The page ends mid-sentence: \\u201CThe rest is kept where the notices go\\u2026\\u201D', go: 'Check the Field board in 3D' },\n    { t: 'Notices', p: /gazebo/i, txt: 'Behind the field board you find a second page, folded small. It describes a plant \\u201Cbluer than the lake in October\\u201D and a family who traded cuttings for eggs and flour. A note at the bottom says the cuttings were blessed each spring \\u201Cat the gazebo on the hill.\\u201D', go: 'Visit the Heritage Gazebo in 3D' },\n    { t: 'The gazebo', p: /gazebo/i, txt: 'Carved into the gazebo railing are two initials, M. H., and a date. Sierra thinks the H might be the Hartley family, who farmed this land before anyone living can remember. The ledger mentions they kept their records \\u201Cdry, by the water.\\u201D', go: 'Look by the Fishing dock in 3D' },\n    { t: 'By the water', p: /fish|dock/i, txt: 'Under a loose board at the dock is a tin box, rusted shut. Inside: a pressed sprig of lavender, still faintly blue, and a ledger page listing who received cuttings of Marigold\\u2019s Blue. The last name on the list is your town.', go: 'Find the Farm Truck in 3D' },\n    { t: 'The farm truck', p: /truck/i, txt: 'An old-timer at the market remembers his grandmother talking about \\u201Cthe blue lavender from the hill farm.\\u201D She said the Hartleys hauled it to church picnics in the back of a farm truck so everyone could smell it on the way.', go: 'Walk the Lavender field in 3D' },\n    { t: 'Rows that remember', p: /field/i, txt: 'Walking your rows at dusk, you notice one old plant at the end of a row that blooms a shade bluer than the rest. Max takes a cutting \\u201Cjust in case.\\u201D The ledger said Marigold\\u2019s Blue was \\u201Cslow to root, quick to forgive.\\u201D', go: 'Visit the Farmhouse in 3D' },\n    { t: 'The farmhouse attic', p: /house/i, txt: 'In a trunk in the attic: a photograph of a woman holding an armful of lavender, \\u201CMarigold, 1934\\u201D written on the back. Behind her, the same hill you farm today.', go: 'Look in the Farm Office in 3D' },\n    { t: 'The missing page', p: /office/i, txt: 'Andrew finds the last ledger page in a box of old papers in the farm office. It says Marigold\\u2019s Blue \\u201Cwas never sold, only given.\\u201D The family believed a plant shared was a plant that could never be lost.', go: 'Check on Max\\u2019s cutting at the Cultivar Lab' },\n    { t: 'Rooted', p: /lab/i, txt: 'Max\\u2019s cutting has rooted in the Cultivar Lab. It\\u2019s small, but it\\u2019s alive. Sierra says if it blooms true, it should be given away, the way Marigold would have wanted.', go: 'Visit the Processing Barn in 3D' },\n    { t: 'Given, not sold', p: /processing|sp:barn/i, txt: 'At the end of the season, the new plants of Marigold\\u2019s Blue go home with friends, neighbors and one very excited ten-year-old. The ledger, finally whole, goes in a frame in the barn. Some things last because people keep handing them on.', go: 'Hang the ledger in the Processing Barn' }\n  ];\n\n  function weekAdvanced(d, s) {\n    if (d.ch.n < STORY.length) { d.ch.n++; d.ch.unread = d.ch.n; toast('<b>\uD83D\uDCDC New story chapter: ' + esc(STORY[d.ch.n - 1].t) + '</b><span>The Lost Seed Ledger, chapter ' + d.ch.n + ' of ' + STORY.length + '.</span><span class=\"g65-toast__row\"><button type=\"button\" data-t=\"r\">Read it</button></span>', 9000, function () { readChapter(d.ch.n); }); }\n    setbackRoll(d, s); growGold(d, s); growSeedlings(d, s);\n  }\n  function readChapter(n) {\n    var d = D(); if (!d || n < 1 || n > d.ch.n) return; var c = STORY[n - 1];\n    if (!d.ch['r' + n]) { d.ch['r' + n] = 1; bump('chapter'); hit('chapter'); if (d.lore.indexOf(n) < 0) d.lore.push(n); save(); }\n    if (d.ch.unread === n) d.ch.unread = 0;\n    openSheet('The Lost Seed Ledger \u00B7 Chapter ' + n, function (b) {\n      b.innerHTML = '<div class=\"g65-chapter\"><h3>' + esc(c.t) + '</h3><p>' + esc(c.txt) + '</p>' + (n < STORY.length ? '<p class=\"g65-muted\">The next chapter arrives the next time you advance the week.</p>' : '<p class=\"g65-ok\">The ledger is complete. Thank you for reading.</p>') + '</div>' +\n        (c.go ? '<div class=\"g65-actions\"><button type=\"button\" class=\"g65-btn\" data-a=\"go\">\uD83E\uDDED ' + esc(c.go) + '</button></div><p class=\"g65-muted\">Find the spot in 3D for a pressed ledger page and coins.</p>' : '');\n      var g = b.querySelector('[data-a=\"go\"]'); if (g) g.addEventListener('click', function () { closeSheet(); chapterGo(n); });\n    });\n  }\n  function chapterGo(n) {\n    var c = STORY[n - 1], P3 = window.GLLFPlay3D; if (!c || !P3) return;\n    P3.seek(c.p, function () { var d = D(); if (!d || d.ch['f' + n]) return; d.ch['f' + n] = 1; coins(60, 'Found a ledger page', 'ch-' + n); xp(10);\n      if (n % 2 === 0) press('ch:' + n, { t: 'Ledger page ' + n, kind: 'ledger', from: 'The Lost Seed Ledger' }); save();\n      toast('<b>\uD83D\uDCDC You found it!</b><span>' + esc(c.t) + ': +60 coins' + (n % 2 === 0 ? ', and a pressed ledger page for your Herbarium' : '') + '.</span>', 7000); });\n  }\n\n  /* ================= 5. Partners Harvest (a 6-day still for two) ================= */\n  function phCard(box) {\n    var d = D(); if (!d) return; box.innerHTML = '<p class=\"g65-muted\">Checking your partner still\u2026</p>';\n    var render = function (v, err) {\n      if (!d.ph || !v) {\n        box.innerHTML = '<div class=\"g65-ph\"><b>\uD83E\uDD1D Partners Harvest</b><p>Send one friend or grandchild a cutting of a rare lavender. For six days you each add your day\u2019s cuttings, and together you distill one batch. You both get the oil, coins and a pressed specimen.</p>' +\n          (err ? '<p class=\"g65-err\">' + esc(err) + '</p>' : '') + '<div class=\"g65-actions\"><button type=\"button\" class=\"g65-btn\" data-ph=\"new\">Start a partner still</button></div>' +\n          '<label class=\"g65-field\">Have an invite code?<span><input type=\"text\" maxlength=\"6\" autocapitalize=\"characters\" data-ph-code placeholder=\"ABC123\"><button type=\"button\" class=\"g65-btn g65-btn--soft\" data-ph=\"join\">Join</button></span></label></div>';\n        return;\n      }\n      var dots = ''; for (var i = 0; i < v.days; i++) dots += '<i class=\"' + (i < v.day ? 'is-past' : i === v.day ? 'is-today' : '') + '\"></i>';\n      var link = GAME_URL + '?partner=' + v.code, partner = v.me === 'a' ? v.b : v.a;\n      box.innerHTML = '<div class=\"g65-ph\"><b>\uD83E\uDD1D Partners Harvest \u00B7 ' + esc(v.cv) + '</b>' +\n        '<p>' + (partner ? 'With ' + esc(streamer() ? 'your partner' : partner.name) + '.' : 'Waiting for your partner to join. Send them the invite.') + ' Day ' + Math.min(v.days, v.day + 1) + ' of ' + v.days + '.</p>' +\n        '<div class=\"g65-ph__days\">' + dots + '</div><div class=\"g65-bar\"><i style=\"width:' + Math.round(v.n / v.goal * 100) + '%\"></i></div><p>' + v.n + ' of ' + v.goal + ' cuttings in the still.</p>' +\n        (err ? '<p class=\"g65-err\">' + esc(err) + '</p>' : '') +\n        (v.done ? (v.claimed ? '<p class=\"g65-ok\">\u2714 You bottled this batch.</p><div class=\"g65-actions\"><button type=\"button\" class=\"g65-btn g65-btn--soft\" data-ph=\"end\">Start a new one</button></div>' : '<div class=\"g65-actions\"><button type=\"button\" class=\"g65-btn\" data-ph=\"claim\">Bottle the batch</button></div>')\n          : v.over ? '<p>The six days are over.</p><div class=\"g65-actions\"><button type=\"button\" class=\"g65-btn g65-btn--soft\" data-ph=\"end\">Start a new one</button></div>'\n          : v.today ? '<p class=\"g65-ok\">\u2714 You added today\u2019s cuttings. Come back tomorrow.</p>'\n          : (dyc('lots') + dyc('water') + dyc('plant') > 0 ? '<div class=\"g65-actions\"><button type=\"button\" class=\"g65-btn\" data-ph=\"add\">Add today\u2019s cuttings</button></div>' : '<p class=\"g65-muted\">Water, plant or harvest once today, then add your cuttings.</p>')) +\n        (!partner && !v.done ? '<div class=\"g65-actions\"><button type=\"button\" class=\"g65-btn g65-btn--soft\" data-ph=\"invite\">Send the invite</button></div><p class=\"g65-muted\">Invite code: <b>' + esc(v.code) + '</b></p>' : '') + '</div>';\n      box.__link = link; box.__v = v;\n    };\n    var refresh = function (err) { if (!d.ph) return render(null, err); apiMe('phget', { code: d.ph }).then(function (r) { if (r[0] === 200) render(r[1], err); else { if (r[0] === 404) { d.ph = null; save(); } render(null, err || (r[0] === 404 ? '' : r[1].error)); } }); };\n    box.onclick = function (e) {\n      var b = e.target.closest('[data-ph]'); if (!b) return; var k = b.getAttribute('data-ph'); b.disabled = true;\n      if (k === 'new') apiMe('phnew', { name: farmName() }).then(function (r) { if (r[0] === 200) { d.ph = r[1].code; save(); hit('partner', 'start'); render(r[1]); invite(r[1]); } else refresh(r[1].error); });\n      else if (k === 'join') { var c = String((box.querySelector('[data-ph-code]') || {}).value || '').toUpperCase().trim(); joinPartner(c, function (err) { refresh(err); }); }\n      else if (k === 'add') apiMe('phadd', { code: d.ph }).then(function (r) { if (r[0] === 200) { hit('partner', 'add'); bump('partner'); ding(784); render(r[1]); } else refresh(r[1].error); });\n      else if (k === 'claim') apiMe('phclaim', { code: d.ph }).then(function (r) { if (r[0] === 200) { if (r[1].reward) { coins(r[1].reward, 'Partners Harvest batch', 'ph-' + d.ph); xp(40); press('ph:' + r[1].cv.toLowerCase().replace(/[^a-z0-9]+/g, '-'), { t: r[1].cv, kind: 'partner', from: 'A Partners Harvest' }); d.goods.push({ id: 'g' + hex(4), kind: 'oil', title: r[1].cv + ' partner oil', grade: 'Partners batch', ic: '\uD83E\uDDEA' }); hit('partner', 'done'); save(); toast('<b>\uD83E\uDDEA Your partner batch is bottled</b><span>+' + fmt(r[1].reward) + ' coins, a bottle of oil and a pressed specimen.</span>', 7000); } render(r[1]); } else refresh(r[1].error); });\n      else if (k === 'invite') invite(box.__v);\n      else if (k === 'end') { d.ph = null; save(); render(null); }\n    };\n    refresh();\n  }\n  function invite(v) {\n    if (!v) return; var link = GAME_URL + '?partner=' + v.code, text = 'I\u2019m sending you a cutting of \u2018' + v.cv + '\u2019 lavender. Let\u2019s distill a batch together on my lavender farm (it\u2019s free): ';\n    if (navigator.share) { navigator.share({ title: 'A lavender cutting for you', text: text, url: link }).catch(function () {}); return; }\n    try { navigator.clipboard.writeText(text + link); toast('<b>Invite copied</b><span>Paste it in a message or email to your partner.</span>', 5000); } catch (e) { toast('<b>Your invite link</b><span>' + esc(link) + '</span>', 12000); }\n  }\n  function joinPartner(code, cb) {\n    var d = D(); if (!d) return; if (!/^[A-Z2-9]{6}$/.test(code)) return cb && cb('That invite code doesn\u2019t look right. It\u2019s 6 letters and numbers.');\n    apiMe('phjoin', { code: code, name: farmName() }).then(function (r) {\n      if (r[0] !== 200) return cb && cb(r[1].error || 'Couldn\u2019t join right now.');\n      d.ph = code; if (r[1].me === 'b') { press('cut:' + r[1].cv.toLowerCase().replace(/[^a-z0-9]+/g, '-'), { t: 'A cutting of ' + r[1].cv, kind: 'partner', from: 'A gift from your partner' }); hit('partner', 'join'); }\n      save(); cb && cb('');\n      toast('<b>\uD83E\uDD1D You joined a Partners Harvest</b><span>A cutting of ' + esc(r[1].cv) + ' is in your Herbarium. Add your cuttings each day for six days.</span>', 8000);\n    });\n  }\n\n  /* ================= 6. The Herbarium (pressed specimens, framed in the drying barn) ================= */\n  function press(key, info) {\n    var d = D(); if (!d || d.press[key]) return false;\n    d.press[key] = { t: info.t, kind: info.kind, from: info.from, at: Date.now() }; save(); checkSets(); return true;\n  }\n  var SETS = [\n    { id: 'english', t: 'English lavenders', need: 4, test: function (k, v) { return k.indexOf('cv:') === 0 && v.kind === 'english'; }, hint: 'Make a Distiller\u2019s Select lot of four different English lavenders.', restore: 'Grandmother\u2019s stone wall', ic: '\uD83E\uDDF1' },\n    { id: 'lavandin', t: 'Lavandins', need: 3, test: function (k, v) { return k.indexOf('cv:') === 0 && v.kind === 'lavandin'; }, hint: 'Make a Distiller\u2019s Select lot of three different lavandins.', restore: 'The old copper still', ic: '\u2697\uFE0F' },\n    { id: 'bloom', t: 'Bloom Hour rarities', need: 4, test: function (k) { return k.indexOf('bh:') === 0; }, hint: 'Pick up four Saturday Bloom Hour seeds.', restore: 'The seed cabinet', ic: '\uD83D\uDDC4\uFE0F' },\n    { id: 'friends', t: 'Friends of the farm', need: 5, test: function (k) { return k.indexOf('fr:') === 0; }, hint: 'Reach three hearts with Sierra, Andrew, Max, Huckleberry and Finnegan.', restore: 'The porch swing', ic: '\uD83E\uDE91' },\n    { id: 'ledger', t: 'The Lost Seed Ledger', need: 4, test: function (k) { return k.indexOf('ch:') === 0; }, hint: 'Find the ledger pages from the story chapters in 3D.', restore: 'The old windmill', ic: '\uD83C\uDF2C\uFE0F' },\n    { id: 'shared', t: 'Shared and found', need: 3, test: function (k) { return /^(ph|cut|gs|own):/.test(k); }, hint: 'A Partners Harvest, a Gold Seedling and your own cultivar.', restore: 'The farm gate sign', ic: '\uD83E\uDEA7' }\n  ];\n  function setHave(S) { var d = D(); if (!d) return []; return Object.keys(d.press).filter(function (k) { return S.test(k, d.press[k]); }); }\n  function checkSets() {\n    var d = D(); if (!d) return; d.sets = d.sets || {};\n    SETS.forEach(function (S) { if (d.sets[S.id] || setHave(S).length < S.need) return; d.sets[S.id] = Date.now();\n      coins(400, 'Herbarium set: ' + S.t, 'set-' + S.id); xp(60); hit('herbarium'); bump('sets');\n      try { window.GLLFCards && GLLFCards.packet && GLLFCards.packet(1, 'Herbarium set: ' + S.t); } catch (e) {}\n      toast('<b>' + S.ic + ' ' + esc(S.restore) + ' is restored</b><span>You finished the ' + esc(S.t) + ' set in your Herbarium. +400 coins and a card packet.</span>', 9000); });\n    save();\n  }\n  function sprig(col, seed) {\n    var r = seeded(seed), s = '<svg viewBox=\"0 0 80 110\" aria-hidden=\"true\"><path d=\"M40 105 C' + (38 + r() * 4) + ' 70 ' + (36 + r() * 8) + ' 45 40 18\" stroke=\"#6b7d4a\" stroke-width=\"2.4\" fill=\"none\"/>';\n    for (var i = 0; i < 9; i++) { var y = 18 + i * 6.5, w = 5 - i * 0.25; s += '<ellipse cx=\"' + (40 - w) + '\" cy=\"' + y + '\" rx=\"' + (3.4 - i * 0.12) + '\" ry=\"4.6\" fill=\"' + col + '\" opacity=\"' + (0.95 - i * 0.04) + '\"/><ellipse cx=\"' + (40 + w) + '\" cy=\"' + (y + 2) + '\" rx=\"' + (3.4 - i * 0.12) + '\" ry=\"4.6\" fill=\"' + col + '\" opacity=\"' + (0.95 - i * 0.04) + '\"/>'; }\n    return s + '<path d=\"M40 80 q-12 -4 -16 -14\" stroke=\"#6b7d4a\" stroke-width=\"2\" fill=\"none\"/><path d=\"M40 88 q12 -4 16 -14\" stroke=\"#6b7d4a\" stroke-width=\"2\" fill=\"none\"/></svg>';\n  }\n  var KCOL = { english: '#5b2f91', lavandin: '#6c5bd0', spike: '#7a8a50', spanish: '#9b3f8a', bloom: '#c4579a', friend: '#d0643a', ledger: '#8a6a3a', partner: '#2f7a7a', gold: '#c99a1a', own: '#3a6fc4' };\n  function herbHtml() {\n    var d = D(); if (!d) return ''; d.sets = d.sets || {};\n    var cards = 0, alm = ''; try { cards = window.GLLFCards && GLLFCards.owned ? GLLFCards.owned() : 0; } catch (e) {} try { alm = window.GLLFAlmanac && GLLFAlmanac.label ? GLLFAlmanac.label() : ''; } catch (e) {}\n    return '<div class=\"g65-herb\"><p class=\"g65-muted\">Pressed specimens, framed on the barn wall. Finish a set to restore part of the old farm. In 3D, walk into the Processing Barn to see them hanging on the wall.</p>' +\n      SETS.map(function (S) { var have = setHave(S), done = !!d.sets[S.id], frames = '';\n        for (var i = 0; i < S.need; i++) { var k = have[i], v = k && d.press[k];\n          frames += v ? '<figure class=\"g65-frame\"><div>' + sprig(KCOL[v.kind] || '#5b2f91', k) + '</div><figcaption>' + esc(v.t) + '</figcaption></figure>' : '<figure class=\"g65-frame is-empty\"><div>?</div><figcaption>Empty frame</figcaption></figure>'; }\n        return '<section class=\"g65-set' + (done ? ' is-done' : '') + '\"><h3>' + esc(S.t) + ' <small>' + Math.min(have.length, S.need) + ' / ' + S.need + '</small></h3><div class=\"g65-wall\">' + frames + '</div>' +\n          '<p>' + (done ? S.ic + ' Restored: <b>' + esc(S.restore) + '</b>' : esc(S.hint) + ' Restores: ' + esc(S.restore) + '.') + '</p></section>'; }).join('') +\n      '<section class=\"g65-set\"><h3>From your collections</h3><p>' + (cards ? fmt(cards) + ' farm cards collected. ' : '') + esc(alm) + '</p>' +\n      (d.lore.length ? '<p>Ledger pages read: ' + d.lore.sort(function (a, b) { return a - b; }).map(function (n) { return '<button type=\"button\" class=\"g65-link\" data-ch=\"' + n + '\">' + n + '</button>'; }).join(' ') + '</p>' : '') + '</section></div>';\n  }\n\n  /* ================= 9. Roadside Stand and the Lavender Gazette ================= */\n  function goodsFor() {\n    var d = D(); if (!d) return [];\n    var lots = d.lots.filter(function (l) { return !l.sold && !d.listed[l.id]; }).map(function (l) { var G = GRADES[l.g]; return { id: l.id, kind: 'lot', title: l.cv + ' lot #' + l.n, grade: G.name, cv: l.cv, qty: l.qty, ic: G.ic, price: G.price * l.qty }; });\n    var goods = d.goods.filter(function (g) { return !d.listed[g.id]; }).map(function (g) { return { id: g.id, kind: g.kind, title: g.title, grade: g.grade || '', cv: g.cv || '', qty: 1, ic: g.ic || '\uD83E\uDEBB', price: g.kind === 'oil' ? 300 : g.kind === 'wand' ? 180 : g.kind === 'seed' ? 250 : 150 }; });\n    return lots.concat(goods);\n  }\n  function removeGood(id) { var d = D(); d.lots.forEach(function (l) { if (l.id === id) l.sold = 1; }); d.goods = d.goods.filter(function (g) { return g.id !== id; }); }\n  function addGood(it, bought) {\n    var d = D(); if (!d || !it) return;\n    if (it.kind === 'lot') { d.n = (+d.n || 0) + 1; var g = /select/i.test(it.grade) ? 'select' : /premium/i.test(it.grade) ? 'premium' : /field/i.test(it.grade) ? 'field' : 'market', fam = family(it.cv);\n      d.lots.unshift({ id: 'L' + d.n + '-' + hex(2), n: d.n, cv: it.cv || it.title, fam: fam, qty: it.qty || 1, g: g, sc: 70, stage: 4, wx: 'From ' + (bought || 'a stand'), t: 540, at: Date.now(), oil: oilOf(fam, 75, 4), bought: 1 }); }\n    else d.goods.push({ id: 'g' + hex(4), kind: it.kind, title: it.title, grade: it.grade, cv: it.cv, ic: it.ic, bought: 1 });\n  }\n  function standTab(b) {\n    var d = D(); if (!d) return;\n    b.innerHTML = '<div class=\"g65-stand\"><section class=\"g65-gz\"><div class=\"g65-gz__mast\"><b>The Lavender Gazette</b><small>' + new Date().toLocaleDateString('en-US', { weekday: 'long', month: 'long', day: 'numeric' }) + ' \u00B7 farm-gate stands from growers everywhere</small></div><div data-gz><p class=\"g65-muted\">Fetching today\u2019s paper\u2026</p></div></section>' +\n      '<section class=\"g65-mystand\"><h3>\uD83C\uDFEA Your Roadside Stand</h3><div data-mine><p class=\"g65-muted\">Opening your stand\u2026</p></div><h4>Put something out</h4><div data-put></div></section></div>';\n    var gz = b.querySelector('[data-gz]'), mine = b.querySelector('[data-mine]'), put = b.querySelector('[data-put]');\n    var s = st(), coinsHave = function () { return Math.floor(+((st() || {}).coins) || 0); };\n    function paper() {\n      api('stnews', { pid: d.pid || '' }).then(function (r) {\n        if (r[0] !== 200) { gz.innerHTML = '<p class=\"g65-err\">' + esc(r[1].error || 'The paper didn\u2019t arrive. Try again in a moment.') + '</p>'; return; }\n        var L = r[1].list || [], heads = ['Select lots fetch top coin this week', 'Morning cuts are the talk of the market', 'Bundles fly off farm-gate tables', 'Partner stills are bottling across the region'];\n        gz.innerHTML = '<p class=\"g65-gz__head\">' + esc(heads[new Date().getDay() % heads.length]) + '</p>' + (L.length ? '<ul class=\"g65-gz__list\">' + L.map(function (x) {\n          return '<li><span class=\"g65-gz__ic\">' + esc(x.item.ic || '\uD83E\uDEBB') + '</span><span><b>' + esc(x.item.title) + '</b><small>' + esc(x.item.grade || '') + ' \u00B7 ' + esc(streamer() ? 'A lavender farm' : x.farm) + '</small></span><button type=\"button\" class=\"g65-btn g65-btn--sm\" data-buy=\"' + esc(x.id) + '\" data-p=\"' + x.price + '\"' + (coinsHave() < x.price ? ' disabled' : '') + '>Buy \u00B7 ' + fmt(x.price) + '</button></li>'; }).join('') + '</ul>'\n          : '<p>No stands are open right now. Put something out on yours and be the first in the paper!</p>');\n      });\n    }\n    function myStand() {\n      apiMe('stmine', {}).then(function (r) {\n        if (r[0] !== 200) { mine.innerHTML = '<p class=\"g65-err\">' + esc(r[1].error || 'Your stand couldn\u2019t open. Try again in a moment.') + '</p>'; return; }\n        var up = r[1].up || [], slots = '';\n        for (var i = 0; i < 4; i++) { var x = up[i]; slots += x ? '<li><span>' + esc(x.item.ic || '') + ' <b>' + esc(x.item.title) + '</b><small>' + fmt(x.price) + ' coins</small></span><button type=\"button\" class=\"g65-link\" data-off=\"' + esc(x.id) + '\">Take it back</button></li>' : '<li class=\"is-empty\">An empty shelf</li>'; }\n        mine.innerHTML = '<ul class=\"g65-shelf\">' + slots + '</ul>' + (r[1].owed ? '<div class=\"g65-actions\"><button type=\"button\" class=\"g65-btn\" data-collect>Collect ' + fmt(r[1].owed) + ' coins from ' + r[1].sold.length + ' sale' + (r[1].sold.length > 1 ? 's' : '') + '</button></div>' : '<p class=\"g65-muted\">Anything not bought by another grower in a day sells to a passing visitor for 80% of your price.</p>');\n        mine.__n = up.length;\n      });\n    }\n    function putList() {\n      var G = goodsFor(); if (!G.length) { put.innerHTML = '<p class=\"g65-muted\">Harvest lots and things from the Craft bench can go on your stand.</p>'; return; }\n      put.innerHTML = '<ul class=\"g65-goods\">' + G.slice(0, 12).map(function (x) { return '<li><span>' + esc(x.ic) + ' <b>' + esc(x.title) + '</b><small>' + esc(x.grade) + '</small></span><label>Price <input type=\"number\" min=\"10\" max=\"5000\" step=\"5\" value=\"' + x.price + '\" data-price=\"' + esc(x.id) + '\"></label><button type=\"button\" class=\"g65-btn g65-btn--sm\" data-put=\"' + esc(x.id) + '\">Put out</button></li>'; }).join('') + '</ul>';\n    }\n    b.onclick = function (e) {\n      var t = e.target.closest('button'); if (!t) return;\n      if (t.hasAttribute('data-buy')) { var id = t.getAttribute('data-buy'), p = +t.getAttribute('data-p'); if (coinsHave() < p) return; t.disabled = true;\n        apiMe('stbuy', { id: id, price: p }).then(function (r) { if (r[0] !== 200) { t.textContent = r[1].error || 'Not available'; return; }\n          coins(-p, 'Bought from a Roadside Stand', 'buy-' + id); addGood(r[1].item, r[1].farm); bump('bought'); hit('stand', 'buy'); save(); ding(880);\n          t.textContent = '\u2714 Bought'; toast('<b>\uD83E\uDDFA Bought: ' + esc(r[1].item.title) + '</b><span>It\u2019s in your Harvest lots and goods.</span>', 5000); }); }\n      else if (t.hasAttribute('data-put')) { var gid = t.getAttribute('data-put'), it = goodsFor().filter(function (x) { return x.id === gid; })[0], pr = Math.round(+(b.querySelector('[data-price=\"' + gid + '\"]') || {}).value || 0); if (!it) return; t.disabled = true;\n        apiMe('stput', { item: it, price: pr, farm: farmName() }).then(function (r) { if (r[0] !== 200) { t.disabled = false; t.textContent = r[1].error || 'Try again'; return; }\n          d.listed[r[1].listing.id] = it; removeGood(gid); bump('stand'); hit('stand', 'list'); save(); myStand(); putList(); }); }\n      else if (t.hasAttribute('data-off')) { var lid = t.getAttribute('data-off'); t.disabled = true;\n        apiMe('stoff', { id: lid }).then(function (r) { if (r[0] === 200) { addGood(r[1].item); delete d.listed[lid]; save(); } myStand(); putList(); }); }\n      else if (t.hasAttribute('data-collect')) { t.disabled = true;\n        apiMe('stcollect', {}).then(function (r) { if (r[0] === 200 && r[1].coins) { coins(r[1].coins, 'Roadside Stand sales', 'stc-' + hex(4)); bump('standcoins', r[1].coins); hit('stand', 'collect'); ding(1047); toast('<b>\uD83E\uDE99 +' + fmt(r[1].coins) + ' coins from your stand</b>', 5000); save(); } myStand(); }); }\n    };\n    paper(); myStand(); putList();\n  }\n\n  /* ================= 10. Gold Seedlings (QR codes at the farm and sponsor farms) and the Master Distiller challenge ================= */\n  function goldFromUrl() {\n    var q; try { q = new URLSearchParams(location.search); } catch (e) { return; } var code = q.get('gs'), ph = q.get('partner');\n    if (code || ph) { try { q.delete('gs'); q.delete('partner'); history.replaceState(null, '', location.pathname + (q.toString() ? '?' + q.toString() : '') + location.hash); } catch (e) {} }\n    if (ph) setTimeout(function () { var d = D(); if (d && d.ph === ph.toUpperCase()) return hub('week'); joinPartner(ph.toUpperCase(), function (err) { if (err) toast('<b>Partners Harvest</b><span>' + esc(err) + '</span>', 8000); }); }, 1500);\n    if (code) setTimeout(function () {\n      apiMe('goldclaim', { code: code }).then(function (r) {\n        if (r[0] !== 200) { toast('<b>\uD83C\uDF1F Gold Seedling</b><span>' + esc(r[1].error || 'That code didn\u2019t work.') + '</span>', 8000); return; }\n        var d = D(), loc = r[1].loc, place = loc === 'gllf' ? 'Great Lakes Lavender Farm' : loc.replace(/^dir-/, '').replace(/-/g, ' ').replace(/\\b\\w/g, function (c) { return c.toUpperCase(); });\n        d.gold.push({ id: 'gs' + hex(3), loc: loc, place: place, w0: absWeek(), at: Date.now() }); bump('gold'); hit('gold'); save(); nursery();\n        toast('<b>\uD83C\uDF1F A Gold Seedling from ' + esc(place) + '!</b><span>It\u2019s growing in your nursery row, right under your field. It blooms in 3 weeks.</span>', 10000);\n      });\n    }, 1500);\n  }\n  function growGold(d, s) { var now = absWeek(s); d.gold.forEach(function (g) { if (!g.ready && now - g.w0 >= 3) g.ready = 1; }); }\n  function nursery() {\n    var d = D(), card = document.querySelector('#lfg-simulator-root .lfg-field-card'); if (!d || !card) return;\n    var list = d.gold.filter(function (g) { return !g.done; }).concat(d.seeds.filter(function (x) { return !x.named; })), row = card.querySelector(':scope > .g65-nursery');\n    if (!list.length) { if (row) row.remove(); return; }\n    if (!row) { row = el('div', 'g65-nursery'); row.setAttribute('aria-label', 'Nursery row'); var msg = card.querySelector(':scope > #lfg-field-message, :scope > .lfg-message, :scope > #lfg-field'); if (msg && msg.nextSibling) card.insertBefore(row, msg.nextSibling); else card.appendChild(row); }\n    var html = '<b>\uD83C\uDF31 Nursery row</b>' + list.map(function (x) {\n      if (x.loc) { var left = Math.max(0, 3 - (absWeek() - x.w0)); return '<button type=\"button\" class=\"g65-seedling' + (x.ready ? ' is-ready' : '') + '\" data-gold=\"' + x.id + '\">\uD83C\uDF1F Gold Seedling<small>' + (x.ready ? 'In bloom! Tap to gather' : 'from ' + esc(x.place) + ' \u00B7 ' + left + ' week' + (left === 1 ? '' : 's') + ' to bloom') + '</small></button>'; }\n      var l2 = Math.max(0, 3 - (absWeek() - x.w0)); return '<button type=\"button\" class=\"g65-seedling' + (x.ready ? ' is-ready' : '') + '\" data-seed=\"' + x.id + '\">\uD83C\uDF31 Chance seedling<small>' + (x.ready ? 'It bloomed true! Tap to name it' : 'on trial \u00B7 ' + l2 + ' week' + (l2 === 1 ? '' : 's') + ' to go') + '</small></button>';\n    }).join('');\n    if (row.__h !== html) { row.innerHTML = html; row.__h = html; }\n    if (!row.__on) { row.__on = 1; row.addEventListener('click', function (e) { var g = e.target.closest('[data-gold]'), sd = e.target.closest('[data-seed]'); if (g) gatherGold(g.getAttribute('data-gold')); if (sd) nameSeedling(sd.getAttribute('data-seed')); }); }\n  }\n  function gatherGold(id) {\n    var d = D(), g = d && d.gold.filter(function (x) { return x.id === id; })[0]; if (!g || !g.ready || g.done) return;\n    g.done = 1; coins(500, 'Gold Seedling bloomed', 'gold-' + id); xp(30); press('gs:' + g.loc, { t: 'Gold Seedling, ' + g.place, kind: 'gold', from: 'A real-world Gold Seedling' });\n    if (seeded(id)() < 0.34) newSeedling('gold', 'Gold Seedling'); save(); nursery(); ding(1175);\n    toast('<b>\uD83C\uDF1F Your Gold Seedling bloomed</b><span>+500 coins and a pressed gold specimen.</span>', 7000);\n  }\n  function challenge() {\n    var d = D(); d.sets = d.sets || {};\n    var p = { select: d.lots.filter(function (l) { return l.g === 'select' && !l.bought; }).length, perfect: +d.perfect || 0, bloom: Object.keys(d.press).filter(function (k) { return k.indexOf('bh:') === 0; }).length, sets: Object.keys(d.sets).length };\n    return { p: p, ok: p.select >= 5 && p.perfect >= 3 && p.bloom >= 1 && p.sets >= 1 };\n  }\n  function challengeHtml() {\n    var c = challenge(), d = D(), row = function (ok, t, have, need) { return '<li class=\"' + (ok ? 'is-done' : '') + '\"><span>' + t + '</span><em>' + Math.min(have, need) + ' / ' + need + '</em></li>'; };\n    return '<section class=\"g65-chal\"><h3>\uD83C\uDFC6 Master Distiller challenge</h3><p>Earned by skill, never sold. The first growers each month who finish it get a real lavender sample sachet from the farm, in the mail.</p><ul>' +\n      row(c.p.select >= 5, 'Make 5 Distiller\u2019s Select lots', c.p.select, 5) + row(c.p.perfect >= 3, 'Distill 3 perfect oils at the Craft bench', c.p.perfect, 3) + row(c.p.bloom >= 1, 'Pick up a Saturday Bloom Hour seed', c.p.bloom, 1) + row(c.p.sets >= 1, 'Finish a Herbarium set', c.p.sets, 1) + '</ul>' +\n      (d.sachet ? '<p class=\"g65-ok\">\u2714 Your sachet is on its way. Thank you for growing with us!</p>' : c.ok ? '<div data-sachet><p class=\"g65-muted\">Checking this month\u2019s sachets\u2026</p></div>' : '') + '</section>';\n  }\n  function sachetForm(box) {\n    var d = D(); if (!box || d.sachet) return;\n    api('sachetinfo', {}).then(function (r) {\n      var left = r[0] === 200 ? r[1].left : null;\n      if (left === 0) { box.innerHTML = '<p>This month\u2019s sachets are all spoken for. The challenge opens again on the 1st, and you\u2019ll still be finished.</p>'; return; }\n      box.innerHTML = '<form class=\"g65-form\" data-sf><p><b>You did it!</b> ' + (left != null ? left + ' sachets left this month. ' : '') + 'Where should we mail it? We only use this to send your sachet.</p>' +\n        '<label>Your name<input name=\"name\" maxlength=\"80\" autocomplete=\"name\" required></label><label>Email<input name=\"email\" type=\"email\" maxlength=\"200\" autocomplete=\"email\" required></label>' +\n        '<label>Mailing address<textarea name=\"addr\" maxlength=\"300\" rows=\"3\" autocomplete=\"street-address\" required></textarea></label><button type=\"submit\" class=\"g65-btn\">Send me my sachet</button><p class=\"g65-err\" data-e></p></form>';\n      box.querySelector('[data-sf]').addEventListener('submit', function (e) { e.preventDefault(); var f = e.target, btn = f.querySelector('button'); btn.disabled = true;\n        apiMe('sachetclaim', { proof: challenge().p, name: f.name.value, email: f.email.value, addr: f.addr.value }).then(function (r2) {\n          if (r2[0] === 200) { d.sachet = Date.now(); save(); box.innerHTML = '<p class=\"g65-ok\">\u2714 Wonderful. Your sachet will be in the mail soon.</p>'; ding(1319); }\n          else { btn.disabled = false; f.querySelector('[data-e]').textContent = r2[1].error || 'That didn\u2019t go through. Try again in a moment.'; } }); });\n    });\n  }\n\n  /* ================= Craft bench: distilling, bundles, wands and pruning (calm, no-fail) ================= */\n  function craftTab(b) {\n    var d = D(); if (!d) return; var lots = d.lots.filter(function (l) { return !l.sold && !d.listed[l.id]; });\n    var pruned = dyc('prune') > 0;\n    b.innerHTML = '<div class=\"g65-crafts\"><p class=\"g65-muted\">Hands-on crafts. There\u2019s no way to fail; doing it well makes a finer piece.</p>' +\n      '<div class=\"g65-craftgrid\">' +\n      '<button type=\"button\" class=\"g65-craft\" data-craft=\"distill\"' + (lots.length ? '' : ' disabled') + '><span>\u2697\uFE0F</span><b>Distill oil</b><small>Uses one harvest lot. Hold the heat steady and watch the oil layer form.</small></button>' +\n      '<button type=\"button\" class=\"g65-craft\" data-craft=\"bundle\"' + (lots.length ? '' : ' disabled') + '><span>\uD83D\uDC90</span><b>Tie a bundle</b><small>Uses one harvest lot. Gather stems and wrap the twine.</small></button>' +\n      '<button type=\"button\" class=\"g65-craft\" data-craft=\"wand\"' + (lots.length ? '' : ' disabled') + '><span>\uD83E\uDE84</span><b>Weave a wand</b><small>Uses one harvest lot. Weave the ribbon over and under.</small></button>' +\n      '<button type=\"button\" class=\"g65-craft\" data-craft=\"prune\"' + (pruned ? ' disabled' : '') + '><span>\u2702\uFE0F</span><b>Prune the rows</b><small>' + (pruned ? 'Done for today. Your plants thank you.' : 'Free, once a day. Trim the woody tips; every plant gets a little healthier and less woody.') + '</small></button></div>' +\n      (lots.length ? '' : '<p class=\"g65-muted\">Harvest a lot in the Lavender Field to unlock distilling, bundles and wands.</p>') +\n      (d.goods.length ? '<h3>Your goods</h3><ul class=\"g65-goodslist\">' + d.goods.slice(-12).reverse().map(function (g) { return '<li>' + esc(g.ic || '') + ' ' + esc(g.title) + (g.grade ? ' <small>' + esc(g.grade) + '</small>' : '') + '</li>'; }).join('') + '</ul>' : '') + '</div>';\n    b.onclick = function (e) { var c = e.target.closest('[data-craft]'); if (!c || c.disabled) return; var k = c.getAttribute('data-craft'); if (k === 'prune') prune(b); else craft(k, b); };\n  }\n  function useLot() { var d = D(); var l = d.lots.filter(function (x) { return !x.sold && !d.listed[x.id]; }).sort(function (a, b) { return b.sc - a.sc; })[0]; if (l) l.sold = 1; return l; }\n  function craft(kind, back) {\n    var d = D(); var l = useLot(); if (!l) return; save();\n    var box = back; box.innerHTML = '';\n    var stage = el('div', 'g65-play'); box.appendChild(stage);\n    var finish = function (q) {\n      var name = kind === 'distill' ? l.cv + ' oil' : kind === 'bundle' ? l.cv + ' bundle' : l.cv + ' wand', grade = q >= 0.8 ? 'Perfect' : q >= 0.5 ? 'Fine' : 'Good';\n      d.goods.push({ id: 'g' + hex(4), kind: kind === 'distill' ? 'oil' : kind, title: name, grade: grade + (l.g === 'select' ? ' \u00B7 from a Select lot' : ''), cv: l.cv, ic: kind === 'distill' ? '\uD83E\uDDEA' : kind === 'bundle' ? '\uD83D\uDC90' : '\uD83E\uDE84' });\n      if (kind === 'distill' && q >= 0.8) d.perfect = (+d.perfect || 0) + 1;\n      if (kind === 'bundle') { var s = st(); try { s.finished = s.finished || {}; s.finished['dried-bundle'] = (+s.finished['dried-bundle'] || 0) + 1; } catch (e) {} }\n      bump(kind); coins(15, 'Craft bench: ' + name, 'cr-' + hex(4)); xp(8); hit('craft', kind); save(); ding(1319, 0.22);\n      stage.innerHTML = '<div class=\"g65-done\"><b>' + (kind === 'distill' ? '\uD83E\uDDEA' : kind === 'bundle' ? '\uD83D\uDC90' : '\uD83E\uDE84') + ' ' + esc(name) + '</b><p>' + grade + '! It\u2019s in your goods. Sell it on your Roadside Stand, or keep it.</p><button type=\"button\" class=\"g65-btn\" data-again>Back to the Craft bench</button></div>';\n      stage.querySelector('[data-again]').addEventListener('click', function () { craftTab(back); });\n    };\n    if (kind === 'distill') {\n      stage.innerHTML = '<p><b>Distill ' + esc(l.cv) + '.</b> Press and hold <b>Heat</b> to keep the still in the green band. The oil gathers on top of the water.</p><canvas width=\"520\" height=\"300\" class=\"g65-still\"></canvas><div class=\"g65-actions\"><button type=\"button\" class=\"g65-btn g65-btn--big\" data-heat>\uD83D\uDD25 Heat (hold)</button></div>';\n      var c = stage.querySelector('canvas'), x = c.getContext('2d'), heat = false, T = 70, prog = 0, good = 0, n = 0, t0 = performance.now(), hb = stage.querySelector('[data-heat]');\n      var on = function (e) { e.preventDefault(); heat = true; }, off = function () { heat = false; };\n      hb.addEventListener('pointerdown', on); ['pointerup', 'pointerleave', 'pointercancel'].forEach(function (k) { hb.addEventListener(k, off); });\n      hb.addEventListener('keydown', function (e) { if (e.key === ' ' || e.key === 'Enter') { e.preventDefault(); heat = true; } }); hb.addEventListener('keyup', off);\n      (function loop() {\n        if (!c.isConnected) return; n++;\n        T += heat ? 0.55 : -0.35; T = Math.max(60, Math.min(112, T)); var inBand = T >= 96 && T <= 102;\n        prog += inBand ? 0.55 : 0.15; if (inBand) good++;\n        x.clearRect(0, 0, 520, 300); x.fillStyle = '#fbf6ee'; x.fillRect(0, 0, 520, 300);\n        x.fillStyle = '#b87333'; rr(x, 40, 110, 140, 150, 40); x.fill(); x.fillStyle = '#d79a5a'; x.beginPath(); x.arc(110, 110, 50, Math.PI, 0); x.fill();\n        x.strokeStyle = '#b87333'; x.lineWidth = 8; x.beginPath(); x.moveTo(110, 60); x.quadraticCurveTo(250, 20, 330, 120); x.stroke();\n        x.fillStyle = 'rgba(160,200,230,.35)'; rr(x, 320, 100, 120, 170, 16); x.fill(); x.strokeStyle = '#8aa'; x.lineWidth = 3; rr(x, 320, 100, 120, 170, 16); x.stroke();\n        var water = 30 + prog * 0.9, oil = prog * 0.35; x.fillStyle = 'rgba(120,170,220,.55)'; x.fillRect(323, 267 - water, 114, water); x.fillStyle = '#e9c45a'; x.fillRect(323, 267 - water - oil, 114, oil);\n        x.fillStyle = '#ddd'; rr(x, 210, 200, 22, 80, 10); x.fill(); x.fillStyle = '#7fbf6a'; x.fillRect(210, 280 - (102 - 60) / 52 * 80, 22, 6 / 52 * 80);\n        x.fillStyle = inBand ? '#2f8a3a' : T > 102 ? '#c0392b' : '#c48a1a'; x.fillRect(212, 278 - (T - 60) / 52 * 76, 18, 4);\n        x.fillStyle = '#3b2160'; x.font = '700 18px Lato, system-ui, sans-serif'; x.fillText(Math.round(T) + '\u00B0C ' + (inBand ? 'steady' : T > 102 ? 'too hot' : 'warming'), 40, 290);\n        if (heat && n % 8 === 0) { x.fillStyle = 'rgba(255,255,255,.7)'; x.beginPath(); x.arc(110 + Math.random() * 30, 50, 8, 0, 7); x.fill(); }\n        if (prog >= 100 || performance.now() - t0 > 30000) { finish(good / n); return; }\n        requestAnimationFrame(loop);\n      })();\n    } else if (kind === 'bundle') {\n      var stems = 0, wraps = 0;\n      var draw = function () { stage.innerHTML = '<p><b>Tie a ' + esc(l.cv) + ' bundle.</b> ' + (stems < 30 ? 'Tap <b>Gather</b> to pick up stems.' : 'Now tap <b>Wrap</b> to tie the twine.') + '</p><div class=\"g65-bundle\">' + '\uD83E\uDEBB'.repeat(Math.min(10, Math.ceil(stems / 3))) + '<span>' + (wraps ? '\uD83E\uDDF5'.repeat(wraps) : '') + '</span></div><p>' + stems + ' / 30 stems \u00B7 ' + wraps + ' / 5 wraps</p>' +\n        '<div class=\"g65-actions\">' + (stems < 30 ? '<button type=\"button\" class=\"g65-btn g65-btn--big\" data-g>\uD83E\uDEBB Gather</button>' : '<button type=\"button\" class=\"g65-btn g65-btn--big\" data-w>\uD83E\uDDF5 Wrap</button>') + '</div>'; };\n      draw(); var t1 = performance.now();\n      stage.onclick = function (e) { if (e.target.closest('[data-g]')) { stems = Math.min(30, stems + 3); ding(660 + stems * 8, 0.08); draw(); } else if (e.target.closest('[data-w]')) { wraps++; ding(880 + wraps * 60, 0.12); if (wraps >= 5) { var secs = (performance.now() - t1) / 1000; finish(secs < 25 ? 0.85 : secs < 45 ? 0.6 : 0.4); } else draw(); } };\n    } else {\n      var seq = [], i2 = 0, ok = 0, r = seeded(l.id); for (var k2 = 0; k2 < 8; k2++) seq.push(r() < 0.5 ? 'L' : 'R');\n      var draw2 = function (msg) { stage.innerHTML = '<p><b>Weave a ' + esc(l.cv) + ' wand.</b> Follow the ribbon: tap the side it goes next.</p><div class=\"g65-wand\">' + seq.map(function (s, j) { return '<i class=\"' + (j < i2 ? 'is-done' : j === i2 ? 'is-now' : '') + '\">' + (s === 'L' ? '\u25C0' : '\u25B6') + '</i>'; }).join('') + '</div><p class=\"g65-muted\">' + (msg || '&nbsp;') + '</p>' +\n        '<div class=\"g65-actions\"><button type=\"button\" class=\"g65-btn g65-btn--big\" data-s=\"L\">\u25C0 Over</button><button type=\"button\" class=\"g65-btn g65-btn--big\" data-s=\"R\">Under \u25B6</button></div>'; };\n      draw2(); var miss = 0;\n      stage.onclick = function (e) { var s = e.target.closest('[data-s]'); if (!s) return; if (s.getAttribute('data-s') === seq[i2]) { i2++; ok++; ding(740 + i2 * 50, 0.12); if (i2 >= seq.length) return finish(ok / (ok + miss)); draw2(); } else { miss++; draw2('Try the other side.'); } };\n    }\n  }\n  function prune(back) {\n    var s = st(); if (!s || dyc('prune')) return;\n    back.innerHTML = ''; var stage = el('div', 'g65-play'); back.appendChild(stage); var cut = 0;\n    var svg = '<svg viewBox=\"0 0 300 200\" class=\"g65-prune\" role=\"img\" aria-label=\"A lavender plant to prune\"><ellipse cx=\"150\" cy=\"170\" rx=\"110\" ry=\"22\" fill=\"#9a7d5a\"/>';\n    for (var i = 0; i < 6; i++) { var x0 = 70 + i * 32; svg += '<g data-stem=\"' + i + '\" class=\"g65-stem\"><path d=\"M' + x0 + ' 165 L' + (x0 + (i % 2 ? 8 : -8)) + ' 70\" stroke=\"#6b5a3a\" stroke-width=\"5\"/><circle cx=\"' + (x0 + (i % 2 ? 8 : -8)) + '\" cy=\"66\" r=\"16\" fill=\"#8f7a55\" opacity=\".9\"/></g>'; }\n    stage.innerHTML = '<p><b>Prune the rows.</b> Tap each woody tip to trim it back. Take your time.</p>' + svg + '</svg><p data-c>0 / 6 trimmed</p>';\n    stage.onclick = function (e) { var g = e.target.closest('[data-stem]'); if (!g || g.classList.contains('is-cut')) return; g.classList.add('is-cut'); cut++; ding(1046 + cut * 40, 0.14); stage.querySelector('[data-c]').textContent = cut + ' / 6 trimmed';\n      if (cut >= 6) { (s.plants || []).forEach(function (p) { if (p) { p.health = Math.min(100, (+p.health || 70) + 5); if (+p.woodiness) p.woodiness = Math.max(0, +p.woodiness - 10); } }); bump('prune'); xp(6); hit('craft', 'prune'); save(); redraw();\n        stage.insertAdjacentHTML('beforeend', '<div class=\"g65-done\"><b>\u2702\uFE0F Nicely done</b><p>Every plant in your field is a little healthier, and older plants are a little less woody.</p><button type=\"button\" class=\"g65-btn\" data-again>Back to the Craft bench</button></div>'); stage.querySelector('[data-again]').addEventListener('click', function () { craftTab(back); }); } };\n  }\n\n  /* ================= Season setbacks (Gentle Grower / Real Season / Hard Year) ================= */\n  var SETBACK = {\n    deer: { t: 'Deer in the rows', ic: '\uD83E\uDD8C', prot: 'fence', pt: 'Deer fence', cost: 150, lesson: 'Deer usually leave lavender alone because of its strong oils, but young, tender plants can get nibbled when other food is scarce. A simple fence or a scent deterrent around new plantings is enough.' },\n    rot: { t: 'Root rot after wet weather', ic: '\uD83D\uDCA7', prot: 'rows', pt: 'Raised rows', cost: 200, lesson: 'Lavender hates wet feet. Most lavender losses come from water sitting around the roots, not from cold. Raised rows, gravel mulch and well-drained soil prevent root rot.' },\n    frost: { t: 'A late frost', ic: '\u2744\uFE0F', prot: 'cloth', pt: 'Frost cloth', cost: 60, lesson: 'A hard frost after new growth starts can burn tender tips. Covering plants with frost cloth on cold spring nights protects them; most plants recover by summer.' }\n  };\n  function setbackRoll(d, s) {\n    var ch = { gentle: 0, real: 0.12, hard: 0.25 }[d.diff] || 0; if (!ch) return;\n    var planted = (s.plants || []).map(function (p, i) { return p ? i : -1; }).filter(function (i) { return i >= 0; }); if (!planted.length) return;\n    var r = seeded(d.pid + absWeek(s)); if (r() > ch) return;\n    var wet = /rain|storm|shower/i.test(wxNow().c), kind = (+s.season || 0) === 0 ? 'frost' : wet ? 'rot' : 'deer', K = SETBACK[kind];\n    if (d.prot[K.prot] && (K.prot === 'rows' || d.prot[K.prot] === (s.year || 1))) return;\n    var n = Math.min(planted.length, d.diff === 'hard' ? 3 : 1 + Math.floor(r() * 2)), hurt = [];\n    for (var i = 0; i < n; i++) { var idx = planted.splice(Math.floor(r() * planted.length), 1)[0], p = s.plants[idx]; p.health = Math.max(5, (+p.health || 70) - (kind === 'rot' ? 35 : 25)); hurt.push(idx + 1); }\n    hit('setback', kind); save(); redraw();\n    toast('<b>' + K.ic + ' ' + esc(K.t) + '</b><span>Plot' + (hurt.length > 1 ? 's ' : ' ') + hurt.join(', ') + ' took some damage. They\u2019ll recover with care.</span><span class=\"g65-toast__row\"><button type=\"button\" data-t=\"l\">What to do</button></span>', 10000, function () { setbackCard(kind); });\n  }\n  function setbackCard(kind) {\n    var K = SETBACK[kind], d = D(), s = st();\n    openSheet(K.ic + ' ' + K.t, function (b) {\n      var has = d.prot[K.prot] && (K.prot === 'rows' || d.prot[K.prot] === (s.year || 1));\n      b.innerHTML = '<p>' + esc(K.lesson) + '</p>' + (has ? '<p class=\"g65-ok\">\u2714 You have a ' + esc(K.pt.toLowerCase()) + '.</p>' : '<div class=\"g65-actions\"><button type=\"button\" class=\"g65-btn\" data-buy>Buy a ' + esc(K.pt.toLowerCase()) + ' \u00B7 ' + K.cost + ' coins</button></div><p class=\"g65-muted\">' + (K.prot === 'rows' ? 'Raised rows last for good.' : 'Lasts for the rest of this farm year.') + '</p>') +\n        '<div class=\"g65-actions\"><button type=\"button\" class=\"g65-btn g65-btn--soft\" data-alm>Open the Almanac</button></div>';\n      b.onclick = function (e) { if (e.target.closest('[data-buy]')) { if ((+s.coins || 0) < K.cost) { e.target.textContent = 'Not enough coins yet'; return; } coins(-K.cost, K.pt, 'prot-' + K.prot + (s.year || 1)); d.prot[K.prot] = K.prot === 'rows' ? 1 : (s.year || 1); save(); setbackCard(kind); }\n        if (e.target.closest('[data-alm]')) { closeSheet(); try { GLLFAlmanac.open(); } catch (x) {} } };\n    });\n  }\n\n  /* ================= Your own cultivar (a chance seedling you trial and name) ================= */\n  function newSeedling(from, parent) {\n    var d = D(); if (!d || d.seeds.filter(function (x) { return !x.named; }).length >= 3) return;\n    var r = seeded(hex(4)), cols = ['deep violet', 'blue-violet', 'lilac', 'rosy pink', 'near-white', 'midnight blue'], scents = ['sweet and honeyed', 'bright and herbal', 'soft and powdery', 'clean and resinous'];\n    var pc = cvFind(from === 'gold' ? 'Hidcote' : parent) || cvFind('Hidcote');\n    d.seeds.push({ id: 's' + hex(3), from: from, parent: parent, pid: pc ? pc.id : '', w0: absWeek(), col: pick(cols, r), scent: pick(scents, r), hardy: 4 + Math.floor(r() * 4) });\n    save(); nursery(); toast('<b>\uD83C\uDF31 A chance seedling!</b><span>Something new sprouted from your ' + esc(parent) + '. Trial it for 3 weeks in your nursery row, then name it.</span>', 9000);\n  }\n  function growSeedlings(d, s) { var now = absWeek(s); d.seeds.forEach(function (x) { if (!x.ready && now - x.w0 >= 3) x.ready = 1; }); }\n  function nameSeedling(id) {\n    var d = D(), x = d && d.seeds.filter(function (q) { return q.id === id; })[0]; if (!x || !x.ready || x.named) return;\n    openSheet('Name your cultivar', function (b) {\n      b.innerHTML = '<p>Your chance seedling bloomed true: <b>' + esc(x.col) + '</b> flowers, a <b>' + esc(x.scent) + '</b> scent, hardy to about zone ' + x.hardy + '. Many real lavenders started just like this.</p>' +\n        '<form class=\"g65-form\" data-nf><label>Its name<input name=\"n\" maxlength=\"24\" required placeholder=\"e.g. Morning Lake\"></label><button class=\"g65-btn\" type=\"submit\">Name it</button><p class=\"g65-err\" data-e></p></form>';\n      b.querySelector('[data-nf]').addEventListener('submit', function (e) { e.preventDefault(); var n = String(e.target.n.value || '').replace(/[^A-Za-z0-9 '\u2019.-]/g, '').replace(/\\s+/g, ' ').trim();\n        if (n.length < 2) { e.target.querySelector('[data-e]').textContent = 'Use at least 2 letters.'; return; }\n        x.named = n; d.cv.unshift({ name: n, col: x.col, scent: x.scent, hardy: x.hardy, pid: x.pid || '', at: Date.now() }); d.cv = d.cv.slice(0, 6); keepHeritage(d);\n        press('own:' + n.toLowerCase().replace(/[^a-z0-9]+/g, '-'), { t: '\u2018' + n + '\u2019', kind: 'own', from: 'Bred on your farm' }); coins(250, 'Named a new cultivar', 'cv-' + id); xp(40); hit('cultivar'); save(); nursery();\n        b.innerHTML = '<p class=\"g65-ok\">\u2714 Welcome to the world, \u2018' + esc(n) + '\u2019. It\u2019s on your Bloom Card, your Lavender Year and in your Herbarium.</p>'; });\n    });\n  }\n\n  /* ================= Family crest and heritage mother plants (they carry on when the farm is passed on) ================= */\n  var CREST = { shapes: [['shield', 'Shield'], ['round', 'Round'], ['banner', 'Banner']], cols: ['#5a3c86', '#2f5d8a', '#2f7a4f', '#8a3b3b', '#7a5a1a', '#3b3b4a'], ems: ['\uD83E\uDEBB', '\uD83D\uDC1D', '\uD83C\uDFE1', '\u2B50', '\u2764\uFE0F', '\u2600\uFE0F', '\uD83C\uDF3E', '\uD83E\uDD89'] };\n  function crestHtml() {\n    var d = D(), c = d.crest || { shape: 'shield', col: CREST.cols[0], em: CREST.ems[0], motto: '' };\n    var EMS = CREST.ems.slice(); Object.keys(d.owned || {}).forEach(function (k) { var m = /emblem (.+)$/.exec(d.owned[k]); if (m && EMS.indexOf(m[1]) < 0) EMS.push(m[1]); });\n    var named = Object.keys(d.press).filter(function (k) { return k.indexOf('cv:') === 0; }).map(function (k) { return d.press[k].t; });\n    return '<section class=\"g65-crest\"><h3>Family crest</h3><div class=\"g65-crest__row\"><div class=\"g65-crest__pv\" style=\"--c:' + c.col + '\" data-shape=\"' + c.shape + '\"><span>' + c.em + '</span></div><div>' +\n      '<p>Shape: ' + CREST.shapes.map(function (s) { return '<button type=\"button\" class=\"g65-chipbtn' + (c.shape === s[0] ? ' is-on' : '') + '\" data-cr=\"shape|' + s[0] + '\">' + s[1] + '</button>'; }).join('') + '</p>' +\n      '<p>Color: ' + CREST.cols.map(function (x) { return '<button type=\"button\" class=\"g65-swatch' + (c.col === x ? ' is-on' : '') + '\" style=\"background:' + x + '\" aria-label=\"Color\" data-cr=\"col|' + x + '\"></button>'; }).join('') + '</p>' +\n      '<p>Emblem: ' + EMS.map(function (x) { return '<button type=\"button\" class=\"g65-chipbtn' + (c.em === x ? ' is-on' : '') + '\" data-cr=\"em|' + x + '\">' + x + '</button>'; }).join('') + '</p>' +\n      '<label class=\"g65-field\">Family motto<span><input maxlength=\"30\" data-motto value=\"' + esc(c.motto || '') + '\" placeholder=\"Rooted in kindness\"><button type=\"button\" class=\"g65-btn g65-btn--sm\" data-cr=\"motto|\">Save</button></span></label></div></div>' +\n      '<h3>Heritage mother plants</h3><p class=\"g65-muted\">Choose up to 3 lavenders you\u2019ve made a Select lot of. Their lots grade a little higher, and they carry on with your family if you pass the farm on.</p>' +\n      (named.length ? '<p>' + named.map(function (n) { var on = d.mothers.indexOf(n) >= 0; return '<button type=\"button\" class=\"g65-chipbtn' + (on ? ' is-on' : '') + '\" data-mother=\"' + esc(n) + '\">' + (on ? '\u2714 ' : '') + esc(n) + '</button>'; }).join('') + '</p>' : '<p>Make a Distiller\u2019s Select lot to choose your first mother plant.</p>') +\n      (d.cv.length ? '<h3>Bred on your farm</h3><ul class=\"g65-goods\">' + d.cv.map(function (x, i) { return '<li><span><b>\u2018' + esc(x.name) + '\u2019</b><small>' + esc(x.col) + ', ' + esc(x.scent) + '</small></span><button type=\"button\" class=\"g65-btn g65-btn--sm\" data-plantcv=\"' + i + '\">Plant it \u00B7 40 coins</button></li>'; }).join('') + '</ul>' : '') + '</section>';\n  }\n  function crestClick(e, rerender) {\n    var d = D(), pc = e.target.closest('[data-plantcv]');\n    if (pc) { var x = d.cv[+pc.getAttribute('data-plantcv')], s = st(), c = x && ((x.pid && cultivars().filter(function (q) { return q.id === x.pid; })[0]) || cvFind('Hidcote')); if (!x || !c) return; if ((+s.coins || 0) < 40) { pc.textContent = 'Not enough coins yet'; return; } if (plantIn(c, x.name, 'Bred on your farm, from your own chance seedling.') >= 0) coins(-40, 'Planted \\u2018' + x.name + '\\u2019', 'pcv-' + hex(4)); return rerender(); }\n    var b = e.target.closest('[data-cr],[data-mother]'); if (!b) return;\n    if (b.hasAttribute('data-mother')) { var n = b.getAttribute('data-mother'), i = d.mothers.indexOf(n); if (i >= 0) d.mothers.splice(i, 1); else if (d.mothers.length < 3) d.mothers.push(n); keepHeritage(d); save(); return rerender(); }\n    var kv = b.getAttribute('data-cr').split('|'); d.crest = d.crest || { shape: 'shield', col: CREST.cols[0], em: CREST.ems[0], motto: '' };\n    if (kv[0] === 'motto') d.crest.motto = String((document.querySelector('[data-motto]') || {}).value || '').slice(0, 30); else d.crest[kv[0]] = kv[1];\n    keepHeritage(d); save(); rerender();\n  }\n\n  /* ================= Your rows: lavender ages like the real thing, and heritage carries on ================= */\n  function gen() { try { return +(window.GLLFPrestige && GLLFPrestige.info && GLLFPrestige.info().gen) || 1; } catch (e) { return 1; } }\n  function rowsHtml() {\n    var s = st(), d = D(), P = (s && s.plants) || [], young = 0, prime = 0, woody = [];\n    P.forEach(function (p, i) { if (!p) return; var w = +p.woodiness || 0; if (w > 45) woody.push(i); else if (w >= 15) prime++; else young++; });\n    var n = young + prime + woody.length;\n    return '<section class=\"g65-rows\"><h3>\uD83C\uDF3F Your rows' + (gen() > 1 ? ' <small>Generation ' + gen() + '</small>' : '') + '</h3>' +\n      (n ? '<ul class=\"g65-ystats\"><li><b>' + young + '</b> young</li><li><b>' + prime + '</b> in their prime</li><li><b>' + woody.length + '</b> getting woody</li></ul>' +\n        '<p class=\"g65-muted\">Like real lavender, plants turn woody as the years go by, and woody plants make lower-grade lots. Pruning (at the Craft bench) slows it down. A woody plant of one of your heritage mother plants can be renewed with a fresh cutting: it starts young again, so it blooms later, but it grows strong.</p>' +\n        (woody.length ? '<ul class=\"g65-goods\">' + woody.slice(0, 8).map(function (i) { var p = P[i], ok = d.mothers.indexOf(p.name) >= 0;\n          return '<li><span><b>Plot ' + (i + 1) + ': ' + esc(p.name) + '</b><small>' + Math.round(+p.woodiness || 0) + '% woody</small></span>' + (ok ? '<button type=\"button\" class=\"g65-btn g65-btn--sm\" data-renew=\"' + i + '\">Renew from cutting \u00B7 60 coins</button>' : '<small>Make it a heritage mother plant to renew it</small>') + '</li>'; }).join('') + '</ul>' : '')\n        : '<p>Plant some lavender and you\u2019ll see your rows grow up here.</p>') + '</section>';\n  }\n  function renew(i) {\n    var s = st(), d = D(), p = s && s.plants && s.plants[i]; if (!p || d.mothers.indexOf(p.name) < 0 || (+s.coins || 0) < 60) return;\n    coins(-60, 'Renewed plot ' + (i + 1) + ' from a heritage cutting', 'renew-' + i + '-' + absWeek());\n    p.woodiness = 0; p.stage = Math.min(+p.stage || 1, 2); p.health = Math.max(+p.health || 70, 85); p.age = 0; if (p.calendarAge != null) p.calendarAge = 0;\n    xp(8); save(); redraw(); ding(880);\n    toast('<b>\uD83C\uDF31 Plot ' + (i + 1) + ' renewed</b><span>A fresh cutting of your heritage ' + esc(p.name) + ' is in the ground.</span>', 6000);\n  }\n  function heritageCheck() {\n    var d = D(); if (!d) return; var g = gen(), k = null; try { k = JSON.parse(lsGet(KEEP) || 'null'); } catch (e) {}\n    var last = +d.gen650 || +(k && k.gen) || g;\n    if (g > last && (d.mothers.length || d.crest)) {\n      var bonus = 150 * d.mothers.length; if (bonus) coins(bonus, 'Heritage plants passed down', 'heritage-' + g);\n      d.mothers.forEach(function (n) { press('her:' + n.toLowerCase().replace(/[^a-z0-9]+/g, '-'), { t: n + ' (heritage)', kind: 'english', from: 'Passed down from generation ' + last }); });\n      toast('<b>\uD83C\uDFE1 Your heritage came with you</b><span>' + (d.mothers.length ? esc(d.mothers.join(', ')) + ' came along as mother plants' + (bonus ? ', with ' + fmt(bonus) + ' coins of cuttings' : '') + '. ' : '') + (d.crest ? 'Your family crest hangs over the new farm.' : '') + '</span>', 10000);\n    }\n    if (+d.gen650 !== g) { d.gen650 = g; keepHeritage(d); save(); }\n  }\n\n  /* ================= The Lavender Calendar (a fair season pass that follows the real lavender year) ================= */\n  var PTS = { lots: 1, premiumplus: 2, select: 3, wants: 4, chapter: 3, distill: 2, bundle: 2, wand: 2, prune: 1, bloomhour: 6, partner: 3, gold: 5, sets: 8 };\n  function realSeason() { var m = detroit().m; return m >= 3 && m <= 5 ? ['spring', 'Planting season'] : m >= 6 && m <= 8 ? ['summer', 'Bloom and harvest'] : m >= 9 && m <= 11 ? ['fall', 'Distilling season'] : ['winter', 'Planning season']; }\n  function passId() { var t = detroit(), rs = realSeason()[0]; return (rs === 'winter' && t.m <= 2 ? t.y - 1 : t.y) + '-' + rs; }\n  function passPts(k, n) { var d = D(); if (!d || !PTS[k]) return; var id = passId(); if (d.pass.id !== id) d.pass = { id: id, pts: 0, got: {} }; d.pass.pts = (+d.pass.pts || 0) + PTS[k] * (n || 1); }\n  var TIERS = [5, 12, 20, 30, 42, 55, 70, 86, 104, 125];\n  var FREE = ['100 coins', 'A Bloom Card frame', '200 coins', 'The title \u201CRow Walker\u201D', '300 coins', 'A card packet', '400 coins', 'The title \u201CStill Keeper\u201D', '600 coins', 'The title \u201CMaster of the Season\u201D'];\n  var SUPP = ['A golden crest border', 'The emblem \uD83C\uDF3B', 'A lavender-field card background', 'The title \u201CFriend of the Farm\u201D', 'The emblem \uD83E\uDDFA', 'A twilight card background', 'The emblem \uD83E\uDD8B', 'The title \u201CHeart of the Harvest\u201D', 'A pressed-flower card border', 'The title \u201CKeeper of the Lavender Year\u201D'];\n  function supporter() { try { return !!(window.GLLFOrders && (GLLFOrders.trophy() || GLLFOrders.count() > 0)); } catch (e) { return false; } }\n  function passHtml() {\n    var d = D(); passPts('x', 0); if (d.pass.id !== passId()) d.pass = { id: passId(), pts: 0, got: {} };\n    var pts = +d.pass.pts || 0, sup = supporter(), rs = realSeason();\n    return '<section class=\"g65-pass\"><h3>\uD83D\uDCC5 The Lavender Calendar \u00B7 ' + esc(rs[1]) + '</h3><p class=\"g65-muted\">It follows the real lavender year and starts fresh each season. Whatever you earn is yours to keep. The Supporter track is cosmetic only and opens for anyone who has shopped at the real farm.</p>' +\n      '<div class=\"g65-bar\"><i style=\"width:' + Math.min(100, pts / TIERS[TIERS.length - 1] * 100) + '%\"></i></div><p>' + pts + ' season points</p><ol class=\"g65-tiers\">' +\n      TIERS.map(function (need, i) { var ok = pts >= need, gf = d.pass.got['f' + i], gs = d.pass.got['s' + i];\n        return '<li class=\"' + (ok ? 'is-ok' : '') + '\"><em>' + need + '</em><span>' + esc(FREE[i]) + (ok ? gf ? ' \u2714' : ' <button type=\"button\" class=\"g65-btn g65-btn--sm\" data-tier=\"f' + i + '\">Claim</button>' : '') + '</span><span class=\"g65-supp\">' + esc(SUPP[i]) + (sup && ok ? gs ? ' \u2714' : ' <button type=\"button\" class=\"g65-btn g65-btn--sm g65-btn--soft\" data-tier=\"s' + i + '\">Claim</button>' : sup ? '' : ' \uD83D\uDD12') + '</span></li>'; }).join('') + '</ol></section>';\n  }\n  function claimTier(k) {\n    var d = D(), i = +k.slice(1), pts = +d.pass.pts || 0; if (pts < TIERS[i] || d.pass.got[k]) return; if (k[0] === 's' && !supporter()) return;\n    d.pass.got[k] = Date.now(); d.owned = d.owned || {};\n    var R = k[0] === 'f' ? FREE[i] : SUPP[i], m = /^(\\d+) coins$/.exec(R), t = /title \u201C(.+)\u201D/.exec(R), em = /emblem (.+)$/.exec(R);\n    if (m) coins(+m[1], 'Lavender Calendar', 'pass-' + d.pass.id + k); else if (/card packet/.test(R)) { try { GLLFCards.packet(1, 'Lavender Calendar'); } catch (e) {} }\n    if (t) { d.titles = d.titles || []; if (d.titles.indexOf(t[1]) < 0) d.titles.push(t[1]); d.title = t[1]; }\n    d.owned[k] = R; save(); ding(988);\n  }\n\n  /* ================= Your Lavender Year (a December recap with a persona and a percentile) ================= */\n  function yearData() {\n    var d = D(), c = (d.yr && d.yr.c) || {};\n    var stats = { lots: +c.lots || 0, select: +c.select || 0, wants: +c.wants || 0, chapter: +c.chapter || 0, crafts: (+c.distill || 0) + (+c.bundle || 0) + (+c.wand || 0), partner: +c.partner || 0, stand: (+c.stand || 0) + (+c.bought || 0), walk: +c.walk3d || 0, share: +c.share || 0, bloom: +c.bloomhour || 0, water: +c.water || 0 };\n    var P = [['The Distiller', stats.select * 4 + stats.crafts * 2, 'You chase the perfect morning cut and the cleanest oil.'], ['The Market Maker', stats.stand * 4 + (+c.sell || 0), 'Your farm-gate stand is the talk of the Gazette.'],\n      ['The Steward', stats.water / 5 + (+c.prune || 0) * 3, 'Your plants have never wanted for water or care.'], ['The Good Neighbor', stats.wants * 2 + stats.partner * 4 + stats.share * 2, 'You show up for people, and they notice.'], ['The Explorer', stats.walk * 3 + stats.chapter * 3 + stats.bloom * 2, 'You walked every row and read every page.']];\n    P.sort(function (a, b) { return b[1] - a[1]; });\n    var score = stats.lots * 3 + stats.select * 8 + stats.wants * 5 + stats.chapter * 4 + stats.crafts * 3 + stats.partner * 5 + stats.stand * 3 + stats.walk * 2 + stats.bloom * 6;\n    return { s: stats, persona: P[0], score: score, y: detroit().y };\n  }\n  function yearTab(b) {\n    var Y = yearData(), dec = detroit().m === 12 || detroit().m === 1;\n    b.innerHTML = '<section class=\"g65-year\"><h3>\uD83C\uDF84 ' + (dec ? 'Your Lavender Year is ready' : 'Your Lavender Year so far') + '</h3><div class=\"g65-persona\"><b>' + esc(Y.persona[0]) + '</b><p>' + esc(Y.persona[2]) + '</p><p data-pct class=\"g65-muted\">Working out how you compare\u2026</p></div>' +\n      '<ul class=\"g65-ystats\"><li><b>' + fmt(Y.s.lots) + '</b> harvest lots</li><li><b>' + fmt(Y.s.select) + '</b> Distiller\u2019s Select</li><li><b>' + fmt(Y.s.crafts) + '</b> crafts</li><li><b>' + fmt(Y.s.wants) + '</b> Weekly Wants</li><li><b>' + fmt(Y.s.chapter) + '</b> story chapters</li><li><b>' + fmt(Y.s.partner) + '</b> partner cuttings</li></ul>' +\n      '<div class=\"g65-actions\"><button type=\"button\" class=\"g65-btn\" data-a=\"share\">Share my Lavender Year</button></div></section>' + passHtml() + rowsHtml() + crestHtml() + challengeHtml();\n    apiMe('yearput', { y: Y.y, score: Y.score }).then(function (r) { var p = b.querySelector('[data-pct]'); if (p) p.textContent = r[0] !== 200 ? '' : r[1].n > 1 ? 'You grew more than ' + r[1].pct + '% of growers this year.' : 'You\u2019re one of the first growers of the year!'; b.__pct = r[0] === 200 ? r[1].pct : null; });\n    sachetForm(b.querySelector('[data-sachet]'));\n    b.onclick = function (e) {\n      if (e.target.closest('[data-a=\"share\"]')) shareYear(Y, b.__pct);\n      var t = e.target.closest('[data-tier]'); if (t) { claimTier(t.getAttribute('data-tier')); yearTab(b); }\n      var rn = e.target.closest('[data-renew]'); if (rn) { renew(+rn.getAttribute('data-renew')); yearTab(b); }\n      if (e.target.closest('[data-cr],[data-mother],[data-plantcv]')) crestClick(e, function () { yearTab(b); });\n    };\n  }\n  function shareYear(Y, pct) {\n    var c = canvas(1200, 630), x = c.getContext('2d'), d = D();\n    frame(x, 'My Lavender Year ' + Y.y, farmName() + (d.title ? ' \u00B7 ' + d.title : ''));\n    x.fillStyle = '#5a3c86'; x.font = '800 46px Lato, system-ui, sans-serif'; x.fillText(Y.persona[0], 60, 230); x.fillStyle = '#3b2160'; x.font = '600 28px Lato, system-ui, sans-serif'; x.fillText(Y.persona[2], 60, 275);\n    if (pct != null) { x.font = '700 30px Lato, system-ui, sans-serif'; x.fillText('Grew more than ' + pct + '% of growers', 60, 330); }\n    [[Y.s.lots, 'harvest lots'], [Y.s.select, 'Select lots'], [Y.s.crafts, 'crafts'], [Y.s.wants, 'Weekly Wants']].forEach(function (r, i) { x.fillStyle = '#5a3c86'; x.font = '800 50px Lato, system-ui, sans-serif'; x.fillText(fmt(r[0]), 60 + i * 270, 440); x.fillStyle = '#3b2160'; x.font = '600 24px Lato, system-ui, sans-serif'; x.fillText(r[1], 60 + i * 270, 475); });\n    if (d.cv[0]) { x.font = '700 26px Lato, system-ui, sans-serif'; x.fillText('Bred here: \u2018' + d.cv[0].name + '\u2019', 60, 530); }\n    shareCard(c, 'my-lavender-year.png', 'My Lavender Year on the farm.', 'year');\n  }\n\n  /* ================= Streamer mode and settings ================= */\n  function applyStream() { var on = lsGet('g650stream') === '1'; document.documentElement.classList.toggle('g65-stream', on); }\n  function settingsTab(b) {\n    var d = D();\n    b.innerHTML = '<section class=\"g65-set1\"><h3>Season challenge</h3><p class=\"g65-muted\">Choose how real your seasons feel. Setbacks never destroy a plant, and each one teaches a real lesson.</p>' +\n      [['gentle', 'Gentle Grower', 'No setbacks. Calm and cozy.'], ['real', 'Real Season', 'Now and then: deer, a late frost or root rot after wet weeks.'], ['hard', 'Hard Year', 'Setbacks come more often and hit harder.']].map(function (o) { return '<label class=\"g65-radio\"><input type=\"radio\" name=\"g65diff\" value=\"' + o[0] + '\"' + (d.diff === o[0] ? ' checked' : '') + '><span><b>' + o[1] + '</b><small>' + o[2] + '</small></span></label>'; }).join('') +\n      '<p>Protection you own: ' + (Object.keys(d.prot).length ? Object.keys(d.prot).map(function (k) { return { fence: 'deer fence', rows: 'raised rows', cloth: 'frost cloth' }[k]; }).join(', ') : 'none yet') + '.</p></section>' +\n      '<section class=\"g65-set1\"><h3>Streamer mode</h3><label class=\"g65-radio\"><input type=\"checkbox\" data-stream' + (lsGet('g650stream') === '1' ? ' checked' : '') + '><span><b>Hide names while I stream or share my screen</b><small>Other growers\u2019 farm names, partner names and your account details are hidden.</small></span></label></section>' +\n      '<section class=\"g65-set1\"><h3>Garden club kit</h3><p>Bring your garden club or family along. Share a card with a link to the game.</p><div class=\"g65-actions\"><button type=\"button\" class=\"g65-btn g65-btn--soft\" data-club>Make a garden club invite card</button><button type=\"button\" class=\"g65-btn g65-btn--soft\" data-pc>My season postcard</button></div></section>';\n    b.onchange = function (e) { if (e.target.name === 'g65diff') { d.diff = e.target.value; save(); } if (e.target.hasAttribute('data-stream')) { lsSet('g650stream', e.target.checked ? '1' : '0'); applyStream(); } };\n    b.onclick = function (e) { if (e.target.closest('[data-club]')) clubCard(); if (e.target.closest('[data-pc]')) postcard(); };\n  }\n  function clubCard() {\n    var c = canvas(1200, 630), x = c.getContext('2d'); frame(x, 'Join us on the lavender farm', 'A free farm game from a real Michigan lavender farm');\n    x.fillStyle = '#3b2160'; x.font = '600 32px Lato, system-ui, sans-serif';\n    ['Grow real lavender varieties, season by season', 'Harvest on Saturday mornings with the real farm', 'Share cuttings and distill with a partner', 'No downloads. Plays in your browser.'].forEach(function (t, i) { x.fillText('\u2022 ' + t, 60, 240 + i * 60); });\n    shareCard(c, 'lavender-farm-invite.png', 'Come grow lavender with me.', 'bloom');\n  }\n\n  /* ================= The hub: \u201CThis week on the farm\u201D ================= */\n  var TABS = [['week', '\uD83C\uDF3F This week'], ['lots', '\uD83E\uDDFA Harvest lots'], ['herb', '\uD83D\uDDBC\uFE0F Herbarium'], ['stand', '\uD83C\uDFEA Stand & Gazette'], ['craft', '\u2697\uFE0F Craft bench'], ['year', '\uD83D\uDCC5 Your year'], ['set', '\u2699\uFE0F Settings']];\n  function hub(tab) {\n    tab = tab || 'week';\n    openSheet('This week on the farm', function (b) {\n      var nav = el('div', 'g65-tabs'); nav.setAttribute('role', 'tablist');\n      TABS.forEach(function (t) { var x = el('button', 'g65-tab' + (t[0] === tab ? ' is-on' : ''), t[1]); x.type = 'button'; x.setAttribute('role', 'tab'); x.setAttribute('aria-selected', t[0] === tab ? 'true' : 'false'); x.setAttribute('data-tab', t[0]); nav.appendChild(x); });\n      var pane = el('div', 'g65-pane'); b.appendChild(nav); b.appendChild(pane);\n      nav.addEventListener('click', function (e) { var x = e.target.closest('[data-tab]'); if (!x) return; nav.querySelectorAll('.g65-tab').forEach(function (y) { y.classList.toggle('is-on', y === x); y.setAttribute('aria-selected', y === x ? 'true' : 'false'); }); show(x.getAttribute('data-tab')); });\n      function show(k) {\n        pane.onclick = null; pane.onchange = null; pane.innerHTML = '';\n        if (k === 'week') weekTab(pane); else if (k === 'lots') lotsTab(pane); else if (k === 'herb') { pane.innerHTML = herbHtml(); pane.onclick = function (e) { var c = e.target.closest('[data-ch]'); if (c) readChapter(+c.getAttribute('data-ch')); }; }\n        else if (k === 'stand') standTab(pane); else if (k === 'craft') craftTab(pane); else if (k === 'year') yearTab(pane); else settingsTab(pane);\n        try { pane.scrollTop = 0; } catch (e) {}\n      }\n      show(tab);\n    }, { wide: true });\n  }\n  function weekTab(p) {\n    var d = D(); weekWants();\n    p.innerHTML = '<div data-bh></div><section><h3>\uD83D\uDCDC The Lost Seed Ledger</h3>' + (d.ch.n ? '<p>Chapter ' + d.ch.n + ' of ' + STORY.length + ': <b>' + esc(STORY[d.ch.n - 1].t) + '</b>' + (d.ch['r' + d.ch.n] ? '' : ' <span class=\"g65-new\">New</span>') + '</p><div class=\"g65-actions\"><button type=\"button\" class=\"g65-btn\" data-read=\"' + d.ch.n + '\">Read chapter ' + d.ch.n + '</button></div>' : '<p>The first chapter arrives the next time you advance the week.</p>') + '</section>' +\n      '<section><h3>\uD83D\uDC8C Weekly Wants</h3><p class=\"g65-muted\">Your friends on the farm each want a few things this week. Hints arrive on your Farm Phone.</p>' + wantsHtml() + '</section><div data-ph></div>' +\n      '<section><h3>\uD83D\uDCE4 Share</h3><div class=\"g65-actions\"><button type=\"button\" class=\"g65-btn g65-btn--soft\" data-sh=\"bloom\">My Bloom Card</button><button type=\"button\" class=\"g65-btn g65-btn--soft\" data-sh=\"pc\">My season postcard</button></div></section>';\n    bloomCard(p.querySelector('[data-bh]')); phCard(p.querySelector('[data-ph]'));\n    p.onclick = function (e) {\n      var g = e.target.closest('[data-give]'); if (g) { var a = g.getAttribute('data-give').split('|'); giveWant(a[0], +a[1]); weekTab(p); return; }\n      var sc = e.target.closest('[data-scene]'); if (sc) { var q = sc.getAttribute('data-scene').split('|'); scene(q[0], +q[1]); return; }\n      var r = e.target.closest('[data-read]'); if (r) { readChapter(+r.getAttribute('data-read')); return; }\n      var sh = e.target.closest('[data-sh]'); if (sh) { if (sh.getAttribute('data-sh') === 'bloom') shareBloom(); else postcard(); }\n    };\n  }\n  function lotsTab(p) {\n    var d = D(), L = d.lots.filter(function (l) { return !l.sold; });\n    p.innerHTML = '<p class=\"g65-muted\">Every harvest becomes a graded lot. The grade comes from the weather that day, the time of the cut and how open the buds were. Best for oil: a morning cut on a dry, sunny day, with about half the buds open.</p>' +\n      (L.length ? '<div class=\"g65-lots\">' + L.slice(0, 24).map(function (l) { var G = GRADES[l.g]; return '<button type=\"button\" class=\"g65-lotbtn\" style=\"--g:' + G.col + '\" data-lot=\"' + esc(l.id) + '\"><b>' + G.ic + ' #' + l.n + ' ' + esc(l.cv) + '</b><small>' + esc(G.name) + ' \u00B7 ' + clock(l.t) + (d.listed[l.id] ? ' \u00B7 on your stand' : '') + '</small></button>'; }).join('') + '</div>' : '<p>No lots yet. Harvest in the Lavender Field and your first lot appears here.</p>');\n    p.onclick = function (e) { var b = e.target.closest('[data-lot]'); if (b) openLot(b.getAttribute('data-lot')); };\n  }\n\n  /* entry points: a chip on the field and a chip on the map, plus the Bloom Hour ribbon while it\u2019s live */\n  function badgeCount() { var d = D(); if (!d) return 0; var n = 0, W = d.want && d.want.w === weekId() ? d.want : null;\n    if (W) Object.keys(W.list).forEach(function (who) { W.list[who].forEach(function (it) { if (!it.done && wantHave(it) >= it.n) n++; }); });\n    if (d.ch.n && !d.ch['r' + d.ch.n]) n++; if (bloomWeekend() && !(d.bh && d.bh.w === weekId())) n++; return n; }\n  function chips() {\n    var r = root(); if (!r) return; var n = badgeCount(), lbl = '\uD83C\uDF3F This week' + (n ? ' <em>' + n + '</em>' : '');\n    [r.querySelector('.lfg-view[data-field-workspace] .lfg-field-head-actions'), r.querySelector('#lfg-view-world .lfg-page-head')].forEach(function (host) {\n      if (!host) return; var c = host.querySelector(':scope > .g65-chip');\n      if (!c) { c = el('button', 'g65-chip'); c.type = 'button'; c.setAttribute('aria-label', 'This week on the farm'); c.addEventListener('click', function () { hub('week'); }); host.appendChild(c); }\n      if (c.__h !== lbl) { c.innerHTML = lbl; c.__h = lbl; }\n    });\n    var v = r.querySelector('section.lfg-view.active'), rib = r.querySelector('.g65-live');\n    if (bloomHourLive() && v) { if (!rib || rib.parentNode !== v) { if (rib) rib.remove(); rib = el('button', 'g65-live ghud-gf-top', '\uD83C\uDF38 <b>Bloom Hour is on!</b> Better grades and double coins on harvests until 11 AM (farm time). <u>See this week</u>'); rib.type = 'button'; rib.addEventListener('click', function () { hub('week'); }); v.insertBefore(rib, v.firstChild); } }\n    else if (rib) rib.remove();\n  }\n\n  /* ================= keeping count (water, plant, sell) and listening for the game\u2019s own moments ================= */\n  var lastRec = null;\n  function trackRecords(s) {\n    var R = s.records || {}, cur = { water: +R.watered || 0, plant: +R.planted || 0, sell: (+R.markets || 0) + (+R.products || 0) };\n    if (lastRec) Object.keys(cur).forEach(function (k) { var dd = cur[k] - lastRec[k]; if (dd > 0 && dd < 500) bump(k, dd); });\n    lastRec = cur;\n  }\n  (function listen() {\n    var T = window.GLLFTel; if (!T || !T.hit) return setTimeout(listen, 1000);\n    if (T.__g650) return; T.__g650 = 1; var orig = T.hit;\n    T.hit = function (ev, arg) { try { if (ev === 'day_done') bump('today'); if (ev === 'open_3d') bump('walk3d'); } catch (e) {} return orig.apply(this, arguments); };\n  })();\n\n  /* ================= v654 \u00B7 an easier start ================= \n     Hay Day hands you planted fields and Stardew a cleared plot and seeds: the first thing a new grower does should work.\n     1. The Lavender Field always has a row on the Farm Map, so it never locks.\n     2. A new farm opens in April, before the outdoor planting window. Its first three plants are hardened-off starter plugs\n        from the farm's nursery: tap Plant and they go in safely, frost or not. After that the real season rules apply. */\n  var PLUGS = 3;\n  function starter() { var d = D(); if (!d) return null; if (!d.starter || typeof d.starter !== 'object') d.starter = { row: 0, plugs: 0 }; return d.starter; }\n  function ensureRow() {\n    var s = st(), w = s && s.world; if (!w || !Array.isArray(w.cells) || !w.cells.length) return;\n    for (var i = 0; i < w.cells.length; i++) if (w.cells[i] && w.cells[i].type === 'row') return;\n    var at = -1; for (var j = 0; j < w.cells.length; j++) if (w.cells[j] && w.cells[j].type === 'empty') { at = j; break; }\n    if (at < 0) return;\n    var cv = cvFind('Hidcote') || cultivars()[0], id = cv ? cv.id : '', c = w.cells[at];\n    c.type = 'row'; c.health = 100; c.age = 0; c.plannedCrop = id; c.crop = id; c.fieldPlotRefs = [];\n    w.placed = (+w.placed || 0) + 1;\n    var sr = starter(); save(); redraw();\n    if (sr && !sr.row) { sr.row = 1; save(); toast('<b>\uD83C\uDF3E Your Lavender Field row is ready</b><span>We laid out a starter row on your Farm Map, free, so your Lavender Field is always open.</span>', 7000); }\n  }\n  function newFarm(s) { return s && (+s.year || 1) === 1 && (+s.season || 0) === 0; }\n  function plugPlant(plot) {\n    var s = st(), sr = starter(); if (!s || !sr || !newFarm(s) || sr.plugs >= PLUGS || !window.GLLFPlantAnyway || !GLLFPlantAnyway.go) return false;\n    if (!GLLFPlantAnyway.why()) return false;\n    var ok = false; try { ok = GLLFPlantAnyway.go(plot); } catch (e) { ok = false; }\n    if (!ok) return false;\n    s = st(); var pl = s && s.plants && s.plants[plot]; if (!pl) return false;\n    delete pl.gllfRisk; pl.health = Math.max(+pl.health || 0, 92); sr.plugs++; save(); redraw();\n    var left = PLUGS - sr.plugs;\n    say('\uD83C\uDF31 ' + (pl.name || 'Your lavender') + ' went in as a hardened-off starter plug, safe from this frost. ' + (left > 0 ? left + ' starter plug' + (left === 1 ? '' : 's') + ' left.' : 'That was your last starter plug: next plants go in when the planting window opens, or in the greenhouse.'));\n    return true;\n  }\n  var plugHooked = false;\n  function hookPlugs() {\n    var r = root(); if (!r || plugHooked) return; plugHooked = true;\n    r.addEventListener('lfg:action-blocked', function (ev) {\n      var dt = ev.detail || {}; if (dt.action !== 'plant' || !dt.anchor || !dt.anchor.getAttribute) return;\n      var plot = +dt.anchor.getAttribute('data-plot'); if (!isFinite(plot)) return;\n      setTimeout(function () {\n        if (!plugPlant(plot)) return;\n        /* tidy away the \"didn't run\" alert and the risk offer for the plot that is now planted */\n        [0, 300, 700].forEach(function (ms) { setTimeout(function () {\n          document.querySelectorAll('.gpa').forEach(function (g) { g.remove(); });\n          var c = document.querySelector('.lfg-action-coach-v51:not([hidden]) [data-action-coach-close]'); if (c) try { c.click(); } catch (e) {}\n        }, ms); });\n      }, 40);\n    });\n  }\n\n  /* ================= boot ================= */\n  var hcN = 0;\n  function tick() {\n    var s = st(); if (!s) return; D();\n    try { watchHarvest(); } catch (e) {}\n    try { watchWeek(); } catch (e) {}\n    try { chips(); } catch (e) {}\n    try { nursery(); } catch (e) {}\n    try { ensureRow(); hookPlugs(); } catch (e) {}\n    if (++hcN % 10 === 1) { try { heritageCheck(); } catch (e) {} }\n  }\n  applyStream();\n  (function boot(n) { if (!st()) { if (n < 240) setTimeout(function () { boot(n + 1); }, 500); return; } tick(); goldFromUrl(); setInterval(function () { if (!document.hidden) tick(); }, 1000); })(0);\n\n  window.GLLFSeason650 = { open: hub, lot: openLot, share: shareBloom, postcard: postcard, chapter: readChapter, press: press, bloomLive: bloomHourLive, _d: D };\n})();\n"],
  "mappings": "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",
  "names": ["k", "el", "l", "i", "tick", "grade", "p"]
}
