// Shared community + changelog data for all three directions.
// Exported to window so each direction's JSX can read from one source.

const CHANGELOG = [
  {
    id: "week-22",
    version: "v1.81",
    codename: "Sadr",
    date: "August 2, 2026",
    anchor: "sadr",
    tag: "Featured",
    tone: "violet",
    title: "Your AI starts answering guests",
    body: "Until now your assistant waited to be asked. This week it starts reacting on its own — a guest says the door code doesn't work and a fix is already proposed before you've read the message. Your cleaners get a smoother app, and stays that stretch stop confusing your schedule.",
    shot: "/docs-assets/demo-ai-cockpit-event-agents.png",
    features: [
      { label: "🤖 Agents that react to guest signals", href: "/docs/ai-cockpit", blurb: "Set up an assistant that watches for real guest trouble — a door code that won't open, no WiFi, a flat lock battery, a parking question — and prepares the recovery itself. You approve over WhatsApp by default, and you can hand any agent full autonomy once you trust it." },
      { label: "🧹 A calmer cleaning walkthrough", href: "/docs/cleaner-app", blurb: "Cleaners can now fire off several photos in a row instead of waiting between shots, or upload the whole set at the end of the clean. The session lasts until the job is actually done, resumes straight where it stopped instead of starting over, and there's a one-tap reason for \"the guest left no cash\"." },
      { label: "💬 Approve with a tap, ask with a photo", href: "/docs/pulse-copilot", blurb: "The Copilot now offers real buttons when it needs your decision — no more typing \"yes\" to confirm. And you can send it a photo, so a picture of a receipt, a broken tap or a meter reading is enough to get an answer." },
      { label: "🛏 Stays that stretch stay one stay", href: "/docs/tasks", blurb: "When a guest extends, back-to-back nights are treated as a single stay. No phantom checkout, no cleaning crew sent in the middle of someone's holiday — the turnover lands on the real departure day." },
      { label: "📦 One place to say what a stay consumes", href: "/docs/supplies", blurb: "Define consumption once on the item itself and tie it to a cleaning checklist category. Stock drops as the work actually happens, and there's no second definition to keep in sync." },
      { label: "🔐 Smart locks connect in one step", href: "/docs/settings", blurb: "Enter your lock account once for the whole portfolio, then pick each apartment's lock by name from a list we fetch for you. No more copying identifiers between screens or retyping the same credentials per property." },
    ],
    bullets: [],
    author: "Product team",
  },
  {
    id: "week-21",
    version: "v1.74",
    codename: "Alhena",
    date: "July 26, 2026",
    anchor: "alhena",
    tag: "Release",
    tone: "blue",
    title: "Take the booking yourself",
    body: "The biggest week of the summer: direct bookings arrive end to end. Take a reservation yourself — no platform, no commission — and the rest of your setup keeps up automatically.",
    shot: "/docs-assets/demo-bookings-list.png",
    features: [
      { label: "🏷 Direct bookings, end to end", href: "/docs/reservations", blurb: "Select free dates on the calendar or start from a guest conversation, and create a booking in-app. Availability blocks across your connected channels instantly, deposits and partial payments live in a proper ledger, invoices come out with real numbers, and cancel or modify re-opens the dates everywhere." },
      { label: "🧭 Get on Booking.com, guided", href: "/docs/channel-sync", blurb: "A step-by-step onboarding wizard walks a new property through the full channel setup — an in-app checklist with deep links for the few steps only you can click. No more tab-juggling between help articles." },
      { label: "🚨 Blocked messages, actionable from WhatsApp", href: "/docs/auto-refine", blurb: "When an automated send is held back, the alert now tells you exactly why — and carries Dismiss / Send / Refine buttons right in WhatsApp. Resolve it from your pocket without opening the app." },
      { label: "📸 City-tax photos, double-checked", href: "/docs/accounting", blurb: "When a cash-count photo doesn't match the expected amount, a second independent recount re-reads the same photo — and payment rows now warn whenever recorded ≠ expected, with a one-tap accepted-variance state." },
      { label: "💶 Payout periods that start where the last one ended", href: "/docs/reports", blurb: "The payout report now prefills FROM to the day after the teammate's last settlement — no more overlapping already-paid items or silently losing unpaid ones from last month." },
      { label: "🔌 One Integrations home per property", href: "/docs/properties", blurb: "Provider connections and channel-sync switches now live on a single per-property Integrations screen — one place to see what's connected and what's syncing." },
    ],
    bullets: [],
    author: "Product team",
  },
  {
    id: "week-20",
    version: "v1.73",
    codename: "Mimosa",
    date: "July 19, 2026",
    anchor: "mimosa",
    tag: "Release",
    tone: "amber",
    title: "Your calendar, fully in your hands",
    body: "Pricing and availability now live where you look every day — plus notifications that reach your desktop and an FAQ library that polishes itself.",
    shot: "/docs-assets/demo-v28-bookings.png",
    features: [
      { label: "📅 Edit availability right on the calendar", href: "/docs/reservations", blurb: "Set or remove a price for any date, block dates, take a direct reservation, switch the pricing model, override fees and note special requests — six editing powers, straight on the availability calendar. No side screens, no spreadsheets." },
      { label: "🔔 Push notifications on your desktop", href: "/docs/in-app-notifications", blurb: "Opt in once and important events land in your Mac's Notification Center even when the app is in the background — with per-category preferences so you decide what's worth a ping." },
      { label: "🚨 Alerts that don't give up", href: "/docs/auto-refine", blurb: "When an automated send stays blocked, the alert now repeats every 30 minutes until someone resolves it — a single missed ping can no longer become a missed guest message." },
      { label: "📱 The booking timeline, now on mobile", href: "/docs/mobile", blurb: "The check-in/check-out timeline you know from the desktop calendar arrived on the mobile dashboard — see arrivals, departures and gaps at a glance from your pocket." },
      { label: "🧠 An FAQ library that improves itself", href: "/docs/properties", blurb: "The FAQ editor gained \"Improve with AI\" and \"Suggest by AI\" buttons, and your whole FAQ library now speaks one language — existing entries were translated so guests always get consistent answers." },
      { label: "🧹 Cleaner access, your policy", href: "/docs/cleaner-app", blurb: "Choose per workspace how cleaners open their app: OTP-protected (default) or a shareable code-free link for teams that prefer zero friction." },
    ],
    bullets: [],
    author: "Product team",
  },
  {
    id: "week-19",
    version: "v1.72",
    codename: "Arcturus",
    date: "July 12, 2026",
    anchor: "arcturus",
    tag: "Release",
    tone: "blue",
    title: "Your lock, your choice",
    body: "Four new smart-lock brands join the family. Whatever hardware is on your door, guest access now works the same way — automatically.",
    shot: "/docs-assets/infographic-lock-brands.svg",
    features: [
      { label: "🔐 igloohome, TTLock, SwitchBot & Tedee", href: "/docs/properties", blurb: "Connect locks from four more brands and get the full treatment on every one: automatic guest codes, expiry windows, one-tap revoke, and a live activity log. Same flow whether your door runs Nuki, 2N, Tuya — or any of the new four." },
      { label: "⏱ Offline codes that just work", href: "/docs/properties", blurb: "igloohome's algoPIN generates time-limited PINs even when the lock has no internet connection. Perfect for cellars, garages, and thick-walled old-town buildings." },
      { label: "🧹 A calmer task dashboard", href: "/docs/tasks", blurb: "Automated tasks that are no longer needed can now be dismissed in one tap, and day-to-day cards keep editing where it belongs — your agenda stays an agenda." },
    ],
    bullets: [],
    author: "Product team",
  },
  {
    id: "week-18",
    version: "v1.71",
    codename: "Capella",
    date: "July 5, 2026",
    anchor: "capella",
    tag: "Release",
    tone: "violet",
    title: "The Copilot asks first",
    body: "Big week for trust and reach: the AI Copilot now confirms every change before making it, speaks to every corner of your workspace, and your channel manager syncs both ways.",
    shot: "/docs-assets/demo-pulse-copilot-open.png",
    features: [
      { label: "🛑 Copilot confirms before it changes anything", href: "/docs/pulse-copilot", blurb: "Ask the Copilot to update a price, edit a template, or reassign a task — and it shows you exactly what it's about to change, waiting for your yes. You stay the boss; the AI stays the assistant." },
      { label: "🧭 One Copilot for everything", href: "/docs/pulse-copilot", blurb: "Message templates, email settings, pricing, FAQs — the Copilot can now read and (with your confirmation) manage all of it. One chat box instead of five admin screens." },
      { label: "🔄 Two-way channel sync with Beds24", href: "/docs/channel-sync", blurb: "Rates, availability and content now push from the platform to Beds24 — not just in. Update once, publish everywhere, and connect new properties with a built-in Test Connection + room mapping editor." },
      { label: "💶 Edit base prices right in the app", href: "/docs/properties", blurb: "Set base rates, weekend overrides and seasonal pricing per property without leaving your dashboard." },
      { label: "🖼 Supplies with product photos", href: "/docs/supplies", blurb: "Every supply item gets a real product image — auto-fetched by name and sanity-checked by AI so your detergent never shows up as shampoo. Litres and kilograms are now first-class units, merged sensibly across brands." },
      { label: "🔒 A redesigned Smart Locks screen", href: "/docs/properties", blurb: "Multi-lock properties show every door at once, activity from all locks lands in one chronological feed, and charging history sits one tab away." },
    ],
    bullets: [],
    author: "Product team",
  },
  {
    id: "week-17",
    version: "v1.64",
    codename: "Polaris",
    date: "June 28, 2026",
    anchor: "polaris",
    tag: "Release",
    tone: "emerald",
    title: "You approve every message",
    body: "Guest messaging got a safety upgrade you control end-to-end: choose how strict the AI checks are, let the AI polish its own drafts, and see a full history of every decision.",
    shot: "/docs-assets/demo-ai-cockpit-validators.png",
    features: [
      { label: "🎚 Message checks, your strictness", href: "/docs/auto-refine", blurb: "Every outbound message passes an AI quality check — and now you decide when it may interrupt: block everything questionable, only serious findings, or critical issues only. Per template, if you like." },
      { label: "🪄 Refine: the AI fixes its own draft", href: "/docs/auto-refine", blurb: "When a message is held back, you now have a third option beyond Send Anyway and Dismiss: Refine. The AI rewrites the draft to address the finding and re-checks it — right from the app or straight from WhatsApp." },
      { label: "📋 Every send decision on the record", href: "/docs/auto-refine", blurb: "Overrides and held messages are now fully logged — who approved what, when, and why — in a dedicated decisions view." },
      { label: "⏰ Approve a different check-in time", href: "/docs/reservations", blurb: "Guest asks for 11:00 but the apartment is free from 13:00? Edit the time right on the early check-in card and approve — the guest gets the confirmed slot." },
      { label: "💰 Financials that reconcile at a glance", href: "/docs/reports", blurb: "Reservation financials now label gross vs. net and show channel commission, so the headline numbers finally add up without a calculator." },
      { label: "👤 Reassign without leaving the list", href: "/docs/tasks", blurb: "Task cards got their assignee dropdown back, and checklist items can be reordered with a tap — small things, felt daily." },
    ],
    bullets: [],
    author: "Product team",
  },
  {
    id: "week-16",
    version: "v1.63",
    codename: "Antares",
    date: "June 21, 2026",
    anchor: "antares",
    tag: "Release",
    tone: "amber",
    title: "Supplies that manage themselves",
    body: "A week about control. Your inventory learns to organise itself, checklists grow real automation muscle, and you decide which AI engine runs your workspace.",
    shot: "/docs-assets/demo-operations-supplies.png",
    features: [
      { label: "📦 Supplies that sort themselves", href: "/docs/supplies", blurb: "Every supply item now lands in one of four consumption categories — Guest Consumables, Cleaning Supplies, Stay Essentials, Reusables — with AI-corrected product names, an ignore list that keeps shopping bags out of your books, and a redesigned product table with one-click drawer editing." },
      { label: "✅ Checklists with superpowers", href: "/docs/task-templates", blurb: "One checklist tick can now fire several actions at once — create a follow-up task AND deduct supplies in the same step. Consumption counts in pieces or percentages (\"20% of a bottle\"), and checklist-created tasks define their own completion behaviour." },
      { label: "🤖 Choose your AI engine", href: "/docs/ai-cockpit", blurb: "Pick the AI provider that fits your privacy and cost preferences — one toggle in Setup. And if a model is ever retired upstream, the platform switches to a current one automatically, so your automations never stop mid-season." },
      { label: "🎚 AI checks you can tune", href: "/docs/auto-refine", blurb: "Message-quality checks now carry a confidence score and only speak up above your chosen threshold. Fewer false alarms, same safety net." },
      { label: "🏠 Message templates go per-property", href: "/docs/communications", blurb: "Check-in instructions belong to each home, not one global list. Edit the parking note for one apartment without touching the others." },
      { label: "📊 See where your AI spend goes", href: "/docs/ai-cockpit", blurb: "Click any feature in the usage view and the whole cost dashboard filters to it — daily spend, trends, and usage windows for exactly that feature." },
    ],
    bullets: [],
    author: "Product team",
  },
  {
    id: "week-15",
    version: "v1.62",
    codename: "Sirius",
    date: "June 14, 2026",
    anchor: "sirius",
    tag: "Release",
    tone: "blue",
    title: "Your AI reads the manual",
    body: "Upload your property manuals and the AI answers guest questions from your documentation — plus richer reservation context and supplies analytics.",
    shot: "/docs-assets/demo-v28-reservations.png",
    features: [
      { label: "📚 Grounded answers from your manuals", href: "/docs/properties", blurb: "Upload the air-conditioning guide, the dishwasher manual, the parking map — per property. When a guest asks \"how do I turn on the AC?\", the AI answers from the exact document you provided. No more confident guessing." },
      { label: "📈 Supply usage at a glance", href: "/docs/supplies", blurb: "Click any inventory item for a pieces-remaining chart over time, and filter the full history by category. \"How much detergent do we actually use per month?\" is now a glance, not a spreadsheet." },
      { label: "🧾 Reservations tell the full story", href: "/docs/reservations", blurb: "The reservation panel now shows booking discounts exactly as the platform granted them (\"Promotion Discount −€54.40\") and breaks guests down into adults, children, infants and pets — welcome packs sized right, every time." },
      { label: "🌍 WhatsApp threads in your language", href: "/docs/communications", blurb: "Team conversations translate to your preferred language automatically, with a clear \"Translated to…\" marker so nothing gets lost between languages." },
      { label: "🧹 Start a clean from WhatsApp", href: "/docs/cleaner-app", blurb: "Cleaners can start their walkthrough by simply texting — no waiting for the smart-lock to notice them, no admin needed." },
      { label: "📎 Paste images straight into replies", href: "/docs/communications", blurb: "Copy a photo, hit paste in the inbox composer, send. The screenshot you just took reaches the guest in three keystrokes." },
    ],
    bullets: [],
    author: "Product team",
  },
  {
    id: "week-14",
    version: "v1.61",
    codename: "Rigel",
    date: "June 7, 2026",
    anchor: "rigel",
    tag: "Release",
    tone: "violet",
    title: "Sign in with Google",
    body: "Simpler sign-in, smarter invoicing, and supplies you can finally filter.",
    shot: "/docs-assets/demo-accounting-invoices.png",
    features: [
      { label: "🔑 Sign in with Google", href: "/docs/getting-started", blurb: "One click, no password to remember. Your workspace opens with the Google account you already use." },
      { label: "🧾 Invoices know their guest", href: "/docs/accounting", blurb: "Generate-from-reservation now carries the guest's name, email and address into the invoice, and reservations that already have one show a link instead of tempting you to create a duplicate." },
      { label: "📦 Supplies, filtered and traceable", href: "/docs/supplies", blurb: "Filter inventory by property, see who added what and where, and click any \"Receipt:\" entry to open the original document." },
      { label: "🤖 Tune your AI assistants", href: "/docs/ai-cockpit", blurb: "Each AI assistant's behaviour is now configurable from the cockpit — instructions, response style and how much it may reason — with every change tracked." },
      { label: "💸 Know what your AI costs", href: "/docs/ai-cockpit", blurb: "The cost dashboard now groups spending by conversation and shows what each request was about — transparency down to the single question." },
    ],
    bullets: [],
    author: "Product team",
  },
  {
    id: "week-13",
    version: "v1.55",
    codename: "Deneb",
    date: "May 31, 2026",
    anchor: "deneb",
    tag: "Release",
    tone: "amber",
    title: "Found a bug? One tap and it's ours",
    body: "Report anything from anywhere in the app — and a few long-requested money features landed too.",
    shot: "/docs-assets/demo-bug-report-modal.png",
    features: [
      { label: "🐛 In-app reports with screenshot, video & voice", href: "/docs/bug-report", blurb: "Spot something odd? Hit Report, grab a screenshot or a short screen recording, dictate what happened — done. Your report arrives with full context, so it gets acted on fast, without email ping-pong." },
      { label: "🔔 Notifications tuned per person", href: "/docs/team-and-access", blurb: "WhatsApp notifications now follow each teammate's preferences instead of one global switch — with per-template overrides for the truly critical alerts. Holiday mode: one toggle." },
      { label: "📊 Management fees, your way", href: "/docs/reports", blurb: "Configure the management fee per property — percentage of gross, percentage of net, or a flat monthly amount — and see it flow through revenue reports, owner statements and payouts." },
      { label: "💶 Accounting overview, now live", href: "/docs/accounting", blurb: "Pending payouts, the monthly bundle and city tax are real numbers on the overview — no more placeholders." },
      { label: "🗓 Clearer vacancy pricing", href: "/docs/reservations", blurb: "Vacancy tooltips now separate what the guest sees from what hits your margin, so pricing decisions use the right number." },
    ],
    bullets: [],
    author: "Product team",
  },
  {
    id: "week-12",
    version: "v1.54",
    codename: "Altair",
    date: "May 24, 2026",
    anchor: "altair",
    tag: "Release",
    tone: "emerald",
    title: "Find any conversation in seconds",
    body: "The inbox learned to search, message templates got a real editor, and the full guest picture opens right from your agenda.",
    shot: "/docs-assets/demo-v28-communication.png",
    features: [
      { label: "🔍 Search across guests and messages", href: "/docs/communications", blurb: "Type a name, a phone number, or a phrase from any conversation — the inbox finds it across all your threads, with the match highlighted." },
      { label: "✉️ Message templates, beautifully editable", href: "/docs/communications", blurb: "Check-in instructions, thank-you notes, parking guides — every guest-facing text now has a proper editor with placeholders and per-property overrides. No more hunting through settings." },
      { label: "🪟 The full guest picture, one click away", href: "/docs/getting-started", blurb: "Opening a conversation from your dashboard now brings the complete reservation context along — contact details, dates, financials, access codes and AI insights in one panel beside the chat." },
      { label: "📰 Follow what ships", href: "/docs/changelog", blurb: "A public changelog page shows every release — share it with your team or check what's new over morning coffee." },
    ],
    bullets: [],
    author: "Product team",
  },
  {
    id: "week-11",
    version: "v1.53",
    codename: "Vega",
    date: "May 17, 2026",
    anchor: "vega",
    tag: "Release",
    tone: "blue",
    title: "The week the dashboard grew wings",
    body: "The daily dashboard became a command center: vacancy intelligence inside the calendar, conversations one click from any task, and a faster cleaning flow your team will feel immediately.",
    shot: "/docs-assets/demo-v28-pulse.png",
    features: [
      { label: "📅 Vacancy radar inside the calendar", href: "/docs/reservations", blurb: "Open gaps of two nights or more light up right in the booking calendar, with promotion status at a glance — spot the revenue leak before the weekend does." },
      { label: "📸 Paste screenshots into the Copilot", href: "/docs/pulse-copilot", blurb: "Show the AI what you see: hit paste and the image lands in the conversation, ready to be discussed — exactly like a modern chat app." },
      { label: "💬 Conversations one click from any task", href: "/docs/tasks", blurb: "Every task card carries a chat icon — the guest's conversation slides in from the side without leaving your agenda." },
      { label: "📊 Revenue and simulation reports", href: "/docs/reports", blurb: "Net revenue, cleaning and management fees, city tax, per-property breakdowns and a what-if simulation — the numbers that drive decisions, all in the app." },
      { label: "🔋 Lock battery, on the record", href: "/docs/properties", blurb: "Charging history per lock shows every battery event with timestamps — know which locks were serviced before a guest ever stands at the door." },
      { label: "🧹 A faster cleaning walkthrough", href: "/docs/cleaner-app", blurb: "Checklist steps appear instantly, photos attach without extra taps, and special requests arrive translated into each cleaner's language." },
    ],
    bullets: [],
    author: "Product team",
  },
  {
    id: "week-10",
    version: "v1.52",
    codename: "Sargas",
    date: "May 10, 2026",
    anchor: "sargas",
    tag: "Release",
    tone: "violet",
    title: "Your accountant will love you",
    body: "Bookkeeping used to be the worst weekend of the month. Now it's a button.",
    shot: "/docs-assets/demo-accounting-overview.png",
    features: [
      { label: "🧾 One-click accounting bundle", href: "/docs/accounting", blurb: "Every month, the platform composes a complete accounting package — sales invoices, platform statements, commission documents and bank movements — and can email it straight to your accountant on schedule. ISDOC files import directly into Slovak and Czech accounting software." },
      { label: "🏦 Statements read themselves", href: "/docs/accounting", blurb: "Upload a Booking.com payout statement, an Airbnb earnings report or a bank PDF — the platform parses them into clean, matched records. No more retyping numbers." },
      { label: "💶 City tax, computed", href: "/docs/accounting", blurb: "Cross-property city-tax reports with per-platform rules — the numbers your municipality wants, without the spreadsheet gymnastics." },
      { label: "🔁 Recurring expenses on autopilot", href: "/docs/accounting", blurb: "Rent, utilities, subscriptions — define them once and they book themselves every month." },
      { label: "📅 A dashboard that plans your day", href: "/docs/getting-started", blurb: "Today's work now arrives grouped into four clear lanes — what's due, what's coming, what resolved itself, and what needs you — on the dashboard and in your morning WhatsApp summary." },
    ],
    bullets: [],
    author: "Product team",
  },
  {
    id: "week-09",
    version: "v1.51",
    codename: "Wezen",
    date: "May 3, 2026",
    anchor: "wezen",
    tag: "Release",
    tone: "emerald",
    title: "Your cleaning team's new copilot",
    body: "Cleaners don't open dashboards. They open WhatsApp — so the whole cleaning workflow lives there now.",
    shot: "/docs-assets/demo-v28-cleaning.png",
    features: [
      { label: "🧹 The cleaning copilot speaks WhatsApp", href: "/docs/cleaner-app", blurb: "Cleaners text \"plán\" and get their week — properties, dates, cleaning windows — in their own language. Off-script messages get a warm, helpful answer instead of a robotic error." },
      { label: "📦 Stock counts from the apartment", href: "/docs/cleaner-app", blurb: "A quick supply-check conversation lets cleaners recount what's on the shelf right from the property — the inventory updates itself, skips included." },
      { label: "📖 A cleaning manual that travels", href: "/docs/cleaner-app", blurb: "Every property gets a beautiful public cleaning manual — step photos included, machine-translated into your team's languages, one link away on any phone." },
      { label: "🖼 Show the AI what you mean", href: "/docs/pulse-copilot", blurb: "Attach a photo to your AI chat — a broken lamp, a receipt, a screenshot — and the assistant sees it, understands it and acts on it." },
    ],
    bullets: [],
    author: "Product team",
  },
  {
    id: "week-08",
    version: "v1.42",
    codename: "Naos",
    date: "April 19, 2026",
    anchor: "naos",
    tag: "Release",
    tone: "blue",
    title: "Automations that build themselves",
    body: "Describe the automation you want in a sentence — the AI assembles it.",
    shot: "/docs-assets/demo-task-template-editor.png",
    features: [
      { label: "🤖 AI builds your automations", href: "/docs/task-templates", blurb: "Type \"remind guests about parking the day before arrival\" and the AI Task Builder creates the full automation — trigger, timing, conditions, message — ready to review and activate. It can update existing automations the same way." },
      { label: "🎛 Buttons you design yourself", href: "/docs/task-templates", blurb: "Task cards can now carry your own action buttons — with smart placeholders that pre-fill guest names, dates, codes or any detail from the reservation." },
      { label: "🧠 The AI reads the mood", href: "/docs/communications", blurb: "Every guest conversation is analysed for mood and intent — so you see who needs attention before it becomes a review." },
      { label: "🕰 Test with history", href: "/docs/task-templates", blurb: "Try any automation against a past reservation and watch exactly what it would have done — before it ever touches a real guest." },
    ],
    bullets: [],
    author: "Product team",
  },
  {
    id: "week-07",
    version: "v1.41",
    codename: "Izar",
    date: "April 5, 2026",
    anchor: "izar",
    tag: "Release",
    tone: "amber",
    title: "Supplies, timelines and smarter properties",
    body: "Inventory stopped being a guess, and the calendar learned to tell stories.",
    shot: "/docs-assets/demo-supplies-inventory.png",
    features: [
      { label: "📦 Supplies management arrives", href: "/docs/supplies", blurb: "Track stock per property, add deliveries by photographing the receipt, and let low-stock levels create restock tasks automatically — toilet paper never surprises you again." },
      { label: "📅 The reservation timeline", href: "/docs/reservations", blurb: "A horizontal calendar shows every property's bookings at a glance — same-day turnovers split neatly in half, and one click opens the guest conversation." },
      { label: "🏠 Properties that sync themselves", href: "/docs/properties", blurb: "Amenities, room details and capacity flow in from your channel manager automatically — your listings and your operations finally agree." },
      { label: "🔑 Team access codes in one click", href: "/docs/team-and-access", blurb: "Generate door codes for a teammate across all of a property's locks — smart lock and building entrance together." },
    ],
    bullets: [],
    author: "Product team",
  },
  {
    id: "week-06",
    version: "v1.32",
    codename: "Alcor",
    date: "March 22, 2026",
    anchor: "alcor",
    tag: "Release",
    tone: "violet",
    title: "Every task ends with the right action",
    body: "Completing a task can now do the work for you.",
    shot: "/docs-assets/demo-task-template-detail.png",
    features: [
      { label: "⚡ Actions on completion", href: "/docs/task-templates", blurb: "Finishing a task can send the guest a message, update the reservation, or revoke access codes after checkout — automatically, in any combination." },
      { label: "💬 Reply with a template, anywhere", href: "/docs/communications", blurb: "Answer guests from the dashboard or straight from WhatsApp with your saved templates — in the guest's language, images included." },
      { label: "🗂 Money trail, complete", href: "/docs/accounting", blurb: "Payment history per teammate, one-tap \"mark paid\", and expenses that flow from receipts to reports." },
      { label: "🛡 Daily backups, automatic", href: "/docs/getting-started", blurb: "Your data backs itself up every day — restore points you'll hopefully never need, there when you do." },
    ],
    bullets: [],
    author: "Product team",
  },
  {
    id: "week-05",
    version: "v1.31",
    codename: "Atria",
    date: "March 8, 2026",
    anchor: "atria",
    tag: "Release",
    tone: "emerald",
    title: "Your operations, on WhatsApp",
    body: "The operations center opened — and it reports to your pocket.",
    shot: "/docs-assets/demo-operations-team.png",
    features: [
      { label: "👥 Team management arrives", href: "/docs/team-and-access", blurb: "Teammates with roles, availability days, priorities and per-role rates — the whole crew, organised in one place." },
      { label: "🤖 Tasks that create themselves", href: "/docs/task-templates", blurb: "Define rules once — \"cleaning after every checkout\", \"welcome message on arrival day\" — and tasks appear on schedule, pre-filled and assigned." },
      { label: "📱 Your morning briefing on WhatsApp", href: "/docs/communications", blurb: "Every day at 9:30, WhatsApp delivers your day: check-ins, checkouts, due tasks — with interactive buttons to act right from the chat." },
      { label: "🧾 Receipts become expenses", href: "/docs/accounting", blurb: "Photograph a receipt and the AI turns it into a categorised expense — supplier, amount, VAT — no typing." },
    ],
    bullets: [],
    author: "Product team",
  },
  {
    id: "week-04",
    version: "v1.22",
    codename: "Mira",
    date: "February 22, 2026",
    anchor: "mira",
    tag: "Release",
    tone: "blue",
    title: "Know your market",
    body: "Price with data, not gut feeling.",
    shot: "/docs-assets/demo-v28-bookings.png",
    features: [
      { label: "🔍 Price research across platforms", href: "/docs/reports", blurb: "See what comparable apartments charge on Booking.com and Airbnb — matched across platforms, mapped by location, tracked over time." },
      { label: "📈 Market trends at a glance", href: "/docs/reports", blurb: "Price history and trend views show where your market is heading — and where your rates should be." },
      { label: "🗓 Availability calendar with direct bookings", href: "/docs/reservations", blurb: "Manage pricing, block dates and record direct reservations on one calendar — no channel required." },
    ],
    bullets: [],
    author: "Product team",
  },
  {
    id: "week-03",
    version: "v1.21",
    codename: "Pollux",
    date: "February 8, 2026",
    anchor: "pollux",
    tag: "Release",
    tone: "amber",
    title: "The AI joins your inbox",
    body: "Guest messaging got a brain and a beautiful new face.",
    shot: "/docs-assets/demo-reports-messages.png",
    features: [
      { label: "✨ AI-suggested replies", href: "/docs/communications", blurb: "Every guest message arrives with a suggested answer drafted from your property knowledge — review, tweak, send. Minutes per message become seconds." },
      { label: "📚 The Knowledge Hub", href: "/docs/properties", blurb: "Teach the platform about each property once — house rules, parking, quirks — and every AI answer draws on it." },
      { label: "🔐 Team logins with roles", href: "/docs/team-and-access", blurb: "Managers and owners get their own accounts with the right level of access — no more shared passwords." },
      { label: "🎨 A calmer, glassier design", href: "/docs/getting-started", blurb: "Reports and messages moved into a cleaner three-pane layout that stays readable on a busy day." },
    ],
    bullets: [],
    author: "Product team",
  },
  {
    id: "week-02",
    version: "v1.12",
    codename: "Castor",
    date: "January 25, 2026",
    anchor: "castor",
    tag: "Release",
    tone: "violet",
    title: "Price intelligence, built in",
    body: "Two weeks in, the platform learned what your nights are worth.",
    shot: "/docs-assets/demo-reports-revenue.png",
    features: [
      { label: "💡 Base prices from real data", href: "/docs/reports", blurb: "The platform derives each property's true base price from months of calendar data — outliers removed, weekends split — so every pricing decision starts from reality." },
      { label: "🏷 See your prices as guests do", href: "/docs/reports", blurb: "Live checks of your Booking.com and Airbnb listings reveal the price guests actually see — promotions detected, gaps flagged." },
      { label: "🔮 Revenue simulation", href: "/docs/reports", blurb: "Model next season before it happens: occupancy assumptions in, projected revenue out." },
      { label: "📥 Bring your history along", href: "/docs/reservations", blurb: "Import past Booking.com and Airbnb reservations so your reports start with the full picture, not from zero." },
    ],
    bullets: [],
    author: "Product team",
  },
  {
    id: "week-01",
    version: "v1.11",
    codename: "Spica",
    date: "January 11, 2026",
    anchor: "spica",
    tag: "Release",
    tone: "emerald",
    title: "Where it all began",
    body: "The first release: guest access that handles itself.",
    shot: "/docs-assets/infographic-genesis-access.svg",
    features: [
      { label: "🔑 Automatic guest access", href: "/docs/properties", blurb: "A confirmed booking generates everything a guest needs to get in — a personal smart-lock PIN and a building-entrance QR code — delivered without you lifting a finger." },
      { label: "🔗 Connected to your channel manager", href: "/docs/channel-sync", blurb: "Reservations flow in from your channel manager the moment they're booked — names, dates and stays, always in sync." },
      { label: "📊 The first revenue report", href: "/docs/reports", blurb: "Nights, fees, platform commissions and your actual payout — per property, per month, from day one." },
      { label: "💬 Guest messages, measured", href: "/docs/communications", blurb: "Every conversation tracked with response stats and ratings — the foundation everything since is built on." },
    ],
    bullets: [],
    author: "Product team",
  },
];

