// ── Extended data for Activities, Podcast, Packs, Workshops ─

// ─── ACCESSIBILITY & NEEDS TAGS ────────────────────────────────
// Soft, wide-spectrum vocabulary. Members can mark which apply to
// their family — the feed re-orders around their tags.
const NEEDS_TAGS = [
  // public — everyone can pick from these
  { id: "calm",        label: { en: "Calming · regulation", es: "Calmar · regulación" },     glyph: "✦", hue: "#7DBE5A" },
  { id: "movement",    label: { en: "Movement · big body",  es: "Movimiento · cuerpo" },     glyph: "↯", hue: "#C8A85A" },
  { id: "fine-motor",  label: { en: "Fine motor",           es: "Motricidad fina" },         glyph: "◐", hue: "#9DC872" },
  { id: "sensory-rich",label: { en: "Sensory-rich",         es: "Rica en estímulos" },       glyph: "✺", hue: "#C45A3A" },
  { id: "adhd",        label: { en: "ADHD-friendly",        es: "Apta para TDAH" },          glyph: "⌁", hue: "#9DC872" },
  { id: "gifted",      label: { en: "Gifted capacities",    es: "Altas capacidades" },       glyph: "✰", hue: "#C8A85A" },
  { id: "anxiety",     label: { en: "Anxiety-easing",       es: "Reduce ansiedad" },         glyph: "❍", hue: "#7A4A8A" },
  { id: "language",    label: { en: "Language-rich",        es: "Rica en lenguaje" },        glyph: "Aa",hue: "#C8A85A" },
  { id: "solo",        label: { en: "Solo play",            es: "Juego en solitario" },      glyph: "·", hue: "#7DBE5A" },
  { id: "sibling",     label: { en: "Siblings together",    es: "Hermanos juntos" },         glyph: "··",hue: "#C45A3A" },
  { id: "outdoor",     label: { en: "Outdoor",              es: "Aire libre" },              glyph: "△", hue: "#9DC872" },
  { id: "low-prep",    label: { en: "No materials",         es: "Sin materiales" },          glyph: "∅", hue: "#7DBE5A" },
  // sensitive — only visible inside the user's Profile after they opt in to "Special Needs"
  { id: "sensory-low", label: { en: "Low sensory load",     es: "Carga sensorial baja" },    glyph: "◯", hue: "#7DBE5A", sensitive: true },
  { id: "autism",      label: { en: "Autism-supportive",    es: "Apoyo TEA" },               glyph: "◆", hue: "#3A5FA5", sensitive: true },
  { id: "visual",      label: { en: "Low-vision adaptable", es: "Adaptable baja visión" },   glyph: "◐", hue: "#9DC872", sensitive: true },
  { id: "deaf",        label: { en: "Deaf / hard of hearing",es: "Sordera / hipoacusia" },   glyph: "◑", hue: "#3A5FA5", sensitive: true },
];

