// asset base: '/' in production (repo served at domain root), overridable for previews
const FS_AB = (typeof window!=='undefined' && window.FS_ASSET_BASE) || '/';
function A(p){ return FS_AB + String(p).replace(/^\/+/,''); }

// fs-data.jsx — content & fixtures for Short's Resort Field Station (SRFS)
// Voice: institutional, plural ("the Steward's Office", "the field crew"), never personal names.

const SITE = { name:"Short\u2019s Resort Field Station", abbr:'SRFS', est:'Est. 2026 · Texas Hill Country' };

// funders — real programs, links, and the specific grants received
const FUNDERS = [
  { k:'USDA \u00b7 NRCS', mark:'nrcs',
    program:'Environmental Quality Incentives Program (EQIP)',
    office:'Lampasas County field office · Texas',
    url:'https://www.nrcs.usda.gov/programs-initiatives/environmental-quality-incentives-program/texas/environmental-quality',
    short:'NRCS EQIP' },
  { k:'Texas Parks & Wildlife', mark:'tpwd',
    program:'Pastures for Upland Birds (PUB)',
    office:'Native grassland restoration cost-share',
    url:'https://tpwd.texas.gov/landwater/land/habitats/post_oak/pub/',
    short:'TPWD · Pastures for Upland Birds' },
];

// seed supplier + the native mix (designed by TPWD under PUB, sourced from Bamert)
const SEED_PROVIDER = { k:'Bamert Seed Company', place:'Muleshoe, Texas', url:'https://bamertseed.com/', note:'Regionally sourced native seed; mix designed by Texas Parks & Wildlife under the PUB program.' };
const SEEDMIX = [
  { t:'G', sp:'Little Bluestem \u201cOK Select\u201d',  lat:'Schizachyrium scoparium', pct:15 },
  { t:'G', sp:'Big Bluestem \u201cEarl\u201d',          lat:'Andropogon gerardii',    pct:10 },
  { t:'G', sp:'Switchgrass \u201cBlackwell\u201d',      lat:'Panicum virgatum',       pct:10 },
  { t:'G', sp:'Indiangrass \u201cLometa\u201d',         lat:'Sorghastrum nutans',     pct:10 },
  { t:'F', sp:'Illinois Bundleflower \u201cSabine\u201d', lat:'Desmanthus illinoensis', pct:6 },
  { t:'G', sp:'Sideoats Grama \u201cEl Reno\u201d',     lat:'Bouteloua curtipendula', pct:5 },
  { t:'F', sp:'American Basketflower',                  lat:'Centaurea americana',    pct:5 },
  { t:'F', sp:'Engelmann Daisy \u201cEldorado\u201d',   lat:'Engelmannia peristenia', pct:5 },
  { t:'F', sp:'Maximilian Sunflower',                   lat:'Helianthus maximiliani', pct:5 },
  { t:'F', sp:'Dotted Gayfeather',                      lat:'Liatris punctata',       pct:5 },
  { t:'F', sp:'Blackeyed Susan',                        lat:'Rudbeckia hirta',        pct:5 },
  { t:'G', sp:'Eastern Gamagrass \u201cPete\u201d',     lat:'Tripsacum dactyloides',  pct:5 },
  { t:'G', sp:'Buffalograss \u201cTexoka\u201d',        lat:'Bouteloua dactyloides',  pct:2 },
  { t:'G', sp:'Canada Wildrye \u201cLavaca\u201d',      lat:'Elymus canadensis',      pct:2 },
  { t:'G', sp:'Virginia Wildrye',                       lat:'Elymus virginicus',      pct:2 },
  { t:'G', sp:'Vine Mesquite',                          lat:'Panicum obtusum',        pct:2 },
  { t:'G', sp:'White Tridens \u201cGuadalupe\u201d',    lat:'Tridens albescens',      pct:2 },
  { t:'F', sp:'Mexican Hat \u201cVNS\u201d',            lat:'Ratibida columnifera',   pct:2 },
  { t:'F', sp:'Purple Prairie Clover \u201cCuero\u201d', lat:'Dalea purpurea',        pct:1 },
  { t:'F', sp:'Prairie Tea',                        lat:'Croton monanthogynus',   pct:1 },
];

// section registry (nav + frontispiece tiles)
const SECTIONS = [
  { id:'journal', no:'01', title:'Field Journal', plate:'assets/journal/j005-last-bales.jpg', platepos:'center 58%', blurb:'Dispatches from the restoration — burndowns and plantings, the instruments we build, the grants that carry it, and how the place came to be.' },
  { id:'land',    no:'02', title:'The Land',      plate:'assets/hayfield-2026.jpg', platepos:'center 62%', blurb:'Seven restoration sections across the tract, mapped from the air along the Lampasas.' },
  { id:'ii',      no:'03', title:'Instruments & Infrastructure', plate:'assets/journal/j007-soil-kit.jpg', platepos:'center 58%', blurb:'The things we build to do the work — from the propagation bench to the bioacoustic listening node — and the open software that runs them.' },
  { id:'library', no:'04', title:'R&D Library',   plate:'assets/seedmix/little-bluestem.jpg', platepos:'center 50%', blurb:'A credited reading list for Central Texas native propagation, and our own species notes.' },
  { id:'about',   no:'05', title:'About',         plate:'assets/journal/j001-resort-sign.jpg', platepos:'center 52%', blurb:'The property, the institution behind it and the partners who support the work.' },
];