const FEATURE_REQUESTS = [
  {
    id: "fr-1",
    title: "Automated turnover photos via cleaner phone",
    body: "Force the cleaner to upload 6 photos of the property post-cleaning, AI checks against “golden” photos and flags discrepancies.",
    votes: 248,
    status: "in-progress",
    tag: "Operations",
    author: "Linda K.",
    avatar: "amber",
    comments: 34,
    age: "2 weeks ago",
    pinned: true,
  },
  {
    id: "fr-2",
    title: "Slack workspace integration for portfolio teams",
    body: "Get reservation events, mood flags, and daily summaries into a dedicated Slack channel. Per-property routing.",
    votes: 192,
    status: "planned",
    tag: "Integrations",
    author: "Marek S.",
    avatar: "blue",
    comments: 28,
    age: "1 month ago",
  },
  {
    id: "fr-3",
    title: "Custom AI tone per property",
    body: "I have 1 boutique loft (warm, intimate) and 4 city-center studios (efficient, direct). One global tone doesn’t fit both.",
    votes: 167,
    status: "in-progress",
    tag: "AI",
    author: "Anna F.",
    avatar: "emerald",
    comments: 41,
    age: "3 weeks ago",
  },
  {
    id: "fr-4",
    title: "Direct booking checkout page with luxury.host payments",
    body: "Move guests off OTAs over time. Hosted Stripe checkout with the property guestbook as the upsell page.",
    votes: 134,
    status: "planned",
    tag: "Revenue",
    author: "Petr O.",
    avatar: "violet",
    comments: 22,
    age: "1 month ago",
  },
  {
    id: "fr-5",
    title: "Hospitú + Lodgify channel sync",
    body: "Two regional channels missing. Hospitú is huge for SK/CZ direct bookings, Lodgify covers smaller hosts.",
    votes: 98,
    status: "open",
    tag: "Integrations",
    author: "Juraj M.",
    avatar: "amber",
    comments: 12,
    age: "2 months ago",
  },
  {
    id: "fr-6",
    title: "Damage deposit AI — photo evidence + dispute flow",
    body: "Cleaner reports damage. AI drafts the dispute. I review, approve, and luxury.host files it with Airbnb resolution center.",
    votes: 87,
    status: "open",
    tag: "Operations",
    author: "Eva H.",
    avatar: "blue",
    comments: 18,
    age: "3 weeks ago",
  },
  {
    id: "fr-7",
    title: "Per-guest tax exemption (corporate stays)",
    body: "Corporate guests in some EU jurisdictions are city tax exempt. Need a flag on the reservation and exclusion from monthly filing.",
    votes: 64,
    status: "planned",
    tag: "Finance",
    author: "Tomáš R.",
    avatar: "emerald",
    comments: 9,
    age: "1 month ago",
  },
  {
    id: "fr-8",
    title: "Voice notes for cleaning team",
    body: "Sometimes a 10-second voice memo is faster than typing. Auto-transcribe + translate to cleaner’s preferred language.",
    votes: 52,
    status: "open",
    tag: "Operations",
    author: "Carla V.",
    avatar: "violet",
    comments: 7,
    age: "2 weeks ago",
  },
  {
    id: "fr-9",
    title: "Two-way calendar sync with Google Calendar",
    body: "Block dates from my personal calendar (kids in the apartment for the holidays) and have it push to Airbnb + Booking.",
    votes: 41,
    status: "open",
    tag: "Operations",
    author: "Marie L.",
    avatar: "amber",
    comments: 5,
    age: "1 week ago",
  },
];