// ─── SEASONAL & HOLIDAY TAGS ───────────────────────────────────
// Two parallel axes of differentiation for activities (and packs):
//   1) SEASON_TAGS  — when in the year it fits (Christmas, Easter, etc.)
//   2) NEEDS_TAGS   — who / what context it fits (ADHD, calm, deaf…)
// An activity can carry many of either. Filters AND across axes,
// OR within an axis.
const SEASON_TAGS = [
  // four seasons
  { id: "spring",        label: { en: "Spring",            es: "Primavera" },        glyph: "✿", group: "season",  hue: "#7DBE5A" },
  { id: "summer",        label: { en: "Summer",            es: "Verano" },           glyph: "☼", group: "season",  hue: "#C8A85A" },
  { id: "autumn",        label: { en: "Autumn",            es: "Otoño" },            glyph: "❡", group: "season",  hue: "#C45A3A" },
  { id: "winter",        label: { en: "Winter",            es: "Invierno" },         glyph: "❄", group: "season",  hue: "#9DC2D8" },
  // holidays
  { id: "christmas",     label: { en: "Christmas",         es: "Navidad" },          glyph: "✧", group: "holiday", hue: "#7DBE5A" },
  { id: "easter",        label: { en: "Easter",            es: "Pascua" },           glyph: "✦", group: "holiday", hue: "#9DC872" },
  { id: "halloween",     label: { en: "Halloween",         es: "Halloween" },        glyph: "✺", group: "holiday", hue: "#C45A3A" },
  { id: "thanksgiving",  label: { en: "Thanksgiving",      es: "Acción de Gracias" },glyph: "♔", group: "holiday", hue: "#8A6020" },
  { id: "valentines",    label: { en: "Family love",       es: "Amor de familia" },  glyph: "♡", group: "holiday", hue: "#C45A3A" },
  { id: "mothers-day",   label: { en: "Mother's Day",      es: "Día de la Madre" },  glyph: "❀", group: "holiday", hue: "#7A4A8A" },
  { id: "fathers-day",   label: { en: "Father's Day",      es: "Día del Padre" },    glyph: "▲", group: "holiday", hue: "#3A5FA5" },
  { id: "earth-day",     label: { en: "Earth Day",         es: "Día de la Tierra" }, glyph: "◯", group: "holiday", hue: "#2E6B3A" },
  // markers / moments
  { id: "new-year",      label: { en: "New Year",          es: "Año Nuevo" },        glyph: "✦", group: "moment",  hue: "#9DC872" },
  { id: "lunar-new-year",label: { en: "Lunar New Year",    es: "Año Nuevo Lunar" },  glyph: "◉", group: "moment",  hue: "#C45A3A" },
  { id: "full-moon",     label: { en: "Full Moon",         es: "Luna llena" },       glyph: "◐", group: "moment",  hue: "#3A5FA5" },
  { id: "first-snow",    label: { en: "First snow",        es: "Primera nieve" },    glyph: "❅", group: "moment",  hue: "#F0EBE0" },
  { id: "birthday",      label: { en: "Birthday",          es: "Cumpleaños" },       glyph: "✶", group: "moment",  hue: "#C8A85A" },
  { id: "back-to-school",label: { en: "Back to school",    es: "Vuelta al cole" },   glyph: "▭", group: "moment",  hue: "#3A5FA5" },
  { id: "rainy-day",     label: { en: "Rainy day",         es: "Día de lluvia" },    glyph: "❡", group: "moment",  hue: "#7A4A8A" },
  { id: "any",           label: { en: "Any time of year",  es: "Cualquier época" },  glyph: "·", group: "moment",  hue: "#7DBE5A" },
];