// ---- the departments: one blurb per seal (shown on the Departments page) ----
const DEPT_PROFILES = [
  { key:'steward_star',
    blurb:'The front office. The Steward’s Office keeps the master record — grants, agreements, budgets, this journal — and decides what the station takes on next. Everything else reports through it, and everything we publish goes out under its seal.' },
  { key:'forestry_liveoak_bold',
    blurb:'The woody side of the restoration — the shelterbelt, the mottes, the river-edge plantings, and the propagation bench that feeds them. It runs seed collection and cuttings, raises the stock, and will be the one holding the drip torch when we bring prescribed fire back as a management tool.' },
  { key:'water_wavesbolt',
    blurb:'Everything that flows or charges, on ground that’s never had running water or electricity. The long list is the infrastructure: a water well, a public-utility water connection, and off-grid solar to run the station — plus a small weather station keeping our own record of rain, heat and wind. Until the big pieces land, the daily job is the hard one: getting water where it’s needed through a Central Texas summer.' },
  { key:'wildlife_antlers',
    blurb:'The animals are the whole point, and this is who watches them — birds, deer, pollinators, river life — as the habitat comes back. It runs the trail cameras, the counts, and the AI bird-listening program that IDs species by song around the clock. It also handles the animals that take more than their share, feral pigs first. The scorecard is simple: more quail, more dove, more song in the grass.' },
  { key:'agriculture_sheaf',
    blurb:'Runs the working acres through their long conversion — the standing Tifton hay that still brings in money, the burndown and no-till drilling of the native mix, and the soil record under all of it. Once the prairie’s established, the job shifts to timed grazing and the cut-and-rest rhythm that keeps a grassland honest.' },
  { key:'hospfire_nested',
    blurb:'The cabin and the welcome. It keeps up the buildings and campsites, feeds the crew, runs tours of the restoration, and looks after anyone who comes down to swim, fish, or work a season. The oldest department in spirit — Short’s Resort has been having people over since the sign first went up.' },
];

// ---- species removed from the restoration set, with public correction notes ----
const REMOVED = [
  { slug:'muscadine-grape', name:'Muscadine Grape', latin:'Vitis rotundifolia', date:'2026 · 07 · 27',
    reason:'Removed as out of documented range for the Edwards Plateau. Muscadine is native to East Texas and requires slightly acid soils; this ground is alkaline limestone. NPSOT\u2019s ecoregion listing does not include the Edwards Plateau, and the plate\u2019s own detail photograph was from North Palm Beach, Florida.',
    replacement:'Mustang Grape (Vitis mustangensis) is the correct Hill Country native and is retained in the set.',
    replacementSlug:'mustang-grape' },
  { slug:'monterrey-oak', name:'Monterrey Oak', latin:'Quercus polymorpha', date:'2026 · 07 · 27',
    reason:'Removed as effectively non-native here. The only known wild US population is in Val Verde County, roughly 250 miles southwest; NPSOT\u2019s own treatment calls it \u201cbarely native.\u201d No site-specific habitat argument supported keeping it in a publicly funded native-restoration list.',
    replacement:'The Foundation Canopy is carried by Post Oak, Bur Oak, Live Oak and Cedar Elm.',
    replacementSlug:null },
];

// field-journal sections (news-desk taxonomy, not a blog)
const JOURNAL_CATS = [
  { id:'grounds', t:'Grounds & Restoration', d:'Land work — clearing, burndown, seeding, survey and the plan behind it.' },
  { id:'station', t:'The Station',           d:'The instruments, the funding and how the place came to be.' },
];