const ROADMAP = {
  inProgress: [
    { id: "rm-1", title: "Multi-property revenue forecasting", eta: "Shipping w/ v1.44", tag: "Revenue", votes: 312 },
    { id: "rm-2", title: "Automated turnover photo QC", eta: "Late June 2026", tag: "Operations", votes: 248 },
    { id: "rm-3", title: "Per-property AI tone & personality", eta: "Late June 2026", tag: "AI", votes: 167 },
    { id: "rm-4", title: "Slack workspace integration", eta: "July 2026", tag: "Integrations", votes: 192 },
  ],
  planned: [
    { id: "rm-5", title: "Direct booking checkout (hosted)", eta: "Q3 2026", tag: "Revenue", votes: 134 },
    { id: "rm-6", title: "Corporate stay tax exemption", eta: "Q3 2026", tag: "Finance", votes: 64 },
    { id: "rm-7", title: "Native iOS + Android apps", eta: "Q3 2026", tag: "Platform", votes: 421 },
    { id: "rm-8", title: "Auto guest review responses", eta: "Q4 2026", tag: "AI", votes: 88 },
  ],
  exploring: [
    { id: "rm-9", title: "luxury.host for serviced offices", eta: "Research", tag: "New segment", votes: 23 },
    { id: "rm-10", title: "AI concierge upsell engine", eta: "Research", tag: "Revenue", votes: 71 },
    { id: "rm-11", title: "Owner co-pilot — voice mode", eta: "Research", tag: "AI", votes: 36 },
  ],
  shipped: [
    { id: "rm-12", title: "Dynamic pricing v2 (event-aware)", date: "v1.40 · Apr 1", tag: "Revenue" },
    { id: "rm-13", title: "Nuki + TTLock native integrations", date: "v1.41 · Apr 15", tag: "Integrations" },
    { id: "rm-14", title: "Cleaning team mobile companion", date: "v1.42 · Apr 29", tag: "Operations" },
    { id: "rm-15", title: "Portfolio mood tracking", date: "v1.43 · May 7", tag: "AI" },
  ],
};