// ─── ACTIVITIES ──────────────────────────────────────────────
// Each activity carries TWO axes:
//   seasons[]  — when it fits (Christmas, Easter, spring, any…)
//   needs[]    — accessibility / family-reality fit
const ACTIVITIES = [
  { id: 1,  title: { en: "The Stone Journal",          es: "Diario de piedras" },
    edition: 161, ages: [3,17], duration: 30,
    seasons: ["spring","earth-day","any"],
    needs: ["calm","sensory-low","outdoor","low-prep","sibling"],
    summary: { en: "Find one stone each. Bring it home. Talk about it tomorrow.", es: "Encuentra una piedra cada uno. Tráela a casa. Hablad mañana." }, tier: "premium" },
  { id: 2,  title: { en: "Cable Walk · no devices",    es: "Paseo sin cables" },
    edition: 12, ages: [5,17], duration: 60,
    seasons: ["autumn","back-to-school","any"],
    needs: ["calm","movement","outdoor","anxiety"],
    summary: { en: "Leave the phone home. Walk a known route. Notice five new things.", es: "Deja el móvil. Pasea una ruta conocida. Nota cinco cosas nuevas." }, tier: "free" },
  { id: 3,  title: { en: "Kitchen Sounds Symphony",    es: "Sinfonía de cocina" },
    edition: 47, ages: [3,9], duration: 20,
    seasons: ["winter","rainy-day","christmas"],
    needs: ["sensory-rich","fine-motor","adhd","sibling","language"],
    summary: { en: "Wooden spoon. Three pots. One brave parent. Make a song with no rules.", es: "Cuchara de madera. Tres ollas. Un padre valiente. Una canción sin reglas." }, tier: "premium" },
  { id: 4,  title: { en: "The Slow Drawing",           es: "El dibujo lento" },
    edition: 76, ages: [4,12], duration: 45,
    seasons: ["winter","christmas","any"],
    needs: ["calm","fine-motor","autism","sensory-low","solo","gifted"],
    summary: { en: "Draw the same object every day for a week. Compare. See what changes.", es: "Dibuja el mismo objeto cada día una semana. Compara. Ve qué cambia." }, tier: "premium" },
  { id: 5,  title: { en: "Letter to Your Future Self", es: "Carta a tu yo futuro" },
    edition: 100, ages: [10,17], duration: 45,
    seasons: ["new-year","birthday","any"],
    needs: ["language","calm","anxiety","solo","gifted"],
    summary: { en: "Write a letter to who you will be at 25. Seal it. Hide it.", es: "Escribe una carta a quien serás a los 25. Séllala. Escóndela." }, tier: "premium" },
  { id: 6,  title: { en: "Just Walk and Talk",         es: "Solo caminar y hablar" },
    edition: 150, ages: [3,17], duration: 90,
    seasons: ["any","spring","summer","autumn"],
    needs: ["calm","outdoor","movement","language","anxiety"],
    summary: { en: "Walk together. No phones. No destination. See where the conversation goes.", es: "Caminad juntos. Sin móviles. Sin destino. Ved adónde llega la charla." }, tier: "free" },
  { id: 7,  title: { en: "Quiet Hour · sensory rest",  es: "Hora de quietud · descanso sensorial" },
    edition: 88, ages: [3,17], duration: 60,
    seasons: ["any","winter","rainy-day"],
    needs: ["calm","sensory-low","autism","anxiety","adhd"],
    summary: { en: "Dim lights. No talking. Each person in a room with one chosen object.", es: "Luz tenue. Sin hablar. Cada uno en una habitación con un objeto." }, tier: "premium" },
  { id: 8,  title: { en: "Build · Break · Build Again",es: "Construye · Rompe · Construye" },
    edition: 51, ages: [3,9], duration: 30,
    seasons: ["winter","rainy-day","any"],
    needs: ["movement","adhd","fine-motor","sibling","sensory-rich"],
    summary: { en: "Tower of cushions. Knock it down. Rebuild. Repeat until they're done.", es: "Torre de cojines. Tírala. Reconstruye. Repite hasta que se cansen." }, tier: "free" },
  { id: 9,  title: { en: "The Garden of One Thing",    es: "El huerto de una sola cosa" },
    edition: 161, ages: [5,17], duration: 45,
    seasons: ["spring","earth-day","easter"],
    needs: ["calm","outdoor","fine-motor","autism","language","gifted"],
    summary: { en: "Plant one herb. Tend it for the month. Cook with it on the last day.", es: "Planta una hierba. Cuídala todo el mes. Cocina con ella el último día." }, tier: "premium" },
  { id: 10, title: { en: "Silent Treasure Hunt",       es: "Búsqueda silenciosa" },
    edition: 76, ages: [4,12], duration: 30,
    seasons: ["easter","any","birthday"],
    needs: ["calm","sensory-low","deaf","autism","sibling"],
    summary: { en: "Treasure hunt with notes instead of voices. The quietest wins.", es: "Búsqueda del tesoro con notas, sin voces. Gana quien menos hable." }, tier: "premium" },
  { id: 11, title: { en: "Smell · Touch · Listen",     es: "Oler · Tocar · Escuchar" },
    edition: 35, ages: [3,9], duration: 20,
    seasons: ["any","rainy-day","winter"],
    needs: ["sensory-rich","visual","autism","fine-motor","solo"],
    summary: { en: "Five household objects in a box. Identify them with eyes closed.", es: "Cinco objetos en una caja. Identifícalos con los ojos cerrados." }, tier: "premium" },
  { id: 12, title: { en: "Big Body · 15 minutes",      es: "Cuerpo grande · 15 min" },
    edition: 22, ages: [3,9], duration: 15,
    seasons: ["any","rainy-day","summer"],
    needs: ["movement","adhd","sensory-rich","low-prep","sibling"],
    summary: { en: "Jump. Roll. Crawl. Stomp. Reset the nervous system before homework.", es: "Saltar. Rodar. Gatear. Pisar. Reinicia el sistema antes de la tarea." }, tier: "free" },
  // ── Holiday-anchored additions ──
  { id: 13, title: { en: "The Quiet Advent",          es: "El Adviento tranquilo" },
    edition: 134, ages: [3,12], duration: 20,
    seasons: ["christmas","winter","first-snow"],
    needs: ["calm","sensory-low","fine-motor","autism","sibling"],
    summary: { en: "Twenty-four small things, none of them objects. One opened each evening of December.", es: "Veinticuatro cosas pequeñas, ninguna un objeto. Una cada noche de diciembre." }, tier: "premium" },
  { id: 14, title: { en: "Egg-and-question hunt",     es: "Búsqueda de huevos con preguntas" },
    edition: 142, ages: [4,12], duration: 45,
    seasons: ["easter","spring"],
    needs: ["sibling","fine-motor","language","outdoor","sensory-rich"],
    summary: { en: "Each egg holds a question, not a sweet. The conversation is the prize.", es: "Cada huevo guarda una pregunta, no un dulce. La conversación es el premio." }, tier: "premium" },
  { id: 15, title: { en: "Lantern walk · low-fright", es: "Paseo de farolillos · poco susto" },
    edition: 129, ages: [3,10], duration: 60,
    seasons: ["halloween","autumn"],
    needs: ["outdoor","sibling","sensory-low","autism","calm"],
    summary: { en: "Hand-made paper lanterns. A loop around the block. No costumes that scare.", es: "Farolillos de papel hechos a mano. Una vuelta a la manzana. Disfraces sin susto." }, tier: "free" },
  { id: 16, title: { en: "Breakfast in voice notes",  es: "Desayuno en notas de voz" },
    edition: 152, ages: [5,17], duration: 45,
    seasons: ["mothers-day","fathers-day"],
    needs: ["language","fine-motor","sibling","calm","low-prep"],
    summary: { en: "Each child records a 30-second voice note about one shared memory. Played at the table.", es: "Cada niño graba un audio de 30 s sobre un recuerdo compartido. Se escucha en la mesa." }, tier: "premium" },
  { id: 17, title: { en: "Tide-pool slow-look",       es: "Mirada lenta a los charcos" },
    edition: 118, ages: [3,12], duration: 60,
    seasons: ["summer","any"],
    needs: ["outdoor","sensory-rich","calm","fine-motor","sibling"],
    summary: { en: "Pick one rockpool. Sit. Don't touch. Name three creatures before you leave.", es: "Elige un charco de marea. Siéntate. No toques. Nombra tres criaturas antes de irte." }, tier: "premium" },
  { id: 18, title: { en: "Three things on the table", es: "Tres cosas en la mesa" },
    edition: 110, ages: [3,17], duration: 30,
    seasons: ["thanksgiving","new-year","any"],
    needs: ["language","sibling","calm","low-prep","fine-motor"],
    summary: { en: "Before the meal: each person names three things — one heavy, one light, one new.", es: "Antes de la comida: cada uno nombra tres cosas — una pesada, una ligera, una nueva." }, tier: "free" },
];