// ---- land: the seven restoration sections ----
const LAND = [
  { n:'01', nm:'Western Headwaters Savanna',  c:'#8E9B85', care:'Woody',    ac:'10.87 ac',       ds:'The spring source wedge; light woody cover over restored short grasses.',
    slug:'western-headwaters-savanna', code:'SRFS–HDWTR–01', dept:'Department of Forestry &amp; Fire', deptKey:'forestry_liveoak_bold', img:'s4', phase:['1'],
    sub:'Runoff moderation · infiltration · upland habitat &amp; future grazing',
    spec:[['Soils','SeC — Seawillow clay loam, 3–5% slopes'],['Position','Highest interior upland — sheds water into the drainage corridor'],['Role','Runoff moderation, infiltration, upland-bird habitat, eventual rotational grazing'],['Priority','01 of 07 — the upper throttle on site hydrology'],['Status','Currently 100% Tifton; straightforward — mostly native grasses with a thin oak and pecan planting']],
    why:'This is one of the highest points on the property and it sheds water into the drainage corridor. If water leaves this zone fast, erosion follows. Savanna restoration here slows runoff at the source and sets the tone for everything downslope. Planting native grasses increases infiltration and keeps more water on the property and in the ground. The same dry creek bed that runs through the center of the property also snakes through the neighboring land, and this high point forms the border between the two.',
    character:'Classic Edwards Plateau oak-and-shrub savanna — open and sunlit.' },

  { n:'02', nm:'Western Agricultural Uplands', c:'#F4ECD8', care:'Ag',     ac:'17.16 ac',       ds:'Upland fields being converted to native forage and pollinator margins.',
    slug:'western-agricultural-uplands', code:'SRFS–UPLAND–02', dept:'Department of Agriculture &amp; Grazing', deptKey:'agriculture_sheaf', img:'s7', phase:['1'],
    sub:'Working production &amp; infiltration buffer — stability within the matrix',
    spec:[['Soils','SuB'],['Position','Higher interior bench above the basin and the drainage corridor'],['Role','Agricultural production and infiltration buffer'],['Designation','02 of 07 — remains in working agricultural use'],['Sequence','A good portion converts to native seed in Phase 1; the balance stays in hay']],
    why:'This field sits higher than the floodplain basin and experiences less frequent inundation. It benefits from upstream filtering and does not need wholesale conversion to perform well ecologically. Keeping part of it in production maintains flexibility, holds a small steady income against the cost of the work, and avoids forcing trees into soils where they do not belong.',
    character:'A high working bench — hay and native forage side by side.' },

  { n:'03', nm:'Drainage Savanna Corridor',  c:'#8E9B85', care:'Riparian', ac:'18.57 ac',       ds:'Seasonal drainage kept as open savanna to slow and spread runoff.',
    slug:'drainage-savanna-corridor', code:'SRFS–DRAIN–03', dept:'Department of Forestry &amp; Fire', deptKey:'forestry_liveoak_bold', img:'s3', phase:['1','2'],
    sub:'Conveyance, spreading &amp; infiltration of runoff — the hydrologic spine',
    spec:[['Soils','Oa center (Oakalla silty clay loam, 0–1%, rarely flooded) · SeC and SuB edges'],['Position','Interior flow path connecting high ground to the basin and the river'],['Role','Conveyance, spreading and infiltration of runoff'],['Priority','03 of 07 — important yet challenging; the largest single acreage'],['Status','Currently 100% Tifton'],['Standard','Ephemeral drains carry no required buffer (20 ft advised). Here the entire corridor is managed as a vegetated filter, far beyond the guideline.']],
    why:'Before agriculture this section was a seasonal dry creek bed. It remains the route water takes across the property during seasonal rains, but it is now filled entirely with Tifton — reducing groundwater absorption and accelerating runoff to the river. When flow is high it crests the lower SeC band and floods the Floodplain Agricultural Basin, the property&rsquo;s lowest point. Restoration keeps the Oa clay core open and grass-dominated for flexibility in wet periods, confining woody structure to the higher, more stable SeC and SuB margins. The corridor becomes a mid-property shelterbelt, an interior wildlife corridor and shade for rotationally grazed cattle per NRCS requirements.',
    character:'An open drainage grassland with savanna along the edges.' },

  { n:'04', nm:'Floodplain Agricultural Basin', c:'#D6C9AC', care:'Ag',    ac:'27.55 ac',       ds:'Bottomland transitioning from Tifton 85 hay to native prairie under PUB.',
    slug:'floodplain-agricultural-basin', code:'SRFS–FLDPLN–04', dept:'Department of Agriculture &amp; Grazing', deptKey:'agriculture_sheaf', img:'s6', phase:['3'],
    sub:'Working production &amp; temporary floodwater storage',
    spec:[['Soils','SuB'],['Position','The lowest broad interior swath of the property'],['Role','Agricultural production and temporary floodwater storage'],['Designation','04 of 07 — stays in working agricultural use through Phases 1 and 2'],['Sequence','Tifton burndown and native conversion come in Phase 3, after the first plantings prove out'],['Status','The southernmost corner is already returning to a small wetland marsh — being developed as a seasonal wetland pocket']],
    why:'Productive under normal conditions, this field occupies the lowest continuous basin on the property. During rare flood events — when the drainage corridor overtops or the river backs up — it temporarily holds water. That role is not a flaw; it is a pressure-release valve for the entire system. Because inundation is infrequent and the soils recover well, continued agricultural use is appropriate in the near term, with conversion held for Phase 3.',
    character:'A working bottomland field that doubles as the property&rsquo;s flood relief valve.' },

  { n:'05', nm:'North Inflow Filter Band',   c:'#5E6E8C', care:'Riparian', ac:'4.59 ac',       ds:'Vegetated filter strip catching sheet flow before the river.',
    slug:'north-inflow-filter-band', code:'SRFS–INFLOW–05', dept:'Department of Forestry &amp; Fire', deptKey:'forestry_liveoak_bold', img:'s5', phase:['3'],
    sub:'Interception, slowing &amp; spreading of incoming water',
    spec:[['Soils','SuB, SeC and RuB as present — a cross-soil zone along the entire north property line'],['Position','Upper inflow edge — the first place water touches the land'],['Role','Interception, slowing and spreading of incoming water'],['Priority','05 of 07 — intentionally last; it flanks the access road'],['Note','Encompasses both sides of the east–west access road; restored last to minimize disturbance']],
    why:'All runoff from the surrounding hills and fields to the north enters the property along this boundary. Even though the land lies within the mapped floodplain, this edge is the first hydraulic contact point. If water arrives fast and concentrated it cuts channels through everything downslope; if it arrives slow and wide the entire property works better. Dense native vegetation here reduces velocity, captures sediment and converts concentrated flow into sheet flow before it can cause damage.',
    character:'A broad grass-and-shrub filter, deliberately rough — a sponge, not a wall.' },

  { n:'06', nm:'Eastern Shelterbelt',        c:'#B58A3C', care:'Woody',    ac:'11.03 ac',       ds:'High ground along the highway; multi-row windbreak of cedar elm and live oak.',
    slug:'eastern-shelterbelt', code:'SRFS–SHELT–06', dept:'Department of Forestry &amp; Fire', deptKey:'forestry_liveoak_bold', img:'s2', phase:['1','2'],
    sub:'Privacy · wind buffering · lateral runoff moderation',
    spec:[['Soils','SeC north (Seawillow clay loam, 3–5% slope) · RuB south (Rumley silty clay loam, 1–3% slope)'],['Position','One of the highest, most stable elevations on the property, bordering the highway'],['Role','Privacy, wind buffering, lateral runoff moderation'],['Priority','06 of 07 — the stable perimeter anchor protecting everything west'],['Status','About 300 ft already reflects the long-term goal; the majority of the line is undeveloped']],
    why:'This eastern edge sits higher than most interior areas and remains outside the most frequent flood influence. It receives lateral runoff from the adjacent hillside and highway, with direct exposure to wind and road traffic — conditions that suit woody structure able to stand its ground. A dense native shelterbelt here protects the interior landscape, improves privacy and captures litter, dust and sediment before it enters the property.',
    character:'A tough, layered native edge — part thicket, part windbreak. Built to last, not to look pretty.' },

  { n:'07', nm:'River Conservation Strip',   c:'#5C7A78', care:'Riparian', ac:'9.01 ac', ds:'Lampasas River frontage held out of production; bank stabilization and native cane.',
    slug:'river-conservation-strip', code:'SRFS–RIVCON–07', dept:'Department of Forestry &amp; Fire', deptKey:'forestry_liveoak_bold', img:'s1', phase:['1','2'],
    sub:'Bank stabilization · water-quality protection · wildlife corridor',
    spec:[['Soils','BeB — Boerne loam, rarely flooded; one of the most stable soil units on the property'],['Position','Elevated river terrace along the southern boundary, on the Lampasas River'],['Role','Bank stabilization, water-quality protection, wildlife corridor'],['Priority','07 of 07 — highest; the ecological heart of the property'],['Action','Eradicate 9 acres of Tifton to establish a 175 ft river buffer'],['Standard','Texas BMPs call for a 50 ft streamside management zone on perennial streams. The Strip&rsquo;s 175 ft minimum exceeds that several times over.']],
    why:'Despite sitting within the floodplain, the BeB terrace is relatively high, stable ground along the river. Deep soils and periodic flooding make it ideal for long-lived trees that anchor banks, cool the water and provide continuous wildlife habitat. It is the least Tifton-impacted section, but the crop is creeping into the existing native grass. Recent years of oak wilt and soil erosion have felled or killed many large trees here, so replanting where the section is already native grassland can begin this spring.',
    character:'Open woodland grading into riparian forest — shaded and layered.' },
];