const THREADS = [
  {
    id: "th-1",
    title: "How are you handling guests who insist on calling before booking?",
    excerpt: "Some guests want to negotiate over phone before they’ll book direct. Most of mine drop off. Curious if anyone’s found a flow that works.",
    author: "Lukas R.",
    avatar: "amber",
    location: "Vienna",
    properties: 3,
    replies: 24,
    views: 412,
    lastReply: "2h ago",
    tag: "Guests",
    pinned: false,
    hot: true,
  },
  {
    id: "th-2",
    title: "⚡ v1.44 Forecasting — what are you using it for in your business?",
    excerpt: "Started using the new forecast on 8 properties this week. Curious how you’re acting on the numbers — do you change pricing? Marketing spend? Listings?",
    author: "Petra K.",
    avatar: "emerald",
    location: "Prague",
    properties: 5,
    replies: 41,
    views: 892,
    lastReply: "12m ago",
    tag: "Revenue",
    pinned: true,
    hot: true,
    shTeam: true,
  },
  {
    id: "th-3",
    title: "Best practice: handling Booking.com Genius discount and luxury.host pricing",
    excerpt: "When BDC offers 10% Genius and luxury.host’s also adjusting, am I stacking discounts I don’t want to give? How do you guardrail this?",
    author: "Marc D.",
    avatar: "blue",
    location: "Barcelona",
    properties: 4,
    replies: 18,
    views: 304,
    lastReply: "5h ago",
    tag: "Revenue",
  },
  {
    id: "th-4",
    title: "AI replies on a sensitive issue — do you have it draft or stay quiet?",
    excerpt: "Guest had a medical emergency mid-stay. AI drafted a fine response but I want to handle that one personally. How do you configure this kind of triage?",
    author: "Anna F.",
    avatar: "emerald",
    location: "Bratislava",
    properties: 2,
    replies: 32,
    views: 567,
    lastReply: "1d ago",
    tag: "AI",
    hot: true,
  },
  {
    id: "th-5",
    title: "Show-and-tell: my luxury.host × Notion accounting workflow",
    excerpt: "Wrote up how I export luxury.host monthly bundles into Notion + sync to my accountant. ~12 minutes saved a month. Sharing the template.",
    author: "Tomáš H.",
    avatar: "violet",
    location: "Bratislava",
    properties: 4,
    replies: 14,
    views: 218,
    lastReply: "6h ago",
    tag: "Templates",
  },
  {
    id: "th-6",
    title: "Cleaner says new mobile companion is ‘better than WhatsApp’ — wins from week 1",
    excerpt: "Two weeks in. Cleaner adoption: 100%. Damage reports up (in a good way — we’re catching things earlier). Photos coming in within 20 min of checkout.",
    author: "Carla V.",
    avatar: "amber",
    location: "Madrid",
    properties: 6,
    replies: 22,
    views: 488,
    lastReply: "3h ago",
    tag: "Operations",
  },
  {
    id: "th-7",
    title: "Feature request: per-property AI tone (anyone else?)",
    excerpt: "Boutique loft vs. studio rentals shouldn’t have the same voice. Linking the FR thread — give it an upvote if you agree.",
    author: "Anna F.",
    avatar: "emerald",
    location: "Bratislava",
    properties: 2,
    replies: 11,
    views: 156,
    lastReply: "8h ago",
    tag: "AI",
  },
];