// ─── PODCAST · NEW SURFACE ─────────────────────────────────
// Three layers: weekly consolidated · themed seasons · tailor-on-request
const PODCAST_LAYERS = [
  {
    id: "weekly",
    eyebrow: { en: "Layer 01 · Weekly", es: "Capa 01 · Semanal" },
    title:   { en: "The Tuesday consolidate", es: "La consolidación del martes" },
    body: {
      en: "Every Tuesday, one of the four editors reads the week's edition out loud — plus a short conversation about what didn't make it onto the page.",
      es: "Cada martes, uno de los cuatro editores lee la edición en voz alta — más una breve conversación sobre lo que no entró en la página.",
    },
    meta: { en: "~18 min · weekly · free preview · full episodes WiseTip+", es: "~18 min · semanal · vista previa · episodios completos WiseTip+" },
    tier: "freemium",
  },
  {
    id: "seasonal",
    eyebrow: { en: "Layer 02 · Themed", es: "Capa 02 · Temática" },
    title:   { en: "Seasons & arcs", es: "Estaciones y arcos" },
    body: {
      en: "Consolidations across many editions: \"Winter without screens\" (12 eps), \"The first year\" (10 eps), \"Hard conversations\" (8 eps).",
      es: "Consolidaciones a lo largo de muchas ediciones: «Invierno sin pantallas» (12 eps), «El primer año» (10 eps), «Conversaciones difíciles» (8 eps).",
    },
    meta: { en: "~30 min · seasonal drops · WiseTip+", es: "~30 min · entregas estacionales · WiseTip+" },
    tier: "premium",
  },
  {
    id: "ondemand",
    eyebrow: { en: "Layer 03 · Tailor on request", es: "Capa 03 · A medida" },
    title:   { en: "Request a podcast", es: "Pide un podcast" },
    body: {
      en: "Pick a theme, an editor's voice, a length. Within 24h you get a private episode pulled from the archive — for the school run, the long drive, the night you can't read.",
      es: "Elige un tema, una voz, una duración. En 24h recibes un episodio privado extraído del archivo — para el camino al cole, el viaje largo, la noche en que no puedes leer.",
    },
    meta: { en: "Tailor-on-request · €4.99 / episode · WiseTip+ included", es: "A medida · 4,99 € / episodio · incluido en WiseTip+" },
    tier: "paid",
  },
];