// ---- why the restoration exists: the conditions we are working against ----
const LAND_ISSUES = [
  { k:'Monoculture', t:'Tifton 85 across the working field', d:'Planted on USDA recommendation and hayed for nearly twenty years. It is good hay and it held the soil, but at this scale it crowds out native grasses, forbs and volunteer trees, and the ground beneath it supports very little else.' },
  { k:'Bird decline', t:'Fewer dove, quail and raptors', d:'Structure is what upland birds need — bunchgrass to nest in, forbs for seed, brush to escape into. A single-species sward provides none of it, and the birds followed the habitat out.' },
  { k:'Erosion', t:'Cut banks and a scoured drainage', d:'Decades of grazing to the water’s edge, seasonal flooding and a drainage corridor running fast in Tifton have left an eroding riverbank and a runoff channel that carries soil off the property instead of soaking it in.' },
  { k:'Canopy loss', t:'Oak wilt and fallen giants', d:'Erosion, flood scour and oak wilt have killed or dropped many of the largest trees along the river. Without replanting there is no next generation of canopy in the sections that need shade most.' },
  { k:'Browse pressure', t:'Unchecked deer and feral hog', d:'High white-tail numbers and a persistent feral hog population remove seedlings faster than they can establish. Every planting plan here has to account for protection, not just species choice.' },
];

// ---- restoration sequence ----
const LAND_PHASES = [
  { p:'Phase 1', t:'First burndown &amp; native grass seeding', when:'2026',
    d:'Knock down the introduced grasses and seed the Texas Parks &amp; Wildlife native mix. Covers the Western Headwaters Savanna, the Eastern Shelterbelt, the River Conservation Strip, the southernmost end of the Drainage Savanna Corridor and a good portion of the Western Agricultural Uplands.',
    secs:['01','02','03','06','07'] },
  { p:'Phase 2', t:'Trees &amp; woody shrubs', when:'after the grass takes',
    d:'Woody planting along the River Conservation Strip, the Drainage Savanna Corridor and the Eastern Shelterbelt, plus the low wetland ground where the Shelterbelt meets the Floodplain Basin and the Conservation Strip in the south of the property.',
    secs:['03','06','07'] },
  { p:'Phase 3', t:'Second burndown — inflow band &amp; basin', when:'once Phases 1–2 prove out',
    d:'The remaining Tifton comes out of the North Inflow Filter Band and the Floodplain Agricultural Basin. This is the last herbicide pass planned for the property.',
    secs:['04','05'] },
];

// ---- Instruments & Infrastructure ----
const II_STATUS = { Built:'var(--sage-deep)', 'In Progress':'var(--ochre-deep)', Planned:'var(--river-deep)' };
const II_ITEMS = [
  { k:'INF-01', t:'Propagation Unit No. 01', status:'Built', dept:'forestry_liveoak_bold', demo:true,
    d:'A three-shelf, semi-automated bench that raises native restoration stock from seed and cutting, with per-shelf moisture, light and air. The flagship, with a live demo you can click through.' },
  { k:'INF-02', t:'Mobile Field Unit No. 01', status:'In Progress', dept:'water_wavesbolt',
    d:'One towable platform doing two jobs: a tank-and-pump rig that hauls water to new plantings through the establishment years, and a mount for trail cameras and a weather station feeding the same open record as the bench. Watering and monitoring, on wheels.' },
  { k:'INF-03', t:'Bioacoustic Node No. 01', status:'In Progress', dept:'wildlife_antlers',
    d:'A listening post — a weatherproof mic surveying the bird and bat populations around the clock, with calls identified by BirdNET and BatDetect2, both open source. If the restoration is working, you should be able to hear it. This is how we keep count.' },
  { k:'INF-04', t:'Bat Houses', status:'Planned', dept:'wildlife_antlers',
    d:'Multi-chamber roosts along the river edge for insect control and habitat. Small build; the evening sky over the river should show it.' },
  { k:'INF-05', t:'Public Water Supply', status:'Planned', dept:'water_wavesbolt',
    d:'A separate initiative to bring potable water on site — for drinking, to fill the Mobile Field Unit’s watering trailer and as a remote on-site water source for cabin visitors.' },
  { k:'INF-06', t:'Water Well', status:'Planned', dept:'water_wavesbolt',
    d:'A dedicated well to supply the Mobile Field Unit’s watering trailer, provide potable water on the far side of the property, put a water source closer to the cabin and water surrounding and native plantings directly from the well.' },
];


// ---- software (open source) ----
const REPO = { path:'github.com/Short-s-Resort-Field-Station/propagation-controller', license:'MIT', lang:'Go · React' };
const MODULES = [
  { k:'unit-daemon',   t:'Controller daemon',   d:'A single static Go binary on the Piconium — sensors, valves, lighting, fan; serves the state API. Measures moisture, temperature and EC (no pH channel).', l:'Go' },
  { k:'unit-ui',       t:'Rack + dashboard UI', d:'The 5-inch Waveshare touchscreen (800×480) and web control center you can try below.',   l:'React' },
  { k:'section-atlas', t:'Section atlas',       d:'The tract, restoration sections and care classes as portable GeoJSON + SVG.', l:'GeoJSON' },
  { k:'field-schema',  t:'Field-record schema', d:'The specimen, seed-lot and event formats behind the stamps and logs.', l:'JSON Schema' },
];