const STORIES = [
  {
    id: "st-1",
    title: "From 3 properties to 11 in 18 months without hiring",
    host: "Lukas Rauch",
    location: "Vienna, AT",
    avatar: "amber",
    portfolio: "11 properties",
    lift: "+28% revenue",
    time: "8 min read",
    excerpt: "Lukas runs eleven boutique apartments across Vienna. No assistant, no co-host. Here’s how he uses luxury.host as the system between him and scale.",
  },
  {
    id: "st-2",
    title: "How Petra rebuilt occupancy from 64% to 81% in 90 days",
    host: "Petra Kollárová",
    location: "Prague, CZ",
    avatar: "emerald",
    portfolio: "5 properties",
    lift: "+17pp occupancy",
    time: "6 min read",
    excerpt: "Two underperforming flats were dragging down her portfolio. A focused 90-day pricing experiment turned them into her top earners.",
  },
  {
    id: "st-3",
    title: "Going off the OTA grid — 60% direct bookings, year three",
    host: "Marc Delvecchio",
    location: "Barcelona, ES",
    avatar: "blue",
    portfolio: "4 properties",
    lift: "60% direct",
    time: "9 min read",
    excerpt: "Marc walked us through the slow shift away from OTAs. Repeat guests, branded guestbooks, and a payment flow that just works.",
  },
];