const PODCAST_EPISODES = [
  { num: "S02·E14", title: { en: "Earth Day · the mint is still alive", es: "Día Tierra · la menta sigue viva" }, editor: "markus", duration: "16:42", date: "Apr 8, 2026", tier: "free" },
  { num: "S02·E13", title: { en: "Three years · what we got wrong", es: "Tres años · en qué nos equivocamos" }, editor: "alex", duration: "22:08", date: "Feb 3, 2026", tier: "premium" },
  { num: "ARC·07", title: { en: "Winter without screens · Part 4", es: "Invierno sin pantallas · Parte 4" }, editor: "marian", duration: "29:55", date: "Jan 27, 2026", tier: "premium" },
  { num: "ARC·07", title: { en: "Winter without screens · Part 3", es: "Invierno sin pantallas · Parte 3" }, editor: "victor", duration: "31:20", date: "Jan 20, 2026", tier: "premium" },
  { num: "S02·E12", title: { en: "Hard conversations · age 14", es: "Conversaciones difíciles · 14 años" }, editor: "victor", duration: "19:45", date: "Jan 13, 2026", tier: "premium" },
  { num: "S02·E11", title: { en: "Letter to edition 100, revisited", es: "Carta a la edición 100, revisitada" }, editor: "marian", duration: "24:18", date: "Jan 6, 2026", tier: "free" },
];