// ---- R&D Library ----
const LIB_RESOURCES = [
  { t:'Lady Bird Johnson Wildflower Center', d:'Native Plant Database — the first stop for Texas species, ranges and growing conditions.', url:'https://www.wildflower.org/plants/', org:'UT Austin' },
  { t:'Native Plant Society of Texas (NPSOT)', d:'Chapters, plant lists and propagation guidance by region — our reference for reconciling species notes.', url:'https://npsot.org/', org:'NPSOT' },
  { t:'USDA PLANTS Database', d:'Authoritative distribution, wetland status and nomenclature for every species.', url:'https://plants.usda.gov/', org:'USDA' },
  { t:'USDA–NRCS Plant Materials (Texas)', d:'Technical notes, plant guides and release information for restoration plantings — including the Central Texas PMC at Knox City.', url:'https://www.nrcs.usda.gov/plant-materials', org:'USDA–NRCS' },
  { t:'TPWD — Pastures for Upland Birds', d:'The program guiding our grassland conversion — practices, focal species and recommended natives.', url:'https://tpwd.texas.gov/landwater/land/habitats/post_oak/pub/', org:'Texas Parks & Wildlife' },
  { t:'Bamert Seed Company', d:'Muleshoe, TX — regionally sourced native seed and the supplier of our PUB mix.', url:'https://bamertseed.com/', org:'Muleshoe, TX' },
  { t:'Texas A&M Soil, Water and Forage Testing Lab', d:'College Station — where our soil samples go; routine analysis behind the amendment plan, drill-mix tuning and the bench potting mix.', url:'https://soiltesting.tamu.edu/soil-testing/', org:'Texas A&M AgriLife' },
  { t:'West Texas Native Nursery', d:'A source for buying native container plants and stock suited to West Texas and Hill Country landscapes.', url:'https://westtexasnursery.com/', org:'West Texas' },
  { t:'Agrotech of Lampasas', d:'Our service provider for grassland restoration — drone herbicide application, burndown and native reseeding.', url:'https://agrotechtexas.com/', org:'Service Provider · Lampasas, TX' },
];
// Focus species for the restoration — long but deliberately not exhaustive.
const LIB_SPECIES = [
  // ---- Trees & Shrubs (bench, shelterbelt, river) ----
  { slug:'bald-cypress', type:'Woody', sp:'Bald Cypress', tag:'Taxodium distichum', sec:'07 · River', method:'Seed / hardwood cutting', treat:'Cold-moist stratify 60–90 d', prov:'Lampasas drainage', note:'Our anchor for the river conservation strip. Collect cones locally in fall; float-test to cull empties, then cold-moist stratify. Cuttings root but slowly — seed is our main line. Wants wet feet its first years, which is why bald cypress leads the propagation bench.' },
  { slug:'live-oak', type:'Woody', sp:'Live Oak', tag:'Quercus fusiformis', sec:'06 · Shelter', method:'Seed (acorn)', treat:'Sow fresh — no dormancy', prov:'On-site mother trees', note:'The signature tree of the property and our Forestry mark. Acorns have essentially no dormancy and must never dry out — collect and sow immediately. Slow above ground, fast below; a lifetime tree planted for the next steward.' },
  { slug:'cedar-elm', type:'Woody', sp:'Cedar Elm', tag:'Ulmus crassifolia', sec:'06 · Shelter', method:'Seed', treat:'Sow fresh — germinates readily', prov:'Eastern boundary', note:'Backbone of the eastern shelterbelt. Unusual among elms in seeding in fall; sow the winged samaras fresh and they germinate without stratification. Tough, drought-hardy and already the healthiest woody cover we have.' },
  // ---- Grasses (uplands, floodplain — the PUB drill mix) ----
  { slug:'little-bluestem', type:'Grass', sp:'Little Bluestem', tag:'Schizachyrium scoparium', sec:'02 · Uplands', method:'Seed (drill)', treat:'Minimal; fresh sows well', prov:'Central TX ecotype', note:'The backbone bunchgrass of the upland mix and 15% of the PUB blend. Fresh, local-ecotype seed establishes readily by no-till drill. Copper fall color is the tell that a stand has taken.' },
  { slug:'big-bluestem', type:'Grass', sp:'Big Bluestem', tag:'Andropogon gerardii', sec:'04 · Floodplain', method:'Seed (drill)', treat:'Light stratify; debeard seed', prov:'Regional ecotype', note:'Tallgrass signature, 10% of the mix. Fluffy seed drills best debearded. Slow to bulk up but long-lived and deep-rooted once it settles in — the "turkeyfoot" seedhead is unmistakable.' },
  { slug:'switchgrass', type:'Grass', sp:'Switchgrass', tag:'Panicum virgatum', sec:'04 · Floodplain', method:'Seed (no-till drill)', treat:'Dry after-ripen; light stratify', prov:'Blackland / Post Oak ecotype', note:'Deep-rooted and forgiving on the floodplain. Seed benefits from after-ripening — a season in the bag sharply improves germination. We favor a regional ecotype over the tall biomass cultivars.' },
  { slug:'indiangrass', type:'Grass', sp:'Indiangrass', tag:'Sorghastrum nutans', sec:'02 · Uplands', method:'Seed (drill)', treat:'Light stratify; debeard seed', prov:'Regional ecotype', note:'Golden fall plumes and 10% of the mix. The awned, fluffy seed needs a debearded drill to flow. Warm-season and reliable once established; pairs with the bluestems as the tallgrass core.' },
  { slug:'sideoats-grama', type:'Grass', sp:'Sideoats Grama', tag:'Bouteloua curtipendula', sec:'02 · Uplands', method:'Seed (drill)', treat:'Minimal', prov:'Central TX ecotype', note:'The Texas state grass, with oat-like seed spikes hung along one side. Easy and quick from seed, good on thin upland soils and among the first to show in a new stand.' },
  { slug:'buffalograss', type:'Grass', sp:'Buffalograss', tag:'Bouteloua dactyloides', sec:'02 · Uplands', method:'Seed (primed burrs)', treat:'KNO₃-primed; warm to germinate', prov:'Texoka', note:'A low, sod-forming shortgrass for thin spots and edges. The Texoka burrs come nitrate-primed for faster, more even germination in warm soil. Drought-proof once knit in.' },
  { slug:'canada-wildrye', type:'Grass', sp:'Canada Wildrye', tag:'Elymus canadensis', sec:'04 · Floodplain', method:'Seed (fall-sown)', treat:'Fresh seed; cool-season', prov:'Lavaca', note:'A cool-season nurse grass that comes up fast to hold ground and shade weeds while slower warm-season natives establish. Fall-sow fresh; it will thin naturally as the stand matures.' },
  { slug:'virginia-wildrye', type:'Grass', sp:'Virginia Wildrye', tag:'Elymus virginicus', sec:'03 · Drainage', method:'Seed (fall-sown)', treat:'Fresh seed; cool-season', prov:'Bottom edges', note:'Shade-tolerant cool-season bunchgrass for drainage edges and partial canopy. Sow fresh in fall; useful where switchgrass and the bluestems want more sun.' },
  { slug:'vine-mesquite', type:'Grass', sp:'Vine Mesquite', tag:'Panicum obtusum', sec:'03 · Drainage', method:'Seed / stolons', treat:'Warm-season; spreads by runners', prov:'Disturbed & wet edges', note:'A stoloniferous grass that heals disturbed and wet-edge ground, spreading by runners as well as seed. Handy for gullies and the mouths of drainages where bare soil needs quick cover.' },
  { slug:'eastern-gamagrass', type:'Grass', sp:'Eastern Gamagrass', tag:'Tripsacum dactyloides', sec:'04 · Floodplain', method:'Seed / division', treat:'Cold-moist stratify 45–60 d', prov:'Bottomland', note:'A big, clumping relative of corn for the wet bottomland. Seed is notoriously dormant — cold-moist stratify or fall-sow — but mature clumps divide easily, which is our shortcut for filling gaps.' },
  { slug:'white-tridens', type:'Grass', sp:'White Tridens', tag:'Tridens albescens', sec:'02 · Uplands', method:'Seed (drill)', treat:'Minimal', prov:'Guadalupe germplasm', note:'A fine, pale-plumed bunchgrass — a modest but persistent 2% of the blend. Fills between the marquee grasses and tolerates the caliche patches on the uplands.' },
  // ---- Wetland Pocket (Section 04 marsh — plugs, not the drill mix) ----
  { slug:'bushy-bluestem', type:'Wetland', sp:'Bushy Bluestem', tag:'Andropogon glomeratus', sec:'04 · Floodplain', method:'Plugs / seed', treat:'Surface-sow; dormant winter seeding', prov:'Regional', note:'A clumping warm-season grass for the wet pocket — the moisture-loving cousin of the bluestems in our upland mix. The fluffy silver-white seedheads hold through winter, so it should mark the wet zone from a long way off. It’s slow from seed in ground where annuals push back, so we’re buying plugs for the spots that matter and putting seed in with the winter dormant sowing.' },
  { slug:'sand-spikerush', type:'Wetland', sp:'Sand Spikerush', tag:'Eleocharis montevidensis', sec:'04 · Floodplain', method:'Plugs / division', treat:'Plant on the drawdown; spreads by rhizome', prov:'Regional · recorded Burnet to Georgetown', note:'The core species for the ground that ponds longest. Spikerush spreads by rhizome into a sod that holds mud together, and it handles both standing water and a dry summer. We originally had Torrey’s rush in this slot and swapped it during range-checking — spikerush is the one with records on limestone a county away. Plugs go in on the drawdown, not into standing water; set in saturated soil they rot before they root.' },
  { slug:'littletooth-sedge', type:'Wetland', sp:'Littletooth Sedge', tag:'Carex microdonta', sec:'04 · Floodplain', method:'Plugs (fall)', treat:'Cool-season; plant Oct–Nov', prov:'Cut Plain · recorded Fort Cavazos', note:'The wet-meadow sedge with the best local claim — records at Fort Cavazos on the same geology as our bottom. It anchors the open drawdown ring. The catch is buying it: nurseries mostly don’t carry it, so we’re hunting plugs through NPSOT chapter sales and specialty growers, and weighting the order toward it wherever we find it.' },
  { slug:'texas-meadow-sedge', type:'Wetland', sp:'Texas Meadow Sedge', tag:'Carex perdentata', sec:'04 · Floodplain', method:'Plugs (fall)', treat:'Cool-season; plant Oct–Nov', prov:'Texas endemic · recorded locally', note:'A Texas endemic for the drier ring and the pecan shade edge. Takes sun or shade, wet spring or dry August. It’s sold as a native shade-lawn sedge, so it’s one of the few things on this list that’s actually easy to buy. Fall plugs, like the other cool-season sedges — the point is roots in the ground before the first summer.' },
  { slug:'cherokee-sedge', type:'Wetland', sp:'Cherokee Sedge', tag:'Carex cherokeensis', sec:'04 · Floodplain', method:'Plugs (fall)', treat:'Cool-season active; plant Oct–Nov', prov:'Nursery plugs · availability trial', note:'An evergreen clumping sedge, sun or shade, with arching seed spikes in spring. This one’s a trial, and we’re saying so plainly: NPSOT maps it to the Blackland and Post Oak country east of us, and the nearest record we’ve found is about forty miles away. But it’s the wet-meadow sedge the trade reliably sells, so it fills whatever the plug order can’t cover in littletooth and Texas meadow sedge. We’re planting the three side by side and watching what establishes. We may be wrong about this one.' },
  { slug:'grass-leaved-rush', type:'Wetland', sp:'Grass-Leaved Rush', tag:'Juncus marginatus', sec:'04 · Floodplain', method:'Plugs / seed', treat:'Surface-sow on wet mud', prov:'Regional · Goldthwaite and Belton records', note:'The best-documented rush around us, with records one county over in nearly every direction — including a pond edge at Timberlake Field Station in Mills County that looks a lot like what we’re trying to build. Fine-textured, and it handles the flood-then-dry cycle. Slow from seed like most rushes, so plugs where we want cover early, surface-sown seed to fill in behind.' },
  { slug:'frogfruit', type:'Wetland', sp:'Frogfruit', tag:'Phyla nodiflora', sec:'04 · Floodplain', method:'Sprigs / division', treat:'Roots at the nodes; sprig into moist ground', prov:'Ubiquitous locally', note:'A matting groundcover for the gaps between the clumps. Takes ponding, takes drought, blooms for months, and it’s a larval host for buckeye and phaon crescent butterflies. It roots at every node, which should make it the easiest propagation job on the bench. It’s also everywhere around here — close to nine hundred local records on iNaturalist.' },
  { slug:'common-sneezeweed', type:'Wetland', sp:'Common Sneezeweed', tag:'Helenium autumnale', sec:'04 · Floodplain', method:'Seed (surface)', treat:'Needs light; sow on wet ground', prov:'Regional', note:'A fall-blooming wet-meadow composite that keeps nectar coming into October, after the uplands have mostly gone quiet. Cheap from seed, surface-sown on wet ground where light can reach it. One flag for the grazing plan: stock generally won’t touch it standing, but it’s poisonous in hay — one more reason the pocket stays out of any future cutting.' },
  { slug:'three-square-bulrush', type:'Wetland', sp:'Three-Square Bulrush', tag:'Schoenoplectus pungens', sec:'04 · Floodplain', method:'Plugs / rhizome', treat:'Saturated mud to shallow water', prov:'Regional · Burnet records', note:'The conditional entry. We don’t know yet how long the pocket actually holds water — this is our first year watching it. If it stands into early summer, three-square goes into the deepest spot for tall structure and root mass. If the pond quits by May, we skip it. The decision waits on a year of data.' },
  // ---- Wildflowers & Legumes (the forb fraction) ----
  { slug:'illinois-bundleflower', type:'Forb', sp:'Illinois Bundleflower', tag:'Desmanthus illinoensis', sec:'02 · Uplands', method:'Seed', treat:'Scarify; inoculate', prov:'Sabine', note:'The key native legume of the mix at 6% — fixes nitrogen and its seed is prime wildlife food. Scarify hard seed and inoculate; establishes willingly and signals a healthy, balanced stand.' },
  { slug:'american-basketflower', type:'Forb', sp:'American Basketflower', tag:'Centaurea americana', sec:'02 · Uplands', method:'Seed (sow fresh)', treat:'Barely cover; reseeds', prov:'Regional', note:'A tall, thistle-like annual (native, not the invasive knapweeds) that gives generous first-year color and reseeds. Sow shallow — light aids germination — for a bridge while perennials mature.' },
  { slug:'engelmann-daisy', type:'Forb', sp:'Engelmann Daisy', tag:'Engelmannia peristenia', sec:'02 · Uplands', method:'Seed', treat:'Cold-moist stratify', prov:'Eldorado', note:'A deep-rooted perennial with early-season yellow bloom and good forage value. Cold-moist stratification evens out germination. Drought-hardy and long-lived once its taproot is down.' },
  { slug:'maximilian-sunflower', type:'Forb', sp:'Maximilian Sunflower', tag:'Helianthus maximiliani', sec:'04 · Floodplain', method:'Seed', treat:'Light stratify; rhizomatous', prov:'Regional', note:'A tall late-summer perennial sunflower for pollinators and seed-eating birds. Sows readily and spreads by rhizome once set — best where it can colonize a margin rather than a tidy bed.' },
  { slug:'dotted-gayfeather', type:'Forb', sp:'Dotted Gayfeather', tag:'Liatris punctata', sec:'02 · Uplands', method:'Seed', treat:'Cold-moist stratify; patient', prov:'Central TX', note:'Purple fall spikes and a monarch magnet. Slow and fussy from seed — needs cold-moist stratification and a year or two of patience — but worth it for the late-season nectar it brings the uplands.' },
  { slug:'blackeyed-susan', type:'Forb', sp:'Blackeyed Susan', tag:'Rudbeckia hirta', sec:'02 · Uplands', method:'Seed (surface)', treat:'Light; germinates readily', prov:'Regional', note:'A cheerful, reliable pioneer that germinates on light and carries early color while the perennials find their feet. Short-lived but self-sows; one of the first blooms a new planting rewards you with.' },
  { slug:'mexican-hat', type:'Forb', sp:'Mexican Hat', tag:'Ratibida columnifera', sec:'02 · Uplands', method:'Seed', treat:'Minimal; reseeds freely', prov:'VNS', note:'A drought-tough, short-lived perennial that sows easily and reseeds — a workhorse of the forb fraction. Its sombrero-shaped heads bloom for months and ask nothing of the soil.' },
  { slug:'purple-prairie-clover', type:'Forb', sp:'Purple Prairie Clover', tag:'Dalea purpurea', sec:'02 · Uplands', method:'Seed', treat:'Scarify + inoculate', prov:'Cuero', note:'A premier native legume — nitrogen-fixing, high wildlife value and a favorite of native bees. Scarify and inoculate the seed; slow to start but a signature of a maturing, high-quality prairie.' },
  { slug:'doveweed-croton', type:'Forb', sp:'Prairie Tea', tag:'Croton monanthogynus', sec:'04 · Floodplain', method:'Seed', treat:'Self-sows on disturbance', prov:'Regional', note:'A native croton and a classic dove and quail food plant. A small fraction of the blend, it volunteers readily on disturbed ground and earns its place feeding upland birds through fall.' },
];