const EVENTS = [
  {
    id: "ev-1",
    title: "Open office hours with the AI team",
    when: "May 23, 2026 · 5:00 PM CET",
    format: "Live · Zoom",
    host: "Ravi M. + Lukas D.",
    seats: "120 / 200",
    topic: "AI tone, mood, and how to override gracefully.",
    going: true,
  },
  {
    id: "ev-2",
    title: "Pricing playbook — summer in EU rentals",
    when: "May 29, 2026 · 4:00 PM CET",
    format: "Webinar",
    host: "Mira K. + guest: Petra K.",
    seats: "284 / 500",
    topic: "Event-aware pricing, festival windows, and shoulder season strategies.",
  },
  {
    id: "ev-3",
    title: "Bratislava host meetup — in person",
    when: "Jun 6, 2026 · 6:30 PM",
    format: "In person · ŽLTý KÕň",
    host: "luxury.host HQ",
    seats: "32 / 40",
    topic: "Drinks, demos, and a private tour of Tatra Loft.",
  },
  {
    id: "ev-4",
    title: "Office hours — accounting & VAT",
    when: "Jun 12, 2026 · 3:00 PM CET",
    format: "Live · Zoom",
    host: "Lukas D. + accountant Q&A",
    seats: "47 / 150",
    topic: "Monthly close, city tax, and exporting for your accountant.",
  },
];