// ─── PACKS · seasonal activity packs store ────────────────
// Dual tier: pay-per-item OR included in WiseTip+
const PACKS = [
  // ── Seasonal / nature ──
  { id: "winter",  category: "season", season: { en: "Winter pack", es: "Pack Invierno" },
    title: { en: "12 weeks · no screens", es: "12 semanas · sin pantallas" },
    activities: 24, pdfPages: 96, ages: "3–12",
    needs: ["calm","low-prep","sibling","sensory-low","adhd"],
    price: 9.99, cover: "#0E3A28", glyph: "❄" },
  { id: "spring-start",  category: "season", season: { en: "Spring start", es: "Inicio primavera" },
    title: { en: "First green · planting & finding", es: "Primer verde · plantar y encontrar" },
    activities: 16, pdfPages: 64, ages: "3–12",
    needs: ["outdoor","fine-motor","sensory-rich","calm","sibling"],
    price: 9.99, cover: "#7DBE5A", glyph: "✿" },
  { id: "summer-start",  category: "season", season: { en: "Summer start", es: "Inicio verano" },
    title: { en: "Long days, slow afternoons", es: "Días largos, tardes lentas" },
    activities: 18, pdfPages: 72, ages: "3–17",
    needs: ["outdoor","movement","sibling","sensory-rich","language"],
    price: 9.99, cover: "#C8A85A", glyph: "☼" },
  { id: "summer",  category: "season", season: { en: "Summer pack", es: "Pack Verano" },
    title: { en: "Outdoors first · 10 weeks", es: "Primero al aire libre · 10 semanas" },
    activities: 30, pdfPages: 112, ages: "3–17",
    needs: ["outdoor","movement","sibling","sensory-rich"],
    price: 9.99, cover: "#3A5F2A", glyph: "△" },
  { id: "autumn",  category: "season", season: { en: "Autumn pack", es: "Pack Otoño" },
    title: { en: "Leaves, lanterns, slow walks", es: "Hojas, faroles, paseos lentos" },
    activities: 20, pdfPages: 80, ages: "3–12",
    needs: ["outdoor","calm","fine-motor","sibling","sensory-rich"],
    price: 9.99, cover: "#C45A3A", glyph: "❡" },

  // ── Lunar / cosmic ──
  { id: "fullmoon",  category: "ritual", season: { en: "Full Moon ritual", es: "Ritual Luna llena" },
    title: { en: "Once a month · evening pause", es: "Una vez al mes · pausa nocturna" },
    activities: 8, pdfPages: 32, ages: "3–17",
    needs: ["calm","outdoor","language","anxiety","autism"],
    price: 6.99, cover: "#3A5FA5", glyph: "◐" },
  { id: "first-snow",  category: "ritual", season: { en: "First snow", es: "Primera nieve" },
    title: { en: "Drop everything · go outside", es: "Suelta todo · sal fuera" },
    activities: 6, pdfPages: 24, ages: "3–14",
    needs: ["outdoor","movement","sensory-rich","sibling","low-prep"],
    price: 5.99, cover: "#F0EBE0", glyph: "❅" },

  // ── Holidays ──
  { id: "easter",  category: "holiday", season: { en: "Easter pack", es: "Pack Pascua" },
    title: { en: "Hunts, eggs, table rituals", es: "Búsquedas, huevos, rituales de mesa" },
    activities: 12, pdfPages: 48, ages: "3–12",
    needs: ["fine-motor","sibling","outdoor","language","sensory-rich"],
    price: 9.99, cover: "#9DC872", glyph: "✦" },
  { id: "thanksgiving",  category: "holiday", season: { en: "Thanksgiving", es: "Acción de Gracias" },
    title: { en: "Gratitude, cooking, table talk", es: "Gratitud, cocina, sobremesa" },
    activities: 10, pdfPages: 40, ages: "3–17",
    needs: ["language","sibling","calm","sensory-rich","fine-motor"],
    price: 9.99, cover: "#8A6020", glyph: "♔" },
  { id: "halloween",  category: "holiday", season: { en: "Halloween · low-fright", es: "Halloween · bajo susto" },
    title: { en: "Costumes, lanterns, walks", es: "Disfraces, faroles, paseos" },
    activities: 10, pdfPages: 40, ages: "3–10",
    needs: ["fine-motor","sibling","outdoor","sensory-low","autism"],
    price: 9.99, cover: "#3A2A4A", glyph: "✺" },
  { id: "winter-solstice",  category: "holiday", season: { en: "Winter holidays", es: "Fiestas de invierno" },
    title: { en: "Slow build-up to the longest night", es: "Llegada lenta a la noche más larga" },
    activities: 14, pdfPages: 56, ages: "3–14",
    needs: ["calm","sibling","fine-motor","sensory-low","language"],
    price: 9.99, cover: "#1E4128", glyph: "✧" },
  { id: "newyear",  category: "holiday", season: { en: "New year reset", es: "Reinicio de año" },
    title: { en: "Letters, lists, three rituals", es: "Cartas, listas, tres rituales" },
    activities: 8, pdfPages: 32, ages: "5–17",
    needs: ["language","calm","solo","anxiety","sibling"],
    price: 6.99, cover: "#0E2318", glyph: "✦" },
  { id: "lunar-newyear",  category: "holiday", season: { en: "Lunar new year", es: "Año nuevo lunar" },
    title: { en: "Red, food, family stories", es: "Rojo, comida, historias de familia" },
    activities: 8, pdfPages: 32, ages: "3–14",
    needs: ["language","sibling","sensory-rich","fine-motor"],
    price: 6.99, cover: "#C45A3A", glyph: "◉" },
  { id: "valentines",  category: "holiday", season: { en: "Family love · February", es: "Amor de familia · febrero" },
    title: { en: "Notes, voice notes, drawings", es: "Notas, mensajes de voz, dibujos" },
    activities: 7, pdfPages: 28, ages: "3–17",
    needs: ["language","fine-motor","calm","sibling","solo"],
    price: 5.99, cover: "#C45A3A", glyph: "♡" },
  { id: "mothers-day",  category: "holiday", season: { en: "Mother's Day", es: "Día de la Madre" },
    title: { en: "Letters, audio, slow breakfasts", es: "Cartas, audio, desayunos lentos" },
    activities: 6, pdfPages: 24, ages: "3–17",
    needs: ["language","sibling","calm","low-prep"],
    price: 5.99, cover: "#7A4A8A", glyph: "❀" },
  { id: "fathers-day",  category: "holiday", season: { en: "Father's Day", es: "Día del Padre" },
    title: { en: "Walks, builds, side-by-side", es: "Paseos, construcciones, lado a lado" },
    activities: 6, pdfPages: 24, ages: "3–17",
    needs: ["outdoor","movement","language","sibling"],
    price: 5.99, cover: "#3A5FA5", glyph: "▲" },
  { id: "earthday",  category: "holiday", season: { en: "Earth Day", es: "Día de la Tierra" },
    title: { en: "Plant, find, repair", es: "Plantar, encontrar, reparar" },
    activities: 10, pdfPages: 40, ages: "3–17",
    needs: ["outdoor","fine-motor","language","sibling","calm"],
    price: 7.99, cover: "#2E6B3A", glyph: "◯" },

  // ── Life-event ──
  { id: "birthday",  category: "lifeevent", season: { en: "Birthday ritual", es: "Ritual cumpleaños" },
    title: { en: "Make the day feel real", es: "Que el día se sienta real" },
    activities: 9, pdfPages: 38, ages: "3–14",
    needs: ["language","sibling","calm","low-prep"],
    price: 9, cover: "#C8A85A", glyph: "✶" },
  { id: "back-to-school",  category: "lifeevent", season: { en: "Back to school", es: "Vuelta al cole" },
    title: { en: "Two weeks of soft landing", es: "Dos semanas de aterrizaje suave" },
    activities: 12, pdfPages: 48, ages: "3–14",
    needs: ["calm","anxiety","language","sibling","low-prep"],
    price: 9.99, cover: "#3A5FA5", glyph: "▭" },
  { id: "new-sibling",  category: "lifeevent", season: { en: "New sibling", es: "Hermano/a nuevo" },
    title: { en: "The first 60 days · together", es: "Los primeros 60 días · juntos" },
    activities: 14, pdfPages: 56, ages: "3–12",
    needs: ["calm","sibling","language","anxiety","fine-motor"],
    price: 9.99, cover: "#C45A3A", glyph: "··" },
  { id: "moving",  category: "lifeevent", season: { en: "Moving house", es: "Mudanza" },
    title: { en: "Goodbye rituals · welcome rituals", es: "Rituales de adiós · rituales de bienvenida" },
    activities: 9, pdfPages: 36, ages: "3–14",
    needs: ["calm","anxiety","language","sibling","autism"],
    price: 7.99, cover: "#7A4A8A", glyph: "→" },

  // ── Need-based ──
  { id: "calm",  category: "need", season: { en: "Calm pack", es: "Pack Calma" },
    title: { en: "Regulation, sensory rest, repair", es: "Regulación, descanso, reparación" },
    activities: 18, pdfPages: 72, ages: "3–17",
    needs: ["calm","autism","adhd","sensory-low","anxiety"],
    price: 9.99, cover: "#3A5FA5", glyph: "◯" },
  { id: "movement",  category: "need", season: { en: "Movement pack", es: "Pack Movimiento" },
    title: { en: "Big body · short bursts", es: "Cuerpo grande · ráfagas cortas" },
    activities: 21, pdfPages: 80, ages: "3–12",
    needs: ["movement","adhd","sensory-rich","sibling"],
    price: 9.99, cover: "#C45A3A", glyph: "↯" },
  { id: "rainyday",  category: "need", season: { en: "Rainy day pack", es: "Pack día de lluvia" },
    title: { en: "30 indoor things to do", es: "30 cosas para hacer dentro" },
    activities: 30, pdfPages: 100, ages: "3–12",
    needs: ["low-prep","sibling","fine-motor","sensory-rich"],
    price: 9.99, cover: "#7A4A8A", glyph: "❡" },
  { id: "siblings",  category: "need", season: { en: "Siblings together", es: "Hermanos juntos" },
    title: { en: "Without the fight", es: "Sin la pelea" },
    activities: 16, pdfPages: 64, ages: "3–14",
    needs: ["sibling","calm","language","sensory-low"],
    price: 9.99, cover: "#9DC872", glyph: "··" },
  { id: "travel",  category: "need", season: { en: "Travel day pack", es: "Pack día de viaje" },
    title: { en: "Long flights, long drives, long waits", es: "Vuelos, viajes, esperas largas" },
    activities: 18, pdfPages: 72, ages: "3–12",
    needs: ["low-prep","calm","language","autism","anxiety"],
    price: 7.99, cover: "#0E2318", glyph: "→" },
];