// ---- journal entries: moved to content/journal/*.json → compiled into fs-journal.js
//      (window.FS_JOURNAL). Edit the content files or the CMS, then run scripts/build-content.mjs.

// ---- land history timeline (About page) ----
const TIMELINE = [
  { yr:'1940s', t:'Displaced to Lampasas', d:'The federal government takes our great-grandfather\u2019s wheat farm in Killeen to build what becomes Fort Hood. \u201cShort\u201d is granted this tract on the Lampasas, clears the ground and grows it in seed wheat \u2014 by reputation some of the highest-quality wheat seed in the region.' },
  { yr:'Early 1960s', t:'The cabin, and the name', d:'Short builds the cabin down by the river with his children. They call it \u201cShort\u2019s Resort,\u201d the original sign hand-painted by our great-aunts. No running water or electricity \u2014 then or since.' },
  { yr:'After retirement', t:'Fallow, then grazed', d:'The field goes mostly fallow and is leased for cattle. Grazed harder than the ground could carry and unfenced from the river, the banks and the central drainage corridor begin to erode; old trees go down and little new growth comes up.' },
  { yr:'A first fence', t:'A hundred feet off the water', d:'On a visit to work on the old cabin, we fence a hundred feet off the river bank and around the cabin to keep cattle off the water. It slows the bank erosion; the corridor washout continues.' },
  { yr:'~2000s', t:'The Tifton years', d:'The cattle come off and the field is planted in Tifton 85 bermudagrass on USDA advice \u2014 low-maintenance hay and a small, steady income. For nearly twenty years it builds a monoculture that crowds out the natives, and with them the dove, quail and raptors.' },
  { yr:'2023', t:'A new steward, and a plan begins', d:'Our grandfather passes and the land comes to the fourth generation of the family. The same year, the work of building a restoration plan for the ground begins in earnest.' },
  { yr:'2023\u20132025', t:'The restoration, proposed', d:'Two years of building the plan now underway: clear the monoculture and return the ground to native trees, grasses and woody shrubs \u2014 to bring back the birds, slow the erosion and restore the oak prairie and riparian woodland.' },
  { yr:'2025', t:'Grants applied for', d:'Cost-share applications go in \u2014 USDA\u2013NRCS EQIP through the Lampasas County field office, and Texas Parks & Wildlife Pastures for Upland Birds for the grassland conversion.' },
  { yr:'2026', t:'Grants received, work begins', d:'Both grants are awarded and the plan moves off paper and into the ground \u2014 the first field season of the restoration.' },
  { yr:'June 2026', t:'Last harvest, first burndown', d:'The final cutting of Tifton 85 comes off the meadow and the conversion begins \u2014 edge first, working inward, with roughly 45% held in hay until the natives prove out.' },
];