const TEMPLATES = [
  {
    id: "tp-1",
    title: "Late check-out request — polite, conditional",
    by: "Lukas R.",
    avatar: "amber",
    type: "Message preset",
    installs: 412,
    rating: 4.9,
    excerpt: "A graceful late-checkout response that offers 1–2 PM free, charges thereafter, and protects same-day cleaning.",
  },
  {
    id: "tp-2",
    title: "Monthly close — luxury.host → Pohoda export",
    by: "Tomáš H.",
    avatar: "violet",
    type: "Workflow",
    installs: 188,
    rating: 4.8,
    excerpt: "Step-by-step export that drops cleanly into Pohoda. Includes city tax line items broken out.",
  },
  {
    id: "tp-3",
    title: "Boutique guestbook theme — Vienna 1900",
    by: "Sasha P.",
    avatar: "emerald",
    type: "Guestbook theme",
    installs: 306,
    rating: 4.7,
    excerpt: "Newsreader serif, sepia photo treatment, and an editorial tip layout. Best for >50 m² properties.",
  },
  {
    id: "tp-4",
    title: "Cleaner damage report — photo + form preset",
    by: "Carla V.",
    avatar: "blue",
    type: "Cleaner flow",
    installs: 251,
    rating: 4.9,
    excerpt: "What we ask cleaners to capture, in what order. Cuts disputes and missed restocks.",
  },
];