// ─── WORKSHOPS / PROGRAMS ───────────────────────────────
const WORKSHOPS = [
  { id: "screen-reset", weeks: 2,
    title: { en: "Screen Reset", es: "Reinicio Pantallas" },
    sub:   { en: "Two weeks to change the household default", es: "Dos semanas para cambiar el patrón" },
    outcome: { en: "Less daily negotiation. A few new defaults that stick.", es: "Menos negociación diaria. Algunos hábitos que se quedan." },
    spots: 40, next: "May 4, 2026" },
  { id: "summer-no-screens", weeks: 8,
    title: { en: "Summer without Screens", es: "Verano sin Pantallas" },
    sub:   { en: "A summer that doesn't dissolve into a feed", es: "Un verano que no se disuelva en el feed" },
    outcome: { en: "A weekly plan, a packing list, a way to bring it back into the school year.", es: "Plan semanal, lista, una forma de mantenerlo al volver al cole." },
    spots: 80, next: "Jun 22, 2026" },
  { id: "ritual-builder", weeks: 4,
    title: { en: "Family Ritual Builder", es: "Constructor de rituales" },
    sub:   { en: "Design three rituals you'll actually keep", es: "Diseña tres rituales que sí mantendrás" },
    outcome: { en: "Tuesday-night dinner, Sunday-walk, monthly-letter — yours, named.", es: "Cena de martes, paseo de domingo, carta mensual — tuyos, con nombre." },
    spots: 60, next: "May 11, 2026" },
];