// ---- the wetland pocket palette (J-007) — zone-ordered, for the wetmix plate ----
const WETMIX = [
  { slug:'sand-spikerush',      sp:'Sand Spikerush',      lat:'Eleocharis montevidensis',  zone:'Core', kind:'Spikerush' },
  { slug:'three-square-bulrush',sp:'Three-Square Bulrush',lat:'Schoenoplectus pungens',    zone:'Core', kind:'Bulrush \u00b7 conditional' },
  { slug:'littletooth-sedge',   sp:'Littletooth Sedge',   lat:'Carex microdonta',          zone:'Ring', kind:'Sedge' },
  { slug:'grass-leaved-rush',   sp:'Grass-Leaved Rush',   lat:'Juncus marginatus',         zone:'Ring', kind:'Rush' },
  { slug:'frogfruit',           sp:'Frogfruit',           lat:'Phyla nodiflora',           zone:'Ring', kind:'Groundcover' },
  { slug:'common-sneezeweed',   sp:'Common Sneezeweed',   lat:'Helenium autumnale',        zone:'Ring', kind:'Forb' },
  { slug:'bushy-bluestem',      sp:'Bushy Bluestem',      lat:'Andropogon glomeratus',     zone:'Ring', kind:'Grass' },
  { slug:'texas-meadow-sedge',  sp:'Texas Meadow Sedge',  lat:'Carex perdentata',          zone:'Edge', kind:'Sedge' },
  { slug:'cherokee-sedge',      sp:'Cherokee Sedge',      lat:'Carex cherokeensis',        zone:'Edge', kind:'Sedge \u00b7 trial' },
  { slug:'buttonbush',          sp:'Buttonbush',          lat:'Cephalanthus occidentalis', zone:'Rim',  kind:'Shrub', credit:'X' },
  { slug:'bald-cypress',        sp:'Bald Cypress',        lat:'Taxodium distichum',        zone:'Rim',  kind:'Tree',  credit:'G' },
];

Object.assign(window, { FS_A:A, FS_SITE:SITE, FS_FUNDERS:FUNDERS, FS_DEPT_PROFILES:DEPT_PROFILES, FS_SEED_PROVIDER:SEED_PROVIDER, FS_SEEDMIX:SEEDMIX, FS_SECTIONS:SECTIONS, FS_JOURNAL_CATS:JOURNAL_CATS, FS_LAND:LAND, FS_LAND_ISSUES:LAND_ISSUES, FS_LAND_PHASES:LAND_PHASES, FS_II_STATUS:II_STATUS, FS_II_ITEMS:II_ITEMS, FS_REPO:REPO, FS_MODULES:MODULES, FS_LIB_RESOURCES:LIB_RESOURCES, FS_LIB_SPECIES:LIB_SPECIES, FS_TIMELINE:TIMELINE, FS_REMOVED:REMOVED, FS_WETMIX:WETMIX });