const SHOWCASE = [
  { id: "sc-1", title: "Tatra Loft", by: "Tomáš H.", location: "Bratislava", listings: 1, accent: "amber" },
  { id: "sc-2", title: "Vienna 7th", by: "Lukas R.", location: "Vienna", listings: 3, accent: "emerald" },
  { id: "sc-3", title: "Studio Setúbal", by: "Marc D.", location: "Barcelona", listings: 4, accent: "blue" },
  { id: "sc-4", title: "Letná Editions", by: "Petra K.", location: "Prague", listings: 5, accent: "violet" },
];

// Daylight palette — coral primary, lavender / peach / teal secondaries
const STATUS_MAP = {
  "open":         { label: "Open",        color: "#807e87", bg: "rgba(10,10,12,0.06)" },
  "planned":      { label: "Planned",     color: "#a86a2e", bg: "rgba(208,136,64,0.14)" },
  "in-progress":  { label: "In progress", color: "#a04e26", bg: "rgba(200,106,52,0.12)" },
  "shipped":      { label: "Shipped",     color: "#3f7a5f", bg: "rgba(95,149,118,0.14)" },
};

// Tone keys stay the same so JSX is unchanged; values shift to brand palette
const TONE_COLOR = {
  amber:   "#c86a34", // coral
  blue:    "#6b9982", // teal
  emerald: "#5c6d4f", // sage
  violet:  "#d08840", // lavender
  ink:     "#807e87", // mid-ink (for minor/quiet entries)
};

const AVATAR_GRADIENT = {
  amber:   "linear-gradient(135deg, #eab890, #c86a34)",
  blue:    "linear-gradient(135deg, #c8e2cf, #6b9982)",
  emerald: "linear-gradient(135deg, #c8d3b8, #5c6d4f)",
  violet:  "linear-gradient(135deg, #bcd6c4, #d08840)",
};

Object.assign(window, {
  CHANGELOG, FEATURE_REQUESTS, ROADMAP, THREADS, STORIES, EVENTS, TEMPLATES, SHOWCASE,
  STATUS_MAP, TONE_COLOR, AVATAR_GRADIENT,
});