// ─── PROFILE / LIBRARY (sample state) ───────────────────
const LIBRARY_ITEMS = [
  { kind: "edition",   num: 161, title: { en: "Earth Day · the mint is still alive", es: "Día Tierra · la menta sigue viva" }, savedAt: "Apr 8, 2026", read: true },
  { kind: "activity",  id: 1,    title: { en: "The Stone Journal", es: "Diario de piedras" }, savedAt: "Apr 8, 2026", done: false },
  { kind: "audiobook", num: 100, title: { en: "Letter to edition 100", es: "Carta a la edición 100" }, savedAt: "Feb 18, 2025", listened: true },
  { kind: "tailor",    id: "T-001", title: { en: "Lola and the Mint That Survived Winter", es: "Lola y la Menta que sobrevivió" }, savedAt: "Apr 9, 2026" },
  { kind: "pack",      id: "calm",  title: { en: "Calm pack", es: "Pack Calma" }, savedAt: "Mar 2, 2026" },
  { kind: "edition",   num: 100,    title: { en: "Letter to edition 100", es: "Carta a la edición 100" }, savedAt: "Feb 18, 2025", read: true },
];

window.WS_NEEDS_TAGS = NEEDS_TAGS;
window.WS_SEASON_TAGS = SEASON_TAGS;
window.WS_ACTIVITIES = ACTIVITIES;
window.WS_PODCAST_LAYERS = PODCAST_LAYERS;
window.WS_PODCAST_EPISODES = PODCAST_EPISODES;
window.WS_PACKS = PACKS;
window.WS_WORKSHOPS = WORKSHOPS;
window.WS_LIBRARY = LIBRARY_ITEMS;
