{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "e92e4333",
   "metadata": {},
   "source": [
    "# CX Exploration & Discovery Workshop\n",
    "\n",
    "A structured conversation across eight topics. The board below tracks where\n",
    "the discussion is and what's been covered — it updates live as we talk."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "0e66bf69",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-07-31T13:00:28.748989Z",
     "iopub.status.busy": "2026-07-31T13:00:28.748928Z",
     "iopub.status.idle": "2026-07-31T13:00:28.788617Z",
     "shell.execute_reply": "2026-07-31T13:00:28.788325Z"
    },
    "tags": [
     "presentation"
    ]
   },
   "outputs": [],
   "source": [
    "# ── Setup ──────────────────────────────────────────────────────────\n",
    "import sys, pathlib\n",
    "_ROOT = pathlib.Path.cwd()\n",
    "if not (_ROOT / \"discoverylib\").exists():        # notebook lives in notebooks/\n",
    "    _ROOT = _ROOT.parent\n",
    "sys.path.insert(0, str(_ROOT))\n",
    "\n",
    "import html as _html\n",
    "\n",
    "import mercury as mr\n",
    "\n",
    "# Schema + session logic come from the library; the CONTENT (the topic\n",
    "# bank) lives in the tagged topic-bank cell below — edit it there.\n",
    "from discoverylib import (\n",
    "    STATUSES, STATUS_LABEL,\n",
    "    build_session, subtopic_checklist, subtopic_id, session_json,\n",
    ")\n",
    "from discoverylib.staging import backstage, backstage_md\n",
    "\n",
    "# ── Brand palette (docs/brand.md, light theme) ─────────────────────\n",
    "NAVY, INK, MUTED = \"#151d2c\", \"#2e404d\", \"#586671\"\n",
    "BLUE, GREEN, LINE = \"#0072bc\", \"#00a34c\", \"#e2e6e9\"\n",
    "CARD_BG, HAIRLINE = \"#f8f8f8\", \"#d5d9db\"\n",
    "FONT = \"Georgia, 'Times New Roman', serif\"\n",
    "BODY_FONT = \"Arial, 'Helvetica Neue', Helvetica, sans-serif\"\n",
    "\n",
    "\n",
    "def esc(s):\n",
    "    return _html.escape(str(s))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "13ec330d",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-07-31T13:00:28.789595Z",
     "iopub.status.busy": "2026-07-31T13:00:28.789530Z",
     "iopub.status.idle": "2026-07-31T13:00:28.791928Z",
     "shell.execute_reply": "2026-07-31T13:00:28.791690Z"
    },
    "tags": [
     "presentation"
    ]
   },
   "outputs": [
    {
     "data": {
      "text/markdown": [
       "**How to run this session** *(backstage — the client never sees this)*\n",
       "\n",
       "- **Sidebar** — one **status** selector and a **notes** box per topic, plus a\n",
       "  **checkbox** per sub-topic. Set the topic you're on to *In progress*, tick\n",
       "  sub-topics as you cover them, mark it *Complete* (or *Skipped*) when you move\n",
       "  on, and jot answers in its notes box. Every change re-renders the board and\n",
       "  progress bar (Mercury re-runs the cells below the widgets).\n",
       "- **Stage** (the Mercury screen) — the client sees the title, the topic board,\n",
       "  and the one-line progress print. Nothing else on this page renders there.\n",
       "- **Content** lives in the tagged `topic-bank` cell below; client session facts\n",
       "  in the tagged `engagement-data` cell — placeholders in this master, filled in\n",
       "  the engagement copy (see docs/Assessment_Pattern_V1-00.md, copy-out checklist).\n",
       "- **The question script** renders further down, backstage only — your running\n",
       "  order; ask conversationally.\n",
       "- **Afterward** — `python scripts/export_report.py` writes the LLM-ready\n",
       "  captured record to `exports/`.\n",
       "- Confidence legend for notes: 🟢 confirmed · 🟡 estimated · 🔴 unknown.\n"
      ],
      "text/plain": [
       "<IPython.core.display.Markdown object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# ── Facilitator run-book — renders backstage only, never on the stage ─\n",
    "backstage_md(\"\"\"\\\n",
    "**How to run this session** *(backstage — the client never sees this)*\n",
    "\n",
    "- **Sidebar** — one **status** selector and a **notes** box per topic, plus a\n",
    "  **checkbox** per sub-topic. Set the topic you're on to *In progress*, tick\n",
    "  sub-topics as you cover them, mark it *Complete* (or *Skipped*) when you move\n",
    "  on, and jot answers in its notes box. Every change re-renders the board and\n",
    "  progress bar (Mercury re-runs the cells below the widgets).\n",
    "- **Stage** (the Mercury screen) — the client sees the title, the topic board,\n",
    "  and the one-line progress print. Nothing else on this page renders there.\n",
    "- **Content** lives in the tagged `topic-bank` cell below; client session facts\n",
    "  in the tagged `engagement-data` cell — placeholders in this master, filled in\n",
    "  the engagement copy (see docs/Assessment_Pattern_V1-00.md, copy-out checklist).\n",
    "- **The question script** renders further down, backstage only — your running\n",
    "  order; ask conversationally.\n",
    "- **Afterward** — `python scripts/export_report.py` writes the LLM-ready\n",
    "  captured record to `exports/`.\n",
    "- Confidence legend for notes: 🟢 confirmed · 🟡 estimated · 🔴 unknown.\n",
    "\"\"\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "4798dd67",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-07-31T13:00:28.792635Z",
     "iopub.status.busy": "2026-07-31T13:00:28.792572Z",
     "iopub.status.idle": "2026-07-31T13:00:28.798532Z",
     "shell.execute_reply": "2026-07-31T13:00:28.798266Z"
    },
    "tags": [
     "topic-bank"
    ]
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "topic bank — 8 topics · 26 sub-topics · 95 prompts\n"
     ]
    }
   ],
   "source": [
    "# ── Topic bank — THE study content: edit HERE, in this cell ─────────\n",
    "# Verbatim anchor (Mercury Notebook Pattern): the facilitation content,\n",
    "# structured but never paraphrased away from the source survey\n",
    "# docs/cx_discovery_survey.md (the original cxxm.md). Editing a prompt's\n",
    "# wording is editing the anchor — do it against the survey.\n",
    "#\n",
    "# Rules:\n",
    "#   * NEVER renumber or rename a `key` — captured notes, sidebar widget\n",
    "#     state, and the JSON export all key off it.\n",
    "#   * Editing a topic/sub-topic *title* renames its sidebar widget label,\n",
    "#     which resets that widget's state mid-session. Prompt wording is\n",
    "#     backstage-only and safe to edit between sessions.\n",
    "#   * Keep this cell self-contained (no magics, no other imports): the\n",
    "#     test suite finds it by its \"topic-bank\" cell tag and execs it to\n",
    "#     pin the content — after an edit, re-run the notebook (the gate\n",
    "#     re-checks it) and `pytest` to re-pin.\n",
    "#\n",
    "# Shape: TOPICS is an ordered tuple of Topic; each topic owns ordered\n",
    "# SubTopics; each sub-topic owns the facilitator prompts (the questions\n",
    "# you actually ask). The stage shows topic titles, scope lines, and the\n",
    "# active topic's sub-topic checklist; prompts stay backstage. `minutes`\n",
    "# sums into the agenda estimate. Ordered as a workshop runs: context\n",
    "# first, then operational areas, then enabling functions, closing on\n",
    "# reporting & insight.\n",
    "from discoverylib import SubTopic, Topic, backstage\n",
    "\n",
    "TOPICS: tuple[Topic, ...] = (\n",
    "    Topic(\n",
    "        key=\"background\",\n",
    "        title=\"Background & Organization\",\n",
    "        scope=\"Lines of business, channels, org structure, decision-making\",\n",
    "        minutes=15,\n",
    "        subtopics=(\n",
    "            SubTopic(\n",
    "                \"lines_of_business\", \"Lines of business & scope\",\n",
    "                (\n",
    "                    \"How many distinct lines of business are supported in the \"\n",
    "                    \"contact centre? (e.g. commercial, residential, retail, \"\n",
    "                    \"wholesale)\",\n",
    "                    \"Are you using the contact centre for internal uses such as \"\n",
    "                    \"help desk, finance, HR?\",\n",
    "                    \"Payment card / PCI in scope?\",\n",
    "                    \"What are the availability SLAs or targets for your \"\n",
    "                    \"technology platform?\",\n",
    "                ),\n",
    "            ),\n",
    "            SubTopic(\n",
    "                \"channels_supported\", \"Channels supported\",\n",
    "                (\n",
    "                    \"Which channels do you support today? (Apps, Voice, Video, \"\n",
    "                    \"Chat, SMS, Email, Social Media, Digital Assistants)\",\n",
    "                ),\n",
    "            ),\n",
    "            SubTopic(\n",
    "                \"org_structure\", \"Org & reporting structure\",\n",
    "                (\n",
    "                    \"Mini org chart — reporting structure up to the executive \"\n",
    "                    \"leader.\",\n",
    "                    \"Are your contact centres managed by the same person? \"\n",
    "                    \"(Managers / Team Leads / Agents)\",\n",
    "                    \"Who carries the cost of contact centre agents and \"\n",
    "                    \"supervisors?\",\n",
    "                    \"What revenue is generated by the contact centre?\",\n",
    "                ),\n",
    "            ),\n",
    "            SubTopic(\n",
    "                \"decision_making\", \"Decision-making & priorities\",\n",
    "                (\n",
    "                    \"Is decision-making centralized or decentralized?\",\n",
    "                    \"Who are the key decision makers for changes to the contact \"\n",
    "                    \"centre?\",\n",
    "                    \"How important is CX & EX to your organization's strategy? \"\n",
    "                    \"Is there an executive accountable for CX (CXO, CDO)?\",\n",
    "                    \"Of your leading offers, what is the customer's top priority?\",\n",
    "                    \"Competitive pressures?\",\n",
    "                    \"Any pending or recent acquisitions or spinoffs affecting IT \"\n",
    "                    \"infrastructure and services?\",\n",
    "                ),\n",
    "            ),\n",
    "            SubTopic(\n",
    "                \"problems_today\", \"Problems & causes today\",\n",
    "                (\n",
    "                    \"What do you view as the problems in your contact centre \"\n",
    "                    \"today, and the primary causes?\",\n",
    "                    \"Any in-flight projects — CX or EX improvement initiatives?\",\n",
    "                    \"Are your customer experiences personalized?\",\n",
    "                ),\n",
    "            ),\n",
    "        ),\n",
    "    ),\n",
    "    Topic(\n",
    "        key=\"cx_strategy\",\n",
    "        title=\"CX Strategy\",\n",
    "        scope=\"How CX value is defined, measured, and organized to deliver\",\n",
    "        minutes=15,\n",
    "        subtopics=(\n",
    "            SubTopic(\n",
    "                \"value_definition\", \"Value & strategic position\",\n",
    "                (\n",
    "                    \"How is the value of Customer Experience defined within your \"\n",
    "                    \"organization? Is CX a key BPI, recognized & measured as a \"\n",
    "                    \"financial value?\",\n",
    "                    \"What are the key capabilities / services delivered by the \"\n",
    "                    \"contact centre?\",\n",
    "                    \"How are you using CX innovation to create market \"\n",
    "                    \"disruption?\",\n",
    "                    \"How are competitors using CX to create competitive \"\n",
    "                    \"differentiation?\",\n",
    "                ),\n",
    "            ),\n",
    "            SubTopic(\n",
    "                \"operating_model\", \"Organization & operating model\",\n",
    "                (\n",
    "                    \"Is there a CX team? Do the CX insights team regularly \"\n",
    "                    \"educate the business?\",\n",
    "                    \"Who are the key decision makers for investment and changes \"\n",
    "                    \"to the contact centre? Channel management strategy?\",\n",
    "                    \"What are the teams, and how are processes managed?\",\n",
    "                    \"Describe your automation strategy. Who is your leader for \"\n",
    "                    \"Data & AI?\",\n",
    "                ),\n",
    "            ),\n",
    "            SubTopic(\n",
    "                \"insight_and_voc\", \"Insight & Voice of Customer\",\n",
    "                (\n",
    "                    \"How do you use analytics & data to generate a consolidated \"\n",
    "                    \"view of your customer experience?\",\n",
    "                    \"Is there a VOC program in place? ROI / business value \"\n",
    "                    \"known?\",\n",
    "                    \"How do customers rate the experience they receive (0–5)?\",\n",
    "                ),\n",
    "            ),\n",
    "            SubTopic(\n",
    "                \"continuous_improvement\", \"Continuous improvement\",\n",
    "                (\n",
    "                    \"How is customer insight used to drive CX improvement, \"\n",
    "                    \"loyalty and profitability? How do you anticipate needs?\",\n",
    "                    \"Do you have a clear set of CX design guidelines? (Personas, \"\n",
    "                    \"Journey Mapping, Tools)\",\n",
    "                    \"KPI targets for CX — CSAT, NPS, CES? How are you doing?\",\n",
    "                ),\n",
    "            ),\n",
    "            SubTopic(\n",
    "                \"employee_engagement\", \"Employee engagement\",\n",
    "                (\n",
    "                    \"Describe your employee / agent engagement strategy.\",\n",
    "                    \"How engaged are your people in delivering the customer \"\n",
    "                    \"experience?\",\n",
    "                    \"Do you have a VoA / VoE program in place? How are you \"\n",
    "                    \"doing?\",\n",
    "                ),\n",
    "            ),\n",
    "        ),\n",
    "    ),\n",
    "    Topic(\n",
    "        key=\"channels\",\n",
    "        title=\"Channels\",\n",
    "        scope=\"Inbound & outbound volumes, metrics, contact reasons\",\n",
    "        minutes=20,\n",
    "        subtopics=(\n",
    "            SubTopic(\n",
    "                \"inbound_context\", \"Inbound context\",\n",
    "                (\n",
    "                    \"Hours of operation — any 24×7?\",\n",
    "                    \"Who contacts the contact centre? (Demographics, their \"\n",
    "                    \"situation)\",\n",
    "                    \"Are certain callers or groups prioritized?\",\n",
    "                    \"Languages? (English, Canadian French, Spanish, other)\",\n",
    "                ),\n",
    "            ),\n",
    "            SubTopic(\n",
    "                \"voice_metrics\", \"Voice & video metrics\",\n",
    "                (\n",
    "                    \"Average number of active agents (voice / video).\",\n",
    "                    \"Toll-free numbers & DIDs — approximate quantities.\",\n",
    "                    \"Average Wait Time, Abandon rate, Handle Time, Hold Time, \"\n",
    "                    \"After-call work time.\",\n",
    "                    \"Time to authenticate a caller.\",\n",
    "                    \"% of calls transferred — internally / externally (3rd \"\n",
    "                    \"parties)?\",\n",
    "                    \"Courtesy callback / virtual hold? Post-call survey? First \"\n",
    "                    \"Call Resolution rate? Average revenue per call (sales)?\",\n",
    "                ),\n",
    "            ),\n",
    "            SubTopic(\n",
    "                \"digital_channels\", \"Digital channels\",\n",
    "                (\n",
    "                    \"Email — range of logged-in users, response time, email \"\n",
    "                    \"server.\",\n",
    "                    \"Chat — web (internal/external), app-embedded, SMS, \"\n",
    "                    \"Messenger, WhatsApp, Telegram, iMessage.\",\n",
    "                    \"Website forms, mobile apps.\",\n",
    "                ),\n",
    "            ),\n",
    "            SubTopic(\n",
    "                \"inbound_reasons\", \"Inbound contact reasons\",\n",
    "                (\n",
    "                    \"Top 3–5 inbound contact reasons and approximate % of calls.\",\n",
    "                    \"Cost per call? Average Handle Time?\",\n",
    "                    \"Busiest / least busy days? Seasonal variances?\",\n",
    "                    \"Most difficult, commonly occurring calls? Easiest commonly \"\n",
    "                    \"occurring call?\",\n",
    "                ),\n",
    "            ),\n",
    "            SubTopic(\n",
    "                \"outbound\", \"Outbound\",\n",
    "                (\n",
    "                    \"Hours of operation.\",\n",
    "                    \"Voice (preview / predictive dialer volume), email, SMS, \"\n",
    "                    \"recorded announcement ports.\",\n",
    "                    \"Self-service applications, live agent connect, campaign \"\n",
    "                    \"management, DNC management.\",\n",
    "                    \"Top 3–5 outbound contact reasons and approximate % of \"\n",
    "                    \"calls.\",\n",
    "                    \"After-call work?\",\n",
    "                ),\n",
    "            ),\n",
    "        ),\n",
    "    ),\n",
    "    Topic(\n",
    "        key=\"agent_environment\",\n",
    "        title=\"Agent & Supervisor Environment\",\n",
    "        scope=\"Locations, endpoints, desktop, applications, knowledge\",\n",
    "        minutes=10,\n",
    "        subtopics=(\n",
    "            SubTopic(\n",
    "                \"locations_endpoints\", \"Locations & endpoints\",\n",
    "                (\n",
    "                    \"Location types — WFH / offices.\",\n",
    "                    \"Hard phone, soft phone, CODEC, wireless headset?\",\n",
    "                    \"Agent greeting / pre-recorded messages, whisper \"\n",
    "                    \"announcement.\",\n",
    "                    \"PC — desktop, laptop, VDI.\",\n",
    "                ),\n",
    "            ),\n",
    "            SubTopic(\n",
    "                \"desktop_apps\", \"Desktop & applications\",\n",
    "                (\n",
    "                    \"Agent & supervisor desktop — omnichannel? Custom gadgets, \"\n",
    "                    \"screen pops, workflows.\",\n",
    "                    \"Standard browser? SSO?\",\n",
    "                    \"Applications used to handle calls.\",\n",
    "                    \"Knowledge Management.\",\n",
    "                ),\n",
    "            ),\n",
    "        ),\n",
    "    ),\n",
    "    Topic(\n",
    "        key=\"routing_automation\",\n",
    "        title=\"Routing & Automation\",\n",
    "        scope=\"Self-service, IVR, speech, virtual agents, agent assist, RPA\",\n",
    "        minutes=15,\n",
    "        subtopics=(\n",
    "            SubTopic(\n",
    "                \"self_service\", \"Self-service & IVR\",\n",
    "                (\n",
    "                    \"IVR persona — branding, style guides, voice actors?\",\n",
    "                    \"DTMF and/or speech? Speech recognition, TTS, NLU, voice \"\n",
    "                    \"biometrics.\",\n",
    "                    \"Self-service applications — ID & validate, deflection, \"\n",
    "                    \"situational offer (outage / time of day / scheduled).\",\n",
    "                    \"API integration (CRM). Intent capture, intent prediction, \"\n",
    "                    \"offer push on prediction / account attribute.\",\n",
    "                ),\n",
    "            ),\n",
    "            SubTopic(\n",
    "                \"virtual_agents\", \"Virtual agents & assist\",\n",
    "                (\n",
    "                    \"Virtual agents — which processes?\",\n",
    "                    \"Agent assist?\",\n",
    "                    \"RPA?\",\n",
    "                    \"Current challenges or desired capabilities. Desire to \"\n",
    "                    \"automate. DevOps team?\",\n",
    "                ),\n",
    "            ),\n",
    "            SubTopic(\n",
    "                \"digital_assistants\", \"Digital assistant apps\",\n",
    "                (\n",
    "                    \"Alexa, Google Assistant, Siri?\",\n",
    "                ),\n",
    "            ),\n",
    "        ),\n",
    "    ),\n",
    "    Topic(\n",
    "        key=\"workforce_engagement\",\n",
    "        title=\"Workforce Engagement\",\n",
    "        scope=\"Call recording / QM, WFM, agent self-service, integrations\",\n",
    "        minutes=20,\n",
    "        subtopics=(\n",
    "            SubTopic(\n",
    "                \"recording_qm\", \"Call recording & Quality Management\",\n",
    "                (\n",
    "                    \"How is call recording used? Compliance, screen capture, \"\n",
    "                    \"voice transcription (real-time?), desktop analytics, \"\n",
    "                    \"retention period.\",\n",
    "                    \"Quality team — who do they report to, how many people? \"\n",
    "                    \"Scorecards, score method & metrics, number of assessments, \"\n",
    "                    \"coaching, live monitor.\",\n",
    "                    \"Locations with call recording. Number of named agents.\",\n",
    "                ),\n",
    "            ),\n",
    "            SubTopic(\n",
    "                \"workforce_management\", \"Workforce management\",\n",
    "                (\n",
    "                    \"Recruitment process, required qualifications, average \"\n",
    "                    \"tenure, attrition rate, internal moves.\",\n",
    "                    \"Do you measure agent & supervisor experience? Recognition \"\n",
    "                    \"program?\",\n",
    "                    \"Adherence measure — KPIs, gamification, shift length, \"\n",
    "                    \"breaks, annualized utilization %.\",\n",
    "                    \"Forecasting & scheduling — peak volume, historical data, \"\n",
    "                    \"algorithms, WFM interval (15/30 min).\",\n",
    "                    \"Intraday / real-time adherence — what happens when out of \"\n",
    "                    \"compliance?\",\n",
    "                    \"Payroll integration (ADP / Workday). Satisfaction with \"\n",
    "                    \"current tool(s)? Multiskilled agents, FTE calculations.\",\n",
    "                ),\n",
    "            ),\n",
    "            SubTopic(\n",
    "                \"agent_self_service\", \"Agent self-service & integrations\",\n",
    "                (\n",
    "                    \"Agent self-service — absences, shift bids / swaps, \"\n",
    "                    \"performance metrics.\",\n",
    "                    \"Number of named agents.\",\n",
    "                    \"Integration to 3rd party — outsourcer / overflow, payroll.\",\n",
    "                ),\n",
    "            ),\n",
    "        ),\n",
    "    ),\n",
    "    Topic(\n",
    "        key=\"training\",\n",
    "        title=\"Training\",\n",
    "        scope=\"Onboarding, format, assessment, eLearning, QM integration\",\n",
    "        minutes=5,\n",
    "        subtopics=(\n",
    "            SubTopic(\n",
    "                \"onboarding\", \"Onboarding & enablement\",\n",
    "                (\n",
    "                    \"Onboarding process — how long, training format, \"\n",
    "                    \"assessment?\",\n",
    "                    \"eLearning?\",\n",
    "                    \"QM integration?\",\n",
    "                ),\n",
    "            ),\n",
    "        ),\n",
    "    ),\n",
    "    Topic(\n",
    "        key=\"reporting_insights\",\n",
    "        title=\"Reporting & Insights\",\n",
    "        scope=\"Real-time & historical reporting, analytics, BI, CRM\",\n",
    "        minutes=10,\n",
    "        subtopics=(\n",
    "            SubTopic(\n",
    "                \"reporting\", \"Reporting\",\n",
    "                (\n",
    "                    \"Real-time and historical — what are the key metrics you \"\n",
    "                    \"report on?\",\n",
    "                    \"Data source integration, dashboards, wallboards, agent & \"\n",
    "                    \"supervisor status.\",\n",
    "                ),\n",
    "            ),\n",
    "            SubTopic(\n",
    "                \"analytics_insights\", \"Analytics & insights\",\n",
    "                (\n",
    "                    \"Integrated view of customer details and contact history? \"\n",
    "                    \"CRM?\",\n",
    "                    \"Does the contact centre collect and use customer insight? \"\n",
    "                    \"Predictive engagement?\",\n",
    "                    \"What data analysis do you perform? Analytics / BI team — how \"\n",
    "                    \"many people? BI platform?\",\n",
    "                    \"Executive-level reporting? Marketing team interlock?\",\n",
    "                ),\n",
    "            ),\n",
    "        ),\n",
    "    ),\n",
    ")\n",
    "\n",
    "backstage(f\"topic bank — {len(TOPICS)} topics · \"\n",
    "          f\"{sum(len(t.subtopics) for t in TOPICS)} sub-topics · \"\n",
    "          f\"{sum(t.prompt_count for t in TOPICS)} prompts\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "6140ecae",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-07-31T13:00:28.799174Z",
     "iopub.status.busy": "2026-07-31T13:00:28.799109Z",
     "iopub.status.idle": "2026-07-31T13:00:28.800536Z",
     "shell.execute_reply": "2026-07-31T13:00:28.800362Z"
    },
    "tags": [
     "engagement-data"
    ]
   },
   "outputs": [],
   "source": [
    "# ── Engagement data — EDIT PER ENGAGEMENT (tagged: engagement-data) ──\n",
    "# Client facts live HERE, in the notebook — never in a .py file. In the\n",
    "# MASTER these are placeholders; fill them in the engagement copy (see\n",
    "# docs/Assessment_Pattern_V1-00.md, \"Copy-out checklist\"). Values flow to\n",
    "# the stage board header, the export preamble, and the JSON appendix meta.\n",
    "# Keep this cell self-contained (no imports, no magics): tests read it by\n",
    "# its \"engagement-data\" tag and exec it.\n",
    "ENGAGEMENT: dict[str, object] = {\n",
    "    \"client\": \"\",           # e.g. \"Acme Corp\" — shown on the stage board header\n",
    "    \"workshop_date\": \"\",    # ISO date, e.g. \"2026-08-12\"\n",
    "    \"facilitator\": \"\",      # who runs the session\n",
    "    \"attendees\": (),        # tuple of \"Name — role\" strings\n",
    "}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "e84c36b2",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-07-31T13:00:28.801204Z",
     "iopub.status.busy": "2026-07-31T13:00:28.801148Z",
     "iopub.status.idle": "2026-07-31T13:00:28.830970Z",
     "shell.execute_reply": "2026-07-31T13:00:28.830721Z"
    },
    "tags": [
     "presentation"
    ]
   },
   "outputs": [
    {
     "data": {
      "application/mercury+json": {
       "model_id": "a6520b5d0ea3476da951c3f026ef46ee",
       "position": "sidebar",
       "widget": "SelectWidget"
      },
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "a6520b5d0ea3476da951c3f026ef46ee",
       "version_major": 2,
       "version_minor": 1
      },
      "text/plain": [
       "<mercury.select.SelectWidget object at 0x703eac68eba0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/mercury+json": {
       "model_id": "25d50932b435444f925055818eb1e7fb",
       "position": "sidebar",
       "widget": "CheckboxWidget"
      },
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "25d50932b435444f925055818eb1e7fb",
       "version_major": 2,
       "version_minor": 1
      },
      "text/plain": [
       "<mercury.checkbox.CheckboxWidget object at 0x703eac68ee40>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/mercury+json": {
       "model_id": "6eb6e4b2535949e6bdc2ef86f27fa7d5",
       "position": "sidebar",
       "widget": "CheckboxWidget"
      },
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "6eb6e4b2535949e6bdc2ef86f27fa7d5",
       "version_major": 2,
       "version_minor": 1
      },
      "text/plain": [
       "<mercury.checkbox.CheckboxWidget object at 0x703eac6dd1d0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/mercury+json": {
       "model_id": "74c803b80eb749348f9215c7f0bf1ae9",
       "position": "sidebar",
       "widget": "CheckboxWidget"
      },
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "74c803b80eb749348f9215c7f0bf1ae9",
       "version_major": 2,
       "version_minor": 1
      },
      "text/plain": [
       "<mercury.checkbox.CheckboxWidget object at 0x703eac6dd590>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/mercury+json": {
       "model_id": "7302bae9ac134fe891f312ef56eaffd9",
       "position": "sidebar",
       "widget": "CheckboxWidget"
      },
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "7302bae9ac134fe891f312ef56eaffd9",
       "version_major": 2,
       "version_minor": 1
      },
      "text/plain": [
       "<mercury.checkbox.CheckboxWidget object at 0x703eac52c180>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/mercury+json": {
       "model_id": "c531a01e2b5445a685aa9de95bd82d51",
       "position": "sidebar",
       "widget": "CheckboxWidget"
      },
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "c531a01e2b5445a685aa9de95bd82d51",
       "version_major": 2,
       "version_minor": 1
      },
      "text/plain": [
       "<mercury.checkbox.CheckboxWidget object at 0x703eac52c3e0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/mercury+json": {
       "model_id": "fc9718f4007145fcb6382bb421ab30e4",
       "position": "sidebar",
       "widget": "TextInputWidget"
      },
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "fc9718f4007145fcb6382bb421ab30e4",
       "version_major": 2,
       "version_minor": 1
      },
      "text/plain": [
       "<mercury.text.TextInputWidget object at 0x703eac68ef90>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/mercury+json": {
       "model_id": "8f091c414a234436990cbabb0d247de9",
       "position": "sidebar",
       "widget": "SelectWidget"
      },
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "8f091c414a234436990cbabb0d247de9",
       "version_major": 2,
       "version_minor": 1
      },
      "text/plain": [
       "<mercury.select.SelectWidget object at 0x703eac6ddbd0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/mercury+json": {
       "model_id": "4fffa51b1f8c443a9a54dd5384c62dc2",
       "position": "sidebar",
       "widget": "CheckboxWidget"
      },
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "4fffa51b1f8c443a9a54dd5384c62dc2",
       "version_major": 2,
       "version_minor": 1
      },
      "text/plain": [
       "<mercury.checkbox.CheckboxWidget object at 0x703eac66a8d0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/mercury+json": {
       "model_id": "75964ed9b3bc41b392f597d3d1de7732",
       "position": "sidebar",
       "widget": "CheckboxWidget"
      },
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "75964ed9b3bc41b392f597d3d1de7732",
       "version_major": 2,
       "version_minor": 1
      },
      "text/plain": [
       "<mercury.checkbox.CheckboxWidget object at 0x703eac530380>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/mercury+json": {
       "model_id": "347797bec7614a4bb25d2d85224ee854",
       "position": "sidebar",
       "widget": "CheckboxWidget"
      },
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "347797bec7614a4bb25d2d85224ee854",
       "version_major": 2,
       "version_minor": 1
      },
      "text/plain": [
       "<mercury.checkbox.CheckboxWidget object at 0x703eac530490>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/mercury+json": {
       "model_id": "af6a4133d4f5443d9906ec19d6a5a322",
       "position": "sidebar",
       "widget": "CheckboxWidget"
      },
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "af6a4133d4f5443d9906ec19d6a5a322",
       "version_major": 2,
       "version_minor": 1
      },
      "text/plain": [
       "<mercury.checkbox.CheckboxWidget object at 0x703eac540050>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/mercury+json": {
       "model_id": "7ed6ace9dd0c4cd5add9b62128ad94ae",
       "position": "sidebar",
       "widget": "CheckboxWidget"
      },
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "7ed6ace9dd0c4cd5add9b62128ad94ae",
       "version_major": 2,
       "version_minor": 1
      },
      "text/plain": [
       "<mercury.checkbox.CheckboxWidget object at 0x703eac540650>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/mercury+json": {
       "model_id": "f124bb0f618046d59879ddfe613b2d57",
       "position": "sidebar",
       "widget": "TextInputWidget"
      },
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "f124bb0f618046d59879ddfe613b2d57",
       "version_major": 2,
       "version_minor": 1
      },
      "text/plain": [
       "<mercury.text.TextInputWidget object at 0x703eac6de490>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/mercury+json": {
       "model_id": "2f11bd348ef442a2b3fb5829f37efe2e",
       "position": "sidebar",
       "widget": "SelectWidget"
      },
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "2f11bd348ef442a2b3fb5829f37efe2e",
       "version_major": 2,
       "version_minor": 1
      },
      "text/plain": [
       "<mercury.select.SelectWidget object at 0x703eac6de710>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/mercury+json": {
       "model_id": "005fe38674bd4261897d40591aeb793f",
       "position": "sidebar",
       "widget": "CheckboxWidget"
      },
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "005fe38674bd4261897d40591aeb793f",
       "version_major": 2,
       "version_minor": 1
      },
      "text/plain": [
       "<mercury.checkbox.CheckboxWidget object at 0x703eac68a8a0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/mercury+json": {
       "model_id": "c225acc8664d4dd482792cc9ad451178",
       "position": "sidebar",
       "widget": "CheckboxWidget"
      },
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "c225acc8664d4dd482792cc9ad451178",
       "version_major": 2,
       "version_minor": 1
      },
      "text/plain": [
       "<mercury.checkbox.CheckboxWidget object at 0x703eac68a4e0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/mercury+json": {
       "model_id": "e1c00f930b2f4fc6bd6e694b1560fe5d",
       "position": "sidebar",
       "widget": "CheckboxWidget"
      },
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "e1c00f930b2f4fc6bd6e694b1560fe5d",
       "version_major": 2,
       "version_minor": 1
      },
      "text/plain": [
       "<mercury.checkbox.CheckboxWidget object at 0x703eac682cf0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/mercury+json": {
       "model_id": "b1d02643012c4444b6cf899feb8d1fef",
       "position": "sidebar",
       "widget": "CheckboxWidget"
      },
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "b1d02643012c4444b6cf899feb8d1fef",
       "version_major": 2,
       "version_minor": 1
      },
      "text/plain": [
       "<mercury.checkbox.CheckboxWidget object at 0x703eac6826d0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/mercury+json": {
       "model_id": "eeb51c493f684fd4b4469c9bc27f7bef",
       "position": "sidebar",
       "widget": "CheckboxWidget"
      },
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "eeb51c493f684fd4b4469c9bc27f7bef",
       "version_major": 2,
       "version_minor": 1
      },
      "text/plain": [
       "<mercury.checkbox.CheckboxWidget object at 0x703eb416b2b0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/mercury+json": {
       "model_id": "26af1dec8a404838beb37187857e4941",
       "position": "sidebar",
       "widget": "TextInputWidget"
      },
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "26af1dec8a404838beb37187857e4941",
       "version_major": 2,
       "version_minor": 1
      },
      "text/plain": [
       "<mercury.text.TextInputWidget object at 0x703eac6defd0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/mercury+json": {
       "model_id": "e611c2d7646447f29b4d9d4b5bf5fa73",
       "position": "sidebar",
       "widget": "SelectWidget"
      },
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "e611c2d7646447f29b4d9d4b5bf5fa73",
       "version_major": 2,
       "version_minor": 1
      },
      "text/plain": [
       "<mercury.select.SelectWidget object at 0x703eac52c510>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/mercury+json": {
       "model_id": "63ff21a9bdb649cc9d2e4b7d58baffec",
       "position": "sidebar",
       "widget": "CheckboxWidget"
      },
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "63ff21a9bdb649cc9d2e4b7d58baffec",
       "version_major": 2,
       "version_minor": 1
      },
      "text/plain": [
       "<mercury.checkbox.CheckboxWidget object at 0x703eac500f50>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/mercury+json": {
       "model_id": "2a193c9dfd6a4134aaa5826a9f720d80",
       "position": "sidebar",
       "widget": "CheckboxWidget"
      },
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "2a193c9dfd6a4134aaa5826a9f720d80",
       "version_major": 2,
       "version_minor": 1
      },
      "text/plain": [
       "<mercury.checkbox.CheckboxWidget object at 0x703eac5010d0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/mercury+json": {
       "model_id": "06a9529c7c85454195da078934279080",
       "position": "sidebar",
       "widget": "TextInputWidget"
      },
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "06a9529c7c85454195da078934279080",
       "version_major": 2,
       "version_minor": 1
      },
      "text/plain": [
       "<mercury.text.TextInputWidget object at 0x703eac52c640>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/mercury+json": {
       "model_id": "b568a0ea3a574d71b72e8095ed2b92e2",
       "position": "sidebar",
       "widget": "SelectWidget"
      },
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "b568a0ea3a574d71b72e8095ed2b92e2",
       "version_major": 2,
       "version_minor": 1
      },
      "text/plain": [
       "<mercury.select.SelectWidget object at 0x703eac52c770>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/mercury+json": {
       "model_id": "70026e6c871a4a6295b2999e512e77e8",
       "position": "sidebar",
       "widget": "CheckboxWidget"
      },
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "70026e6c871a4a6295b2999e512e77e8",
       "version_major": 2,
       "version_minor": 1
      },
      "text/plain": [
       "<mercury.checkbox.CheckboxWidget object at 0x703eac6cf8b0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/mercury+json": {
       "model_id": "77865f023ab94b3784bf0bfb35eec22b",
       "position": "sidebar",
       "widget": "CheckboxWidget"
      },
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "77865f023ab94b3784bf0bfb35eec22b",
       "version_major": 2,
       "version_minor": 1
      },
      "text/plain": [
       "<mercury.checkbox.CheckboxWidget object at 0x703eac6cfac0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/mercury+json": {
       "model_id": "c5b373ec5b224d76b5881b2da681859d",
       "position": "sidebar",
       "widget": "CheckboxWidget"
      },
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "c5b373ec5b224d76b5881b2da681859d",
       "version_major": 2,
       "version_minor": 1
      },
      "text/plain": [
       "<mercury.checkbox.CheckboxWidget object at 0x703eac5091d0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/mercury+json": {
       "model_id": "a250beba66ae4e149f0daa8c353627c7",
       "position": "sidebar",
       "widget": "TextInputWidget"
      },
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "a250beba66ae4e149f0daa8c353627c7",
       "version_major": 2,
       "version_minor": 1
      },
      "text/plain": [
       "<mercury.text.TextInputWidget object at 0x703eac52c8a0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/mercury+json": {
       "model_id": "50c76b29ed32468badebe6ff4f9f1bb0",
       "position": "sidebar",
       "widget": "SelectWidget"
      },
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "50c76b29ed32468badebe6ff4f9f1bb0",
       "version_major": 2,
       "version_minor": 1
      },
      "text/plain": [
       "<mercury.select.SelectWidget object at 0x703eac66ac30>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/mercury+json": {
       "model_id": "194ecfd03c6d4f24bada37b3d34b9ffe",
       "position": "sidebar",
       "widget": "CheckboxWidget"
      },
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "194ecfd03c6d4f24bada37b3d34b9ffe",
       "version_major": 2,
       "version_minor": 1
      },
      "text/plain": [
       "<mercury.checkbox.CheckboxWidget object at 0x703eac509270>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/mercury+json": {
       "model_id": "53587648b3aa431682d06e4dbe401f8d",
       "position": "sidebar",
       "widget": "CheckboxWidget"
      },
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "53587648b3aa431682d06e4dbe401f8d",
       "version_major": 2,
       "version_minor": 1
      },
      "text/plain": [
       "<mercury.checkbox.CheckboxWidget object at 0x703eac66ede0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/mercury+json": {
       "model_id": "473555ebf30f436db370faa41aeaf04d",
       "position": "sidebar",
       "widget": "CheckboxWidget"
      },
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "473555ebf30f436db370faa41aeaf04d",
       "version_major": 2,
       "version_minor": 1
      },
      "text/plain": [
       "<mercury.checkbox.CheckboxWidget object at 0x703eac576650>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/mercury+json": {
       "model_id": "4ae31f046c87487ba97a08fbcca7cea7",
       "position": "sidebar",
       "widget": "TextInputWidget"
      },
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "4ae31f046c87487ba97a08fbcca7cea7",
       "version_major": 2,
       "version_minor": 1
      },
      "text/plain": [
       "<mercury.text.TextInputWidget object at 0x703eac66ad50>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/mercury+json": {
       "model_id": "ce19eea1122b461e919dd45db8fbbc0a",
       "position": "sidebar",
       "widget": "SelectWidget"
      },
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "ce19eea1122b461e919dd45db8fbbc0a",
       "version_major": 2,
       "version_minor": 1
      },
      "text/plain": [
       "<mercury.select.SelectWidget object at 0x703eac5306b0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/mercury+json": {
       "model_id": "2802b92392a5461394c542372ec3681f",
       "position": "sidebar",
       "widget": "CheckboxWidget"
      },
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "2802b92392a5461394c542372ec3681f",
       "version_major": 2,
       "version_minor": 1
      },
      "text/plain": [
       "<mercury.checkbox.CheckboxWidget object at 0x703eac576a50>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/mercury+json": {
       "model_id": "6a3c639539274c93913e11eaba5528b6",
       "position": "sidebar",
       "widget": "TextInputWidget"
      },
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "6a3c639539274c93913e11eaba5528b6",
       "version_major": 2,
       "version_minor": 1
      },
      "text/plain": [
       "<mercury.text.TextInputWidget object at 0x703eac5307c0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/mercury+json": {
       "model_id": "7c46a99022614830981147c007b7b82a",
       "position": "sidebar",
       "widget": "SelectWidget"
      },
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "7c46a99022614830981147c007b7b82a",
       "version_major": 2,
       "version_minor": 1
      },
      "text/plain": [
       "<mercury.select.SelectWidget object at 0x703eac5308d0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/mercury+json": {
       "model_id": "5d4d52998a594074bd935b1a8105eed9",
       "position": "sidebar",
       "widget": "CheckboxWidget"
      },
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "5d4d52998a594074bd935b1a8105eed9",
       "version_major": 2,
       "version_minor": 1
      },
      "text/plain": [
       "<mercury.checkbox.CheckboxWidget object at 0x703eac5741d0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/mercury+json": {
       "model_id": "007caa3274664331b412c46142fd4f7c",
       "position": "sidebar",
       "widget": "CheckboxWidget"
      },
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "007caa3274664331b412c46142fd4f7c",
       "version_major": 2,
       "version_minor": 1
      },
      "text/plain": [
       "<mercury.checkbox.CheckboxWidget object at 0x703eac590c50>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/mercury+json": {
       "model_id": "1914451087144805a0d1d2165f15d07f",
       "position": "sidebar",
       "widget": "TextInputWidget"
      },
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "1914451087144805a0d1d2165f15d07f",
       "version_major": 2,
       "version_minor": 1
      },
      "text/plain": [
       "<mercury.text.TextInputWidget object at 0x703eac5309e0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# ── Session controls (Mercury sidebar — widgets ONLY, no other output) ─\n",
    "# Generated from the topic bank: per topic a status selector + notes box,\n",
    "# per sub-topic a checkbox. Mercury re-runs only cells BELOW this one, so\n",
    "# every .value is read in the next cell down — never here.\n",
    "#\n",
    "# _status_w[topic_key]      -> Select    (Not started / In progress / …)\n",
    "# _notes_w[topic_key]       -> TextInput (captured answers, backstage)\n",
    "# _sub_w[(topic_key, sub)]  -> CheckBox  (covered?)\n",
    "# Labels are distinct per widget, so Mercury's label-keyed widget cache\n",
    "# never collides across topics/sub-topics.\n",
    "_status_w, _notes_w, _sub_w = {}, {}, {}\n",
    "\n",
    "for _t in TOPICS:\n",
    "    _status_w[_t.key] = mr.Select(\n",
    "        label=f\"{_t.title} — status\",\n",
    "        value=STATUS_LABEL[STATUSES[0]],\n",
    "        choices=[STATUS_LABEL[s] for s in STATUSES],\n",
    "    )\n",
    "    for _st in _t.subtopics:\n",
    "        _sub_w[(_t.key, _st.key)] = mr.CheckBox(\n",
    "            value=False, appearance=\"box\",\n",
    "            label=f\"{_t.title}: {_st.title}\")\n",
    "    _notes_w[_t.key] = mr.TextInput(\n",
    "        label=f\"{_t.title} — notes\", value=\"\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "24e06a3e",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-07-31T13:00:28.831619Z",
     "iopub.status.busy": "2026-07-31T13:00:28.831551Z",
     "iopub.status.idle": "2026-07-31T13:00:28.833832Z",
     "shell.execute_reply": "2026-07-31T13:00:28.833589Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0/8 topics complete  ·  0/8 resolved  ·  agenda ~110 min\n",
      "status: background=not_started, cx_strategy=not_started, channels=not_started, agent_environment=not_started, routing_automation=not_started, workforce_engagement=not_started, training=not_started, reporting_insights=not_started\n"
     ]
    }
   ],
   "source": [
    "# ── Session state (re-runs on any sidebar change) ───────────────────\n",
    "# Read every widget .value and rebuild the session via the engine.\n",
    "_LABEL_TO_STATUS = {STATUS_LABEL[s]: s for s in STATUSES}\n",
    "\n",
    "STATUS_BY_TOPIC = {k: _LABEL_TO_STATUS.get(str(w.value), STATUSES[0])\n",
    "                   for k, w in _status_w.items()}\n",
    "NOTES_BY_TOPIC = {k: str(w.value) for k, w in _notes_w.items()}\n",
    "DONE_SUBTOPICS = {subtopic_id(tk, sk)\n",
    "                  for (tk, sk), w in _sub_w.items() if bool(w.value)}\n",
    "\n",
    "SESSION = build_session(TOPICS, STATUS_BY_TOPIC, NOTES_BY_TOPIC, DONE_SUBTOPICS)\n",
    "PROGRESS = SESSION[\"progress\"]\n",
    "\n",
    "# One curated line on stage; full echo backstage.\n",
    "print(f\"{PROGRESS.label}  ·  {PROGRESS.resolved}/{PROGRESS.total} resolved  ·  \"\n",
    "      f\"agenda ~{SESSION['agenda_minutes']} min\")\n",
    "backstage(\"status: \" + \", \".join(f\"{ts.key}={ts.status}\" for ts in SESSION[\"topics\"]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "c6b92da6",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-07-31T13:00:28.834436Z",
     "iopub.status.busy": "2026-07-31T13:00:28.834380Z",
     "iopub.status.idle": "2026-07-31T13:00:28.840308Z",
     "shell.execute_reply": "2026-07-31T13:00:28.840061Z"
    },
    "tags": [
     "presentation"
    ]
   },
   "outputs": [
    {
     "data": {
      "application/mercury+json": {
       "model_id": "10562f9890124ae3a6987c9550316eb4",
       "position": "inline",
       "widget": "MarkdownWidget"
      },
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "10562f9890124ae3a6987c9550316eb4",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "MarkdownWidget(value='<div style=\"font-family: ui-sans-serif, system-ui, -apple-system, \\'Segoe UI\\', Roboto, …"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# ── Stage: the client-facing topic board + progress ─────────────────\n",
    "def _progress_bar(frac, completed, total):\n",
    "    pct = max(0.0, min(1.0, frac)) * 100\n",
    "    return (\n",
    "        f'<div style=\"margin:6px 0 18px\">'\n",
    "        f'<div style=\"height:12px;border-radius:6px;background:{LINE};'\n",
    "        f'overflow:hidden\">'\n",
    "        f'<div style=\"height:100%;width:{pct:.1f}%;background:{GREEN};'\n",
    "        f'border-radius:6px;transition:width .3s\"></div></div>'\n",
    "        f'<div style=\"font:13px {BODY_FONT};color:{MUTED};margin-top:6px\">'\n",
    "        f'{completed} of {total} topics complete</div></div>')\n",
    "\n",
    "\n",
    "def _topic_row(ts, is_active):\n",
    "    ring = f\"2px solid {BLUE}\" if is_active else f\"1px solid {HAIRLINE}\"\n",
    "    bg = \"#eef5fb\" if is_active else CARD_BG\n",
    "    active_tag = (f'<span style=\"font:600 12px {BODY_FONT};color:{BLUE};'\n",
    "                  f'margin-left:8px\">discussing now →</span>' if is_active else \"\")\n",
    "    sub = \"\"\n",
    "    if is_active and ts.subtopics_total:\n",
    "        items = []\n",
    "        for it in subtopic_checklist(_ACTIVE_TOPIC, DONE_SUBTOPICS):\n",
    "            mark = \"✓\" if it.done else \"○\"\n",
    "            col = GREEN if it.done else MUTED\n",
    "            wt = \"600\" if it.done else \"400\"\n",
    "            items.append(\n",
    "                f'<li style=\"font:{wt} 14px {BODY_FONT};color:{col};'\n",
    "                f'margin:3px 0;list-style:none\">'\n",
    "                f'<span style=\"display:inline-block;width:1.2em\">{mark}</span>'\n",
    "                f'{esc(it.title)}</li>')\n",
    "        sub = (f'<ul style=\"margin:10px 0 2px;padding:0 0 0 34px\">'\n",
    "               f'{\"\".join(items)}</ul>')\n",
    "    return (\n",
    "        f'<div style=\"border:{ring};border-radius:10px;background:{bg};'\n",
    "        f'padding:12px 16px;margin:8px 0\">'\n",
    "        f'<div style=\"display:flex;align-items:baseline\">'\n",
    "        f'<span style=\"font-size:18px;color:{ts.color};width:1.4em\">{ts.glyph}</span>'\n",
    "        f'<span style=\"font:700 17px {FONT};color:{NAVY}\">{esc(ts.title)}</span>'\n",
    "        f'{active_tag}'\n",
    "        f'<span style=\"margin-left:auto;font:12px {BODY_FONT};color:{MUTED}\">'\n",
    "        f'{esc(ts.status_label)}</span></div>'\n",
    "        f'<div style=\"font:14px {BODY_FONT};color:{MUTED};margin:4px 0 0 34px\">'\n",
    "        f'{esc(ts.scope)}</div>'\n",
    "        f'{sub}</div>')\n",
    "\n",
    "\n",
    "_ACTIVE_TOPIC = SESSION[\"active_topic\"]\n",
    "_rows = \"\".join(_topic_row(ts, ts.key == SESSION[\"active_topic_key\"])\n",
    "                for ts in SESSION[\"topics\"])\n",
    "\n",
    "# Engagement sub-line — only when the engagement-data cell is filled in,\n",
    "# so the master's board renders exactly as before.\n",
    "_engagement_line = \"\"\n",
    "if str(ENGAGEMENT.get(\"client\", \"\")).strip():\n",
    "    _bits = [esc(str(ENGAGEMENT[\"client\"]).strip())]\n",
    "    if str(ENGAGEMENT.get(\"workshop_date\", \"\")).strip():\n",
    "        _bits.append(esc(str(ENGAGEMENT[\"workshop_date\"]).strip()))\n",
    "    _engagement_line = (\n",
    "        f'<div style=\"font:600 14px {BODY_FONT};color:{INK};margin:0 0 2px\">'\n",
    "        f'{\" · \".join(_bits)}</div>')\n",
    "\n",
    "_header = (\n",
    "    f'<div style=\"font:700 24px {FONT};color:{NAVY};margin:4px 0 2px\">'\n",
    "    f'CX Discovery — topics</div>'\n",
    "    f'{_engagement_line}'\n",
    "    f'<div style=\"font:14px {BODY_FONT};color:{MUTED}\">'\n",
    "    f'{len(SESSION[\"topics\"])} topics · ~{SESSION[\"agenda_minutes\"]} minutes</div>')\n",
    "\n",
    "_board_html = (\n",
    "    f'<div style=\"max-width:760px\">{_header}'\n",
    "    f'{_progress_bar(PROGRESS.fraction, PROGRESS.completed, PROGRESS.total)}'\n",
    "    f'{_rows}</div>')\n",
    "# Assign to _ so the bare-expression repr doesn't render a second copy.\n",
    "_ = mr.Markdown(text=_board_html)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "d70653b9",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-07-31T13:00:28.840935Z",
     "iopub.status.busy": "2026-07-31T13:00:28.840872Z",
     "iopub.status.idle": "2026-07-31T13:00:28.842720Z",
     "shell.execute_reply": "2026-07-31T13:00:28.842508Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "# CX Discovery — facilitation script\n",
      "\n",
      "\n",
      "## Background & Organization  ·  ~15 min\n",
      "_Lines of business, channels, org structure, decision-making_\n",
      "\n",
      "\n",
      "**Lines of business & scope** — `background.lines_of_business`\n",
      "  - How many distinct lines of business are supported in the contact centre? (e.g. commercial, residential, retail, wholesale)\n",
      "  - Are you using the contact centre for internal uses such as help desk, finance, HR?\n",
      "  - Payment card / PCI in scope?\n",
      "  - What are the availability SLAs or targets for your technology platform?\n",
      "\n",
      "**Channels supported** — `background.channels_supported`\n",
      "  - Which channels do you support today? (Apps, Voice, Video, Chat, SMS, Email, Social Media, Digital Assistants)\n",
      "\n",
      "**Org & reporting structure** — `background.org_structure`\n",
      "  - Mini org chart — reporting structure up to the executive leader.\n",
      "  - Are your contact centres managed by the same person? (Managers / Team Leads / Agents)\n",
      "  - Who carries the cost of contact centre agents and supervisors?\n",
      "  - What revenue is generated by the contact centre?\n",
      "\n",
      "**Decision-making & priorities** — `background.decision_making`\n",
      "  - Is decision-making centralized or decentralized?\n",
      "  - Who are the key decision makers for changes to the contact centre?\n",
      "  - How important is CX & EX to your organization's strategy? Is there an executive accountable for CX (CXO, CDO)?\n",
      "  - Of your leading offers, what is the customer's top priority?\n",
      "  - Competitive pressures?\n",
      "  - Any pending or recent acquisitions or spinoffs affecting IT infrastructure and services?\n",
      "\n",
      "**Problems & causes today** — `background.problems_today`\n",
      "  - What do you view as the problems in your contact centre today, and the primary causes?\n",
      "  - Any in-flight projects — CX or EX improvement initiatives?\n",
      "  - Are your customer experiences personalized?\n",
      "\n",
      "## CX Strategy  ·  ~15 min\n",
      "_How CX value is defined, measured, and organized to deliver_\n",
      "\n",
      "\n",
      "**Value & strategic position** — `cx_strategy.value_definition`\n",
      "  - How is the value of Customer Experience defined within your organization? Is CX a key BPI, recognized & measured as a financial value?\n",
      "  - What are the key capabilities / services delivered by the contact centre?\n",
      "  - How are you using CX innovation to create market disruption?\n",
      "  - How are competitors using CX to create competitive differentiation?\n",
      "\n",
      "**Organization & operating model** — `cx_strategy.operating_model`\n",
      "  - Is there a CX team? Do the CX insights team regularly educate the business?\n",
      "  - Who are the key decision makers for investment and changes to the contact centre? Channel management strategy?\n",
      "  - What are the teams, and how are processes managed?\n",
      "  - Describe your automation strategy. Who is your leader for Data & AI?\n",
      "\n",
      "**Insight & Voice of Customer** — `cx_strategy.insight_and_voc`\n",
      "  - How do you use analytics & data to generate a consolidated view of your customer experience?\n",
      "  - Is there a VOC program in place? ROI / business value known?\n",
      "  - How do customers rate the experience they receive (0–5)?\n",
      "\n",
      "**Continuous improvement** — `cx_strategy.continuous_improvement`\n",
      "  - How is customer insight used to drive CX improvement, loyalty and profitability? How do you anticipate needs?\n",
      "  - Do you have a clear set of CX design guidelines? (Personas, Journey Mapping, Tools)\n",
      "  - KPI targets for CX — CSAT, NPS, CES? How are you doing?\n",
      "\n",
      "**Employee engagement** — `cx_strategy.employee_engagement`\n",
      "  - Describe your employee / agent engagement strategy.\n",
      "  - How engaged are your people in delivering the customer experience?\n",
      "  - Do you have a VoA / VoE program in place? How are you doing?\n",
      "\n",
      "## Channels  ·  ~20 min\n",
      "_Inbound & outbound volumes, metrics, contact reasons_\n",
      "\n",
      "\n",
      "**Inbound context** — `channels.inbound_context`\n",
      "  - Hours of operation — any 24×7?\n",
      "  - Who contacts the contact centre? (Demographics, their situation)\n",
      "  - Are certain callers or groups prioritized?\n",
      "  - Languages? (English, Canadian French, Spanish, other)\n",
      "\n",
      "**Voice & video metrics** — `channels.voice_metrics`\n",
      "  - Average number of active agents (voice / video).\n",
      "  - Toll-free numbers & DIDs — approximate quantities.\n",
      "  - Average Wait Time, Abandon rate, Handle Time, Hold Time, After-call work time.\n",
      "  - Time to authenticate a caller.\n",
      "  - % of calls transferred — internally / externally (3rd parties)?\n",
      "  - Courtesy callback / virtual hold? Post-call survey? First Call Resolution rate? Average revenue per call (sales)?\n",
      "\n",
      "**Digital channels** — `channels.digital_channels`\n",
      "  - Email — range of logged-in users, response time, email server.\n",
      "  - Chat — web (internal/external), app-embedded, SMS, Messenger, WhatsApp, Telegram, iMessage.\n",
      "  - Website forms, mobile apps.\n",
      "\n",
      "**Inbound contact reasons** — `channels.inbound_reasons`\n",
      "  - Top 3–5 inbound contact reasons and approximate % of calls.\n",
      "  - Cost per call? Average Handle Time?\n",
      "  - Busiest / least busy days? Seasonal variances?\n",
      "  - Most difficult, commonly occurring calls? Easiest commonly occurring call?\n",
      "\n",
      "**Outbound** — `channels.outbound`\n",
      "  - Hours of operation.\n",
      "  - Voice (preview / predictive dialer volume), email, SMS, recorded announcement ports.\n",
      "  - Self-service applications, live agent connect, campaign management, DNC management.\n",
      "  - Top 3–5 outbound contact reasons and approximate % of calls.\n",
      "  - After-call work?\n",
      "\n",
      "## Agent & Supervisor Environment  ·  ~10 min\n",
      "_Locations, endpoints, desktop, applications, knowledge_\n",
      "\n",
      "\n",
      "**Locations & endpoints** — `agent_environment.locations_endpoints`\n",
      "  - Location types — WFH / offices.\n",
      "  - Hard phone, soft phone, CODEC, wireless headset?\n",
      "  - Agent greeting / pre-recorded messages, whisper announcement.\n",
      "  - PC — desktop, laptop, VDI.\n",
      "\n",
      "**Desktop & applications** — `agent_environment.desktop_apps`\n",
      "  - Agent & supervisor desktop — omnichannel? Custom gadgets, screen pops, workflows.\n",
      "  - Standard browser? SSO?\n",
      "  - Applications used to handle calls.\n",
      "  - Knowledge Management.\n",
      "\n",
      "## Routing & Automation  ·  ~15 min\n",
      "_Self-service, IVR, speech, virtual agents, agent assist, RPA_\n",
      "\n",
      "\n",
      "**Self-service & IVR** — `routing_automation.self_service`\n",
      "  - IVR persona — branding, style guides, voice actors?\n",
      "  - DTMF and/or speech? Speech recognition, TTS, NLU, voice biometrics.\n",
      "  - Self-service applications — ID & validate, deflection, situational offer (outage / time of day / scheduled).\n",
      "  - API integration (CRM). Intent capture, intent prediction, offer push on prediction / account attribute.\n",
      "\n",
      "**Virtual agents & assist** — `routing_automation.virtual_agents`\n",
      "  - Virtual agents — which processes?\n",
      "  - Agent assist?\n",
      "  - RPA?\n",
      "  - Current challenges or desired capabilities. Desire to automate. DevOps team?\n",
      "\n",
      "**Digital assistant apps** — `routing_automation.digital_assistants`\n",
      "  - Alexa, Google Assistant, Siri?\n",
      "\n",
      "## Workforce Engagement  ·  ~20 min\n",
      "_Call recording / QM, WFM, agent self-service, integrations_\n",
      "\n",
      "\n",
      "**Call recording & Quality Management** — `workforce_engagement.recording_qm`\n",
      "  - How is call recording used? Compliance, screen capture, voice transcription (real-time?), desktop analytics, retention period.\n",
      "  - Quality team — who do they report to, how many people? Scorecards, score method & metrics, number of assessments, coaching, live monitor.\n",
      "  - Locations with call recording. Number of named agents.\n",
      "\n",
      "**Workforce management** — `workforce_engagement.workforce_management`\n",
      "  - Recruitment process, required qualifications, average tenure, attrition rate, internal moves.\n",
      "  - Do you measure agent & supervisor experience? Recognition program?\n",
      "  - Adherence measure — KPIs, gamification, shift length, breaks, annualized utilization %.\n",
      "  - Forecasting & scheduling — peak volume, historical data, algorithms, WFM interval (15/30 min).\n",
      "  - Intraday / real-time adherence — what happens when out of compliance?\n",
      "  - Payroll integration (ADP / Workday). Satisfaction with current tool(s)? Multiskilled agents, FTE calculations.\n",
      "\n",
      "**Agent self-service & integrations** — `workforce_engagement.agent_self_service`\n",
      "  - Agent self-service — absences, shift bids / swaps, performance metrics.\n",
      "  - Number of named agents.\n",
      "  - Integration to 3rd party — outsourcer / overflow, payroll.\n",
      "\n",
      "## Training  ·  ~5 min\n",
      "_Onboarding, format, assessment, eLearning, QM integration_\n",
      "\n",
      "\n",
      "**Onboarding & enablement** — `training.onboarding`\n",
      "  - Onboarding process — how long, training format, assessment?\n",
      "  - eLearning?\n",
      "  - QM integration?\n",
      "\n",
      "## Reporting & Insights  ·  ~10 min\n",
      "_Real-time & historical reporting, analytics, BI, CRM_\n",
      "\n",
      "\n",
      "**Reporting** — `reporting_insights.reporting`\n",
      "  - Real-time and historical — what are the key metrics you report on?\n",
      "  - Data source integration, dashboards, wallboards, agent & supervisor status.\n",
      "\n",
      "**Analytics & insights** — `reporting_insights.analytics_insights`\n",
      "  - Integrated view of customer details and contact history? CRM?\n",
      "  - Does the contact centre collect and use customer insight? Predictive engagement?\n",
      "  - What data analysis do you perform? Analytics / BI team — how many people? BI platform?\n",
      "  - Executive-level reporting? Marketing team interlock?\n"
     ]
    }
   ],
   "source": [
    "# ── Facilitator question script — backstage only ────────────────────\n",
    "# Renders in JupyterLab and the exports; hidden on the Mercury stage.\n",
    "_lines = [\"\\n# CX Discovery — facilitation script\\n\"]\n",
    "for _t in TOPICS:\n",
    "    _lines.append(f\"\\n## {_t.title}  ·  ~{_t.minutes} min\")\n",
    "    _lines.append(f\"_{_t.scope}_\\n\")\n",
    "    for _st in _t.subtopics:\n",
    "        _lines.append(f\"\\n**{_st.title}** — `{subtopic_id(_t.key, _st.key)}`\")\n",
    "        for _p in _st.prompts:\n",
    "            _lines.append(f\"  - {_p}\")\n",
    "backstage(\"\\n\".join(_lines))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "cc5c3a6e",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-07-31T13:00:28.843292Z",
     "iopub.status.busy": "2026-07-31T13:00:28.843230Z",
     "iopub.status.idle": "2026-07-31T13:00:28.846502Z",
     "shell.execute_reply": "2026-07-31T13:00:28.846239Z"
    },
    "tags": [
     "gate"
    ]
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "All assertions passed.\n",
      "  0/8 topics complete · 0/8 resolved\n"
     ]
    }
   ],
   "source": [
    "# ── Verification gate — must pass under headless nbconvert ───────────\n",
    "def _assert(cond, msg):\n",
    "    assert cond, msg\n",
    "\n",
    "\n",
    "# Content shape — the bank lives in this notebook, so the gate is its\n",
    "# closest guard; recount these pins on any deliberate content change.\n",
    "_assert(len(TOPICS) == 8, \"expected 8 topics\")\n",
    "_assert(sum(len(t.subtopics) for t in TOPICS) == 26, \"expected 26 sub-topics\")\n",
    "_assert(sum(t.prompt_count for t in TOPICS) == 95, \"expected 95 prompts\")\n",
    "_assert(tuple(t.key for t in TOPICS) == (\n",
    "    \"background\", \"cx_strategy\", \"channels\", \"agent_environment\",\n",
    "    \"routing_automation\", \"workforce_engagement\", \"training\",\n",
    "    \"reporting_insights\"), \"topic keys / order drifted\")\n",
    "_assert(SESSION[\"agenda_minutes\"] == 110, \"agenda minutes drifted\")\n",
    "_assert(set(STATUS_BY_TOPIC) == {t.key for t in TOPICS}, \"status keys ≠ topics\")\n",
    "\n",
    "# Engagement data — SHAPE only. The master ships placeholders and an\n",
    "# engagement copy ships real values; both must pass, so never pin\n",
    "# emptiness (or a value) here.\n",
    "_assert(set(ENGAGEMENT) == {\"client\", \"workshop_date\", \"facilitator\", \"attendees\"},\n",
    "        \"engagement-data keys drifted\")\n",
    "for _k in (\"client\", \"workshop_date\", \"facilitator\"):\n",
    "    _assert(isinstance(ENGAGEMENT[_k], str), f\"ENGAGEMENT[{_k!r}] must be a string\")\n",
    "_assert(all(isinstance(_a, str) for _a in ENGAGEMENT[\"attendees\"]),\n",
    "        \"attendees must be strings\")\n",
    "\n",
    "# Structural ties — hold at ANY sidebar setting\n",
    "_p = SESSION[\"progress\"]\n",
    "_assert(_p.total == len(SESSION[\"topics\"]) == 8, \"progress total ≠ topic count\")\n",
    "_assert(_p.completed + _p.skipped + _p.in_progress + _p.not_started == _p.total,\n",
    "        \"status counts don't sum to total\")\n",
    "_assert(0.0 <= _p.fraction <= 1.0, \"fraction out of range\")\n",
    "_assert(_p.resolved == _p.completed + _p.skipped, \"resolved identity broke\")\n",
    "for _ts in SESSION[\"topics\"]:\n",
    "    _assert(0 <= _ts.subtopics_done <= _ts.subtopics_total, \"sub-topic count out of range\")\n",
    "    _assert(_ts.status in STATUSES, f\"unknown status {_ts.status}\")\n",
    "\n",
    "# Export payload is plain-JSON serializable and consistent with the session\n",
    "import json as _json\n",
    "_payload = session_json(SESSION, meta=ENGAGEMENT)\n",
    "_json.dumps(_payload)                                    # raises if not serializable\n",
    "_assert(_payload[\"progress\"][\"completed\"] == _p.completed, \"export/session mismatch\")\n",
    "_assert(len(_payload[\"topics\"]) == 8, \"export lost a topic\")\n",
    "_assert(_payload[\"assessment\"] == \"CX_Discovery_Workshop\", \"assessment slug drifted\")\n",
    "_assert(_payload[\"meta\"][\"client\"] == ENGAGEMENT[\"client\"], \"meta lost the client\")\n",
    "\n",
    "backstage(\"All assertions passed.\")\n",
    "backstage(f\"  {_p.label} · {_p.resolved}/{_p.total} resolved\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "ea73c809",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-07-31T13:00:28.847168Z",
     "iopub.status.busy": "2026-07-31T13:00:28.847109Z",
     "iopub.status.idle": "2026-07-31T13:00:28.849573Z",
     "shell.execute_reply": "2026-07-31T13:00:28.849320Z"
    },
    "tags": [
     "data-appendix"
    ]
   },
   "outputs": [
    {
     "data": {
      "text/markdown": [
       "## Data appendix — the captured session\n",
       "\n",
       "| Topic | Status | Sub-topics | Notes |\n",
       "|---|---|---:|---|\n",
       "| Background & Organization | Not started | 0/5 | — |\n",
       "| CX Strategy | Not started | 0/5 | — |\n",
       "| Channels | Not started | 0/5 | — |\n",
       "| Agent & Supervisor Environment | Not started | 0/2 | — |\n",
       "| Routing & Automation | Not started | 0/3 | — |\n",
       "| Workforce Engagement | Not started | 0/3 | — |\n",
       "| Training | Not started | 0/1 | — |\n",
       "| Reporting & Insights | Not started | 0/2 | — |\n",
       "\n",
       "0/8 topics complete · 0/8 resolved · agenda ~110 min\n",
       "\n",
       "#### Session state (JSON)\n",
       "\n",
       "```json\n",
       "{\n",
       "  \"assessment\": \"CX_Discovery_Workshop\",\n",
       "  \"instrument\": \"CX Exploration & Discovery Workshop\",\n",
       "  \"meta\": {\n",
       "    \"client\": \"\",\n",
       "    \"workshop_date\": \"\",\n",
       "    \"facilitator\": \"\",\n",
       "    \"attendees\": []\n",
       "  },\n",
       "  \"progress\": {\n",
       "    \"total_topics\": 8,\n",
       "    \"completed\": 0,\n",
       "    \"skipped\": 0,\n",
       "    \"in_progress\": 0,\n",
       "    \"not_started\": 8,\n",
       "    \"fraction_complete\": 0.0,\n",
       "    \"label\": \"0/8 topics complete\"\n",
       "  },\n",
       "  \"agenda_minutes\": 110,\n",
       "  \"active_topic\": \"background\",\n",
       "  \"topics\": [\n",
       "    {\n",
       "      \"key\": \"background\",\n",
       "      \"title\": \"Background & Organization\",\n",
       "      \"scope\": \"Lines of business, channels, org structure, decision-making\",\n",
       "      \"status\": \"not_started\",\n",
       "      \"minutes\": 15,\n",
       "      \"subtopics_done\": 0,\n",
       "      \"subtopics_total\": 5,\n",
       "      \"subtopics_covered\": [],\n",
       "      \"notes\": \"\"\n",
       "    },\n",
       "    {\n",
       "      \"key\": \"cx_strategy\",\n",
       "      \"title\": \"CX Strategy\",\n",
       "      \"scope\": \"How CX value is defined, measured, and organized to deliver\",\n",
       "      \"status\": \"not_started\",\n",
       "      \"minutes\": 15,\n",
       "      \"subtopics_done\": 0,\n",
       "      \"subtopics_total\": 5,\n",
       "      \"subtopics_covered\": [],\n",
       "      \"notes\": \"\"\n",
       "    },\n",
       "    {\n",
       "      \"key\": \"channels\",\n",
       "      \"title\": \"Channels\",\n",
       "      \"scope\": \"Inbound & outbound volumes, metrics, contact reasons\",\n",
       "      \"status\": \"not_started\",\n",
       "      \"minutes\": 20,\n",
       "      \"subtopics_done\": 0,\n",
       "      \"subtopics_total\": 5,\n",
       "      \"subtopics_covered\": [],\n",
       "      \"notes\": \"\"\n",
       "    },\n",
       "    {\n",
       "      \"key\": \"agent_environment\",\n",
       "      \"title\": \"Agent & Supervisor Environment\",\n",
       "      \"scope\": \"Locations, endpoints, desktop, applications, knowledge\",\n",
       "      \"status\": \"not_started\",\n",
       "      \"minutes\": 10,\n",
       "      \"subtopics_done\": 0,\n",
       "      \"subtopics_total\": 2,\n",
       "      \"subtopics_covered\": [],\n",
       "      \"notes\": \"\"\n",
       "    },\n",
       "    {\n",
       "      \"key\": \"routing_automation\",\n",
       "      \"title\": \"Routing & Automation\",\n",
       "      \"scope\": \"Self-service, IVR, speech, virtual agents, agent assist, RPA\",\n",
       "      \"status\": \"not_started\",\n",
       "      \"minutes\": 15,\n",
       "      \"subtopics_done\": 0,\n",
       "      \"subtopics_total\": 3,\n",
       "      \"subtopics_covered\": [],\n",
       "      \"notes\": \"\"\n",
       "    },\n",
       "    {\n",
       "      \"key\": \"workforce_engagement\",\n",
       "      \"title\": \"Workforce Engagement\",\n",
       "      \"scope\": \"Call recording / QM, WFM, agent self-service, integrations\",\n",
       "      \"status\": \"not_started\",\n",
       "      \"minutes\": 20,\n",
       "      \"subtopics_done\": 0,\n",
       "      \"subtopics_total\": 3,\n",
       "      \"subtopics_covered\": [],\n",
       "      \"notes\": \"\"\n",
       "    },\n",
       "    {\n",
       "      \"key\": \"training\",\n",
       "      \"title\": \"Training\",\n",
       "      \"scope\": \"Onboarding, format, assessment, eLearning, QM integration\",\n",
       "      \"status\": \"not_started\",\n",
       "      \"minutes\": 5,\n",
       "      \"subtopics_done\": 0,\n",
       "      \"subtopics_total\": 1,\n",
       "      \"subtopics_covered\": [],\n",
       "      \"notes\": \"\"\n",
       "    },\n",
       "    {\n",
       "      \"key\": \"reporting_insights\",\n",
       "      \"title\": \"Reporting & Insights\",\n",
       "      \"scope\": \"Real-time & historical reporting, analytics, BI, CRM\",\n",
       "      \"status\": \"not_started\",\n",
       "      \"minutes\": 10,\n",
       "      \"subtopics_done\": 0,\n",
       "      \"subtopics_total\": 2,\n",
       "      \"subtopics_covered\": [],\n",
       "      \"notes\": \"\"\n",
       "    }\n",
       "  ]\n",
       "}\n",
       "```"
      ],
      "text/plain": [
       "<IPython.core.display.Markdown object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# ── Data appendix — LLM-readable dump of the captured session ───────\n",
    "# Renders backstage only (JupyterLab / nbconvert exports) as ONE markdown\n",
    "# display, so the .md export carries it verbatim — the captured-session\n",
    "# table first, the fenced JSON block LAST: that block is the\n",
    "# machine-readable source of truth for the write-up. Engagement identity\n",
    "# comes from the engagement-data cell above.\n",
    "import json as _json\n",
    "\n",
    "_md = [\"## Data appendix — the captured session\\n\"]\n",
    "_who = \" · \".join(\n",
    "    str(ENGAGEMENT[_k]).strip()\n",
    "    for _k in (\"client\", \"workshop_date\", \"facilitator\")\n",
    "    if str(ENGAGEMENT.get(_k, \"\")).strip())\n",
    "if _who:\n",
    "    _md.append(f\"_{_who}_\\n\")\n",
    "\n",
    "_md.append(\"| Topic | Status | Sub-topics | Notes |\")\n",
    "_md.append(\"|---|---|---:|---|\")\n",
    "for _ts in SESSION[\"topics\"]:\n",
    "    _note = _ts.notes.replace(\"|\", \"\\\\|\").replace(\"\\n\", \" \") or \"—\"\n",
    "    _md.append(f\"| {_ts.title} | {_ts.status_label} | \"\n",
    "               f\"{_ts.subtopics_done}/{_ts.subtopics_total} | {_note} |\")\n",
    "\n",
    "_md.append(f\"\\n{PROGRESS.label} · {PROGRESS.resolved}/{PROGRESS.total} resolved \"\n",
    "           f\"· agenda ~{SESSION['agenda_minutes']} min\\n\")\n",
    "\n",
    "_md.append(\"#### Session state (JSON)\\n\")\n",
    "_md.append(\"```json\")\n",
    "_md.append(_json.dumps(session_json(SESSION, meta=ENGAGEMENT),\n",
    "                       indent=2, ensure_ascii=False))\n",
    "_md.append(\"```\")\n",
    "\n",
    "backstage_md(\"\\n\".join(_md))"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.13.7"
  },
  "widgets": {
   "application/vnd.jupyter.widget-state+json": {
    "state": {
     "005fe38674bd4261897d40591aeb793f": {
      "model_module": "anywidget",
      "model_module_version": "~0.11.*",
      "model_name": "AnyModel",
      "state": {
       "_anywidget_id": "mercury.checkbox.CheckboxWidget",
       "_css": "\n    .mljar-checkbox-container {\n        display: inline-flex;\n        align-items: center;\n        gap: 10px;\n        cursor: pointer;\n        user-select: none;\n        -webkit-tap-highlight-color: transparent;\n        font-family: ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;\n        color: #0f172a;\n        padding-left: 5px;\n    }\n    .mljar-checkbox-container.is-disabled {\n        opacity: 0.6;\n        cursor: not-allowed;\n    }\n\n    .mljar-checkbox-input {\n        position: absolute;\n        opacity: 0;\n        width: 0;\n        height: 0;\n    }\n\n    .mljar-checkbox-input:focus-visible + .mljar-checkbox-control {\n        box-shadow: inset 0 0 0 2px #007bff;\n    }\n\n    .mljar-checkbox-label {\n        font-size: 14px;\n        line-height: 1.2;\n        padding-top: 2px;\n    }\n\n    /* --- Toggle style (15% smaller) --- */\n    .mljar-checkbox-container.is-toggle .mljar-checkbox-control {\n        position: relative;\n        width: 34px;\n        height: 19px;\n        border-radius: 999px;\n        background: #f1f1f2;\n        border: 1px solid #cfd1d5;\n        transition: background 150ms ease, border-color 150ms ease;\n    }\n    .mljar-checkbox-container.is-toggle.is-checked .mljar-checkbox-control {\n        background: #007bff;\n        border-color: #007bff;\n    }\n    .mljar-checkbox-container.is-toggle .mljar-checkbox-control::after {\n        content: \"\";\n        position: absolute;\n        top: 2px;\n        left: 2px;\n        width: 15px;\n        height: 15px;\n        border-radius: 50%;\n        background: #ffffff;\n        box-shadow: 0 1px 2px rgba(0,0,0,0.12), 0 0 0 1px rgba(0,0,0,0.04);\n        transition: transform 150ms ease;\n    }\n    .mljar-checkbox-container.is-toggle.is-checked .mljar-checkbox-control::after {\n        transform: translateX(15px);\n    }\n\n    /* --- Classic box style --- */\n    .mljar-checkbox-container.is-box .mljar-checkbox-control {\n        width: 16px;\n        height: 16px;\n        border-radius: 4px;\n        border: 1px solid #cfd1d5;\n        background: #ffffff;\n        display: inline-block;\n        position: relative;\n    }\n    .mljar-checkbox-container.is-box.is-checked .mljar-checkbox-control {\n        border-color: #007bff;\n        background: #007bff;\n    }\n    .mljar-checkbox-container.is-box.is-checked .mljar-checkbox-control::after {\n        content: \"\";\n        position: absolute;\n        left: 4px;\n        top: 0px;\n        width: 5px;\n        height: 10px;\n        border: solid #fff;\n        border-width: 0 2px 2px 0;\n        transform: rotate(45deg);\n    }\n\n    .mljar-checkbox-container:not(.is-disabled):hover .mljar-checkbox-control {\n        border-color: #007bff;\n        background: #f3f3f4;\n    }\n    ",
       "_dom_classes": [],
       "_esm": "\n    function render({ model, el }) {\n      const container = document.createElement(\"label\");\n      container.classList.add(\"mljar-checkbox-container\");\n\n      const input = document.createElement(\"input\");\n      input.type = \"checkbox\";\n      input.classList.add(\"mljar-checkbox-input\");\n\n      const control = document.createElement(\"span\");\n      control.classList.add(\"mljar-checkbox-control\");\n\n      const text = document.createElement(\"span\");\n      text.classList.add(\"mljar-checkbox-label\");\n\n      container.appendChild(input);\n      container.appendChild(control);\n      container.appendChild(text);\n      el.appendChild(container);\n\n      function syncFromModel() {\n        // appearance\n        const a = model.get(\"appearance\") || \"toggle\";\n        container.classList.remove(\"is-toggle\",\"is-box\");\n        container.classList.add(`is-${a}`);\n        input.setAttribute(\"role\", a === \"toggle\" ? \"switch\" : \"checkbox\");\n\n        // value\n        const v = !!model.get(\"value\");\n        if (input.checked !== v) {\n          input.checked = v;\n          input.setAttribute(\"aria-checked\", String(v));\n        }\n        container.classList.toggle(\"is-checked\", v);\n\n        // disabled\n        const d = !!model.get(\"disabled\");\n        input.disabled = d;\n        container.classList.toggle(\"is-disabled\", d);\n\n        // label\n        text.textContent = model.get(\"label\") || \"\";\n\n        // hidden (exists but not visible)\n        container.style.display = model.get(\"hidden\") ? \"none\" : \"inline-flex\";\n      }\n\n      input.addEventListener(\"change\", () => {\n        if (model.get(\"disabled\")) return;\n\n        const v = input.checked;\n        if (model.get(\"value\") !== v) {\n          model.set(\"value\", v);\n          model.set(\"last_changed_at\", new Date().toISOString());\n          model.set(\"n_toggles\", (model.get(\"n_toggles\") || 0) + 1);\n          model.save_changes();\n          // model.send({ type: \"changed\", value: v });\n        }\n      });\n\n      model.on(\"change:value\", syncFromModel);\n      model.on(\"change:disabled\", syncFromModel);\n      model.on(\"change:appearance\", syncFromModel);\n      model.on(\"change:label\", syncFromModel);\n      model.on(\"change:hidden\", syncFromModel);\n\n      syncFromModel();\n\n      // ---- read cell id (no DOM modifications) ----\n      /*\n      const ID_ATTR = \"data-cell-id\";\n      const hostWithId = el.closest(`[${ID_ATTR}]`);\n      const cellId = hostWithId ? hostWithId.getAttribute(ID_ATTR) : null;\n\n      if (cellId) {\n        model.set(\"cell_id\", cellId);\n        model.save_changes();\n        model.send({ type: \"cell_id_detected\", value: cellId });\n      } else {\n        const mo = new MutationObserver(() => {\n          const host = el.closest(`[${ID_ATTR}]`);\n          const newId = host?.getAttribute(ID_ATTR);\n          \n          if (newId) {\n            model.set(\"cell_id\", newId);\n            model.save_changes();\n            model.send({ type: \"cell_id_detected\", value: newId });\n            mo.disconnect();\n          }\n        });\n        mo.observe(document.body, { attributes: true, subtree: true, attributeFilter: [ID_ATTR] });\n      }\n      */\n    }\n    export default { render };\n    ",
       "_model_module": "anywidget",
       "_model_module_version": "~0.11.*",
       "_model_name": "AnyModel",
       "_view_count": null,
       "_view_module": "anywidget",
       "_view_module_version": "~0.11.*",
       "_view_name": "AnyView",
       "appearance": "box",
       "cell_id": "",
       "disabled": false,
       "hidden": false,
       "label": "Channels: Inbound context",
       "last_changed_at": "",
       "layout": "IPY_MODEL_dd2e189ff03d4b76bd92e483dbe721ae",
       "layout_path": null,
       "n_toggles": 0,
       "position": "sidebar",
       "render_slot_id": null,
       "source_cell_id": null,
       "tabbable": null,
       "tooltip": null,
       "url_key": "",
       "value": false
      }
     },
     "007caa3274664331b412c46142fd4f7c": {
      "model_module": "anywidget",
      "model_module_version": "~0.11.*",
      "model_name": "AnyModel",
      "state": {
       "_anywidget_id": "mercury.checkbox.CheckboxWidget",
       "_css": "\n    .mljar-checkbox-container {\n        display: inline-flex;\n        align-items: center;\n        gap: 10px;\n        cursor: pointer;\n        user-select: none;\n        -webkit-tap-highlight-color: transparent;\n        font-family: ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;\n        color: #0f172a;\n        padding-left: 5px;\n    }\n    .mljar-checkbox-container.is-disabled {\n        opacity: 0.6;\n        cursor: not-allowed;\n    }\n\n    .mljar-checkbox-input {\n        position: absolute;\n        opacity: 0;\n        width: 0;\n        height: 0;\n    }\n\n    .mljar-checkbox-input:focus-visible + .mljar-checkbox-control {\n        box-shadow: inset 0 0 0 2px #007bff;\n    }\n\n    .mljar-checkbox-label {\n        font-size: 14px;\n        line-height: 1.2;\n        padding-top: 2px;\n    }\n\n    /* --- Toggle style (15% smaller) --- */\n    .mljar-checkbox-container.is-toggle .mljar-checkbox-control {\n        position: relative;\n        width: 34px;\n        height: 19px;\n        border-radius: 999px;\n        background: #f1f1f2;\n        border: 1px solid #cfd1d5;\n        transition: background 150ms ease, border-color 150ms ease;\n    }\n    .mljar-checkbox-container.is-toggle.is-checked .mljar-checkbox-control {\n        background: #007bff;\n        border-color: #007bff;\n    }\n    .mljar-checkbox-container.is-toggle .mljar-checkbox-control::after {\n        content: \"\";\n        position: absolute;\n        top: 2px;\n        left: 2px;\n        width: 15px;\n        height: 15px;\n        border-radius: 50%;\n        background: #ffffff;\n        box-shadow: 0 1px 2px rgba(0,0,0,0.12), 0 0 0 1px rgba(0,0,0,0.04);\n        transition: transform 150ms ease;\n    }\n    .mljar-checkbox-container.is-toggle.is-checked .mljar-checkbox-control::after {\n        transform: translateX(15px);\n    }\n\n    /* --- Classic box style --- */\n    .mljar-checkbox-container.is-box .mljar-checkbox-control {\n        width: 16px;\n        height: 16px;\n        border-radius: 4px;\n        border: 1px solid #cfd1d5;\n        background: #ffffff;\n        display: inline-block;\n        position: relative;\n    }\n    .mljar-checkbox-container.is-box.is-checked .mljar-checkbox-control {\n        border-color: #007bff;\n        background: #007bff;\n    }\n    .mljar-checkbox-container.is-box.is-checked .mljar-checkbox-control::after {\n        content: \"\";\n        position: absolute;\n        left: 4px;\n        top: 0px;\n        width: 5px;\n        height: 10px;\n        border: solid #fff;\n        border-width: 0 2px 2px 0;\n        transform: rotate(45deg);\n    }\n\n    .mljar-checkbox-container:not(.is-disabled):hover .mljar-checkbox-control {\n        border-color: #007bff;\n        background: #f3f3f4;\n    }\n    ",
       "_dom_classes": [],
       "_esm": "\n    function render({ model, el }) {\n      const container = document.createElement(\"label\");\n      container.classList.add(\"mljar-checkbox-container\");\n\n      const input = document.createElement(\"input\");\n      input.type = \"checkbox\";\n      input.classList.add(\"mljar-checkbox-input\");\n\n      const control = document.createElement(\"span\");\n      control.classList.add(\"mljar-checkbox-control\");\n\n      const text = document.createElement(\"span\");\n      text.classList.add(\"mljar-checkbox-label\");\n\n      container.appendChild(input);\n      container.appendChild(control);\n      container.appendChild(text);\n      el.appendChild(container);\n\n      function syncFromModel() {\n        // appearance\n        const a = model.get(\"appearance\") || \"toggle\";\n        container.classList.remove(\"is-toggle\",\"is-box\");\n        container.classList.add(`is-${a}`);\n        input.setAttribute(\"role\", a === \"toggle\" ? \"switch\" : \"checkbox\");\n\n        // value\n        const v = !!model.get(\"value\");\n        if (input.checked !== v) {\n          input.checked = v;\n          input.setAttribute(\"aria-checked\", String(v));\n        }\n        container.classList.toggle(\"is-checked\", v);\n\n        // disabled\n        const d = !!model.get(\"disabled\");\n        input.disabled = d;\n        container.classList.toggle(\"is-disabled\", d);\n\n        // label\n        text.textContent = model.get(\"label\") || \"\";\n\n        // hidden (exists but not visible)\n        container.style.display = model.get(\"hidden\") ? \"none\" : \"inline-flex\";\n      }\n\n      input.addEventListener(\"change\", () => {\n        if (model.get(\"disabled\")) return;\n\n        const v = input.checked;\n        if (model.get(\"value\") !== v) {\n          model.set(\"value\", v);\n          model.set(\"last_changed_at\", new Date().toISOString());\n          model.set(\"n_toggles\", (model.get(\"n_toggles\") || 0) + 1);\n          model.save_changes();\n          // model.send({ type: \"changed\", value: v });\n        }\n      });\n\n      model.on(\"change:value\", syncFromModel);\n      model.on(\"change:disabled\", syncFromModel);\n      model.on(\"change:appearance\", syncFromModel);\n      model.on(\"change:label\", syncFromModel);\n      model.on(\"change:hidden\", syncFromModel);\n\n      syncFromModel();\n\n      // ---- read cell id (no DOM modifications) ----\n      /*\n      const ID_ATTR = \"data-cell-id\";\n      const hostWithId = el.closest(`[${ID_ATTR}]`);\n      const cellId = hostWithId ? hostWithId.getAttribute(ID_ATTR) : null;\n\n      if (cellId) {\n        model.set(\"cell_id\", cellId);\n        model.save_changes();\n        model.send({ type: \"cell_id_detected\", value: cellId });\n      } else {\n        const mo = new MutationObserver(() => {\n          const host = el.closest(`[${ID_ATTR}]`);\n          const newId = host?.getAttribute(ID_ATTR);\n          \n          if (newId) {\n            model.set(\"cell_id\", newId);\n            model.save_changes();\n            model.send({ type: \"cell_id_detected\", value: newId });\n            mo.disconnect();\n          }\n        });\n        mo.observe(document.body, { attributes: true, subtree: true, attributeFilter: [ID_ATTR] });\n      }\n      */\n    }\n    export default { render };\n    ",
       "_model_module": "anywidget",
       "_model_module_version": "~0.11.*",
       "_model_name": "AnyModel",
       "_view_count": null,
       "_view_module": "anywidget",
       "_view_module_version": "~0.11.*",
       "_view_name": "AnyView",
       "appearance": "box",
       "cell_id": "",
       "disabled": false,
       "hidden": false,
       "label": "Reporting & Insights: Analytics & insights",
       "last_changed_at": "",
       "layout": "IPY_MODEL_8319aeb5add740b0b1949c4cbb34bae7",
       "layout_path": null,
       "n_toggles": 0,
       "position": "sidebar",
       "render_slot_id": null,
       "source_cell_id": null,
       "tabbable": null,
       "tooltip": null,
       "url_key": "",
       "value": false
      }
     },
     "017c33dbf5274f03bc347a8503d97159": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "041455db212e45ceb2c7b7b29d504825": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "06a9529c7c85454195da078934279080": {
      "model_module": "anywidget",
      "model_module_version": "~0.11.*",
      "model_name": "AnyModel",
      "state": {
       "_anywidget_id": "mercury.text.TextInputWidget",
       "_css": "\n    .mljar-textinput-container {\n      display: flex;\n      flex-direction: column;\n      align-items: flex-start;\n      width: 100%;\n      min-width: 120px;\n      font-family: ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;\n      font-size: 14px;\n      font-weight: normal;\n      color: #0f172a;\n      padding-left: 4px;\n      padding-right: 4px;\n      box-sizing: border-box;\n    }\n\n    .mljar-textinput-top-label {\n      padding-top: 6px;\n      margin-bottom: 6px;\n      text-align: left;\n      width: 100%;\n      font-weight: 600;\n    }\n\n    .mljar-textinput-input {\n      width: 100%;\n      min-height: 40px;\n      padding: 9px 10px;\n      box-sizing: border-box;\n      border: 1px solid #cfd1d5;\n      border-radius: 6px;\n      background: #ffffff;\n      color: #0f172a;\n      line-height: 1.4;\n\n      appearance: none !important;\n      background-color: #ffffff !important;\n    }\n\n    .mljar-textinput-input:focus {\n      outline: none;\n      border-color: #007bff;\n      box-shadow: none;\n    }\n\n    .mljar-textinput-input:disabled {\n      background: #f5f5f5;\n      color: #888;\n      cursor: not-allowed;\n    }\n\n    @media (max-width: 768px) {\n      .mljar-textinput-input {\n        min-height: 44px;\n        padding: 10px 12px;\n      }\n    }\n    ",
       "_dom_classes": [],
       "_esm": "\n    function render({ model, el }) {\n      const container = document.createElement(\"div\");\n      container.classList.add(\"mljar-textinput-container\");\n\n      const topLabel = document.createElement(\"div\");\n      topLabel.classList.add(\"mljar-textinput-top-label\");\n\n      const input = document.createElement(\"input\");\n      input.type = \"text\";\n      input.classList.add(\"mljar-textinput-input\");\n\n      container.appendChild(topLabel);\n      container.appendChild(input);\n      el.appendChild(container);\n\n      let debounceTimer = null;\n\n      input.addEventListener(\"input\", () => {\n        if (model.get(\"disabled\")) return;\n        model.set(\"value\", input.value);\n        if (debounceTimer) clearTimeout(debounceTimer);\n        debounceTimer = setTimeout(() => model.save_changes(), 200);\n      });\n\n      function syncFromModel() {\n        topLabel.innerHTML = model.get(\"label\") || \"Enter text\";\n        input.value = model.get(\"value\") ?? \"\";\n\n        const disabled = !!model.get(\"disabled\");\n        input.disabled = disabled;\n\n        const hidden = !!model.get(\"hidden\");\n        container.style.display = hidden ? \"none\" : \"flex\";\n      }\n\n      model.on(\"change:value\", syncFromModel);\n      model.on(\"change:label\", syncFromModel);\n      model.on(\"change:disabled\", syncFromModel);\n      model.on(\"change:hidden\", syncFromModel);\n\n      syncFromModel();\n\n      /*\n      // ---- read cell id (no DOM modifications) ----\n      const ID_ATTR = \"data-cell-id\";\n      const hostWithId = el.closest(`[${ID_ATTR}]`);\n      const cellId = hostWithId ? hostWithId.getAttribute(ID_ATTR) : null;\n\n      if (cellId) {\n        model.set(\"cell_id\", cellId);\n        model.save_changes();\n        model.send({ type: \"cell_id_detected\", value: cellId });\n      } else {\n        const mo = new MutationObserver(() => {\n          const host = el.closest(`[${ID_ATTR}]`);\n          const newId = host?.getAttribute(ID_ATTR);\n          if (newId) {\n            model.set(\"cell_id\", newId);\n            model.save_changes();\n            model.send({ type: \"cell_id_detected\", value: newId });\n            mo.disconnect();\n          }\n        });\n        mo.observe(document.body, { attributes: true, subtree: true, attributeFilter: [ID_ATTR] });\n      }\n      */\n    }\n    export default { render };\n    ",
       "_model_module": "anywidget",
       "_model_module_version": "~0.11.*",
       "_model_name": "AnyModel",
       "_view_count": null,
       "_view_module": "anywidget",
       "_view_module_version": "~0.11.*",
       "_view_name": "AnyView",
       "cell_id": "",
       "disabled": false,
       "hidden": false,
       "label": "Agent & Supervisor Environment — notes",
       "layout": "IPY_MODEL_80fca3f575234c3ba087ab24a4e0a1b1",
       "layout_path": null,
       "position": "sidebar",
       "render_slot_id": null,
       "source_cell_id": null,
       "tabbable": null,
       "tooltip": null,
       "url_key": "",
       "value": ""
      }
     },
     "10562f9890124ae3a6987c9550316eb4": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "2.0.0",
      "model_name": "HTMLModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/controls",
       "_model_module_version": "2.0.0",
       "_model_name": "HTMLModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/controls",
       "_view_module_version": "2.0.0",
       "_view_name": "HTMLView",
       "cell_id": "",
       "description": "",
       "description_allow_html": false,
       "layout": "IPY_MODEL_2d448c02bc9f430a9b33cd4990344fa2",
       "layout_path": null,
       "placeholder": "​",
       "position": "inline",
       "render_slot_id": null,
       "source_cell_id": null,
       "style": "IPY_MODEL_b1181ef7440a47a7916b4367d2e912aa",
       "tabbable": null,
       "tooltip": null,
       "value": "<div style=\"font-family: ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif; font-size: 14px; font-weight: normal; line-height: 1.65; color: #0f172a; word-break: break-word;\"><div style=\"max-width:760px\"><div style=\"font:700 24px Georgia, 'Times New Roman', serif;color:#151d2c;margin:4px 0 2px\">CX Discovery — topics</div><div style=\"font:14px Arial, 'Helvetica Neue', Helvetica, sans-serif;color:#586671\">8 topics · ~110 minutes</div><div style=\"margin:6px 0 18px\"><div style=\"height:12px;border-radius:6px;background:#e2e6e9;overflow:hidden\"><div style=\"height:100%;width:0.0%;background:#00a34c;border-radius:6px;transition:width .3s\"></div></div><div style=\"font:13px Arial, 'Helvetica Neue', Helvetica, sans-serif;color:#586671;margin-top:6px\">0 of 8 topics complete</div></div><div style=\"border:2px solid #0072bc;border-radius:10px;background:#eef5fb;padding:12px 16px;margin:8px 0\"><div style=\"display:flex;align-items:baseline\"><span style=\"font-size:18px;color:#a9b2b8;width:1.4em\">○</span><span style=\"font:700 17px Georgia, 'Times New Roman', serif;color:#151d2c\">Background &amp; Organization</span><span style=\"font:600 12px Arial, 'Helvetica Neue', Helvetica, sans-serif;color:#0072bc;margin-left:8px\">discussing now →</span><span style=\"margin-left:auto;font:12px Arial, 'Helvetica Neue', Helvetica, sans-serif;color:#586671\">Not started</span></div><div style=\"font:14px Arial, 'Helvetica Neue', Helvetica, sans-serif;color:#586671;margin:4px 0 0 34px\">Lines of business, channels, org structure, decision-making</div><ul style=\"margin:10px 0 2px;padding:0 0 0 34px; margin: 0 0 1em; padding-left: 1.4em;\"><li style=\"font:400 14px Arial, 'Helvetica Neue', Helvetica, sans-serif;color:#586671;margin:3px 0;list-style:none\"><span style=\"display:inline-block;width:1.2em\">○</span>Lines of business &amp; scope</li><li style=\"font:400 14px Arial, 'Helvetica Neue', Helvetica, sans-serif;color:#586671;margin:3px 0;list-style:none\"><span style=\"display:inline-block;width:1.2em\">○</span>Channels supported</li><li style=\"font:400 14px Arial, 'Helvetica Neue', Helvetica, sans-serif;color:#586671;margin:3px 0;list-style:none\"><span style=\"display:inline-block;width:1.2em\">○</span>Org &amp; reporting structure</li><li style=\"font:400 14px Arial, 'Helvetica Neue', Helvetica, sans-serif;color:#586671;margin:3px 0;list-style:none\"><span style=\"display:inline-block;width:1.2em\">○</span>Decision-making &amp; priorities</li><li style=\"font:400 14px Arial, 'Helvetica Neue', Helvetica, sans-serif;color:#586671;margin:3px 0;list-style:none\"><span style=\"display:inline-block;width:1.2em\">○</span>Problems &amp; causes today</li></ul></div><div style=\"border:1px solid #d5d9db;border-radius:10px;background:#f8f8f8;padding:12px 16px;margin:8px 0\"><div style=\"display:flex;align-items:baseline\"><span style=\"font-size:18px;color:#a9b2b8;width:1.4em\">○</span><span style=\"font:700 17px Georgia, 'Times New Roman', serif;color:#151d2c\">CX Strategy</span><span style=\"margin-left:auto;font:12px Arial, 'Helvetica Neue', Helvetica, sans-serif;color:#586671\">Not started</span></div><div style=\"font:14px Arial, 'Helvetica Neue', Helvetica, sans-serif;color:#586671;margin:4px 0 0 34px\">How CX value is defined, measured, and organized to deliver</div></div><div style=\"border:1px solid #d5d9db;border-radius:10px;background:#f8f8f8;padding:12px 16px;margin:8px 0\"><div style=\"display:flex;align-items:baseline\"><span style=\"font-size:18px;color:#a9b2b8;width:1.4em\">○</span><span style=\"font:700 17px Georgia, 'Times New Roman', serif;color:#151d2c\">Channels</span><span style=\"margin-left:auto;font:12px Arial, 'Helvetica Neue', Helvetica, sans-serif;color:#586671\">Not started</span></div><div style=\"font:14px Arial, 'Helvetica Neue', Helvetica, sans-serif;color:#586671;margin:4px 0 0 34px\">Inbound &amp; outbound volumes, metrics, contact reasons</div></div><div style=\"border:1px solid #d5d9db;border-radius:10px;background:#f8f8f8;padding:12px 16px;margin:8px 0\"><div style=\"display:flex;align-items:baseline\"><span style=\"font-size:18px;color:#a9b2b8;width:1.4em\">○</span><span style=\"font:700 17px Georgia, 'Times New Roman', serif;color:#151d2c\">Agent &amp; Supervisor Environment</span><span style=\"margin-left:auto;font:12px Arial, 'Helvetica Neue', Helvetica, sans-serif;color:#586671\">Not started</span></div><div style=\"font:14px Arial, 'Helvetica Neue', Helvetica, sans-serif;color:#586671;margin:4px 0 0 34px\">Locations, endpoints, desktop, applications, knowledge</div></div><div style=\"border:1px solid #d5d9db;border-radius:10px;background:#f8f8f8;padding:12px 16px;margin:8px 0\"><div style=\"display:flex;align-items:baseline\"><span style=\"font-size:18px;color:#a9b2b8;width:1.4em\">○</span><span style=\"font:700 17px Georgia, 'Times New Roman', serif;color:#151d2c\">Routing &amp; Automation</span><span style=\"margin-left:auto;font:12px Arial, 'Helvetica Neue', Helvetica, sans-serif;color:#586671\">Not started</span></div><div style=\"font:14px Arial, 'Helvetica Neue', Helvetica, sans-serif;color:#586671;margin:4px 0 0 34px\">Self-service, IVR, speech, virtual agents, agent assist, RPA</div></div><div style=\"border:1px solid #d5d9db;border-radius:10px;background:#f8f8f8;padding:12px 16px;margin:8px 0\"><div style=\"display:flex;align-items:baseline\"><span style=\"font-size:18px;color:#a9b2b8;width:1.4em\">○</span><span style=\"font:700 17px Georgia, 'Times New Roman', serif;color:#151d2c\">Workforce Engagement</span><span style=\"margin-left:auto;font:12px Arial, 'Helvetica Neue', Helvetica, sans-serif;color:#586671\">Not started</span></div><div style=\"font:14px Arial, 'Helvetica Neue', Helvetica, sans-serif;color:#586671;margin:4px 0 0 34px\">Call recording / QM, WFM, agent self-service, integrations</div></div><div style=\"border:1px solid #d5d9db;border-radius:10px;background:#f8f8f8;padding:12px 16px;margin:8px 0\"><div style=\"display:flex;align-items:baseline\"><span style=\"font-size:18px;color:#a9b2b8;width:1.4em\">○</span><span style=\"font:700 17px Georgia, 'Times New Roman', serif;color:#151d2c\">Training</span><span style=\"margin-left:auto;font:12px Arial, 'Helvetica Neue', Helvetica, sans-serif;color:#586671\">Not started</span></div><div style=\"font:14px Arial, 'Helvetica Neue', Helvetica, sans-serif;color:#586671;margin:4px 0 0 34px\">Onboarding, format, assessment, eLearning, QM integration</div></div><div style=\"border:1px solid #d5d9db;border-radius:10px;background:#f8f8f8;padding:12px 16px;margin:8px 0\"><div style=\"display:flex;align-items:baseline\"><span style=\"font-size:18px;color:#a9b2b8;width:1.4em\">○</span><span style=\"font:700 17px Georgia, 'Times New Roman', serif;color:#151d2c\">Reporting &amp; Insights</span><span style=\"margin-left:auto;font:12px Arial, 'Helvetica Neue', Helvetica, sans-serif;color:#586671\">Not started</span></div><div style=\"font:14px Arial, 'Helvetica Neue', Helvetica, sans-serif;color:#586671;margin:4px 0 0 34px\">Real-time &amp; historical reporting, analytics, BI, CRM</div></div></div></div>"
      }
     },
     "10bcd8e392d44ba787e16984dd019565": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "174a2effb95041b0b61ca80bf0d5c226": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "1914451087144805a0d1d2165f15d07f": {
      "model_module": "anywidget",
      "model_module_version": "~0.11.*",
      "model_name": "AnyModel",
      "state": {
       "_anywidget_id": "mercury.text.TextInputWidget",
       "_css": "\n    .mljar-textinput-container {\n      display: flex;\n      flex-direction: column;\n      align-items: flex-start;\n      width: 100%;\n      min-width: 120px;\n      font-family: ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;\n      font-size: 14px;\n      font-weight: normal;\n      color: #0f172a;\n      padding-left: 4px;\n      padding-right: 4px;\n      box-sizing: border-box;\n    }\n\n    .mljar-textinput-top-label {\n      padding-top: 6px;\n      margin-bottom: 6px;\n      text-align: left;\n      width: 100%;\n      font-weight: 600;\n    }\n\n    .mljar-textinput-input {\n      width: 100%;\n      min-height: 40px;\n      padding: 9px 10px;\n      box-sizing: border-box;\n      border: 1px solid #cfd1d5;\n      border-radius: 6px;\n      background: #ffffff;\n      color: #0f172a;\n      line-height: 1.4;\n\n      appearance: none !important;\n      background-color: #ffffff !important;\n    }\n\n    .mljar-textinput-input:focus {\n      outline: none;\n      border-color: #007bff;\n      box-shadow: none;\n    }\n\n    .mljar-textinput-input:disabled {\n      background: #f5f5f5;\n      color: #888;\n      cursor: not-allowed;\n    }\n\n    @media (max-width: 768px) {\n      .mljar-textinput-input {\n        min-height: 44px;\n        padding: 10px 12px;\n      }\n    }\n    ",
       "_dom_classes": [],
       "_esm": "\n    function render({ model, el }) {\n      const container = document.createElement(\"div\");\n      container.classList.add(\"mljar-textinput-container\");\n\n      const topLabel = document.createElement(\"div\");\n      topLabel.classList.add(\"mljar-textinput-top-label\");\n\n      const input = document.createElement(\"input\");\n      input.type = \"text\";\n      input.classList.add(\"mljar-textinput-input\");\n\n      container.appendChild(topLabel);\n      container.appendChild(input);\n      el.appendChild(container);\n\n      let debounceTimer = null;\n\n      input.addEventListener(\"input\", () => {\n        if (model.get(\"disabled\")) return;\n        model.set(\"value\", input.value);\n        if (debounceTimer) clearTimeout(debounceTimer);\n        debounceTimer = setTimeout(() => model.save_changes(), 200);\n      });\n\n      function syncFromModel() {\n        topLabel.innerHTML = model.get(\"label\") || \"Enter text\";\n        input.value = model.get(\"value\") ?? \"\";\n\n        const disabled = !!model.get(\"disabled\");\n        input.disabled = disabled;\n\n        const hidden = !!model.get(\"hidden\");\n        container.style.display = hidden ? \"none\" : \"flex\";\n      }\n\n      model.on(\"change:value\", syncFromModel);\n      model.on(\"change:label\", syncFromModel);\n      model.on(\"change:disabled\", syncFromModel);\n      model.on(\"change:hidden\", syncFromModel);\n\n      syncFromModel();\n\n      /*\n      // ---- read cell id (no DOM modifications) ----\n      const ID_ATTR = \"data-cell-id\";\n      const hostWithId = el.closest(`[${ID_ATTR}]`);\n      const cellId = hostWithId ? hostWithId.getAttribute(ID_ATTR) : null;\n\n      if (cellId) {\n        model.set(\"cell_id\", cellId);\n        model.save_changes();\n        model.send({ type: \"cell_id_detected\", value: cellId });\n      } else {\n        const mo = new MutationObserver(() => {\n          const host = el.closest(`[${ID_ATTR}]`);\n          const newId = host?.getAttribute(ID_ATTR);\n          if (newId) {\n            model.set(\"cell_id\", newId);\n            model.save_changes();\n            model.send({ type: \"cell_id_detected\", value: newId });\n            mo.disconnect();\n          }\n        });\n        mo.observe(document.body, { attributes: true, subtree: true, attributeFilter: [ID_ATTR] });\n      }\n      */\n    }\n    export default { render };\n    ",
       "_model_module": "anywidget",
       "_model_module_version": "~0.11.*",
       "_model_name": "AnyModel",
       "_view_count": null,
       "_view_module": "anywidget",
       "_view_module_version": "~0.11.*",
       "_view_name": "AnyView",
       "cell_id": "",
       "disabled": false,
       "hidden": false,
       "label": "Reporting & Insights — notes",
       "layout": "IPY_MODEL_6304c720969d412f97d54a7a2b1d2360",
       "layout_path": null,
       "position": "sidebar",
       "render_slot_id": null,
       "source_cell_id": null,
       "tabbable": null,
       "tooltip": null,
       "url_key": "",
       "value": ""
      }
     },
     "194ecfd03c6d4f24bada37b3d34b9ffe": {
      "model_module": "anywidget",
      "model_module_version": "~0.11.*",
      "model_name": "AnyModel",
      "state": {
       "_anywidget_id": "mercury.checkbox.CheckboxWidget",
       "_css": "\n    .mljar-checkbox-container {\n        display: inline-flex;\n        align-items: center;\n        gap: 10px;\n        cursor: pointer;\n        user-select: none;\n        -webkit-tap-highlight-color: transparent;\n        font-family: ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;\n        color: #0f172a;\n        padding-left: 5px;\n    }\n    .mljar-checkbox-container.is-disabled {\n        opacity: 0.6;\n        cursor: not-allowed;\n    }\n\n    .mljar-checkbox-input {\n        position: absolute;\n        opacity: 0;\n        width: 0;\n        height: 0;\n    }\n\n    .mljar-checkbox-input:focus-visible + .mljar-checkbox-control {\n        box-shadow: inset 0 0 0 2px #007bff;\n    }\n\n    .mljar-checkbox-label {\n        font-size: 14px;\n        line-height: 1.2;\n        padding-top: 2px;\n    }\n\n    /* --- Toggle style (15% smaller) --- */\n    .mljar-checkbox-container.is-toggle .mljar-checkbox-control {\n        position: relative;\n        width: 34px;\n        height: 19px;\n        border-radius: 999px;\n        background: #f1f1f2;\n        border: 1px solid #cfd1d5;\n        transition: background 150ms ease, border-color 150ms ease;\n    }\n    .mljar-checkbox-container.is-toggle.is-checked .mljar-checkbox-control {\n        background: #007bff;\n        border-color: #007bff;\n    }\n    .mljar-checkbox-container.is-toggle .mljar-checkbox-control::after {\n        content: \"\";\n        position: absolute;\n        top: 2px;\n        left: 2px;\n        width: 15px;\n        height: 15px;\n        border-radius: 50%;\n        background: #ffffff;\n        box-shadow: 0 1px 2px rgba(0,0,0,0.12), 0 0 0 1px rgba(0,0,0,0.04);\n        transition: transform 150ms ease;\n    }\n    .mljar-checkbox-container.is-toggle.is-checked .mljar-checkbox-control::after {\n        transform: translateX(15px);\n    }\n\n    /* --- Classic box style --- */\n    .mljar-checkbox-container.is-box .mljar-checkbox-control {\n        width: 16px;\n        height: 16px;\n        border-radius: 4px;\n        border: 1px solid #cfd1d5;\n        background: #ffffff;\n        display: inline-block;\n        position: relative;\n    }\n    .mljar-checkbox-container.is-box.is-checked .mljar-checkbox-control {\n        border-color: #007bff;\n        background: #007bff;\n    }\n    .mljar-checkbox-container.is-box.is-checked .mljar-checkbox-control::after {\n        content: \"\";\n        position: absolute;\n        left: 4px;\n        top: 0px;\n        width: 5px;\n        height: 10px;\n        border: solid #fff;\n        border-width: 0 2px 2px 0;\n        transform: rotate(45deg);\n    }\n\n    .mljar-checkbox-container:not(.is-disabled):hover .mljar-checkbox-control {\n        border-color: #007bff;\n        background: #f3f3f4;\n    }\n    ",
       "_dom_classes": [],
       "_esm": "\n    function render({ model, el }) {\n      const container = document.createElement(\"label\");\n      container.classList.add(\"mljar-checkbox-container\");\n\n      const input = document.createElement(\"input\");\n      input.type = \"checkbox\";\n      input.classList.add(\"mljar-checkbox-input\");\n\n      const control = document.createElement(\"span\");\n      control.classList.add(\"mljar-checkbox-control\");\n\n      const text = document.createElement(\"span\");\n      text.classList.add(\"mljar-checkbox-label\");\n\n      container.appendChild(input);\n      container.appendChild(control);\n      container.appendChild(text);\n      el.appendChild(container);\n\n      function syncFromModel() {\n        // appearance\n        const a = model.get(\"appearance\") || \"toggle\";\n        container.classList.remove(\"is-toggle\",\"is-box\");\n        container.classList.add(`is-${a}`);\n        input.setAttribute(\"role\", a === \"toggle\" ? \"switch\" : \"checkbox\");\n\n        // value\n        const v = !!model.get(\"value\");\n        if (input.checked !== v) {\n          input.checked = v;\n          input.setAttribute(\"aria-checked\", String(v));\n        }\n        container.classList.toggle(\"is-checked\", v);\n\n        // disabled\n        const d = !!model.get(\"disabled\");\n        input.disabled = d;\n        container.classList.toggle(\"is-disabled\", d);\n\n        // label\n        text.textContent = model.get(\"label\") || \"\";\n\n        // hidden (exists but not visible)\n        container.style.display = model.get(\"hidden\") ? \"none\" : \"inline-flex\";\n      }\n\n      input.addEventListener(\"change\", () => {\n        if (model.get(\"disabled\")) return;\n\n        const v = input.checked;\n        if (model.get(\"value\") !== v) {\n          model.set(\"value\", v);\n          model.set(\"last_changed_at\", new Date().toISOString());\n          model.set(\"n_toggles\", (model.get(\"n_toggles\") || 0) + 1);\n          model.save_changes();\n          // model.send({ type: \"changed\", value: v });\n        }\n      });\n\n      model.on(\"change:value\", syncFromModel);\n      model.on(\"change:disabled\", syncFromModel);\n      model.on(\"change:appearance\", syncFromModel);\n      model.on(\"change:label\", syncFromModel);\n      model.on(\"change:hidden\", syncFromModel);\n\n      syncFromModel();\n\n      // ---- read cell id (no DOM modifications) ----\n      /*\n      const ID_ATTR = \"data-cell-id\";\n      const hostWithId = el.closest(`[${ID_ATTR}]`);\n      const cellId = hostWithId ? hostWithId.getAttribute(ID_ATTR) : null;\n\n      if (cellId) {\n        model.set(\"cell_id\", cellId);\n        model.save_changes();\n        model.send({ type: \"cell_id_detected\", value: cellId });\n      } else {\n        const mo = new MutationObserver(() => {\n          const host = el.closest(`[${ID_ATTR}]`);\n          const newId = host?.getAttribute(ID_ATTR);\n          \n          if (newId) {\n            model.set(\"cell_id\", newId);\n            model.save_changes();\n            model.send({ type: \"cell_id_detected\", value: newId });\n            mo.disconnect();\n          }\n        });\n        mo.observe(document.body, { attributes: true, subtree: true, attributeFilter: [ID_ATTR] });\n      }\n      */\n    }\n    export default { render };\n    ",
       "_model_module": "anywidget",
       "_model_module_version": "~0.11.*",
       "_model_name": "AnyModel",
       "_view_count": null,
       "_view_module": "anywidget",
       "_view_module_version": "~0.11.*",
       "_view_name": "AnyView",
       "appearance": "box",
       "cell_id": "",
       "disabled": false,
       "hidden": false,
       "label": "Workforce Engagement: Call recording & Quality Management",
       "last_changed_at": "",
       "layout": "IPY_MODEL_7cf7689da95d411bbe31b4db1c2d358f",
       "layout_path": null,
       "n_toggles": 0,
       "position": "sidebar",
       "render_slot_id": null,
       "source_cell_id": null,
       "tabbable": null,
       "tooltip": null,
       "url_key": "",
       "value": false
      }
     },
     "1af6c54cb9024baba39d308f1a95480b": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "22226cf1a4784274bf258eb89c98afb4": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "25d50932b435444f925055818eb1e7fb": {
      "model_module": "anywidget",
      "model_module_version": "~0.11.*",
      "model_name": "AnyModel",
      "state": {
       "_anywidget_id": "mercury.checkbox.CheckboxWidget",
       "_css": "\n    .mljar-checkbox-container {\n        display: inline-flex;\n        align-items: center;\n        gap: 10px;\n        cursor: pointer;\n        user-select: none;\n        -webkit-tap-highlight-color: transparent;\n        font-family: ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;\n        color: #0f172a;\n        padding-left: 5px;\n    }\n    .mljar-checkbox-container.is-disabled {\n        opacity: 0.6;\n        cursor: not-allowed;\n    }\n\n    .mljar-checkbox-input {\n        position: absolute;\n        opacity: 0;\n        width: 0;\n        height: 0;\n    }\n\n    .mljar-checkbox-input:focus-visible + .mljar-checkbox-control {\n        box-shadow: inset 0 0 0 2px #007bff;\n    }\n\n    .mljar-checkbox-label {\n        font-size: 14px;\n        line-height: 1.2;\n        padding-top: 2px;\n    }\n\n    /* --- Toggle style (15% smaller) --- */\n    .mljar-checkbox-container.is-toggle .mljar-checkbox-control {\n        position: relative;\n        width: 34px;\n        height: 19px;\n        border-radius: 999px;\n        background: #f1f1f2;\n        border: 1px solid #cfd1d5;\n        transition: background 150ms ease, border-color 150ms ease;\n    }\n    .mljar-checkbox-container.is-toggle.is-checked .mljar-checkbox-control {\n        background: #007bff;\n        border-color: #007bff;\n    }\n    .mljar-checkbox-container.is-toggle .mljar-checkbox-control::after {\n        content: \"\";\n        position: absolute;\n        top: 2px;\n        left: 2px;\n        width: 15px;\n        height: 15px;\n        border-radius: 50%;\n        background: #ffffff;\n        box-shadow: 0 1px 2px rgba(0,0,0,0.12), 0 0 0 1px rgba(0,0,0,0.04);\n        transition: transform 150ms ease;\n    }\n    .mljar-checkbox-container.is-toggle.is-checked .mljar-checkbox-control::after {\n        transform: translateX(15px);\n    }\n\n    /* --- Classic box style --- */\n    .mljar-checkbox-container.is-box .mljar-checkbox-control {\n        width: 16px;\n        height: 16px;\n        border-radius: 4px;\n        border: 1px solid #cfd1d5;\n        background: #ffffff;\n        display: inline-block;\n        position: relative;\n    }\n    .mljar-checkbox-container.is-box.is-checked .mljar-checkbox-control {\n        border-color: #007bff;\n        background: #007bff;\n    }\n    .mljar-checkbox-container.is-box.is-checked .mljar-checkbox-control::after {\n        content: \"\";\n        position: absolute;\n        left: 4px;\n        top: 0px;\n        width: 5px;\n        height: 10px;\n        border: solid #fff;\n        border-width: 0 2px 2px 0;\n        transform: rotate(45deg);\n    }\n\n    .mljar-checkbox-container:not(.is-disabled):hover .mljar-checkbox-control {\n        border-color: #007bff;\n        background: #f3f3f4;\n    }\n    ",
       "_dom_classes": [],
       "_esm": "\n    function render({ model, el }) {\n      const container = document.createElement(\"label\");\n      container.classList.add(\"mljar-checkbox-container\");\n\n      const input = document.createElement(\"input\");\n      input.type = \"checkbox\";\n      input.classList.add(\"mljar-checkbox-input\");\n\n      const control = document.createElement(\"span\");\n      control.classList.add(\"mljar-checkbox-control\");\n\n      const text = document.createElement(\"span\");\n      text.classList.add(\"mljar-checkbox-label\");\n\n      container.appendChild(input);\n      container.appendChild(control);\n      container.appendChild(text);\n      el.appendChild(container);\n\n      function syncFromModel() {\n        // appearance\n        const a = model.get(\"appearance\") || \"toggle\";\n        container.classList.remove(\"is-toggle\",\"is-box\");\n        container.classList.add(`is-${a}`);\n        input.setAttribute(\"role\", a === \"toggle\" ? \"switch\" : \"checkbox\");\n\n        // value\n        const v = !!model.get(\"value\");\n        if (input.checked !== v) {\n          input.checked = v;\n          input.setAttribute(\"aria-checked\", String(v));\n        }\n        container.classList.toggle(\"is-checked\", v);\n\n        // disabled\n        const d = !!model.get(\"disabled\");\n        input.disabled = d;\n        container.classList.toggle(\"is-disabled\", d);\n\n        // label\n        text.textContent = model.get(\"label\") || \"\";\n\n        // hidden (exists but not visible)\n        container.style.display = model.get(\"hidden\") ? \"none\" : \"inline-flex\";\n      }\n\n      input.addEventListener(\"change\", () => {\n        if (model.get(\"disabled\")) return;\n\n        const v = input.checked;\n        if (model.get(\"value\") !== v) {\n          model.set(\"value\", v);\n          model.set(\"last_changed_at\", new Date().toISOString());\n          model.set(\"n_toggles\", (model.get(\"n_toggles\") || 0) + 1);\n          model.save_changes();\n          // model.send({ type: \"changed\", value: v });\n        }\n      });\n\n      model.on(\"change:value\", syncFromModel);\n      model.on(\"change:disabled\", syncFromModel);\n      model.on(\"change:appearance\", syncFromModel);\n      model.on(\"change:label\", syncFromModel);\n      model.on(\"change:hidden\", syncFromModel);\n\n      syncFromModel();\n\n      // ---- read cell id (no DOM modifications) ----\n      /*\n      const ID_ATTR = \"data-cell-id\";\n      const hostWithId = el.closest(`[${ID_ATTR}]`);\n      const cellId = hostWithId ? hostWithId.getAttribute(ID_ATTR) : null;\n\n      if (cellId) {\n        model.set(\"cell_id\", cellId);\n        model.save_changes();\n        model.send({ type: \"cell_id_detected\", value: cellId });\n      } else {\n        const mo = new MutationObserver(() => {\n          const host = el.closest(`[${ID_ATTR}]`);\n          const newId = host?.getAttribute(ID_ATTR);\n          \n          if (newId) {\n            model.set(\"cell_id\", newId);\n            model.save_changes();\n            model.send({ type: \"cell_id_detected\", value: newId });\n            mo.disconnect();\n          }\n        });\n        mo.observe(document.body, { attributes: true, subtree: true, attributeFilter: [ID_ATTR] });\n      }\n      */\n    }\n    export default { render };\n    ",
       "_model_module": "anywidget",
       "_model_module_version": "~0.11.*",
       "_model_name": "AnyModel",
       "_view_count": null,
       "_view_module": "anywidget",
       "_view_module_version": "~0.11.*",
       "_view_name": "AnyView",
       "appearance": "box",
       "cell_id": "",
       "disabled": false,
       "hidden": false,
       "label": "Background & Organization: Lines of business & scope",
       "last_changed_at": "",
       "layout": "IPY_MODEL_a3819a7c608e439d970efe9652597785",
       "layout_path": null,
       "n_toggles": 0,
       "position": "sidebar",
       "render_slot_id": null,
       "source_cell_id": null,
       "tabbable": null,
       "tooltip": null,
       "url_key": "",
       "value": false
      }
     },
     "26af1dec8a404838beb37187857e4941": {
      "model_module": "anywidget",
      "model_module_version": "~0.11.*",
      "model_name": "AnyModel",
      "state": {
       "_anywidget_id": "mercury.text.TextInputWidget",
       "_css": "\n    .mljar-textinput-container {\n      display: flex;\n      flex-direction: column;\n      align-items: flex-start;\n      width: 100%;\n      min-width: 120px;\n      font-family: ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;\n      font-size: 14px;\n      font-weight: normal;\n      color: #0f172a;\n      padding-left: 4px;\n      padding-right: 4px;\n      box-sizing: border-box;\n    }\n\n    .mljar-textinput-top-label {\n      padding-top: 6px;\n      margin-bottom: 6px;\n      text-align: left;\n      width: 100%;\n      font-weight: 600;\n    }\n\n    .mljar-textinput-input {\n      width: 100%;\n      min-height: 40px;\n      padding: 9px 10px;\n      box-sizing: border-box;\n      border: 1px solid #cfd1d5;\n      border-radius: 6px;\n      background: #ffffff;\n      color: #0f172a;\n      line-height: 1.4;\n\n      appearance: none !important;\n      background-color: #ffffff !important;\n    }\n\n    .mljar-textinput-input:focus {\n      outline: none;\n      border-color: #007bff;\n      box-shadow: none;\n    }\n\n    .mljar-textinput-input:disabled {\n      background: #f5f5f5;\n      color: #888;\n      cursor: not-allowed;\n    }\n\n    @media (max-width: 768px) {\n      .mljar-textinput-input {\n        min-height: 44px;\n        padding: 10px 12px;\n      }\n    }\n    ",
       "_dom_classes": [],
       "_esm": "\n    function render({ model, el }) {\n      const container = document.createElement(\"div\");\n      container.classList.add(\"mljar-textinput-container\");\n\n      const topLabel = document.createElement(\"div\");\n      topLabel.classList.add(\"mljar-textinput-top-label\");\n\n      const input = document.createElement(\"input\");\n      input.type = \"text\";\n      input.classList.add(\"mljar-textinput-input\");\n\n      container.appendChild(topLabel);\n      container.appendChild(input);\n      el.appendChild(container);\n\n      let debounceTimer = null;\n\n      input.addEventListener(\"input\", () => {\n        if (model.get(\"disabled\")) return;\n        model.set(\"value\", input.value);\n        if (debounceTimer) clearTimeout(debounceTimer);\n        debounceTimer = setTimeout(() => model.save_changes(), 200);\n      });\n\n      function syncFromModel() {\n        topLabel.innerHTML = model.get(\"label\") || \"Enter text\";\n        input.value = model.get(\"value\") ?? \"\";\n\n        const disabled = !!model.get(\"disabled\");\n        input.disabled = disabled;\n\n        const hidden = !!model.get(\"hidden\");\n        container.style.display = hidden ? \"none\" : \"flex\";\n      }\n\n      model.on(\"change:value\", syncFromModel);\n      model.on(\"change:label\", syncFromModel);\n      model.on(\"change:disabled\", syncFromModel);\n      model.on(\"change:hidden\", syncFromModel);\n\n      syncFromModel();\n\n      /*\n      // ---- read cell id (no DOM modifications) ----\n      const ID_ATTR = \"data-cell-id\";\n      const hostWithId = el.closest(`[${ID_ATTR}]`);\n      const cellId = hostWithId ? hostWithId.getAttribute(ID_ATTR) : null;\n\n      if (cellId) {\n        model.set(\"cell_id\", cellId);\n        model.save_changes();\n        model.send({ type: \"cell_id_detected\", value: cellId });\n      } else {\n        const mo = new MutationObserver(() => {\n          const host = el.closest(`[${ID_ATTR}]`);\n          const newId = host?.getAttribute(ID_ATTR);\n          if (newId) {\n            model.set(\"cell_id\", newId);\n            model.save_changes();\n            model.send({ type: \"cell_id_detected\", value: newId });\n            mo.disconnect();\n          }\n        });\n        mo.observe(document.body, { attributes: true, subtree: true, attributeFilter: [ID_ATTR] });\n      }\n      */\n    }\n    export default { render };\n    ",
       "_model_module": "anywidget",
       "_model_module_version": "~0.11.*",
       "_model_name": "AnyModel",
       "_view_count": null,
       "_view_module": "anywidget",
       "_view_module_version": "~0.11.*",
       "_view_name": "AnyView",
       "cell_id": "",
       "disabled": false,
       "hidden": false,
       "label": "Channels — notes",
       "layout": "IPY_MODEL_017c33dbf5274f03bc347a8503d97159",
       "layout_path": null,
       "position": "sidebar",
       "render_slot_id": null,
       "source_cell_id": null,
       "tabbable": null,
       "tooltip": null,
       "url_key": "",
       "value": ""
      }
     },
     "2802b92392a5461394c542372ec3681f": {
      "model_module": "anywidget",
      "model_module_version": "~0.11.*",
      "model_name": "AnyModel",
      "state": {
       "_anywidget_id": "mercury.checkbox.CheckboxWidget",
       "_css": "\n    .mljar-checkbox-container {\n        display: inline-flex;\n        align-items: center;\n        gap: 10px;\n        cursor: pointer;\n        user-select: none;\n        -webkit-tap-highlight-color: transparent;\n        font-family: ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;\n        color: #0f172a;\n        padding-left: 5px;\n    }\n    .mljar-checkbox-container.is-disabled {\n        opacity: 0.6;\n        cursor: not-allowed;\n    }\n\n    .mljar-checkbox-input {\n        position: absolute;\n        opacity: 0;\n        width: 0;\n        height: 0;\n    }\n\n    .mljar-checkbox-input:focus-visible + .mljar-checkbox-control {\n        box-shadow: inset 0 0 0 2px #007bff;\n    }\n\n    .mljar-checkbox-label {\n        font-size: 14px;\n        line-height: 1.2;\n        padding-top: 2px;\n    }\n\n    /* --- Toggle style (15% smaller) --- */\n    .mljar-checkbox-container.is-toggle .mljar-checkbox-control {\n        position: relative;\n        width: 34px;\n        height: 19px;\n        border-radius: 999px;\n        background: #f1f1f2;\n        border: 1px solid #cfd1d5;\n        transition: background 150ms ease, border-color 150ms ease;\n    }\n    .mljar-checkbox-container.is-toggle.is-checked .mljar-checkbox-control {\n        background: #007bff;\n        border-color: #007bff;\n    }\n    .mljar-checkbox-container.is-toggle .mljar-checkbox-control::after {\n        content: \"\";\n        position: absolute;\n        top: 2px;\n        left: 2px;\n        width: 15px;\n        height: 15px;\n        border-radius: 50%;\n        background: #ffffff;\n        box-shadow: 0 1px 2px rgba(0,0,0,0.12), 0 0 0 1px rgba(0,0,0,0.04);\n        transition: transform 150ms ease;\n    }\n    .mljar-checkbox-container.is-toggle.is-checked .mljar-checkbox-control::after {\n        transform: translateX(15px);\n    }\n\n    /* --- Classic box style --- */\n    .mljar-checkbox-container.is-box .mljar-checkbox-control {\n        width: 16px;\n        height: 16px;\n        border-radius: 4px;\n        border: 1px solid #cfd1d5;\n        background: #ffffff;\n        display: inline-block;\n        position: relative;\n    }\n    .mljar-checkbox-container.is-box.is-checked .mljar-checkbox-control {\n        border-color: #007bff;\n        background: #007bff;\n    }\n    .mljar-checkbox-container.is-box.is-checked .mljar-checkbox-control::after {\n        content: \"\";\n        position: absolute;\n        left: 4px;\n        top: 0px;\n        width: 5px;\n        height: 10px;\n        border: solid #fff;\n        border-width: 0 2px 2px 0;\n        transform: rotate(45deg);\n    }\n\n    .mljar-checkbox-container:not(.is-disabled):hover .mljar-checkbox-control {\n        border-color: #007bff;\n        background: #f3f3f4;\n    }\n    ",
       "_dom_classes": [],
       "_esm": "\n    function render({ model, el }) {\n      const container = document.createElement(\"label\");\n      container.classList.add(\"mljar-checkbox-container\");\n\n      const input = document.createElement(\"input\");\n      input.type = \"checkbox\";\n      input.classList.add(\"mljar-checkbox-input\");\n\n      const control = document.createElement(\"span\");\n      control.classList.add(\"mljar-checkbox-control\");\n\n      const text = document.createElement(\"span\");\n      text.classList.add(\"mljar-checkbox-label\");\n\n      container.appendChild(input);\n      container.appendChild(control);\n      container.appendChild(text);\n      el.appendChild(container);\n\n      function syncFromModel() {\n        // appearance\n        const a = model.get(\"appearance\") || \"toggle\";\n        container.classList.remove(\"is-toggle\",\"is-box\");\n        container.classList.add(`is-${a}`);\n        input.setAttribute(\"role\", a === \"toggle\" ? \"switch\" : \"checkbox\");\n\n        // value\n        const v = !!model.get(\"value\");\n        if (input.checked !== v) {\n          input.checked = v;\n          input.setAttribute(\"aria-checked\", String(v));\n        }\n        container.classList.toggle(\"is-checked\", v);\n\n        // disabled\n        const d = !!model.get(\"disabled\");\n        input.disabled = d;\n        container.classList.toggle(\"is-disabled\", d);\n\n        // label\n        text.textContent = model.get(\"label\") || \"\";\n\n        // hidden (exists but not visible)\n        container.style.display = model.get(\"hidden\") ? \"none\" : \"inline-flex\";\n      }\n\n      input.addEventListener(\"change\", () => {\n        if (model.get(\"disabled\")) return;\n\n        const v = input.checked;\n        if (model.get(\"value\") !== v) {\n          model.set(\"value\", v);\n          model.set(\"last_changed_at\", new Date().toISOString());\n          model.set(\"n_toggles\", (model.get(\"n_toggles\") || 0) + 1);\n          model.save_changes();\n          // model.send({ type: \"changed\", value: v });\n        }\n      });\n\n      model.on(\"change:value\", syncFromModel);\n      model.on(\"change:disabled\", syncFromModel);\n      model.on(\"change:appearance\", syncFromModel);\n      model.on(\"change:label\", syncFromModel);\n      model.on(\"change:hidden\", syncFromModel);\n\n      syncFromModel();\n\n      // ---- read cell id (no DOM modifications) ----\n      /*\n      const ID_ATTR = \"data-cell-id\";\n      const hostWithId = el.closest(`[${ID_ATTR}]`);\n      const cellId = hostWithId ? hostWithId.getAttribute(ID_ATTR) : null;\n\n      if (cellId) {\n        model.set(\"cell_id\", cellId);\n        model.save_changes();\n        model.send({ type: \"cell_id_detected\", value: cellId });\n      } else {\n        const mo = new MutationObserver(() => {\n          const host = el.closest(`[${ID_ATTR}]`);\n          const newId = host?.getAttribute(ID_ATTR);\n          \n          if (newId) {\n            model.set(\"cell_id\", newId);\n            model.save_changes();\n            model.send({ type: \"cell_id_detected\", value: newId });\n            mo.disconnect();\n          }\n        });\n        mo.observe(document.body, { attributes: true, subtree: true, attributeFilter: [ID_ATTR] });\n      }\n      */\n    }\n    export default { render };\n    ",
       "_model_module": "anywidget",
       "_model_module_version": "~0.11.*",
       "_model_name": "AnyModel",
       "_view_count": null,
       "_view_module": "anywidget",
       "_view_module_version": "~0.11.*",
       "_view_name": "AnyView",
       "appearance": "box",
       "cell_id": "",
       "disabled": false,
       "hidden": false,
       "label": "Training: Onboarding & enablement",
       "last_changed_at": "",
       "layout": "IPY_MODEL_2bc1f73c6512476d89301d6a56ba4b76",
       "layout_path": null,
       "n_toggles": 0,
       "position": "sidebar",
       "render_slot_id": null,
       "source_cell_id": null,
       "tabbable": null,
       "tooltip": null,
       "url_key": "",
       "value": false
      }
     },
     "2a193c9dfd6a4134aaa5826a9f720d80": {
      "model_module": "anywidget",
      "model_module_version": "~0.11.*",
      "model_name": "AnyModel",
      "state": {
       "_anywidget_id": "mercury.checkbox.CheckboxWidget",
       "_css": "\n    .mljar-checkbox-container {\n        display: inline-flex;\n        align-items: center;\n        gap: 10px;\n        cursor: pointer;\n        user-select: none;\n        -webkit-tap-highlight-color: transparent;\n        font-family: ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;\n        color: #0f172a;\n        padding-left: 5px;\n    }\n    .mljar-checkbox-container.is-disabled {\n        opacity: 0.6;\n        cursor: not-allowed;\n    }\n\n    .mljar-checkbox-input {\n        position: absolute;\n        opacity: 0;\n        width: 0;\n        height: 0;\n    }\n\n    .mljar-checkbox-input:focus-visible + .mljar-checkbox-control {\n        box-shadow: inset 0 0 0 2px #007bff;\n    }\n\n    .mljar-checkbox-label {\n        font-size: 14px;\n        line-height: 1.2;\n        padding-top: 2px;\n    }\n\n    /* --- Toggle style (15% smaller) --- */\n    .mljar-checkbox-container.is-toggle .mljar-checkbox-control {\n        position: relative;\n        width: 34px;\n        height: 19px;\n        border-radius: 999px;\n        background: #f1f1f2;\n        border: 1px solid #cfd1d5;\n        transition: background 150ms ease, border-color 150ms ease;\n    }\n    .mljar-checkbox-container.is-toggle.is-checked .mljar-checkbox-control {\n        background: #007bff;\n        border-color: #007bff;\n    }\n    .mljar-checkbox-container.is-toggle .mljar-checkbox-control::after {\n        content: \"\";\n        position: absolute;\n        top: 2px;\n        left: 2px;\n        width: 15px;\n        height: 15px;\n        border-radius: 50%;\n        background: #ffffff;\n        box-shadow: 0 1px 2px rgba(0,0,0,0.12), 0 0 0 1px rgba(0,0,0,0.04);\n        transition: transform 150ms ease;\n    }\n    .mljar-checkbox-container.is-toggle.is-checked .mljar-checkbox-control::after {\n        transform: translateX(15px);\n    }\n\n    /* --- Classic box style --- */\n    .mljar-checkbox-container.is-box .mljar-checkbox-control {\n        width: 16px;\n        height: 16px;\n        border-radius: 4px;\n        border: 1px solid #cfd1d5;\n        background: #ffffff;\n        display: inline-block;\n        position: relative;\n    }\n    .mljar-checkbox-container.is-box.is-checked .mljar-checkbox-control {\n        border-color: #007bff;\n        background: #007bff;\n    }\n    .mljar-checkbox-container.is-box.is-checked .mljar-checkbox-control::after {\n        content: \"\";\n        position: absolute;\n        left: 4px;\n        top: 0px;\n        width: 5px;\n        height: 10px;\n        border: solid #fff;\n        border-width: 0 2px 2px 0;\n        transform: rotate(45deg);\n    }\n\n    .mljar-checkbox-container:not(.is-disabled):hover .mljar-checkbox-control {\n        border-color: #007bff;\n        background: #f3f3f4;\n    }\n    ",
       "_dom_classes": [],
       "_esm": "\n    function render({ model, el }) {\n      const container = document.createElement(\"label\");\n      container.classList.add(\"mljar-checkbox-container\");\n\n      const input = document.createElement(\"input\");\n      input.type = \"checkbox\";\n      input.classList.add(\"mljar-checkbox-input\");\n\n      const control = document.createElement(\"span\");\n      control.classList.add(\"mljar-checkbox-control\");\n\n      const text = document.createElement(\"span\");\n      text.classList.add(\"mljar-checkbox-label\");\n\n      container.appendChild(input);\n      container.appendChild(control);\n      container.appendChild(text);\n      el.appendChild(container);\n\n      function syncFromModel() {\n        // appearance\n        const a = model.get(\"appearance\") || \"toggle\";\n        container.classList.remove(\"is-toggle\",\"is-box\");\n        container.classList.add(`is-${a}`);\n        input.setAttribute(\"role\", a === \"toggle\" ? \"switch\" : \"checkbox\");\n\n        // value\n        const v = !!model.get(\"value\");\n        if (input.checked !== v) {\n          input.checked = v;\n          input.setAttribute(\"aria-checked\", String(v));\n        }\n        container.classList.toggle(\"is-checked\", v);\n\n        // disabled\n        const d = !!model.get(\"disabled\");\n        input.disabled = d;\n        container.classList.toggle(\"is-disabled\", d);\n\n        // label\n        text.textContent = model.get(\"label\") || \"\";\n\n        // hidden (exists but not visible)\n        container.style.display = model.get(\"hidden\") ? \"none\" : \"inline-flex\";\n      }\n\n      input.addEventListener(\"change\", () => {\n        if (model.get(\"disabled\")) return;\n\n        const v = input.checked;\n        if (model.get(\"value\") !== v) {\n          model.set(\"value\", v);\n          model.set(\"last_changed_at\", new Date().toISOString());\n          model.set(\"n_toggles\", (model.get(\"n_toggles\") || 0) + 1);\n          model.save_changes();\n          // model.send({ type: \"changed\", value: v });\n        }\n      });\n\n      model.on(\"change:value\", syncFromModel);\n      model.on(\"change:disabled\", syncFromModel);\n      model.on(\"change:appearance\", syncFromModel);\n      model.on(\"change:label\", syncFromModel);\n      model.on(\"change:hidden\", syncFromModel);\n\n      syncFromModel();\n\n      // ---- read cell id (no DOM modifications) ----\n      /*\n      const ID_ATTR = \"data-cell-id\";\n      const hostWithId = el.closest(`[${ID_ATTR}]`);\n      const cellId = hostWithId ? hostWithId.getAttribute(ID_ATTR) : null;\n\n      if (cellId) {\n        model.set(\"cell_id\", cellId);\n        model.save_changes();\n        model.send({ type: \"cell_id_detected\", value: cellId });\n      } else {\n        const mo = new MutationObserver(() => {\n          const host = el.closest(`[${ID_ATTR}]`);\n          const newId = host?.getAttribute(ID_ATTR);\n          \n          if (newId) {\n            model.set(\"cell_id\", newId);\n            model.save_changes();\n            model.send({ type: \"cell_id_detected\", value: newId });\n            mo.disconnect();\n          }\n        });\n        mo.observe(document.body, { attributes: true, subtree: true, attributeFilter: [ID_ATTR] });\n      }\n      */\n    }\n    export default { render };\n    ",
       "_model_module": "anywidget",
       "_model_module_version": "~0.11.*",
       "_model_name": "AnyModel",
       "_view_count": null,
       "_view_module": "anywidget",
       "_view_module_version": "~0.11.*",
       "_view_name": "AnyView",
       "appearance": "box",
       "cell_id": "",
       "disabled": false,
       "hidden": false,
       "label": "Agent & Supervisor Environment: Desktop & applications",
       "last_changed_at": "",
       "layout": "IPY_MODEL_50deb959f8ae48f88ce5e485a4131fbe",
       "layout_path": null,
       "n_toggles": 0,
       "position": "sidebar",
       "render_slot_id": null,
       "source_cell_id": null,
       "tabbable": null,
       "tooltip": null,
       "url_key": "",
       "value": false
      }
     },
     "2bc1f73c6512476d89301d6a56ba4b76": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "2d448c02bc9f430a9b33cd4990344fa2": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "2f11bd348ef442a2b3fb5829f37efe2e": {
      "model_module": "anywidget",
      "model_module_version": "~0.11.*",
      "model_name": "AnyModel",
      "state": {
       "_anywidget_id": "mercury.select.SelectWidget",
       "_css": "\n    .mljar-select-container {\n      position: relative;\n      display: flex;\n      flex-direction: column;\n      font-family: ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;\n      font-size: 14px;\n      color: #0f172a;\n      padding-left: 4px;\n      padding-right: 4px;\n      overflow: visible;\n    }\n\n    .mljar-select-label {\n      padding-top: 6px;\n      margin-bottom: 4px;\n      font-weight: 600;\n    }\n\n    .mljar-select-control {\n      position: relative;\n      display: flex;\n      align-items: center;\n      cursor: default;\n      overflow: visible;\n    }\n\n    .mljar-select-container.is-open {\n      z-index: 20;\n    }\n\n    .mljar-select-widget-input {\n      width: 100%;\n      min-height: 40px;\n      padding: 9px 36px 9px 10px;\n      border: 1px solid #cfd1d5;\n      border-radius: 6px;\n      background: #ffffff;\n      box-sizing: border-box;\n      line-height: 1.4;\n      transition: border-color 0.15s ease, box-shadow 0.15s ease;\n\n      appearance: none !important;\n      background-color: #ffffff !important;\n      color: #0f172a !important;\n      cursor: default;\n    }\n\n    .mljar-select-widget-input:focus {\n      outline: none;\n      border-color: #007bff;\n      box-shadow: none;\n      cursor: text;\n    }\n\n    .mljar-select-caret {\n      position: absolute;\n      right: 12px;\n      top: 50%;\n      width: 8px;\n      height: 8px;\n      border-right: 1.5px solid #0f172a;\n      border-bottom: 1.5px solid #0f172a;\n      transform: translateY(-65%) rotate(45deg);\n      pointer-events: auto;\n      opacity: 0.5;\n      transition: transform 0.18s ease, opacity 0.18s ease;\n    }\n\n    .mljar-select-container.is-open .mljar-select-caret {\n      opacity: 1;\n      transform: translateY(-35%) rotate(225deg);\n    }\n\n    .mljar-select-dropdown {\n      display: none;\n      position: fixed;\n      z-index: 10000;\n      border: 1px solid #cfd1d5;\n      border-radius: 6px;\n      background: #ffffff;\n      box-shadow: 0 8px 24px rgba(15, 23, 42, 0.12);\n      overflow: hidden;\n    }\n\n    .mljar-select-list {\n      max-height: 260px;\n      overflow-y: auto;\n    }\n\n    .mljar-select-option {\n      display: block;\n      width: 100%;\n      padding: 9px 10px;\n      border: 0;\n      background: transparent;\n      color: #0f172a;\n      text-align: left;\n      cursor: pointer;\n      font: inherit;\n      transition: background-color 0.14s ease, color 0.14s ease;\n    }\n\n    .mljar-select-option:hover {\n      background: #f3f3f4;\n    }\n\n    .mljar-select-option:active {\n      background: #e6f2ff;\n      color: #007bff;\n    }\n\n    .mljar-select-option.is-selected {\n      background: #e6f2ff;\n      color: #007bff;\n      font-weight: 600;\n    }\n\n    .mljar-select-option.is-selected:hover,\n    .mljar-select-option.is-selected:active {\n      background: #e6f2ff;\n      color: #007bff;\n    }\n\n    .mljar-select-empty {\n      display: none;\n      padding: 10px;\n      color: #616673;\n      font-size: 0.95em;\n    }\n\n    .mljar-select-widget-input:disabled {\n      background: #f5f5f5;\n      color: #888;\n      cursor: not-allowed;\n    }\n\n    .mljar-select-control.is-disabled .mljar-select-caret {\n      opacity: 0.45;\n    }\n    ",
       "_dom_classes": [],
       "_esm": "\n    function render({ model, el }) {\n      const normalize = value => String(value ?? \"\").toLowerCase().trim();\n      const getChoices = () =>\n        Array.isArray(model.get(\"choices\")) ? [...model.get(\"choices\")] : [];\n      const isDisabled = () => !!model.get(\"disabled\");\n      const isHidden = () => !!model.get(\"hidden\");\n\n      const container = document.createElement(\"div\");\n      container.classList.add(\"mljar-select-container\");\n\n      if (model.get(\"label\")) {\n        const topLabel = document.createElement(\"div\");\n        topLabel.classList.add(\"mljar-select-label\");\n        topLabel.innerHTML = model.get(\"label\");\n        container.appendChild(topLabel);\n      }\n\n      const control = document.createElement(\"div\");\n      control.classList.add(\"mljar-select-control\");\n\n      const input = document.createElement(\"input\");\n      input.type = \"text\";\n      input.classList.add(\"mljar-select-widget-input\");\n      input.autocomplete = \"off\";\n      input.spellcheck = false;\n\n      const caret = document.createElement(\"div\");\n      caret.classList.add(\"mljar-select-caret\");\n\n      control.appendChild(input);\n      control.appendChild(caret);\n\n      const dropdown = document.createElement(\"div\");\n      dropdown.classList.add(\"mljar-select-dropdown\");\n\n      const list = document.createElement(\"div\");\n      list.classList.add(\"mljar-select-list\");\n\n      const emptyState = document.createElement(\"div\");\n      emptyState.classList.add(\"mljar-select-empty\");\n      emptyState.textContent = \"No matches\";\n\n      dropdown.appendChild(list);\n      dropdown.appendChild(emptyState);\n\n      container.appendChild(control);\n      el.appendChild(container);\n\n      let isOpen = false;\n      let filteredChoices = [];\n      let lastCommittedValue = \"\";\n      let isEditing = false;\n      document.body.appendChild(dropdown);\n\n      const updateDropdownPosition = () => {\n        if (!isOpen) {\n          return;\n        }\n        const rect = control.getBoundingClientRect();\n        dropdown.style.top = `${rect.bottom + 6}px`;\n        dropdown.style.left = `${rect.left}px`;\n        dropdown.style.width = `${rect.width}px`;\n      };\n\n      const setOpen = next => {\n        if (isDisabled()) {\n          isOpen = false;\n        } else {\n          isOpen = !!next;\n        }\n        container.classList.toggle(\"is-open\", isOpen);\n        dropdown.style.display = isOpen ? \"block\" : \"none\";\n        if (isOpen) {\n          updateDropdownPosition();\n        }\n      };\n\n      const updateDisabledState = () => {\n        const disabled = isDisabled();\n        input.disabled = disabled;\n        control.classList.toggle(\"is-disabled\", disabled);\n      };\n\n      const updateHiddenState = () => {\n        container.style.display = isHidden() ? \"none\" : \"\";\n      };\n\n      const syncInputWithValue = () => {\n        const value = model.get(\"value\") || \"\";\n        lastCommittedValue = value;\n        if (!isEditing) {\n          input.value = value;\n        }\n      };\n\n      const filterChoices = query => {\n        const normalizedQuery = normalize(query);\n        const allChoices = getChoices();\n        if (!normalizedQuery) {\n          return allChoices;\n        }\n        return allChoices.filter(choice =>\n          normalize(choice).includes(normalizedQuery)\n        );\n      };\n\n      const renderList = () => {\n        list.innerHTML = \"\";\n        filteredChoices.forEach(choice => {\n          const option = document.createElement(\"button\");\n          option.type = \"button\";\n          option.classList.add(\"mljar-select-option\");\n          if (choice === model.get(\"value\")) {\n            option.classList.add(\"is-selected\");\n          }\n          option.textContent = choice;\n          option.addEventListener(\"mousedown\", event => {\n            event.preventDefault();\n            event.stopPropagation();\n            model.set(\"value\", choice);\n            model.save_changes();\n            isEditing = false;\n            syncInputWithValue();\n            renderList();\n            setOpen(false);\n          });\n          list.appendChild(option);\n        });\n\n        const hasMatches = filteredChoices.length > 0;\n        list.style.display = hasMatches ? \"block\" : \"none\";\n        emptyState.style.display = hasMatches ? \"none\" : \"block\";\n      };\n\n      const refreshList = () => {\n        filteredChoices = filterChoices(input.value);\n        renderList();\n      };\n\n      const openWithCurrentQuery = () => {\n        isEditing = true;\n        input.value = \"\";\n        refreshList();\n        setOpen(true);\n      };\n\n      const closeDropdown = () => {\n        isEditing = false;\n        setOpen(false);\n        input.value = lastCommittedValue;\n      };\n\n      control.addEventListener(\"click\", event => {\n        event.stopPropagation();\n        if (isDisabled()) {\n          return;\n        }\n        if (event.target === caret && isOpen) {\n          closeDropdown();\n          input.blur();\n          return;\n        }\n        openWithCurrentQuery();\n        input.focus();\n      });\n\n      input.addEventListener(\"input\", () => {\n        if (isDisabled()) {\n          return;\n        }\n        refreshList();\n        setOpen(true);\n      });\n\n      input.addEventListener(\"focus\", () => {\n        if (isDisabled()) {\n          return;\n        }\n        openWithCurrentQuery();\n      });\n\n      input.addEventListener(\"blur\", () => {\n        isEditing = false;\n        input.value = lastCommittedValue;\n      });\n\n      const handleDocumentClick = event => {\n        if (!container.contains(event.target) && !dropdown.contains(event.target)) {\n          closeDropdown();\n        }\n      };\n\n      document.addEventListener(\"click\", handleDocumentClick);\n      window.addEventListener(\"resize\", updateDropdownPosition);\n      document.addEventListener(\"scroll\", updateDropdownPosition, true);\n\n      model.on(\"change:value\", () => {\n        syncInputWithValue();\n        refreshList();\n      });\n\n      model.on(\"change:choices\", () => {\n        const choices = getChoices();\n        if (!choices.includes(model.get(\"value\")) && choices.length > 0) {\n          model.set(\"value\", choices[0]);\n          model.save_changes();\n          return;\n        }\n        syncInputWithValue();\n        refreshList();\n      });\n\n      model.on(\"change:disabled\", () => {\n        updateDisabledState();\n        if (isDisabled()) {\n          closeDropdown();\n        }\n      });\n\n      model.on(\"change:hidden\", () => {\n        updateHiddenState();\n      });\n\n      updateDisabledState();\n      updateHiddenState();\n      syncInputWithValue();\n      refreshList();\n      setOpen(false);\n\n      return () => {\n        dropdown.remove();\n        document.removeEventListener(\"click\", handleDocumentClick);\n        window.removeEventListener(\"resize\", updateDropdownPosition);\n        document.removeEventListener(\"scroll\", updateDropdownPosition, true);\n      };\n    }\n    export default { render };\n    ",
       "_model_module": "anywidget",
       "_model_module_version": "~0.11.*",
       "_model_name": "AnyModel",
       "_view_count": null,
       "_view_module": "anywidget",
       "_view_module_version": "~0.11.*",
       "_view_name": "AnyView",
       "cell_id": "",
       "choices": [
        "Not started",
        "In progress",
        "Complete",
        "Skipped"
       ],
       "disabled": false,
       "hidden": false,
       "label": "Channels — status",
       "layout": "IPY_MODEL_e65e3f4ec0cd4f3b8aef0b06807eb9eb",
       "layout_path": null,
       "position": "sidebar",
       "render_slot_id": null,
       "source_cell_id": null,
       "tabbable": null,
       "tooltip": null,
       "url_key": "",
       "value": "Not started"
      }
     },
     "33591c514cf243208a28c314bf94830b": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "347797bec7614a4bb25d2d85224ee854": {
      "model_module": "anywidget",
      "model_module_version": "~0.11.*",
      "model_name": "AnyModel",
      "state": {
       "_anywidget_id": "mercury.checkbox.CheckboxWidget",
       "_css": "\n    .mljar-checkbox-container {\n        display: inline-flex;\n        align-items: center;\n        gap: 10px;\n        cursor: pointer;\n        user-select: none;\n        -webkit-tap-highlight-color: transparent;\n        font-family: ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;\n        color: #0f172a;\n        padding-left: 5px;\n    }\n    .mljar-checkbox-container.is-disabled {\n        opacity: 0.6;\n        cursor: not-allowed;\n    }\n\n    .mljar-checkbox-input {\n        position: absolute;\n        opacity: 0;\n        width: 0;\n        height: 0;\n    }\n\n    .mljar-checkbox-input:focus-visible + .mljar-checkbox-control {\n        box-shadow: inset 0 0 0 2px #007bff;\n    }\n\n    .mljar-checkbox-label {\n        font-size: 14px;\n        line-height: 1.2;\n        padding-top: 2px;\n    }\n\n    /* --- Toggle style (15% smaller) --- */\n    .mljar-checkbox-container.is-toggle .mljar-checkbox-control {\n        position: relative;\n        width: 34px;\n        height: 19px;\n        border-radius: 999px;\n        background: #f1f1f2;\n        border: 1px solid #cfd1d5;\n        transition: background 150ms ease, border-color 150ms ease;\n    }\n    .mljar-checkbox-container.is-toggle.is-checked .mljar-checkbox-control {\n        background: #007bff;\n        border-color: #007bff;\n    }\n    .mljar-checkbox-container.is-toggle .mljar-checkbox-control::after {\n        content: \"\";\n        position: absolute;\n        top: 2px;\n        left: 2px;\n        width: 15px;\n        height: 15px;\n        border-radius: 50%;\n        background: #ffffff;\n        box-shadow: 0 1px 2px rgba(0,0,0,0.12), 0 0 0 1px rgba(0,0,0,0.04);\n        transition: transform 150ms ease;\n    }\n    .mljar-checkbox-container.is-toggle.is-checked .mljar-checkbox-control::after {\n        transform: translateX(15px);\n    }\n\n    /* --- Classic box style --- */\n    .mljar-checkbox-container.is-box .mljar-checkbox-control {\n        width: 16px;\n        height: 16px;\n        border-radius: 4px;\n        border: 1px solid #cfd1d5;\n        background: #ffffff;\n        display: inline-block;\n        position: relative;\n    }\n    .mljar-checkbox-container.is-box.is-checked .mljar-checkbox-control {\n        border-color: #007bff;\n        background: #007bff;\n    }\n    .mljar-checkbox-container.is-box.is-checked .mljar-checkbox-control::after {\n        content: \"\";\n        position: absolute;\n        left: 4px;\n        top: 0px;\n        width: 5px;\n        height: 10px;\n        border: solid #fff;\n        border-width: 0 2px 2px 0;\n        transform: rotate(45deg);\n    }\n\n    .mljar-checkbox-container:not(.is-disabled):hover .mljar-checkbox-control {\n        border-color: #007bff;\n        background: #f3f3f4;\n    }\n    ",
       "_dom_classes": [],
       "_esm": "\n    function render({ model, el }) {\n      const container = document.createElement(\"label\");\n      container.classList.add(\"mljar-checkbox-container\");\n\n      const input = document.createElement(\"input\");\n      input.type = \"checkbox\";\n      input.classList.add(\"mljar-checkbox-input\");\n\n      const control = document.createElement(\"span\");\n      control.classList.add(\"mljar-checkbox-control\");\n\n      const text = document.createElement(\"span\");\n      text.classList.add(\"mljar-checkbox-label\");\n\n      container.appendChild(input);\n      container.appendChild(control);\n      container.appendChild(text);\n      el.appendChild(container);\n\n      function syncFromModel() {\n        // appearance\n        const a = model.get(\"appearance\") || \"toggle\";\n        container.classList.remove(\"is-toggle\",\"is-box\");\n        container.classList.add(`is-${a}`);\n        input.setAttribute(\"role\", a === \"toggle\" ? \"switch\" : \"checkbox\");\n\n        // value\n        const v = !!model.get(\"value\");\n        if (input.checked !== v) {\n          input.checked = v;\n          input.setAttribute(\"aria-checked\", String(v));\n        }\n        container.classList.toggle(\"is-checked\", v);\n\n        // disabled\n        const d = !!model.get(\"disabled\");\n        input.disabled = d;\n        container.classList.toggle(\"is-disabled\", d);\n\n        // label\n        text.textContent = model.get(\"label\") || \"\";\n\n        // hidden (exists but not visible)\n        container.style.display = model.get(\"hidden\") ? \"none\" : \"inline-flex\";\n      }\n\n      input.addEventListener(\"change\", () => {\n        if (model.get(\"disabled\")) return;\n\n        const v = input.checked;\n        if (model.get(\"value\") !== v) {\n          model.set(\"value\", v);\n          model.set(\"last_changed_at\", new Date().toISOString());\n          model.set(\"n_toggles\", (model.get(\"n_toggles\") || 0) + 1);\n          model.save_changes();\n          // model.send({ type: \"changed\", value: v });\n        }\n      });\n\n      model.on(\"change:value\", syncFromModel);\n      model.on(\"change:disabled\", syncFromModel);\n      model.on(\"change:appearance\", syncFromModel);\n      model.on(\"change:label\", syncFromModel);\n      model.on(\"change:hidden\", syncFromModel);\n\n      syncFromModel();\n\n      // ---- read cell id (no DOM modifications) ----\n      /*\n      const ID_ATTR = \"data-cell-id\";\n      const hostWithId = el.closest(`[${ID_ATTR}]`);\n      const cellId = hostWithId ? hostWithId.getAttribute(ID_ATTR) : null;\n\n      if (cellId) {\n        model.set(\"cell_id\", cellId);\n        model.save_changes();\n        model.send({ type: \"cell_id_detected\", value: cellId });\n      } else {\n        const mo = new MutationObserver(() => {\n          const host = el.closest(`[${ID_ATTR}]`);\n          const newId = host?.getAttribute(ID_ATTR);\n          \n          if (newId) {\n            model.set(\"cell_id\", newId);\n            model.save_changes();\n            model.send({ type: \"cell_id_detected\", value: newId });\n            mo.disconnect();\n          }\n        });\n        mo.observe(document.body, { attributes: true, subtree: true, attributeFilter: [ID_ATTR] });\n      }\n      */\n    }\n    export default { render };\n    ",
       "_model_module": "anywidget",
       "_model_module_version": "~0.11.*",
       "_model_name": "AnyModel",
       "_view_count": null,
       "_view_module": "anywidget",
       "_view_module_version": "~0.11.*",
       "_view_name": "AnyView",
       "appearance": "box",
       "cell_id": "",
       "disabled": false,
       "hidden": false,
       "label": "CX Strategy: Insight & Voice of Customer",
       "last_changed_at": "",
       "layout": "IPY_MODEL_bc46a9479dd14a5b8e57dc6b35afb458",
       "layout_path": null,
       "n_toggles": 0,
       "position": "sidebar",
       "render_slot_id": null,
       "source_cell_id": null,
       "tabbable": null,
       "tooltip": null,
       "url_key": "",
       "value": false
      }
     },
     "42d5286c049140cba0bbcd5ffbba2359": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "43656bba585e4b8c86168b6eeaea3530": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "46e8479ff738471fb4fce78dc41384c0": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "473555ebf30f436db370faa41aeaf04d": {
      "model_module": "anywidget",
      "model_module_version": "~0.11.*",
      "model_name": "AnyModel",
      "state": {
       "_anywidget_id": "mercury.checkbox.CheckboxWidget",
       "_css": "\n    .mljar-checkbox-container {\n        display: inline-flex;\n        align-items: center;\n        gap: 10px;\n        cursor: pointer;\n        user-select: none;\n        -webkit-tap-highlight-color: transparent;\n        font-family: ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;\n        color: #0f172a;\n        padding-left: 5px;\n    }\n    .mljar-checkbox-container.is-disabled {\n        opacity: 0.6;\n        cursor: not-allowed;\n    }\n\n    .mljar-checkbox-input {\n        position: absolute;\n        opacity: 0;\n        width: 0;\n        height: 0;\n    }\n\n    .mljar-checkbox-input:focus-visible + .mljar-checkbox-control {\n        box-shadow: inset 0 0 0 2px #007bff;\n    }\n\n    .mljar-checkbox-label {\n        font-size: 14px;\n        line-height: 1.2;\n        padding-top: 2px;\n    }\n\n    /* --- Toggle style (15% smaller) --- */\n    .mljar-checkbox-container.is-toggle .mljar-checkbox-control {\n        position: relative;\n        width: 34px;\n        height: 19px;\n        border-radius: 999px;\n        background: #f1f1f2;\n        border: 1px solid #cfd1d5;\n        transition: background 150ms ease, border-color 150ms ease;\n    }\n    .mljar-checkbox-container.is-toggle.is-checked .mljar-checkbox-control {\n        background: #007bff;\n        border-color: #007bff;\n    }\n    .mljar-checkbox-container.is-toggle .mljar-checkbox-control::after {\n        content: \"\";\n        position: absolute;\n        top: 2px;\n        left: 2px;\n        width: 15px;\n        height: 15px;\n        border-radius: 50%;\n        background: #ffffff;\n        box-shadow: 0 1px 2px rgba(0,0,0,0.12), 0 0 0 1px rgba(0,0,0,0.04);\n        transition: transform 150ms ease;\n    }\n    .mljar-checkbox-container.is-toggle.is-checked .mljar-checkbox-control::after {\n        transform: translateX(15px);\n    }\n\n    /* --- Classic box style --- */\n    .mljar-checkbox-container.is-box .mljar-checkbox-control {\n        width: 16px;\n        height: 16px;\n        border-radius: 4px;\n        border: 1px solid #cfd1d5;\n        background: #ffffff;\n        display: inline-block;\n        position: relative;\n    }\n    .mljar-checkbox-container.is-box.is-checked .mljar-checkbox-control {\n        border-color: #007bff;\n        background: #007bff;\n    }\n    .mljar-checkbox-container.is-box.is-checked .mljar-checkbox-control::after {\n        content: \"\";\n        position: absolute;\n        left: 4px;\n        top: 0px;\n        width: 5px;\n        height: 10px;\n        border: solid #fff;\n        border-width: 0 2px 2px 0;\n        transform: rotate(45deg);\n    }\n\n    .mljar-checkbox-container:not(.is-disabled):hover .mljar-checkbox-control {\n        border-color: #007bff;\n        background: #f3f3f4;\n    }\n    ",
       "_dom_classes": [],
       "_esm": "\n    function render({ model, el }) {\n      const container = document.createElement(\"label\");\n      container.classList.add(\"mljar-checkbox-container\");\n\n      const input = document.createElement(\"input\");\n      input.type = \"checkbox\";\n      input.classList.add(\"mljar-checkbox-input\");\n\n      const control = document.createElement(\"span\");\n      control.classList.add(\"mljar-checkbox-control\");\n\n      const text = document.createElement(\"span\");\n      text.classList.add(\"mljar-checkbox-label\");\n\n      container.appendChild(input);\n      container.appendChild(control);\n      container.appendChild(text);\n      el.appendChild(container);\n\n      function syncFromModel() {\n        // appearance\n        const a = model.get(\"appearance\") || \"toggle\";\n        container.classList.remove(\"is-toggle\",\"is-box\");\n        container.classList.add(`is-${a}`);\n        input.setAttribute(\"role\", a === \"toggle\" ? \"switch\" : \"checkbox\");\n\n        // value\n        const v = !!model.get(\"value\");\n        if (input.checked !== v) {\n          input.checked = v;\n          input.setAttribute(\"aria-checked\", String(v));\n        }\n        container.classList.toggle(\"is-checked\", v);\n\n        // disabled\n        const d = !!model.get(\"disabled\");\n        input.disabled = d;\n        container.classList.toggle(\"is-disabled\", d);\n\n        // label\n        text.textContent = model.get(\"label\") || \"\";\n\n        // hidden (exists but not visible)\n        container.style.display = model.get(\"hidden\") ? \"none\" : \"inline-flex\";\n      }\n\n      input.addEventListener(\"change\", () => {\n        if (model.get(\"disabled\")) return;\n\n        const v = input.checked;\n        if (model.get(\"value\") !== v) {\n          model.set(\"value\", v);\n          model.set(\"last_changed_at\", new Date().toISOString());\n          model.set(\"n_toggles\", (model.get(\"n_toggles\") || 0) + 1);\n          model.save_changes();\n          // model.send({ type: \"changed\", value: v });\n        }\n      });\n\n      model.on(\"change:value\", syncFromModel);\n      model.on(\"change:disabled\", syncFromModel);\n      model.on(\"change:appearance\", syncFromModel);\n      model.on(\"change:label\", syncFromModel);\n      model.on(\"change:hidden\", syncFromModel);\n\n      syncFromModel();\n\n      // ---- read cell id (no DOM modifications) ----\n      /*\n      const ID_ATTR = \"data-cell-id\";\n      const hostWithId = el.closest(`[${ID_ATTR}]`);\n      const cellId = hostWithId ? hostWithId.getAttribute(ID_ATTR) : null;\n\n      if (cellId) {\n        model.set(\"cell_id\", cellId);\n        model.save_changes();\n        model.send({ type: \"cell_id_detected\", value: cellId });\n      } else {\n        const mo = new MutationObserver(() => {\n          const host = el.closest(`[${ID_ATTR}]`);\n          const newId = host?.getAttribute(ID_ATTR);\n          \n          if (newId) {\n            model.set(\"cell_id\", newId);\n            model.save_changes();\n            model.send({ type: \"cell_id_detected\", value: newId });\n            mo.disconnect();\n          }\n        });\n        mo.observe(document.body, { attributes: true, subtree: true, attributeFilter: [ID_ATTR] });\n      }\n      */\n    }\n    export default { render };\n    ",
       "_model_module": "anywidget",
       "_model_module_version": "~0.11.*",
       "_model_name": "AnyModel",
       "_view_count": null,
       "_view_module": "anywidget",
       "_view_module_version": "~0.11.*",
       "_view_name": "AnyView",
       "appearance": "box",
       "cell_id": "",
       "disabled": false,
       "hidden": false,
       "label": "Workforce Engagement: Agent self-service & integrations",
       "last_changed_at": "",
       "layout": "IPY_MODEL_22226cf1a4784274bf258eb89c98afb4",
       "layout_path": null,
       "n_toggles": 0,
       "position": "sidebar",
       "render_slot_id": null,
       "source_cell_id": null,
       "tabbable": null,
       "tooltip": null,
       "url_key": "",
       "value": false
      }
     },
     "4ae31f046c87487ba97a08fbcca7cea7": {
      "model_module": "anywidget",
      "model_module_version": "~0.11.*",
      "model_name": "AnyModel",
      "state": {
       "_anywidget_id": "mercury.text.TextInputWidget",
       "_css": "\n    .mljar-textinput-container {\n      display: flex;\n      flex-direction: column;\n      align-items: flex-start;\n      width: 100%;\n      min-width: 120px;\n      font-family: ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;\n      font-size: 14px;\n      font-weight: normal;\n      color: #0f172a;\n      padding-left: 4px;\n      padding-right: 4px;\n      box-sizing: border-box;\n    }\n\n    .mljar-textinput-top-label {\n      padding-top: 6px;\n      margin-bottom: 6px;\n      text-align: left;\n      width: 100%;\n      font-weight: 600;\n    }\n\n    .mljar-textinput-input {\n      width: 100%;\n      min-height: 40px;\n      padding: 9px 10px;\n      box-sizing: border-box;\n      border: 1px solid #cfd1d5;\n      border-radius: 6px;\n      background: #ffffff;\n      color: #0f172a;\n      line-height: 1.4;\n\n      appearance: none !important;\n      background-color: #ffffff !important;\n    }\n\n    .mljar-textinput-input:focus {\n      outline: none;\n      border-color: #007bff;\n      box-shadow: none;\n    }\n\n    .mljar-textinput-input:disabled {\n      background: #f5f5f5;\n      color: #888;\n      cursor: not-allowed;\n    }\n\n    @media (max-width: 768px) {\n      .mljar-textinput-input {\n        min-height: 44px;\n        padding: 10px 12px;\n      }\n    }\n    ",
       "_dom_classes": [],
       "_esm": "\n    function render({ model, el }) {\n      const container = document.createElement(\"div\");\n      container.classList.add(\"mljar-textinput-container\");\n\n      const topLabel = document.createElement(\"div\");\n      topLabel.classList.add(\"mljar-textinput-top-label\");\n\n      const input = document.createElement(\"input\");\n      input.type = \"text\";\n      input.classList.add(\"mljar-textinput-input\");\n\n      container.appendChild(topLabel);\n      container.appendChild(input);\n      el.appendChild(container);\n\n      let debounceTimer = null;\n\n      input.addEventListener(\"input\", () => {\n        if (model.get(\"disabled\")) return;\n        model.set(\"value\", input.value);\n        if (debounceTimer) clearTimeout(debounceTimer);\n        debounceTimer = setTimeout(() => model.save_changes(), 200);\n      });\n\n      function syncFromModel() {\n        topLabel.innerHTML = model.get(\"label\") || \"Enter text\";\n        input.value = model.get(\"value\") ?? \"\";\n\n        const disabled = !!model.get(\"disabled\");\n        input.disabled = disabled;\n\n        const hidden = !!model.get(\"hidden\");\n        container.style.display = hidden ? \"none\" : \"flex\";\n      }\n\n      model.on(\"change:value\", syncFromModel);\n      model.on(\"change:label\", syncFromModel);\n      model.on(\"change:disabled\", syncFromModel);\n      model.on(\"change:hidden\", syncFromModel);\n\n      syncFromModel();\n\n      /*\n      // ---- read cell id (no DOM modifications) ----\n      const ID_ATTR = \"data-cell-id\";\n      const hostWithId = el.closest(`[${ID_ATTR}]`);\n      const cellId = hostWithId ? hostWithId.getAttribute(ID_ATTR) : null;\n\n      if (cellId) {\n        model.set(\"cell_id\", cellId);\n        model.save_changes();\n        model.send({ type: \"cell_id_detected\", value: cellId });\n      } else {\n        const mo = new MutationObserver(() => {\n          const host = el.closest(`[${ID_ATTR}]`);\n          const newId = host?.getAttribute(ID_ATTR);\n          if (newId) {\n            model.set(\"cell_id\", newId);\n            model.save_changes();\n            model.send({ type: \"cell_id_detected\", value: newId });\n            mo.disconnect();\n          }\n        });\n        mo.observe(document.body, { attributes: true, subtree: true, attributeFilter: [ID_ATTR] });\n      }\n      */\n    }\n    export default { render };\n    ",
       "_model_module": "anywidget",
       "_model_module_version": "~0.11.*",
       "_model_name": "AnyModel",
       "_view_count": null,
       "_view_module": "anywidget",
       "_view_module_version": "~0.11.*",
       "_view_name": "AnyView",
       "cell_id": "",
       "disabled": false,
       "hidden": false,
       "label": "Workforce Engagement — notes",
       "layout": "IPY_MODEL_8f60dbda5b484579940066e5b0fd26ee",
       "layout_path": null,
       "position": "sidebar",
       "render_slot_id": null,
       "source_cell_id": null,
       "tabbable": null,
       "tooltip": null,
       "url_key": "",
       "value": ""
      }
     },
     "4fffa51b1f8c443a9a54dd5384c62dc2": {
      "model_module": "anywidget",
      "model_module_version": "~0.11.*",
      "model_name": "AnyModel",
      "state": {
       "_anywidget_id": "mercury.checkbox.CheckboxWidget",
       "_css": "\n    .mljar-checkbox-container {\n        display: inline-flex;\n        align-items: center;\n        gap: 10px;\n        cursor: pointer;\n        user-select: none;\n        -webkit-tap-highlight-color: transparent;\n        font-family: ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;\n        color: #0f172a;\n        padding-left: 5px;\n    }\n    .mljar-checkbox-container.is-disabled {\n        opacity: 0.6;\n        cursor: not-allowed;\n    }\n\n    .mljar-checkbox-input {\n        position: absolute;\n        opacity: 0;\n        width: 0;\n        height: 0;\n    }\n\n    .mljar-checkbox-input:focus-visible + .mljar-checkbox-control {\n        box-shadow: inset 0 0 0 2px #007bff;\n    }\n\n    .mljar-checkbox-label {\n        font-size: 14px;\n        line-height: 1.2;\n        padding-top: 2px;\n    }\n\n    /* --- Toggle style (15% smaller) --- */\n    .mljar-checkbox-container.is-toggle .mljar-checkbox-control {\n        position: relative;\n        width: 34px;\n        height: 19px;\n        border-radius: 999px;\n        background: #f1f1f2;\n        border: 1px solid #cfd1d5;\n        transition: background 150ms ease, border-color 150ms ease;\n    }\n    .mljar-checkbox-container.is-toggle.is-checked .mljar-checkbox-control {\n        background: #007bff;\n        border-color: #007bff;\n    }\n    .mljar-checkbox-container.is-toggle .mljar-checkbox-control::after {\n        content: \"\";\n        position: absolute;\n        top: 2px;\n        left: 2px;\n        width: 15px;\n        height: 15px;\n        border-radius: 50%;\n        background: #ffffff;\n        box-shadow: 0 1px 2px rgba(0,0,0,0.12), 0 0 0 1px rgba(0,0,0,0.04);\n        transition: transform 150ms ease;\n    }\n    .mljar-checkbox-container.is-toggle.is-checked .mljar-checkbox-control::after {\n        transform: translateX(15px);\n    }\n\n    /* --- Classic box style --- */\n    .mljar-checkbox-container.is-box .mljar-checkbox-control {\n        width: 16px;\n        height: 16px;\n        border-radius: 4px;\n        border: 1px solid #cfd1d5;\n        background: #ffffff;\n        display: inline-block;\n        position: relative;\n    }\n    .mljar-checkbox-container.is-box.is-checked .mljar-checkbox-control {\n        border-color: #007bff;\n        background: #007bff;\n    }\n    .mljar-checkbox-container.is-box.is-checked .mljar-checkbox-control::after {\n        content: \"\";\n        position: absolute;\n        left: 4px;\n        top: 0px;\n        width: 5px;\n        height: 10px;\n        border: solid #fff;\n        border-width: 0 2px 2px 0;\n        transform: rotate(45deg);\n    }\n\n    .mljar-checkbox-container:not(.is-disabled):hover .mljar-checkbox-control {\n        border-color: #007bff;\n        background: #f3f3f4;\n    }\n    ",
       "_dom_classes": [],
       "_esm": "\n    function render({ model, el }) {\n      const container = document.createElement(\"label\");\n      container.classList.add(\"mljar-checkbox-container\");\n\n      const input = document.createElement(\"input\");\n      input.type = \"checkbox\";\n      input.classList.add(\"mljar-checkbox-input\");\n\n      const control = document.createElement(\"span\");\n      control.classList.add(\"mljar-checkbox-control\");\n\n      const text = document.createElement(\"span\");\n      text.classList.add(\"mljar-checkbox-label\");\n\n      container.appendChild(input);\n      container.appendChild(control);\n      container.appendChild(text);\n      el.appendChild(container);\n\n      function syncFromModel() {\n        // appearance\n        const a = model.get(\"appearance\") || \"toggle\";\n        container.classList.remove(\"is-toggle\",\"is-box\");\n        container.classList.add(`is-${a}`);\n        input.setAttribute(\"role\", a === \"toggle\" ? \"switch\" : \"checkbox\");\n\n        // value\n        const v = !!model.get(\"value\");\n        if (input.checked !== v) {\n          input.checked = v;\n          input.setAttribute(\"aria-checked\", String(v));\n        }\n        container.classList.toggle(\"is-checked\", v);\n\n        // disabled\n        const d = !!model.get(\"disabled\");\n        input.disabled = d;\n        container.classList.toggle(\"is-disabled\", d);\n\n        // label\n        text.textContent = model.get(\"label\") || \"\";\n\n        // hidden (exists but not visible)\n        container.style.display = model.get(\"hidden\") ? \"none\" : \"inline-flex\";\n      }\n\n      input.addEventListener(\"change\", () => {\n        if (model.get(\"disabled\")) return;\n\n        const v = input.checked;\n        if (model.get(\"value\") !== v) {\n          model.set(\"value\", v);\n          model.set(\"last_changed_at\", new Date().toISOString());\n          model.set(\"n_toggles\", (model.get(\"n_toggles\") || 0) + 1);\n          model.save_changes();\n          // model.send({ type: \"changed\", value: v });\n        }\n      });\n\n      model.on(\"change:value\", syncFromModel);\n      model.on(\"change:disabled\", syncFromModel);\n      model.on(\"change:appearance\", syncFromModel);\n      model.on(\"change:label\", syncFromModel);\n      model.on(\"change:hidden\", syncFromModel);\n\n      syncFromModel();\n\n      // ---- read cell id (no DOM modifications) ----\n      /*\n      const ID_ATTR = \"data-cell-id\";\n      const hostWithId = el.closest(`[${ID_ATTR}]`);\n      const cellId = hostWithId ? hostWithId.getAttribute(ID_ATTR) : null;\n\n      if (cellId) {\n        model.set(\"cell_id\", cellId);\n        model.save_changes();\n        model.send({ type: \"cell_id_detected\", value: cellId });\n      } else {\n        const mo = new MutationObserver(() => {\n          const host = el.closest(`[${ID_ATTR}]`);\n          const newId = host?.getAttribute(ID_ATTR);\n          \n          if (newId) {\n            model.set(\"cell_id\", newId);\n            model.save_changes();\n            model.send({ type: \"cell_id_detected\", value: newId });\n            mo.disconnect();\n          }\n        });\n        mo.observe(document.body, { attributes: true, subtree: true, attributeFilter: [ID_ATTR] });\n      }\n      */\n    }\n    export default { render };\n    ",
       "_model_module": "anywidget",
       "_model_module_version": "~0.11.*",
       "_model_name": "AnyModel",
       "_view_count": null,
       "_view_module": "anywidget",
       "_view_module_version": "~0.11.*",
       "_view_name": "AnyView",
       "appearance": "box",
       "cell_id": "",
       "disabled": false,
       "hidden": false,
       "label": "CX Strategy: Value & strategic position",
       "last_changed_at": "",
       "layout": "IPY_MODEL_8922090ab38b4984be10659d45650f2e",
       "layout_path": null,
       "n_toggles": 0,
       "position": "sidebar",
       "render_slot_id": null,
       "source_cell_id": null,
       "tabbable": null,
       "tooltip": null,
       "url_key": "",
       "value": false
      }
     },
     "50c76b29ed32468badebe6ff4f9f1bb0": {
      "model_module": "anywidget",
      "model_module_version": "~0.11.*",
      "model_name": "AnyModel",
      "state": {
       "_anywidget_id": "mercury.select.SelectWidget",
       "_css": "\n    .mljar-select-container {\n      position: relative;\n      display: flex;\n      flex-direction: column;\n      font-family: ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;\n      font-size: 14px;\n      color: #0f172a;\n      padding-left: 4px;\n      padding-right: 4px;\n      overflow: visible;\n    }\n\n    .mljar-select-label {\n      padding-top: 6px;\n      margin-bottom: 4px;\n      font-weight: 600;\n    }\n\n    .mljar-select-control {\n      position: relative;\n      display: flex;\n      align-items: center;\n      cursor: default;\n      overflow: visible;\n    }\n\n    .mljar-select-container.is-open {\n      z-index: 20;\n    }\n\n    .mljar-select-widget-input {\n      width: 100%;\n      min-height: 40px;\n      padding: 9px 36px 9px 10px;\n      border: 1px solid #cfd1d5;\n      border-radius: 6px;\n      background: #ffffff;\n      box-sizing: border-box;\n      line-height: 1.4;\n      transition: border-color 0.15s ease, box-shadow 0.15s ease;\n\n      appearance: none !important;\n      background-color: #ffffff !important;\n      color: #0f172a !important;\n      cursor: default;\n    }\n\n    .mljar-select-widget-input:focus {\n      outline: none;\n      border-color: #007bff;\n      box-shadow: none;\n      cursor: text;\n    }\n\n    .mljar-select-caret {\n      position: absolute;\n      right: 12px;\n      top: 50%;\n      width: 8px;\n      height: 8px;\n      border-right: 1.5px solid #0f172a;\n      border-bottom: 1.5px solid #0f172a;\n      transform: translateY(-65%) rotate(45deg);\n      pointer-events: auto;\n      opacity: 0.5;\n      transition: transform 0.18s ease, opacity 0.18s ease;\n    }\n\n    .mljar-select-container.is-open .mljar-select-caret {\n      opacity: 1;\n      transform: translateY(-35%) rotate(225deg);\n    }\n\n    .mljar-select-dropdown {\n      display: none;\n      position: fixed;\n      z-index: 10000;\n      border: 1px solid #cfd1d5;\n      border-radius: 6px;\n      background: #ffffff;\n      box-shadow: 0 8px 24px rgba(15, 23, 42, 0.12);\n      overflow: hidden;\n    }\n\n    .mljar-select-list {\n      max-height: 260px;\n      overflow-y: auto;\n    }\n\n    .mljar-select-option {\n      display: block;\n      width: 100%;\n      padding: 9px 10px;\n      border: 0;\n      background: transparent;\n      color: #0f172a;\n      text-align: left;\n      cursor: pointer;\n      font: inherit;\n      transition: background-color 0.14s ease, color 0.14s ease;\n    }\n\n    .mljar-select-option:hover {\n      background: #f3f3f4;\n    }\n\n    .mljar-select-option:active {\n      background: #e6f2ff;\n      color: #007bff;\n    }\n\n    .mljar-select-option.is-selected {\n      background: #e6f2ff;\n      color: #007bff;\n      font-weight: 600;\n    }\n\n    .mljar-select-option.is-selected:hover,\n    .mljar-select-option.is-selected:active {\n      background: #e6f2ff;\n      color: #007bff;\n    }\n\n    .mljar-select-empty {\n      display: none;\n      padding: 10px;\n      color: #616673;\n      font-size: 0.95em;\n    }\n\n    .mljar-select-widget-input:disabled {\n      background: #f5f5f5;\n      color: #888;\n      cursor: not-allowed;\n    }\n\n    .mljar-select-control.is-disabled .mljar-select-caret {\n      opacity: 0.45;\n    }\n    ",
       "_dom_classes": [],
       "_esm": "\n    function render({ model, el }) {\n      const normalize = value => String(value ?? \"\").toLowerCase().trim();\n      const getChoices = () =>\n        Array.isArray(model.get(\"choices\")) ? [...model.get(\"choices\")] : [];\n      const isDisabled = () => !!model.get(\"disabled\");\n      const isHidden = () => !!model.get(\"hidden\");\n\n      const container = document.createElement(\"div\");\n      container.classList.add(\"mljar-select-container\");\n\n      if (model.get(\"label\")) {\n        const topLabel = document.createElement(\"div\");\n        topLabel.classList.add(\"mljar-select-label\");\n        topLabel.innerHTML = model.get(\"label\");\n        container.appendChild(topLabel);\n      }\n\n      const control = document.createElement(\"div\");\n      control.classList.add(\"mljar-select-control\");\n\n      const input = document.createElement(\"input\");\n      input.type = \"text\";\n      input.classList.add(\"mljar-select-widget-input\");\n      input.autocomplete = \"off\";\n      input.spellcheck = false;\n\n      const caret = document.createElement(\"div\");\n      caret.classList.add(\"mljar-select-caret\");\n\n      control.appendChild(input);\n      control.appendChild(caret);\n\n      const dropdown = document.createElement(\"div\");\n      dropdown.classList.add(\"mljar-select-dropdown\");\n\n      const list = document.createElement(\"div\");\n      list.classList.add(\"mljar-select-list\");\n\n      const emptyState = document.createElement(\"div\");\n      emptyState.classList.add(\"mljar-select-empty\");\n      emptyState.textContent = \"No matches\";\n\n      dropdown.appendChild(list);\n      dropdown.appendChild(emptyState);\n\n      container.appendChild(control);\n      el.appendChild(container);\n\n      let isOpen = false;\n      let filteredChoices = [];\n      let lastCommittedValue = \"\";\n      let isEditing = false;\n      document.body.appendChild(dropdown);\n\n      const updateDropdownPosition = () => {\n        if (!isOpen) {\n          return;\n        }\n        const rect = control.getBoundingClientRect();\n        dropdown.style.top = `${rect.bottom + 6}px`;\n        dropdown.style.left = `${rect.left}px`;\n        dropdown.style.width = `${rect.width}px`;\n      };\n\n      const setOpen = next => {\n        if (isDisabled()) {\n          isOpen = false;\n        } else {\n          isOpen = !!next;\n        }\n        container.classList.toggle(\"is-open\", isOpen);\n        dropdown.style.display = isOpen ? \"block\" : \"none\";\n        if (isOpen) {\n          updateDropdownPosition();\n        }\n      };\n\n      const updateDisabledState = () => {\n        const disabled = isDisabled();\n        input.disabled = disabled;\n        control.classList.toggle(\"is-disabled\", disabled);\n      };\n\n      const updateHiddenState = () => {\n        container.style.display = isHidden() ? \"none\" : \"\";\n      };\n\n      const syncInputWithValue = () => {\n        const value = model.get(\"value\") || \"\";\n        lastCommittedValue = value;\n        if (!isEditing) {\n          input.value = value;\n        }\n      };\n\n      const filterChoices = query => {\n        const normalizedQuery = normalize(query);\n        const allChoices = getChoices();\n        if (!normalizedQuery) {\n          return allChoices;\n        }\n        return allChoices.filter(choice =>\n          normalize(choice).includes(normalizedQuery)\n        );\n      };\n\n      const renderList = () => {\n        list.innerHTML = \"\";\n        filteredChoices.forEach(choice => {\n          const option = document.createElement(\"button\");\n          option.type = \"button\";\n          option.classList.add(\"mljar-select-option\");\n          if (choice === model.get(\"value\")) {\n            option.classList.add(\"is-selected\");\n          }\n          option.textContent = choice;\n          option.addEventListener(\"mousedown\", event => {\n            event.preventDefault();\n            event.stopPropagation();\n            model.set(\"value\", choice);\n            model.save_changes();\n            isEditing = false;\n            syncInputWithValue();\n            renderList();\n            setOpen(false);\n          });\n          list.appendChild(option);\n        });\n\n        const hasMatches = filteredChoices.length > 0;\n        list.style.display = hasMatches ? \"block\" : \"none\";\n        emptyState.style.display = hasMatches ? \"none\" : \"block\";\n      };\n\n      const refreshList = () => {\n        filteredChoices = filterChoices(input.value);\n        renderList();\n      };\n\n      const openWithCurrentQuery = () => {\n        isEditing = true;\n        input.value = \"\";\n        refreshList();\n        setOpen(true);\n      };\n\n      const closeDropdown = () => {\n        isEditing = false;\n        setOpen(false);\n        input.value = lastCommittedValue;\n      };\n\n      control.addEventListener(\"click\", event => {\n        event.stopPropagation();\n        if (isDisabled()) {\n          return;\n        }\n        if (event.target === caret && isOpen) {\n          closeDropdown();\n          input.blur();\n          return;\n        }\n        openWithCurrentQuery();\n        input.focus();\n      });\n\n      input.addEventListener(\"input\", () => {\n        if (isDisabled()) {\n          return;\n        }\n        refreshList();\n        setOpen(true);\n      });\n\n      input.addEventListener(\"focus\", () => {\n        if (isDisabled()) {\n          return;\n        }\n        openWithCurrentQuery();\n      });\n\n      input.addEventListener(\"blur\", () => {\n        isEditing = false;\n        input.value = lastCommittedValue;\n      });\n\n      const handleDocumentClick = event => {\n        if (!container.contains(event.target) && !dropdown.contains(event.target)) {\n          closeDropdown();\n        }\n      };\n\n      document.addEventListener(\"click\", handleDocumentClick);\n      window.addEventListener(\"resize\", updateDropdownPosition);\n      document.addEventListener(\"scroll\", updateDropdownPosition, true);\n\n      model.on(\"change:value\", () => {\n        syncInputWithValue();\n        refreshList();\n      });\n\n      model.on(\"change:choices\", () => {\n        const choices = getChoices();\n        if (!choices.includes(model.get(\"value\")) && choices.length > 0) {\n          model.set(\"value\", choices[0]);\n          model.save_changes();\n          return;\n        }\n        syncInputWithValue();\n        refreshList();\n      });\n\n      model.on(\"change:disabled\", () => {\n        updateDisabledState();\n        if (isDisabled()) {\n          closeDropdown();\n        }\n      });\n\n      model.on(\"change:hidden\", () => {\n        updateHiddenState();\n      });\n\n      updateDisabledState();\n      updateHiddenState();\n      syncInputWithValue();\n      refreshList();\n      setOpen(false);\n\n      return () => {\n        dropdown.remove();\n        document.removeEventListener(\"click\", handleDocumentClick);\n        window.removeEventListener(\"resize\", updateDropdownPosition);\n        document.removeEventListener(\"scroll\", updateDropdownPosition, true);\n      };\n    }\n    export default { render };\n    ",
       "_model_module": "anywidget",
       "_model_module_version": "~0.11.*",
       "_model_name": "AnyModel",
       "_view_count": null,
       "_view_module": "anywidget",
       "_view_module_version": "~0.11.*",
       "_view_name": "AnyView",
       "cell_id": "",
       "choices": [
        "Not started",
        "In progress",
        "Complete",
        "Skipped"
       ],
       "disabled": false,
       "hidden": false,
       "label": "Workforce Engagement — status",
       "layout": "IPY_MODEL_cb3fcd9d52cd43f6a1ed9b2e2e4fd065",
       "layout_path": null,
       "position": "sidebar",
       "render_slot_id": null,
       "source_cell_id": null,
       "tabbable": null,
       "tooltip": null,
       "url_key": "",
       "value": "Not started"
      }
     },
     "50deb959f8ae48f88ce5e485a4131fbe": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "53587648b3aa431682d06e4dbe401f8d": {
      "model_module": "anywidget",
      "model_module_version": "~0.11.*",
      "model_name": "AnyModel",
      "state": {
       "_anywidget_id": "mercury.checkbox.CheckboxWidget",
       "_css": "\n    .mljar-checkbox-container {\n        display: inline-flex;\n        align-items: center;\n        gap: 10px;\n        cursor: pointer;\n        user-select: none;\n        -webkit-tap-highlight-color: transparent;\n        font-family: ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;\n        color: #0f172a;\n        padding-left: 5px;\n    }\n    .mljar-checkbox-container.is-disabled {\n        opacity: 0.6;\n        cursor: not-allowed;\n    }\n\n    .mljar-checkbox-input {\n        position: absolute;\n        opacity: 0;\n        width: 0;\n        height: 0;\n    }\n\n    .mljar-checkbox-input:focus-visible + .mljar-checkbox-control {\n        box-shadow: inset 0 0 0 2px #007bff;\n    }\n\n    .mljar-checkbox-label {\n        font-size: 14px;\n        line-height: 1.2;\n        padding-top: 2px;\n    }\n\n    /* --- Toggle style (15% smaller) --- */\n    .mljar-checkbox-container.is-toggle .mljar-checkbox-control {\n        position: relative;\n        width: 34px;\n        height: 19px;\n        border-radius: 999px;\n        background: #f1f1f2;\n        border: 1px solid #cfd1d5;\n        transition: background 150ms ease, border-color 150ms ease;\n    }\n    .mljar-checkbox-container.is-toggle.is-checked .mljar-checkbox-control {\n        background: #007bff;\n        border-color: #007bff;\n    }\n    .mljar-checkbox-container.is-toggle .mljar-checkbox-control::after {\n        content: \"\";\n        position: absolute;\n        top: 2px;\n        left: 2px;\n        width: 15px;\n        height: 15px;\n        border-radius: 50%;\n        background: #ffffff;\n        box-shadow: 0 1px 2px rgba(0,0,0,0.12), 0 0 0 1px rgba(0,0,0,0.04);\n        transition: transform 150ms ease;\n    }\n    .mljar-checkbox-container.is-toggle.is-checked .mljar-checkbox-control::after {\n        transform: translateX(15px);\n    }\n\n    /* --- Classic box style --- */\n    .mljar-checkbox-container.is-box .mljar-checkbox-control {\n        width: 16px;\n        height: 16px;\n        border-radius: 4px;\n        border: 1px solid #cfd1d5;\n        background: #ffffff;\n        display: inline-block;\n        position: relative;\n    }\n    .mljar-checkbox-container.is-box.is-checked .mljar-checkbox-control {\n        border-color: #007bff;\n        background: #007bff;\n    }\n    .mljar-checkbox-container.is-box.is-checked .mljar-checkbox-control::after {\n        content: \"\";\n        position: absolute;\n        left: 4px;\n        top: 0px;\n        width: 5px;\n        height: 10px;\n        border: solid #fff;\n        border-width: 0 2px 2px 0;\n        transform: rotate(45deg);\n    }\n\n    .mljar-checkbox-container:not(.is-disabled):hover .mljar-checkbox-control {\n        border-color: #007bff;\n        background: #f3f3f4;\n    }\n    ",
       "_dom_classes": [],
       "_esm": "\n    function render({ model, el }) {\n      const container = document.createElement(\"label\");\n      container.classList.add(\"mljar-checkbox-container\");\n\n      const input = document.createElement(\"input\");\n      input.type = \"checkbox\";\n      input.classList.add(\"mljar-checkbox-input\");\n\n      const control = document.createElement(\"span\");\n      control.classList.add(\"mljar-checkbox-control\");\n\n      const text = document.createElement(\"span\");\n      text.classList.add(\"mljar-checkbox-label\");\n\n      container.appendChild(input);\n      container.appendChild(control);\n      container.appendChild(text);\n      el.appendChild(container);\n\n      function syncFromModel() {\n        // appearance\n        const a = model.get(\"appearance\") || \"toggle\";\n        container.classList.remove(\"is-toggle\",\"is-box\");\n        container.classList.add(`is-${a}`);\n        input.setAttribute(\"role\", a === \"toggle\" ? \"switch\" : \"checkbox\");\n\n        // value\n        const v = !!model.get(\"value\");\n        if (input.checked !== v) {\n          input.checked = v;\n          input.setAttribute(\"aria-checked\", String(v));\n        }\n        container.classList.toggle(\"is-checked\", v);\n\n        // disabled\n        const d = !!model.get(\"disabled\");\n        input.disabled = d;\n        container.classList.toggle(\"is-disabled\", d);\n\n        // label\n        text.textContent = model.get(\"label\") || \"\";\n\n        // hidden (exists but not visible)\n        container.style.display = model.get(\"hidden\") ? \"none\" : \"inline-flex\";\n      }\n\n      input.addEventListener(\"change\", () => {\n        if (model.get(\"disabled\")) return;\n\n        const v = input.checked;\n        if (model.get(\"value\") !== v) {\n          model.set(\"value\", v);\n          model.set(\"last_changed_at\", new Date().toISOString());\n          model.set(\"n_toggles\", (model.get(\"n_toggles\") || 0) + 1);\n          model.save_changes();\n          // model.send({ type: \"changed\", value: v });\n        }\n      });\n\n      model.on(\"change:value\", syncFromModel);\n      model.on(\"change:disabled\", syncFromModel);\n      model.on(\"change:appearance\", syncFromModel);\n      model.on(\"change:label\", syncFromModel);\n      model.on(\"change:hidden\", syncFromModel);\n\n      syncFromModel();\n\n      // ---- read cell id (no DOM modifications) ----\n      /*\n      const ID_ATTR = \"data-cell-id\";\n      const hostWithId = el.closest(`[${ID_ATTR}]`);\n      const cellId = hostWithId ? hostWithId.getAttribute(ID_ATTR) : null;\n\n      if (cellId) {\n        model.set(\"cell_id\", cellId);\n        model.save_changes();\n        model.send({ type: \"cell_id_detected\", value: cellId });\n      } else {\n        const mo = new MutationObserver(() => {\n          const host = el.closest(`[${ID_ATTR}]`);\n          const newId = host?.getAttribute(ID_ATTR);\n          \n          if (newId) {\n            model.set(\"cell_id\", newId);\n            model.save_changes();\n            model.send({ type: \"cell_id_detected\", value: newId });\n            mo.disconnect();\n          }\n        });\n        mo.observe(document.body, { attributes: true, subtree: true, attributeFilter: [ID_ATTR] });\n      }\n      */\n    }\n    export default { render };\n    ",
       "_model_module": "anywidget",
       "_model_module_version": "~0.11.*",
       "_model_name": "AnyModel",
       "_view_count": null,
       "_view_module": "anywidget",
       "_view_module_version": "~0.11.*",
       "_view_name": "AnyView",
       "appearance": "box",
       "cell_id": "",
       "disabled": false,
       "hidden": false,
       "label": "Workforce Engagement: Workforce management",
       "last_changed_at": "",
       "layout": "IPY_MODEL_96a376557a5449c884051ab62d2a28f0",
       "layout_path": null,
       "n_toggles": 0,
       "position": "sidebar",
       "render_slot_id": null,
       "source_cell_id": null,
       "tabbable": null,
       "tooltip": null,
       "url_key": "",
       "value": false
      }
     },
     "579c991732914cb6b24d468ba77d1d5b": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "5d4d52998a594074bd935b1a8105eed9": {
      "model_module": "anywidget",
      "model_module_version": "~0.11.*",
      "model_name": "AnyModel",
      "state": {
       "_anywidget_id": "mercury.checkbox.CheckboxWidget",
       "_css": "\n    .mljar-checkbox-container {\n        display: inline-flex;\n        align-items: center;\n        gap: 10px;\n        cursor: pointer;\n        user-select: none;\n        -webkit-tap-highlight-color: transparent;\n        font-family: ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;\n        color: #0f172a;\n        padding-left: 5px;\n    }\n    .mljar-checkbox-container.is-disabled {\n        opacity: 0.6;\n        cursor: not-allowed;\n    }\n\n    .mljar-checkbox-input {\n        position: absolute;\n        opacity: 0;\n        width: 0;\n        height: 0;\n    }\n\n    .mljar-checkbox-input:focus-visible + .mljar-checkbox-control {\n        box-shadow: inset 0 0 0 2px #007bff;\n    }\n\n    .mljar-checkbox-label {\n        font-size: 14px;\n        line-height: 1.2;\n        padding-top: 2px;\n    }\n\n    /* --- Toggle style (15% smaller) --- */\n    .mljar-checkbox-container.is-toggle .mljar-checkbox-control {\n        position: relative;\n        width: 34px;\n        height: 19px;\n        border-radius: 999px;\n        background: #f1f1f2;\n        border: 1px solid #cfd1d5;\n        transition: background 150ms ease, border-color 150ms ease;\n    }\n    .mljar-checkbox-container.is-toggle.is-checked .mljar-checkbox-control {\n        background: #007bff;\n        border-color: #007bff;\n    }\n    .mljar-checkbox-container.is-toggle .mljar-checkbox-control::after {\n        content: \"\";\n        position: absolute;\n        top: 2px;\n        left: 2px;\n        width: 15px;\n        height: 15px;\n        border-radius: 50%;\n        background: #ffffff;\n        box-shadow: 0 1px 2px rgba(0,0,0,0.12), 0 0 0 1px rgba(0,0,0,0.04);\n        transition: transform 150ms ease;\n    }\n    .mljar-checkbox-container.is-toggle.is-checked .mljar-checkbox-control::after {\n        transform: translateX(15px);\n    }\n\n    /* --- Classic box style --- */\n    .mljar-checkbox-container.is-box .mljar-checkbox-control {\n        width: 16px;\n        height: 16px;\n        border-radius: 4px;\n        border: 1px solid #cfd1d5;\n        background: #ffffff;\n        display: inline-block;\n        position: relative;\n    }\n    .mljar-checkbox-container.is-box.is-checked .mljar-checkbox-control {\n        border-color: #007bff;\n        background: #007bff;\n    }\n    .mljar-checkbox-container.is-box.is-checked .mljar-checkbox-control::after {\n        content: \"\";\n        position: absolute;\n        left: 4px;\n        top: 0px;\n        width: 5px;\n        height: 10px;\n        border: solid #fff;\n        border-width: 0 2px 2px 0;\n        transform: rotate(45deg);\n    }\n\n    .mljar-checkbox-container:not(.is-disabled):hover .mljar-checkbox-control {\n        border-color: #007bff;\n        background: #f3f3f4;\n    }\n    ",
       "_dom_classes": [],
       "_esm": "\n    function render({ model, el }) {\n      const container = document.createElement(\"label\");\n      container.classList.add(\"mljar-checkbox-container\");\n\n      const input = document.createElement(\"input\");\n      input.type = \"checkbox\";\n      input.classList.add(\"mljar-checkbox-input\");\n\n      const control = document.createElement(\"span\");\n      control.classList.add(\"mljar-checkbox-control\");\n\n      const text = document.createElement(\"span\");\n      text.classList.add(\"mljar-checkbox-label\");\n\n      container.appendChild(input);\n      container.appendChild(control);\n      container.appendChild(text);\n      el.appendChild(container);\n\n      function syncFromModel() {\n        // appearance\n        const a = model.get(\"appearance\") || \"toggle\";\n        container.classList.remove(\"is-toggle\",\"is-box\");\n        container.classList.add(`is-${a}`);\n        input.setAttribute(\"role\", a === \"toggle\" ? \"switch\" : \"checkbox\");\n\n        // value\n        const v = !!model.get(\"value\");\n        if (input.checked !== v) {\n          input.checked = v;\n          input.setAttribute(\"aria-checked\", String(v));\n        }\n        container.classList.toggle(\"is-checked\", v);\n\n        // disabled\n        const d = !!model.get(\"disabled\");\n        input.disabled = d;\n        container.classList.toggle(\"is-disabled\", d);\n\n        // label\n        text.textContent = model.get(\"label\") || \"\";\n\n        // hidden (exists but not visible)\n        container.style.display = model.get(\"hidden\") ? \"none\" : \"inline-flex\";\n      }\n\n      input.addEventListener(\"change\", () => {\n        if (model.get(\"disabled\")) return;\n\n        const v = input.checked;\n        if (model.get(\"value\") !== v) {\n          model.set(\"value\", v);\n          model.set(\"last_changed_at\", new Date().toISOString());\n          model.set(\"n_toggles\", (model.get(\"n_toggles\") || 0) + 1);\n          model.save_changes();\n          // model.send({ type: \"changed\", value: v });\n        }\n      });\n\n      model.on(\"change:value\", syncFromModel);\n      model.on(\"change:disabled\", syncFromModel);\n      model.on(\"change:appearance\", syncFromModel);\n      model.on(\"change:label\", syncFromModel);\n      model.on(\"change:hidden\", syncFromModel);\n\n      syncFromModel();\n\n      // ---- read cell id (no DOM modifications) ----\n      /*\n      const ID_ATTR = \"data-cell-id\";\n      const hostWithId = el.closest(`[${ID_ATTR}]`);\n      const cellId = hostWithId ? hostWithId.getAttribute(ID_ATTR) : null;\n\n      if (cellId) {\n        model.set(\"cell_id\", cellId);\n        model.save_changes();\n        model.send({ type: \"cell_id_detected\", value: cellId });\n      } else {\n        const mo = new MutationObserver(() => {\n          const host = el.closest(`[${ID_ATTR}]`);\n          const newId = host?.getAttribute(ID_ATTR);\n          \n          if (newId) {\n            model.set(\"cell_id\", newId);\n            model.save_changes();\n            model.send({ type: \"cell_id_detected\", value: newId });\n            mo.disconnect();\n          }\n        });\n        mo.observe(document.body, { attributes: true, subtree: true, attributeFilter: [ID_ATTR] });\n      }\n      */\n    }\n    export default { render };\n    ",
       "_model_module": "anywidget",
       "_model_module_version": "~0.11.*",
       "_model_name": "AnyModel",
       "_view_count": null,
       "_view_module": "anywidget",
       "_view_module_version": "~0.11.*",
       "_view_name": "AnyView",
       "appearance": "box",
       "cell_id": "",
       "disabled": false,
       "hidden": false,
       "label": "Reporting & Insights: Reporting",
       "last_changed_at": "",
       "layout": "IPY_MODEL_7f52f7fd05a14a50a281b9c5ec5b5fd2",
       "layout_path": null,
       "n_toggles": 0,
       "position": "sidebar",
       "render_slot_id": null,
       "source_cell_id": null,
       "tabbable": null,
       "tooltip": null,
       "url_key": "",
       "value": false
      }
     },
     "6304c720969d412f97d54a7a2b1d2360": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "63ff21a9bdb649cc9d2e4b7d58baffec": {
      "model_module": "anywidget",
      "model_module_version": "~0.11.*",
      "model_name": "AnyModel",
      "state": {
       "_anywidget_id": "mercury.checkbox.CheckboxWidget",
       "_css": "\n    .mljar-checkbox-container {\n        display: inline-flex;\n        align-items: center;\n        gap: 10px;\n        cursor: pointer;\n        user-select: none;\n        -webkit-tap-highlight-color: transparent;\n        font-family: ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;\n        color: #0f172a;\n        padding-left: 5px;\n    }\n    .mljar-checkbox-container.is-disabled {\n        opacity: 0.6;\n        cursor: not-allowed;\n    }\n\n    .mljar-checkbox-input {\n        position: absolute;\n        opacity: 0;\n        width: 0;\n        height: 0;\n    }\n\n    .mljar-checkbox-input:focus-visible + .mljar-checkbox-control {\n        box-shadow: inset 0 0 0 2px #007bff;\n    }\n\n    .mljar-checkbox-label {\n        font-size: 14px;\n        line-height: 1.2;\n        padding-top: 2px;\n    }\n\n    /* --- Toggle style (15% smaller) --- */\n    .mljar-checkbox-container.is-toggle .mljar-checkbox-control {\n        position: relative;\n        width: 34px;\n        height: 19px;\n        border-radius: 999px;\n        background: #f1f1f2;\n        border: 1px solid #cfd1d5;\n        transition: background 150ms ease, border-color 150ms ease;\n    }\n    .mljar-checkbox-container.is-toggle.is-checked .mljar-checkbox-control {\n        background: #007bff;\n        border-color: #007bff;\n    }\n    .mljar-checkbox-container.is-toggle .mljar-checkbox-control::after {\n        content: \"\";\n        position: absolute;\n        top: 2px;\n        left: 2px;\n        width: 15px;\n        height: 15px;\n        border-radius: 50%;\n        background: #ffffff;\n        box-shadow: 0 1px 2px rgba(0,0,0,0.12), 0 0 0 1px rgba(0,0,0,0.04);\n        transition: transform 150ms ease;\n    }\n    .mljar-checkbox-container.is-toggle.is-checked .mljar-checkbox-control::after {\n        transform: translateX(15px);\n    }\n\n    /* --- Classic box style --- */\n    .mljar-checkbox-container.is-box .mljar-checkbox-control {\n        width: 16px;\n        height: 16px;\n        border-radius: 4px;\n        border: 1px solid #cfd1d5;\n        background: #ffffff;\n        display: inline-block;\n        position: relative;\n    }\n    .mljar-checkbox-container.is-box.is-checked .mljar-checkbox-control {\n        border-color: #007bff;\n        background: #007bff;\n    }\n    .mljar-checkbox-container.is-box.is-checked .mljar-checkbox-control::after {\n        content: \"\";\n        position: absolute;\n        left: 4px;\n        top: 0px;\n        width: 5px;\n        height: 10px;\n        border: solid #fff;\n        border-width: 0 2px 2px 0;\n        transform: rotate(45deg);\n    }\n\n    .mljar-checkbox-container:not(.is-disabled):hover .mljar-checkbox-control {\n        border-color: #007bff;\n        background: #f3f3f4;\n    }\n    ",
       "_dom_classes": [],
       "_esm": "\n    function render({ model, el }) {\n      const container = document.createElement(\"label\");\n      container.classList.add(\"mljar-checkbox-container\");\n\n      const input = document.createElement(\"input\");\n      input.type = \"checkbox\";\n      input.classList.add(\"mljar-checkbox-input\");\n\n      const control = document.createElement(\"span\");\n      control.classList.add(\"mljar-checkbox-control\");\n\n      const text = document.createElement(\"span\");\n      text.classList.add(\"mljar-checkbox-label\");\n\n      container.appendChild(input);\n      container.appendChild(control);\n      container.appendChild(text);\n      el.appendChild(container);\n\n      function syncFromModel() {\n        // appearance\n        const a = model.get(\"appearance\") || \"toggle\";\n        container.classList.remove(\"is-toggle\",\"is-box\");\n        container.classList.add(`is-${a}`);\n        input.setAttribute(\"role\", a === \"toggle\" ? \"switch\" : \"checkbox\");\n\n        // value\n        const v = !!model.get(\"value\");\n        if (input.checked !== v) {\n          input.checked = v;\n          input.setAttribute(\"aria-checked\", String(v));\n        }\n        container.classList.toggle(\"is-checked\", v);\n\n        // disabled\n        const d = !!model.get(\"disabled\");\n        input.disabled = d;\n        container.classList.toggle(\"is-disabled\", d);\n\n        // label\n        text.textContent = model.get(\"label\") || \"\";\n\n        // hidden (exists but not visible)\n        container.style.display = model.get(\"hidden\") ? \"none\" : \"inline-flex\";\n      }\n\n      input.addEventListener(\"change\", () => {\n        if (model.get(\"disabled\")) return;\n\n        const v = input.checked;\n        if (model.get(\"value\") !== v) {\n          model.set(\"value\", v);\n          model.set(\"last_changed_at\", new Date().toISOString());\n          model.set(\"n_toggles\", (model.get(\"n_toggles\") || 0) + 1);\n          model.save_changes();\n          // model.send({ type: \"changed\", value: v });\n        }\n      });\n\n      model.on(\"change:value\", syncFromModel);\n      model.on(\"change:disabled\", syncFromModel);\n      model.on(\"change:appearance\", syncFromModel);\n      model.on(\"change:label\", syncFromModel);\n      model.on(\"change:hidden\", syncFromModel);\n\n      syncFromModel();\n\n      // ---- read cell id (no DOM modifications) ----\n      /*\n      const ID_ATTR = \"data-cell-id\";\n      const hostWithId = el.closest(`[${ID_ATTR}]`);\n      const cellId = hostWithId ? hostWithId.getAttribute(ID_ATTR) : null;\n\n      if (cellId) {\n        model.set(\"cell_id\", cellId);\n        model.save_changes();\n        model.send({ type: \"cell_id_detected\", value: cellId });\n      } else {\n        const mo = new MutationObserver(() => {\n          const host = el.closest(`[${ID_ATTR}]`);\n          const newId = host?.getAttribute(ID_ATTR);\n          \n          if (newId) {\n            model.set(\"cell_id\", newId);\n            model.save_changes();\n            model.send({ type: \"cell_id_detected\", value: newId });\n            mo.disconnect();\n          }\n        });\n        mo.observe(document.body, { attributes: true, subtree: true, attributeFilter: [ID_ATTR] });\n      }\n      */\n    }\n    export default { render };\n    ",
       "_model_module": "anywidget",
       "_model_module_version": "~0.11.*",
       "_model_name": "AnyModel",
       "_view_count": null,
       "_view_module": "anywidget",
       "_view_module_version": "~0.11.*",
       "_view_name": "AnyView",
       "appearance": "box",
       "cell_id": "",
       "disabled": false,
       "hidden": false,
       "label": "Agent & Supervisor Environment: Locations & endpoints",
       "last_changed_at": "",
       "layout": "IPY_MODEL_a6f992632c2d4739916ddf5c15b7a0f0",
       "layout_path": null,
       "n_toggles": 0,
       "position": "sidebar",
       "render_slot_id": null,
       "source_cell_id": null,
       "tabbable": null,
       "tooltip": null,
       "url_key": "",
       "value": false
      }
     },
     "6a3c639539274c93913e11eaba5528b6": {
      "model_module": "anywidget",
      "model_module_version": "~0.11.*",
      "model_name": "AnyModel",
      "state": {
       "_anywidget_id": "mercury.text.TextInputWidget",
       "_css": "\n    .mljar-textinput-container {\n      display: flex;\n      flex-direction: column;\n      align-items: flex-start;\n      width: 100%;\n      min-width: 120px;\n      font-family: ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;\n      font-size: 14px;\n      font-weight: normal;\n      color: #0f172a;\n      padding-left: 4px;\n      padding-right: 4px;\n      box-sizing: border-box;\n    }\n\n    .mljar-textinput-top-label {\n      padding-top: 6px;\n      margin-bottom: 6px;\n      text-align: left;\n      width: 100%;\n      font-weight: 600;\n    }\n\n    .mljar-textinput-input {\n      width: 100%;\n      min-height: 40px;\n      padding: 9px 10px;\n      box-sizing: border-box;\n      border: 1px solid #cfd1d5;\n      border-radius: 6px;\n      background: #ffffff;\n      color: #0f172a;\n      line-height: 1.4;\n\n      appearance: none !important;\n      background-color: #ffffff !important;\n    }\n\n    .mljar-textinput-input:focus {\n      outline: none;\n      border-color: #007bff;\n      box-shadow: none;\n    }\n\n    .mljar-textinput-input:disabled {\n      background: #f5f5f5;\n      color: #888;\n      cursor: not-allowed;\n    }\n\n    @media (max-width: 768px) {\n      .mljar-textinput-input {\n        min-height: 44px;\n        padding: 10px 12px;\n      }\n    }\n    ",
       "_dom_classes": [],
       "_esm": "\n    function render({ model, el }) {\n      const container = document.createElement(\"div\");\n      container.classList.add(\"mljar-textinput-container\");\n\n      const topLabel = document.createElement(\"div\");\n      topLabel.classList.add(\"mljar-textinput-top-label\");\n\n      const input = document.createElement(\"input\");\n      input.type = \"text\";\n      input.classList.add(\"mljar-textinput-input\");\n\n      container.appendChild(topLabel);\n      container.appendChild(input);\n      el.appendChild(container);\n\n      let debounceTimer = null;\n\n      input.addEventListener(\"input\", () => {\n        if (model.get(\"disabled\")) return;\n        model.set(\"value\", input.value);\n        if (debounceTimer) clearTimeout(debounceTimer);\n        debounceTimer = setTimeout(() => model.save_changes(), 200);\n      });\n\n      function syncFromModel() {\n        topLabel.innerHTML = model.get(\"label\") || \"Enter text\";\n        input.value = model.get(\"value\") ?? \"\";\n\n        const disabled = !!model.get(\"disabled\");\n        input.disabled = disabled;\n\n        const hidden = !!model.get(\"hidden\");\n        container.style.display = hidden ? \"none\" : \"flex\";\n      }\n\n      model.on(\"change:value\", syncFromModel);\n      model.on(\"change:label\", syncFromModel);\n      model.on(\"change:disabled\", syncFromModel);\n      model.on(\"change:hidden\", syncFromModel);\n\n      syncFromModel();\n\n      /*\n      // ---- read cell id (no DOM modifications) ----\n      const ID_ATTR = \"data-cell-id\";\n      const hostWithId = el.closest(`[${ID_ATTR}]`);\n      const cellId = hostWithId ? hostWithId.getAttribute(ID_ATTR) : null;\n\n      if (cellId) {\n        model.set(\"cell_id\", cellId);\n        model.save_changes();\n        model.send({ type: \"cell_id_detected\", value: cellId });\n      } else {\n        const mo = new MutationObserver(() => {\n          const host = el.closest(`[${ID_ATTR}]`);\n          const newId = host?.getAttribute(ID_ATTR);\n          if (newId) {\n            model.set(\"cell_id\", newId);\n            model.save_changes();\n            model.send({ type: \"cell_id_detected\", value: newId });\n            mo.disconnect();\n          }\n        });\n        mo.observe(document.body, { attributes: true, subtree: true, attributeFilter: [ID_ATTR] });\n      }\n      */\n    }\n    export default { render };\n    ",
       "_model_module": "anywidget",
       "_model_module_version": "~0.11.*",
       "_model_name": "AnyModel",
       "_view_count": null,
       "_view_module": "anywidget",
       "_view_module_version": "~0.11.*",
       "_view_name": "AnyView",
       "cell_id": "",
       "disabled": false,
       "hidden": false,
       "label": "Training — notes",
       "layout": "IPY_MODEL_e98c64895e4b40439efca1c8e576a35d",
       "layout_path": null,
       "position": "sidebar",
       "render_slot_id": null,
       "source_cell_id": null,
       "tabbable": null,
       "tooltip": null,
       "url_key": "",
       "value": ""
      }
     },
     "6a7a2a1d35e74fecbed1a2fb4d1f61e4": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "6eb6e4b2535949e6bdc2ef86f27fa7d5": {
      "model_module": "anywidget",
      "model_module_version": "~0.11.*",
      "model_name": "AnyModel",
      "state": {
       "_anywidget_id": "mercury.checkbox.CheckboxWidget",
       "_css": "\n    .mljar-checkbox-container {\n        display: inline-flex;\n        align-items: center;\n        gap: 10px;\n        cursor: pointer;\n        user-select: none;\n        -webkit-tap-highlight-color: transparent;\n        font-family: ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;\n        color: #0f172a;\n        padding-left: 5px;\n    }\n    .mljar-checkbox-container.is-disabled {\n        opacity: 0.6;\n        cursor: not-allowed;\n    }\n\n    .mljar-checkbox-input {\n        position: absolute;\n        opacity: 0;\n        width: 0;\n        height: 0;\n    }\n\n    .mljar-checkbox-input:focus-visible + .mljar-checkbox-control {\n        box-shadow: inset 0 0 0 2px #007bff;\n    }\n\n    .mljar-checkbox-label {\n        font-size: 14px;\n        line-height: 1.2;\n        padding-top: 2px;\n    }\n\n    /* --- Toggle style (15% smaller) --- */\n    .mljar-checkbox-container.is-toggle .mljar-checkbox-control {\n        position: relative;\n        width: 34px;\n        height: 19px;\n        border-radius: 999px;\n        background: #f1f1f2;\n        border: 1px solid #cfd1d5;\n        transition: background 150ms ease, border-color 150ms ease;\n    }\n    .mljar-checkbox-container.is-toggle.is-checked .mljar-checkbox-control {\n        background: #007bff;\n        border-color: #007bff;\n    }\n    .mljar-checkbox-container.is-toggle .mljar-checkbox-control::after {\n        content: \"\";\n        position: absolute;\n        top: 2px;\n        left: 2px;\n        width: 15px;\n        height: 15px;\n        border-radius: 50%;\n        background: #ffffff;\n        box-shadow: 0 1px 2px rgba(0,0,0,0.12), 0 0 0 1px rgba(0,0,0,0.04);\n        transition: transform 150ms ease;\n    }\n    .mljar-checkbox-container.is-toggle.is-checked .mljar-checkbox-control::after {\n        transform: translateX(15px);\n    }\n\n    /* --- Classic box style --- */\n    .mljar-checkbox-container.is-box .mljar-checkbox-control {\n        width: 16px;\n        height: 16px;\n        border-radius: 4px;\n        border: 1px solid #cfd1d5;\n        background: #ffffff;\n        display: inline-block;\n        position: relative;\n    }\n    .mljar-checkbox-container.is-box.is-checked .mljar-checkbox-control {\n        border-color: #007bff;\n        background: #007bff;\n    }\n    .mljar-checkbox-container.is-box.is-checked .mljar-checkbox-control::after {\n        content: \"\";\n        position: absolute;\n        left: 4px;\n        top: 0px;\n        width: 5px;\n        height: 10px;\n        border: solid #fff;\n        border-width: 0 2px 2px 0;\n        transform: rotate(45deg);\n    }\n\n    .mljar-checkbox-container:not(.is-disabled):hover .mljar-checkbox-control {\n        border-color: #007bff;\n        background: #f3f3f4;\n    }\n    ",
       "_dom_classes": [],
       "_esm": "\n    function render({ model, el }) {\n      const container = document.createElement(\"label\");\n      container.classList.add(\"mljar-checkbox-container\");\n\n      const input = document.createElement(\"input\");\n      input.type = \"checkbox\";\n      input.classList.add(\"mljar-checkbox-input\");\n\n      const control = document.createElement(\"span\");\n      control.classList.add(\"mljar-checkbox-control\");\n\n      const text = document.createElement(\"span\");\n      text.classList.add(\"mljar-checkbox-label\");\n\n      container.appendChild(input);\n      container.appendChild(control);\n      container.appendChild(text);\n      el.appendChild(container);\n\n      function syncFromModel() {\n        // appearance\n        const a = model.get(\"appearance\") || \"toggle\";\n        container.classList.remove(\"is-toggle\",\"is-box\");\n        container.classList.add(`is-${a}`);\n        input.setAttribute(\"role\", a === \"toggle\" ? \"switch\" : \"checkbox\");\n\n        // value\n        const v = !!model.get(\"value\");\n        if (input.checked !== v) {\n          input.checked = v;\n          input.setAttribute(\"aria-checked\", String(v));\n        }\n        container.classList.toggle(\"is-checked\", v);\n\n        // disabled\n        const d = !!model.get(\"disabled\");\n        input.disabled = d;\n        container.classList.toggle(\"is-disabled\", d);\n\n        // label\n        text.textContent = model.get(\"label\") || \"\";\n\n        // hidden (exists but not visible)\n        container.style.display = model.get(\"hidden\") ? \"none\" : \"inline-flex\";\n      }\n\n      input.addEventListener(\"change\", () => {\n        if (model.get(\"disabled\")) return;\n\n        const v = input.checked;\n        if (model.get(\"value\") !== v) {\n          model.set(\"value\", v);\n          model.set(\"last_changed_at\", new Date().toISOString());\n          model.set(\"n_toggles\", (model.get(\"n_toggles\") || 0) + 1);\n          model.save_changes();\n          // model.send({ type: \"changed\", value: v });\n        }\n      });\n\n      model.on(\"change:value\", syncFromModel);\n      model.on(\"change:disabled\", syncFromModel);\n      model.on(\"change:appearance\", syncFromModel);\n      model.on(\"change:label\", syncFromModel);\n      model.on(\"change:hidden\", syncFromModel);\n\n      syncFromModel();\n\n      // ---- read cell id (no DOM modifications) ----\n      /*\n      const ID_ATTR = \"data-cell-id\";\n      const hostWithId = el.closest(`[${ID_ATTR}]`);\n      const cellId = hostWithId ? hostWithId.getAttribute(ID_ATTR) : null;\n\n      if (cellId) {\n        model.set(\"cell_id\", cellId);\n        model.save_changes();\n        model.send({ type: \"cell_id_detected\", value: cellId });\n      } else {\n        const mo = new MutationObserver(() => {\n          const host = el.closest(`[${ID_ATTR}]`);\n          const newId = host?.getAttribute(ID_ATTR);\n          \n          if (newId) {\n            model.set(\"cell_id\", newId);\n            model.save_changes();\n            model.send({ type: \"cell_id_detected\", value: newId });\n            mo.disconnect();\n          }\n        });\n        mo.observe(document.body, { attributes: true, subtree: true, attributeFilter: [ID_ATTR] });\n      }\n      */\n    }\n    export default { render };\n    ",
       "_model_module": "anywidget",
       "_model_module_version": "~0.11.*",
       "_model_name": "AnyModel",
       "_view_count": null,
       "_view_module": "anywidget",
       "_view_module_version": "~0.11.*",
       "_view_name": "AnyView",
       "appearance": "box",
       "cell_id": "",
       "disabled": false,
       "hidden": false,
       "label": "Background & Organization: Channels supported",
       "last_changed_at": "",
       "layout": "IPY_MODEL_b73bf6655a994e7fafe9144894ee140d",
       "layout_path": null,
       "n_toggles": 0,
       "position": "sidebar",
       "render_slot_id": null,
       "source_cell_id": null,
       "tabbable": null,
       "tooltip": null,
       "url_key": "",
       "value": false
      }
     },
     "70026e6c871a4a6295b2999e512e77e8": {
      "model_module": "anywidget",
      "model_module_version": "~0.11.*",
      "model_name": "AnyModel",
      "state": {
       "_anywidget_id": "mercury.checkbox.CheckboxWidget",
       "_css": "\n    .mljar-checkbox-container {\n        display: inline-flex;\n        align-items: center;\n        gap: 10px;\n        cursor: pointer;\n        user-select: none;\n        -webkit-tap-highlight-color: transparent;\n        font-family: ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;\n        color: #0f172a;\n        padding-left: 5px;\n    }\n    .mljar-checkbox-container.is-disabled {\n        opacity: 0.6;\n        cursor: not-allowed;\n    }\n\n    .mljar-checkbox-input {\n        position: absolute;\n        opacity: 0;\n        width: 0;\n        height: 0;\n    }\n\n    .mljar-checkbox-input:focus-visible + .mljar-checkbox-control {\n        box-shadow: inset 0 0 0 2px #007bff;\n    }\n\n    .mljar-checkbox-label {\n        font-size: 14px;\n        line-height: 1.2;\n        padding-top: 2px;\n    }\n\n    /* --- Toggle style (15% smaller) --- */\n    .mljar-checkbox-container.is-toggle .mljar-checkbox-control {\n        position: relative;\n        width: 34px;\n        height: 19px;\n        border-radius: 999px;\n        background: #f1f1f2;\n        border: 1px solid #cfd1d5;\n        transition: background 150ms ease, border-color 150ms ease;\n    }\n    .mljar-checkbox-container.is-toggle.is-checked .mljar-checkbox-control {\n        background: #007bff;\n        border-color: #007bff;\n    }\n    .mljar-checkbox-container.is-toggle .mljar-checkbox-control::after {\n        content: \"\";\n        position: absolute;\n        top: 2px;\n        left: 2px;\n        width: 15px;\n        height: 15px;\n        border-radius: 50%;\n        background: #ffffff;\n        box-shadow: 0 1px 2px rgba(0,0,0,0.12), 0 0 0 1px rgba(0,0,0,0.04);\n        transition: transform 150ms ease;\n    }\n    .mljar-checkbox-container.is-toggle.is-checked .mljar-checkbox-control::after {\n        transform: translateX(15px);\n    }\n\n    /* --- Classic box style --- */\n    .mljar-checkbox-container.is-box .mljar-checkbox-control {\n        width: 16px;\n        height: 16px;\n        border-radius: 4px;\n        border: 1px solid #cfd1d5;\n        background: #ffffff;\n        display: inline-block;\n        position: relative;\n    }\n    .mljar-checkbox-container.is-box.is-checked .mljar-checkbox-control {\n        border-color: #007bff;\n        background: #007bff;\n    }\n    .mljar-checkbox-container.is-box.is-checked .mljar-checkbox-control::after {\n        content: \"\";\n        position: absolute;\n        left: 4px;\n        top: 0px;\n        width: 5px;\n        height: 10px;\n        border: solid #fff;\n        border-width: 0 2px 2px 0;\n        transform: rotate(45deg);\n    }\n\n    .mljar-checkbox-container:not(.is-disabled):hover .mljar-checkbox-control {\n        border-color: #007bff;\n        background: #f3f3f4;\n    }\n    ",
       "_dom_classes": [],
       "_esm": "\n    function render({ model, el }) {\n      const container = document.createElement(\"label\");\n      container.classList.add(\"mljar-checkbox-container\");\n\n      const input = document.createElement(\"input\");\n      input.type = \"checkbox\";\n      input.classList.add(\"mljar-checkbox-input\");\n\n      const control = document.createElement(\"span\");\n      control.classList.add(\"mljar-checkbox-control\");\n\n      const text = document.createElement(\"span\");\n      text.classList.add(\"mljar-checkbox-label\");\n\n      container.appendChild(input);\n      container.appendChild(control);\n      container.appendChild(text);\n      el.appendChild(container);\n\n      function syncFromModel() {\n        // appearance\n        const a = model.get(\"appearance\") || \"toggle\";\n        container.classList.remove(\"is-toggle\",\"is-box\");\n        container.classList.add(`is-${a}`);\n        input.setAttribute(\"role\", a === \"toggle\" ? \"switch\" : \"checkbox\");\n\n        // value\n        const v = !!model.get(\"value\");\n        if (input.checked !== v) {\n          input.checked = v;\n          input.setAttribute(\"aria-checked\", String(v));\n        }\n        container.classList.toggle(\"is-checked\", v);\n\n        // disabled\n        const d = !!model.get(\"disabled\");\n        input.disabled = d;\n        container.classList.toggle(\"is-disabled\", d);\n\n        // label\n        text.textContent = model.get(\"label\") || \"\";\n\n        // hidden (exists but not visible)\n        container.style.display = model.get(\"hidden\") ? \"none\" : \"inline-flex\";\n      }\n\n      input.addEventListener(\"change\", () => {\n        if (model.get(\"disabled\")) return;\n\n        const v = input.checked;\n        if (model.get(\"value\") !== v) {\n          model.set(\"value\", v);\n          model.set(\"last_changed_at\", new Date().toISOString());\n          model.set(\"n_toggles\", (model.get(\"n_toggles\") || 0) + 1);\n          model.save_changes();\n          // model.send({ type: \"changed\", value: v });\n        }\n      });\n\n      model.on(\"change:value\", syncFromModel);\n      model.on(\"change:disabled\", syncFromModel);\n      model.on(\"change:appearance\", syncFromModel);\n      model.on(\"change:label\", syncFromModel);\n      model.on(\"change:hidden\", syncFromModel);\n\n      syncFromModel();\n\n      // ---- read cell id (no DOM modifications) ----\n      /*\n      const ID_ATTR = \"data-cell-id\";\n      const hostWithId = el.closest(`[${ID_ATTR}]`);\n      const cellId = hostWithId ? hostWithId.getAttribute(ID_ATTR) : null;\n\n      if (cellId) {\n        model.set(\"cell_id\", cellId);\n        model.save_changes();\n        model.send({ type: \"cell_id_detected\", value: cellId });\n      } else {\n        const mo = new MutationObserver(() => {\n          const host = el.closest(`[${ID_ATTR}]`);\n          const newId = host?.getAttribute(ID_ATTR);\n          \n          if (newId) {\n            model.set(\"cell_id\", newId);\n            model.save_changes();\n            model.send({ type: \"cell_id_detected\", value: newId });\n            mo.disconnect();\n          }\n        });\n        mo.observe(document.body, { attributes: true, subtree: true, attributeFilter: [ID_ATTR] });\n      }\n      */\n    }\n    export default { render };\n    ",
       "_model_module": "anywidget",
       "_model_module_version": "~0.11.*",
       "_model_name": "AnyModel",
       "_view_count": null,
       "_view_module": "anywidget",
       "_view_module_version": "~0.11.*",
       "_view_name": "AnyView",
       "appearance": "box",
       "cell_id": "",
       "disabled": false,
       "hidden": false,
       "label": "Routing & Automation: Self-service & IVR",
       "last_changed_at": "",
       "layout": "IPY_MODEL_8677632009224150b15b4611b3857650",
       "layout_path": null,
       "n_toggles": 0,
       "position": "sidebar",
       "render_slot_id": null,
       "source_cell_id": null,
       "tabbable": null,
       "tooltip": null,
       "url_key": "",
       "value": false
      }
     },
     "7302bae9ac134fe891f312ef56eaffd9": {
      "model_module": "anywidget",
      "model_module_version": "~0.11.*",
      "model_name": "AnyModel",
      "state": {
       "_anywidget_id": "mercury.checkbox.CheckboxWidget",
       "_css": "\n    .mljar-checkbox-container {\n        display: inline-flex;\n        align-items: center;\n        gap: 10px;\n        cursor: pointer;\n        user-select: none;\n        -webkit-tap-highlight-color: transparent;\n        font-family: ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;\n        color: #0f172a;\n        padding-left: 5px;\n    }\n    .mljar-checkbox-container.is-disabled {\n        opacity: 0.6;\n        cursor: not-allowed;\n    }\n\n    .mljar-checkbox-input {\n        position: absolute;\n        opacity: 0;\n        width: 0;\n        height: 0;\n    }\n\n    .mljar-checkbox-input:focus-visible + .mljar-checkbox-control {\n        box-shadow: inset 0 0 0 2px #007bff;\n    }\n\n    .mljar-checkbox-label {\n        font-size: 14px;\n        line-height: 1.2;\n        padding-top: 2px;\n    }\n\n    /* --- Toggle style (15% smaller) --- */\n    .mljar-checkbox-container.is-toggle .mljar-checkbox-control {\n        position: relative;\n        width: 34px;\n        height: 19px;\n        border-radius: 999px;\n        background: #f1f1f2;\n        border: 1px solid #cfd1d5;\n        transition: background 150ms ease, border-color 150ms ease;\n    }\n    .mljar-checkbox-container.is-toggle.is-checked .mljar-checkbox-control {\n        background: #007bff;\n        border-color: #007bff;\n    }\n    .mljar-checkbox-container.is-toggle .mljar-checkbox-control::after {\n        content: \"\";\n        position: absolute;\n        top: 2px;\n        left: 2px;\n        width: 15px;\n        height: 15px;\n        border-radius: 50%;\n        background: #ffffff;\n        box-shadow: 0 1px 2px rgba(0,0,0,0.12), 0 0 0 1px rgba(0,0,0,0.04);\n        transition: transform 150ms ease;\n    }\n    .mljar-checkbox-container.is-toggle.is-checked .mljar-checkbox-control::after {\n        transform: translateX(15px);\n    }\n\n    /* --- Classic box style --- */\n    .mljar-checkbox-container.is-box .mljar-checkbox-control {\n        width: 16px;\n        height: 16px;\n        border-radius: 4px;\n        border: 1px solid #cfd1d5;\n        background: #ffffff;\n        display: inline-block;\n        position: relative;\n    }\n    .mljar-checkbox-container.is-box.is-checked .mljar-checkbox-control {\n        border-color: #007bff;\n        background: #007bff;\n    }\n    .mljar-checkbox-container.is-box.is-checked .mljar-checkbox-control::after {\n        content: \"\";\n        position: absolute;\n        left: 4px;\n        top: 0px;\n        width: 5px;\n        height: 10px;\n        border: solid #fff;\n        border-width: 0 2px 2px 0;\n        transform: rotate(45deg);\n    }\n\n    .mljar-checkbox-container:not(.is-disabled):hover .mljar-checkbox-control {\n        border-color: #007bff;\n        background: #f3f3f4;\n    }\n    ",
       "_dom_classes": [],
       "_esm": "\n    function render({ model, el }) {\n      const container = document.createElement(\"label\");\n      container.classList.add(\"mljar-checkbox-container\");\n\n      const input = document.createElement(\"input\");\n      input.type = \"checkbox\";\n      input.classList.add(\"mljar-checkbox-input\");\n\n      const control = document.createElement(\"span\");\n      control.classList.add(\"mljar-checkbox-control\");\n\n      const text = document.createElement(\"span\");\n      text.classList.add(\"mljar-checkbox-label\");\n\n      container.appendChild(input);\n      container.appendChild(control);\n      container.appendChild(text);\n      el.appendChild(container);\n\n      function syncFromModel() {\n        // appearance\n        const a = model.get(\"appearance\") || \"toggle\";\n        container.classList.remove(\"is-toggle\",\"is-box\");\n        container.classList.add(`is-${a}`);\n        input.setAttribute(\"role\", a === \"toggle\" ? \"switch\" : \"checkbox\");\n\n        // value\n        const v = !!model.get(\"value\");\n        if (input.checked !== v) {\n          input.checked = v;\n          input.setAttribute(\"aria-checked\", String(v));\n        }\n        container.classList.toggle(\"is-checked\", v);\n\n        // disabled\n        const d = !!model.get(\"disabled\");\n        input.disabled = d;\n        container.classList.toggle(\"is-disabled\", d);\n\n        // label\n        text.textContent = model.get(\"label\") || \"\";\n\n        // hidden (exists but not visible)\n        container.style.display = model.get(\"hidden\") ? \"none\" : \"inline-flex\";\n      }\n\n      input.addEventListener(\"change\", () => {\n        if (model.get(\"disabled\")) return;\n\n        const v = input.checked;\n        if (model.get(\"value\") !== v) {\n          model.set(\"value\", v);\n          model.set(\"last_changed_at\", new Date().toISOString());\n          model.set(\"n_toggles\", (model.get(\"n_toggles\") || 0) + 1);\n          model.save_changes();\n          // model.send({ type: \"changed\", value: v });\n        }\n      });\n\n      model.on(\"change:value\", syncFromModel);\n      model.on(\"change:disabled\", syncFromModel);\n      model.on(\"change:appearance\", syncFromModel);\n      model.on(\"change:label\", syncFromModel);\n      model.on(\"change:hidden\", syncFromModel);\n\n      syncFromModel();\n\n      // ---- read cell id (no DOM modifications) ----\n      /*\n      const ID_ATTR = \"data-cell-id\";\n      const hostWithId = el.closest(`[${ID_ATTR}]`);\n      const cellId = hostWithId ? hostWithId.getAttribute(ID_ATTR) : null;\n\n      if (cellId) {\n        model.set(\"cell_id\", cellId);\n        model.save_changes();\n        model.send({ type: \"cell_id_detected\", value: cellId });\n      } else {\n        const mo = new MutationObserver(() => {\n          const host = el.closest(`[${ID_ATTR}]`);\n          const newId = host?.getAttribute(ID_ATTR);\n          \n          if (newId) {\n            model.set(\"cell_id\", newId);\n            model.save_changes();\n            model.send({ type: \"cell_id_detected\", value: newId });\n            mo.disconnect();\n          }\n        });\n        mo.observe(document.body, { attributes: true, subtree: true, attributeFilter: [ID_ATTR] });\n      }\n      */\n    }\n    export default { render };\n    ",
       "_model_module": "anywidget",
       "_model_module_version": "~0.11.*",
       "_model_name": "AnyModel",
       "_view_count": null,
       "_view_module": "anywidget",
       "_view_module_version": "~0.11.*",
       "_view_name": "AnyView",
       "appearance": "box",
       "cell_id": "",
       "disabled": false,
       "hidden": false,
       "label": "Background & Organization: Decision-making & priorities",
       "last_changed_at": "",
       "layout": "IPY_MODEL_82f1f81bb41a4ea39f2a7882b70d2e30",
       "layout_path": null,
       "n_toggles": 0,
       "position": "sidebar",
       "render_slot_id": null,
       "source_cell_id": null,
       "tabbable": null,
       "tooltip": null,
       "url_key": "",
       "value": false
      }
     },
     "74c803b80eb749348f9215c7f0bf1ae9": {
      "model_module": "anywidget",
      "model_module_version": "~0.11.*",
      "model_name": "AnyModel",
      "state": {
       "_anywidget_id": "mercury.checkbox.CheckboxWidget",
       "_css": "\n    .mljar-checkbox-container {\n        display: inline-flex;\n        align-items: center;\n        gap: 10px;\n        cursor: pointer;\n        user-select: none;\n        -webkit-tap-highlight-color: transparent;\n        font-family: ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;\n        color: #0f172a;\n        padding-left: 5px;\n    }\n    .mljar-checkbox-container.is-disabled {\n        opacity: 0.6;\n        cursor: not-allowed;\n    }\n\n    .mljar-checkbox-input {\n        position: absolute;\n        opacity: 0;\n        width: 0;\n        height: 0;\n    }\n\n    .mljar-checkbox-input:focus-visible + .mljar-checkbox-control {\n        box-shadow: inset 0 0 0 2px #007bff;\n    }\n\n    .mljar-checkbox-label {\n        font-size: 14px;\n        line-height: 1.2;\n        padding-top: 2px;\n    }\n\n    /* --- Toggle style (15% smaller) --- */\n    .mljar-checkbox-container.is-toggle .mljar-checkbox-control {\n        position: relative;\n        width: 34px;\n        height: 19px;\n        border-radius: 999px;\n        background: #f1f1f2;\n        border: 1px solid #cfd1d5;\n        transition: background 150ms ease, border-color 150ms ease;\n    }\n    .mljar-checkbox-container.is-toggle.is-checked .mljar-checkbox-control {\n        background: #007bff;\n        border-color: #007bff;\n    }\n    .mljar-checkbox-container.is-toggle .mljar-checkbox-control::after {\n        content: \"\";\n        position: absolute;\n        top: 2px;\n        left: 2px;\n        width: 15px;\n        height: 15px;\n        border-radius: 50%;\n        background: #ffffff;\n        box-shadow: 0 1px 2px rgba(0,0,0,0.12), 0 0 0 1px rgba(0,0,0,0.04);\n        transition: transform 150ms ease;\n    }\n    .mljar-checkbox-container.is-toggle.is-checked .mljar-checkbox-control::after {\n        transform: translateX(15px);\n    }\n\n    /* --- Classic box style --- */\n    .mljar-checkbox-container.is-box .mljar-checkbox-control {\n        width: 16px;\n        height: 16px;\n        border-radius: 4px;\n        border: 1px solid #cfd1d5;\n        background: #ffffff;\n        display: inline-block;\n        position: relative;\n    }\n    .mljar-checkbox-container.is-box.is-checked .mljar-checkbox-control {\n        border-color: #007bff;\n        background: #007bff;\n    }\n    .mljar-checkbox-container.is-box.is-checked .mljar-checkbox-control::after {\n        content: \"\";\n        position: absolute;\n        left: 4px;\n        top: 0px;\n        width: 5px;\n        height: 10px;\n        border: solid #fff;\n        border-width: 0 2px 2px 0;\n        transform: rotate(45deg);\n    }\n\n    .mljar-checkbox-container:not(.is-disabled):hover .mljar-checkbox-control {\n        border-color: #007bff;\n        background: #f3f3f4;\n    }\n    ",
       "_dom_classes": [],
       "_esm": "\n    function render({ model, el }) {\n      const container = document.createElement(\"label\");\n      container.classList.add(\"mljar-checkbox-container\");\n\n      const input = document.createElement(\"input\");\n      input.type = \"checkbox\";\n      input.classList.add(\"mljar-checkbox-input\");\n\n      const control = document.createElement(\"span\");\n      control.classList.add(\"mljar-checkbox-control\");\n\n      const text = document.createElement(\"span\");\n      text.classList.add(\"mljar-checkbox-label\");\n\n      container.appendChild(input);\n      container.appendChild(control);\n      container.appendChild(text);\n      el.appendChild(container);\n\n      function syncFromModel() {\n        // appearance\n        const a = model.get(\"appearance\") || \"toggle\";\n        container.classList.remove(\"is-toggle\",\"is-box\");\n        container.classList.add(`is-${a}`);\n        input.setAttribute(\"role\", a === \"toggle\" ? \"switch\" : \"checkbox\");\n\n        // value\n        const v = !!model.get(\"value\");\n        if (input.checked !== v) {\n          input.checked = v;\n          input.setAttribute(\"aria-checked\", String(v));\n        }\n        container.classList.toggle(\"is-checked\", v);\n\n        // disabled\n        const d = !!model.get(\"disabled\");\n        input.disabled = d;\n        container.classList.toggle(\"is-disabled\", d);\n\n        // label\n        text.textContent = model.get(\"label\") || \"\";\n\n        // hidden (exists but not visible)\n        container.style.display = model.get(\"hidden\") ? \"none\" : \"inline-flex\";\n      }\n\n      input.addEventListener(\"change\", () => {\n        if (model.get(\"disabled\")) return;\n\n        const v = input.checked;\n        if (model.get(\"value\") !== v) {\n          model.set(\"value\", v);\n          model.set(\"last_changed_at\", new Date().toISOString());\n          model.set(\"n_toggles\", (model.get(\"n_toggles\") || 0) + 1);\n          model.save_changes();\n          // model.send({ type: \"changed\", value: v });\n        }\n      });\n\n      model.on(\"change:value\", syncFromModel);\n      model.on(\"change:disabled\", syncFromModel);\n      model.on(\"change:appearance\", syncFromModel);\n      model.on(\"change:label\", syncFromModel);\n      model.on(\"change:hidden\", syncFromModel);\n\n      syncFromModel();\n\n      // ---- read cell id (no DOM modifications) ----\n      /*\n      const ID_ATTR = \"data-cell-id\";\n      const hostWithId = el.closest(`[${ID_ATTR}]`);\n      const cellId = hostWithId ? hostWithId.getAttribute(ID_ATTR) : null;\n\n      if (cellId) {\n        model.set(\"cell_id\", cellId);\n        model.save_changes();\n        model.send({ type: \"cell_id_detected\", value: cellId });\n      } else {\n        const mo = new MutationObserver(() => {\n          const host = el.closest(`[${ID_ATTR}]`);\n          const newId = host?.getAttribute(ID_ATTR);\n          \n          if (newId) {\n            model.set(\"cell_id\", newId);\n            model.save_changes();\n            model.send({ type: \"cell_id_detected\", value: newId });\n            mo.disconnect();\n          }\n        });\n        mo.observe(document.body, { attributes: true, subtree: true, attributeFilter: [ID_ATTR] });\n      }\n      */\n    }\n    export default { render };\n    ",
       "_model_module": "anywidget",
       "_model_module_version": "~0.11.*",
       "_model_name": "AnyModel",
       "_view_count": null,
       "_view_module": "anywidget",
       "_view_module_version": "~0.11.*",
       "_view_name": "AnyView",
       "appearance": "box",
       "cell_id": "",
       "disabled": false,
       "hidden": false,
       "label": "Background & Organization: Org & reporting structure",
       "last_changed_at": "",
       "layout": "IPY_MODEL_f766085686be42d4aa2c2c99427b1f16",
       "layout_path": null,
       "n_toggles": 0,
       "position": "sidebar",
       "render_slot_id": null,
       "source_cell_id": null,
       "tabbable": null,
       "tooltip": null,
       "url_key": "",
       "value": false
      }
     },
     "75964ed9b3bc41b392f597d3d1de7732": {
      "model_module": "anywidget",
      "model_module_version": "~0.11.*",
      "model_name": "AnyModel",
      "state": {
       "_anywidget_id": "mercury.checkbox.CheckboxWidget",
       "_css": "\n    .mljar-checkbox-container {\n        display: inline-flex;\n        align-items: center;\n        gap: 10px;\n        cursor: pointer;\n        user-select: none;\n        -webkit-tap-highlight-color: transparent;\n        font-family: ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;\n        color: #0f172a;\n        padding-left: 5px;\n    }\n    .mljar-checkbox-container.is-disabled {\n        opacity: 0.6;\n        cursor: not-allowed;\n    }\n\n    .mljar-checkbox-input {\n        position: absolute;\n        opacity: 0;\n        width: 0;\n        height: 0;\n    }\n\n    .mljar-checkbox-input:focus-visible + .mljar-checkbox-control {\n        box-shadow: inset 0 0 0 2px #007bff;\n    }\n\n    .mljar-checkbox-label {\n        font-size: 14px;\n        line-height: 1.2;\n        padding-top: 2px;\n    }\n\n    /* --- Toggle style (15% smaller) --- */\n    .mljar-checkbox-container.is-toggle .mljar-checkbox-control {\n        position: relative;\n        width: 34px;\n        height: 19px;\n        border-radius: 999px;\n        background: #f1f1f2;\n        border: 1px solid #cfd1d5;\n        transition: background 150ms ease, border-color 150ms ease;\n    }\n    .mljar-checkbox-container.is-toggle.is-checked .mljar-checkbox-control {\n        background: #007bff;\n        border-color: #007bff;\n    }\n    .mljar-checkbox-container.is-toggle .mljar-checkbox-control::after {\n        content: \"\";\n        position: absolute;\n        top: 2px;\n        left: 2px;\n        width: 15px;\n        height: 15px;\n        border-radius: 50%;\n        background: #ffffff;\n        box-shadow: 0 1px 2px rgba(0,0,0,0.12), 0 0 0 1px rgba(0,0,0,0.04);\n        transition: transform 150ms ease;\n    }\n    .mljar-checkbox-container.is-toggle.is-checked .mljar-checkbox-control::after {\n        transform: translateX(15px);\n    }\n\n    /* --- Classic box style --- */\n    .mljar-checkbox-container.is-box .mljar-checkbox-control {\n        width: 16px;\n        height: 16px;\n        border-radius: 4px;\n        border: 1px solid #cfd1d5;\n        background: #ffffff;\n        display: inline-block;\n        position: relative;\n    }\n    .mljar-checkbox-container.is-box.is-checked .mljar-checkbox-control {\n        border-color: #007bff;\n        background: #007bff;\n    }\n    .mljar-checkbox-container.is-box.is-checked .mljar-checkbox-control::after {\n        content: \"\";\n        position: absolute;\n        left: 4px;\n        top: 0px;\n        width: 5px;\n        height: 10px;\n        border: solid #fff;\n        border-width: 0 2px 2px 0;\n        transform: rotate(45deg);\n    }\n\n    .mljar-checkbox-container:not(.is-disabled):hover .mljar-checkbox-control {\n        border-color: #007bff;\n        background: #f3f3f4;\n    }\n    ",
       "_dom_classes": [],
       "_esm": "\n    function render({ model, el }) {\n      const container = document.createElement(\"label\");\n      container.classList.add(\"mljar-checkbox-container\");\n\n      const input = document.createElement(\"input\");\n      input.type = \"checkbox\";\n      input.classList.add(\"mljar-checkbox-input\");\n\n      const control = document.createElement(\"span\");\n      control.classList.add(\"mljar-checkbox-control\");\n\n      const text = document.createElement(\"span\");\n      text.classList.add(\"mljar-checkbox-label\");\n\n      container.appendChild(input);\n      container.appendChild(control);\n      container.appendChild(text);\n      el.appendChild(container);\n\n      function syncFromModel() {\n        // appearance\n        const a = model.get(\"appearance\") || \"toggle\";\n        container.classList.remove(\"is-toggle\",\"is-box\");\n        container.classList.add(`is-${a}`);\n        input.setAttribute(\"role\", a === \"toggle\" ? \"switch\" : \"checkbox\");\n\n        // value\n        const v = !!model.get(\"value\");\n        if (input.checked !== v) {\n          input.checked = v;\n          input.setAttribute(\"aria-checked\", String(v));\n        }\n        container.classList.toggle(\"is-checked\", v);\n\n        // disabled\n        const d = !!model.get(\"disabled\");\n        input.disabled = d;\n        container.classList.toggle(\"is-disabled\", d);\n\n        // label\n        text.textContent = model.get(\"label\") || \"\";\n\n        // hidden (exists but not visible)\n        container.style.display = model.get(\"hidden\") ? \"none\" : \"inline-flex\";\n      }\n\n      input.addEventListener(\"change\", () => {\n        if (model.get(\"disabled\")) return;\n\n        const v = input.checked;\n        if (model.get(\"value\") !== v) {\n          model.set(\"value\", v);\n          model.set(\"last_changed_at\", new Date().toISOString());\n          model.set(\"n_toggles\", (model.get(\"n_toggles\") || 0) + 1);\n          model.save_changes();\n          // model.send({ type: \"changed\", value: v });\n        }\n      });\n\n      model.on(\"change:value\", syncFromModel);\n      model.on(\"change:disabled\", syncFromModel);\n      model.on(\"change:appearance\", syncFromModel);\n      model.on(\"change:label\", syncFromModel);\n      model.on(\"change:hidden\", syncFromModel);\n\n      syncFromModel();\n\n      // ---- read cell id (no DOM modifications) ----\n      /*\n      const ID_ATTR = \"data-cell-id\";\n      const hostWithId = el.closest(`[${ID_ATTR}]`);\n      const cellId = hostWithId ? hostWithId.getAttribute(ID_ATTR) : null;\n\n      if (cellId) {\n        model.set(\"cell_id\", cellId);\n        model.save_changes();\n        model.send({ type: \"cell_id_detected\", value: cellId });\n      } else {\n        const mo = new MutationObserver(() => {\n          const host = el.closest(`[${ID_ATTR}]`);\n          const newId = host?.getAttribute(ID_ATTR);\n          \n          if (newId) {\n            model.set(\"cell_id\", newId);\n            model.save_changes();\n            model.send({ type: \"cell_id_detected\", value: newId });\n            mo.disconnect();\n          }\n        });\n        mo.observe(document.body, { attributes: true, subtree: true, attributeFilter: [ID_ATTR] });\n      }\n      */\n    }\n    export default { render };\n    ",
       "_model_module": "anywidget",
       "_model_module_version": "~0.11.*",
       "_model_name": "AnyModel",
       "_view_count": null,
       "_view_module": "anywidget",
       "_view_module_version": "~0.11.*",
       "_view_name": "AnyView",
       "appearance": "box",
       "cell_id": "",
       "disabled": false,
       "hidden": false,
       "label": "CX Strategy: Organization & operating model",
       "last_changed_at": "",
       "layout": "IPY_MODEL_adda56336c1649e6a9eb361c9be70fff",
       "layout_path": null,
       "n_toggles": 0,
       "position": "sidebar",
       "render_slot_id": null,
       "source_cell_id": null,
       "tabbable": null,
       "tooltip": null,
       "url_key": "",
       "value": false
      }
     },
     "77865f023ab94b3784bf0bfb35eec22b": {
      "model_module": "anywidget",
      "model_module_version": "~0.11.*",
      "model_name": "AnyModel",
      "state": {
       "_anywidget_id": "mercury.checkbox.CheckboxWidget",
       "_css": "\n    .mljar-checkbox-container {\n        display: inline-flex;\n        align-items: center;\n        gap: 10px;\n        cursor: pointer;\n        user-select: none;\n        -webkit-tap-highlight-color: transparent;\n        font-family: ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;\n        color: #0f172a;\n        padding-left: 5px;\n    }\n    .mljar-checkbox-container.is-disabled {\n        opacity: 0.6;\n        cursor: not-allowed;\n    }\n\n    .mljar-checkbox-input {\n        position: absolute;\n        opacity: 0;\n        width: 0;\n        height: 0;\n    }\n\n    .mljar-checkbox-input:focus-visible + .mljar-checkbox-control {\n        box-shadow: inset 0 0 0 2px #007bff;\n    }\n\n    .mljar-checkbox-label {\n        font-size: 14px;\n        line-height: 1.2;\n        padding-top: 2px;\n    }\n\n    /* --- Toggle style (15% smaller) --- */\n    .mljar-checkbox-container.is-toggle .mljar-checkbox-control {\n        position: relative;\n        width: 34px;\n        height: 19px;\n        border-radius: 999px;\n        background: #f1f1f2;\n        border: 1px solid #cfd1d5;\n        transition: background 150ms ease, border-color 150ms ease;\n    }\n    .mljar-checkbox-container.is-toggle.is-checked .mljar-checkbox-control {\n        background: #007bff;\n        border-color: #007bff;\n    }\n    .mljar-checkbox-container.is-toggle .mljar-checkbox-control::after {\n        content: \"\";\n        position: absolute;\n        top: 2px;\n        left: 2px;\n        width: 15px;\n        height: 15px;\n        border-radius: 50%;\n        background: #ffffff;\n        box-shadow: 0 1px 2px rgba(0,0,0,0.12), 0 0 0 1px rgba(0,0,0,0.04);\n        transition: transform 150ms ease;\n    }\n    .mljar-checkbox-container.is-toggle.is-checked .mljar-checkbox-control::after {\n        transform: translateX(15px);\n    }\n\n    /* --- Classic box style --- */\n    .mljar-checkbox-container.is-box .mljar-checkbox-control {\n        width: 16px;\n        height: 16px;\n        border-radius: 4px;\n        border: 1px solid #cfd1d5;\n        background: #ffffff;\n        display: inline-block;\n        position: relative;\n    }\n    .mljar-checkbox-container.is-box.is-checked .mljar-checkbox-control {\n        border-color: #007bff;\n        background: #007bff;\n    }\n    .mljar-checkbox-container.is-box.is-checked .mljar-checkbox-control::after {\n        content: \"\";\n        position: absolute;\n        left: 4px;\n        top: 0px;\n        width: 5px;\n        height: 10px;\n        border: solid #fff;\n        border-width: 0 2px 2px 0;\n        transform: rotate(45deg);\n    }\n\n    .mljar-checkbox-container:not(.is-disabled):hover .mljar-checkbox-control {\n        border-color: #007bff;\n        background: #f3f3f4;\n    }\n    ",
       "_dom_classes": [],
       "_esm": "\n    function render({ model, el }) {\n      const container = document.createElement(\"label\");\n      container.classList.add(\"mljar-checkbox-container\");\n\n      const input = document.createElement(\"input\");\n      input.type = \"checkbox\";\n      input.classList.add(\"mljar-checkbox-input\");\n\n      const control = document.createElement(\"span\");\n      control.classList.add(\"mljar-checkbox-control\");\n\n      const text = document.createElement(\"span\");\n      text.classList.add(\"mljar-checkbox-label\");\n\n      container.appendChild(input);\n      container.appendChild(control);\n      container.appendChild(text);\n      el.appendChild(container);\n\n      function syncFromModel() {\n        // appearance\n        const a = model.get(\"appearance\") || \"toggle\";\n        container.classList.remove(\"is-toggle\",\"is-box\");\n        container.classList.add(`is-${a}`);\n        input.setAttribute(\"role\", a === \"toggle\" ? \"switch\" : \"checkbox\");\n\n        // value\n        const v = !!model.get(\"value\");\n        if (input.checked !== v) {\n          input.checked = v;\n          input.setAttribute(\"aria-checked\", String(v));\n        }\n        container.classList.toggle(\"is-checked\", v);\n\n        // disabled\n        const d = !!model.get(\"disabled\");\n        input.disabled = d;\n        container.classList.toggle(\"is-disabled\", d);\n\n        // label\n        text.textContent = model.get(\"label\") || \"\";\n\n        // hidden (exists but not visible)\n        container.style.display = model.get(\"hidden\") ? \"none\" : \"inline-flex\";\n      }\n\n      input.addEventListener(\"change\", () => {\n        if (model.get(\"disabled\")) return;\n\n        const v = input.checked;\n        if (model.get(\"value\") !== v) {\n          model.set(\"value\", v);\n          model.set(\"last_changed_at\", new Date().toISOString());\n          model.set(\"n_toggles\", (model.get(\"n_toggles\") || 0) + 1);\n          model.save_changes();\n          // model.send({ type: \"changed\", value: v });\n        }\n      });\n\n      model.on(\"change:value\", syncFromModel);\n      model.on(\"change:disabled\", syncFromModel);\n      model.on(\"change:appearance\", syncFromModel);\n      model.on(\"change:label\", syncFromModel);\n      model.on(\"change:hidden\", syncFromModel);\n\n      syncFromModel();\n\n      // ---- read cell id (no DOM modifications) ----\n      /*\n      const ID_ATTR = \"data-cell-id\";\n      const hostWithId = el.closest(`[${ID_ATTR}]`);\n      const cellId = hostWithId ? hostWithId.getAttribute(ID_ATTR) : null;\n\n      if (cellId) {\n        model.set(\"cell_id\", cellId);\n        model.save_changes();\n        model.send({ type: \"cell_id_detected\", value: cellId });\n      } else {\n        const mo = new MutationObserver(() => {\n          const host = el.closest(`[${ID_ATTR}]`);\n          const newId = host?.getAttribute(ID_ATTR);\n          \n          if (newId) {\n            model.set(\"cell_id\", newId);\n            model.save_changes();\n            model.send({ type: \"cell_id_detected\", value: newId });\n            mo.disconnect();\n          }\n        });\n        mo.observe(document.body, { attributes: true, subtree: true, attributeFilter: [ID_ATTR] });\n      }\n      */\n    }\n    export default { render };\n    ",
       "_model_module": "anywidget",
       "_model_module_version": "~0.11.*",
       "_model_name": "AnyModel",
       "_view_count": null,
       "_view_module": "anywidget",
       "_view_module_version": "~0.11.*",
       "_view_name": "AnyView",
       "appearance": "box",
       "cell_id": "",
       "disabled": false,
       "hidden": false,
       "label": "Routing & Automation: Virtual agents & assist",
       "last_changed_at": "",
       "layout": "IPY_MODEL_10bcd8e392d44ba787e16984dd019565",
       "layout_path": null,
       "n_toggles": 0,
       "position": "sidebar",
       "render_slot_id": null,
       "source_cell_id": null,
       "tabbable": null,
       "tooltip": null,
       "url_key": "",
       "value": false
      }
     },
     "7c10ad36a20944459ce75e41397e74be": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "7c46a99022614830981147c007b7b82a": {
      "model_module": "anywidget",
      "model_module_version": "~0.11.*",
      "model_name": "AnyModel",
      "state": {
       "_anywidget_id": "mercury.select.SelectWidget",
       "_css": "\n    .mljar-select-container {\n      position: relative;\n      display: flex;\n      flex-direction: column;\n      font-family: ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;\n      font-size: 14px;\n      color: #0f172a;\n      padding-left: 4px;\n      padding-right: 4px;\n      overflow: visible;\n    }\n\n    .mljar-select-label {\n      padding-top: 6px;\n      margin-bottom: 4px;\n      font-weight: 600;\n    }\n\n    .mljar-select-control {\n      position: relative;\n      display: flex;\n      align-items: center;\n      cursor: default;\n      overflow: visible;\n    }\n\n    .mljar-select-container.is-open {\n      z-index: 20;\n    }\n\n    .mljar-select-widget-input {\n      width: 100%;\n      min-height: 40px;\n      padding: 9px 36px 9px 10px;\n      border: 1px solid #cfd1d5;\n      border-radius: 6px;\n      background: #ffffff;\n      box-sizing: border-box;\n      line-height: 1.4;\n      transition: border-color 0.15s ease, box-shadow 0.15s ease;\n\n      appearance: none !important;\n      background-color: #ffffff !important;\n      color: #0f172a !important;\n      cursor: default;\n    }\n\n    .mljar-select-widget-input:focus {\n      outline: none;\n      border-color: #007bff;\n      box-shadow: none;\n      cursor: text;\n    }\n\n    .mljar-select-caret {\n      position: absolute;\n      right: 12px;\n      top: 50%;\n      width: 8px;\n      height: 8px;\n      border-right: 1.5px solid #0f172a;\n      border-bottom: 1.5px solid #0f172a;\n      transform: translateY(-65%) rotate(45deg);\n      pointer-events: auto;\n      opacity: 0.5;\n      transition: transform 0.18s ease, opacity 0.18s ease;\n    }\n\n    .mljar-select-container.is-open .mljar-select-caret {\n      opacity: 1;\n      transform: translateY(-35%) rotate(225deg);\n    }\n\n    .mljar-select-dropdown {\n      display: none;\n      position: fixed;\n      z-index: 10000;\n      border: 1px solid #cfd1d5;\n      border-radius: 6px;\n      background: #ffffff;\n      box-shadow: 0 8px 24px rgba(15, 23, 42, 0.12);\n      overflow: hidden;\n    }\n\n    .mljar-select-list {\n      max-height: 260px;\n      overflow-y: auto;\n    }\n\n    .mljar-select-option {\n      display: block;\n      width: 100%;\n      padding: 9px 10px;\n      border: 0;\n      background: transparent;\n      color: #0f172a;\n      text-align: left;\n      cursor: pointer;\n      font: inherit;\n      transition: background-color 0.14s ease, color 0.14s ease;\n    }\n\n    .mljar-select-option:hover {\n      background: #f3f3f4;\n    }\n\n    .mljar-select-option:active {\n      background: #e6f2ff;\n      color: #007bff;\n    }\n\n    .mljar-select-option.is-selected {\n      background: #e6f2ff;\n      color: #007bff;\n      font-weight: 600;\n    }\n\n    .mljar-select-option.is-selected:hover,\n    .mljar-select-option.is-selected:active {\n      background: #e6f2ff;\n      color: #007bff;\n    }\n\n    .mljar-select-empty {\n      display: none;\n      padding: 10px;\n      color: #616673;\n      font-size: 0.95em;\n    }\n\n    .mljar-select-widget-input:disabled {\n      background: #f5f5f5;\n      color: #888;\n      cursor: not-allowed;\n    }\n\n    .mljar-select-control.is-disabled .mljar-select-caret {\n      opacity: 0.45;\n    }\n    ",
       "_dom_classes": [],
       "_esm": "\n    function render({ model, el }) {\n      const normalize = value => String(value ?? \"\").toLowerCase().trim();\n      const getChoices = () =>\n        Array.isArray(model.get(\"choices\")) ? [...model.get(\"choices\")] : [];\n      const isDisabled = () => !!model.get(\"disabled\");\n      const isHidden = () => !!model.get(\"hidden\");\n\n      const container = document.createElement(\"div\");\n      container.classList.add(\"mljar-select-container\");\n\n      if (model.get(\"label\")) {\n        const topLabel = document.createElement(\"div\");\n        topLabel.classList.add(\"mljar-select-label\");\n        topLabel.innerHTML = model.get(\"label\");\n        container.appendChild(topLabel);\n      }\n\n      const control = document.createElement(\"div\");\n      control.classList.add(\"mljar-select-control\");\n\n      const input = document.createElement(\"input\");\n      input.type = \"text\";\n      input.classList.add(\"mljar-select-widget-input\");\n      input.autocomplete = \"off\";\n      input.spellcheck = false;\n\n      const caret = document.createElement(\"div\");\n      caret.classList.add(\"mljar-select-caret\");\n\n      control.appendChild(input);\n      control.appendChild(caret);\n\n      const dropdown = document.createElement(\"div\");\n      dropdown.classList.add(\"mljar-select-dropdown\");\n\n      const list = document.createElement(\"div\");\n      list.classList.add(\"mljar-select-list\");\n\n      const emptyState = document.createElement(\"div\");\n      emptyState.classList.add(\"mljar-select-empty\");\n      emptyState.textContent = \"No matches\";\n\n      dropdown.appendChild(list);\n      dropdown.appendChild(emptyState);\n\n      container.appendChild(control);\n      el.appendChild(container);\n\n      let isOpen = false;\n      let filteredChoices = [];\n      let lastCommittedValue = \"\";\n      let isEditing = false;\n      document.body.appendChild(dropdown);\n\n      const updateDropdownPosition = () => {\n        if (!isOpen) {\n          return;\n        }\n        const rect = control.getBoundingClientRect();\n        dropdown.style.top = `${rect.bottom + 6}px`;\n        dropdown.style.left = `${rect.left}px`;\n        dropdown.style.width = `${rect.width}px`;\n      };\n\n      const setOpen = next => {\n        if (isDisabled()) {\n          isOpen = false;\n        } else {\n          isOpen = !!next;\n        }\n        container.classList.toggle(\"is-open\", isOpen);\n        dropdown.style.display = isOpen ? \"block\" : \"none\";\n        if (isOpen) {\n          updateDropdownPosition();\n        }\n      };\n\n      const updateDisabledState = () => {\n        const disabled = isDisabled();\n        input.disabled = disabled;\n        control.classList.toggle(\"is-disabled\", disabled);\n      };\n\n      const updateHiddenState = () => {\n        container.style.display = isHidden() ? \"none\" : \"\";\n      };\n\n      const syncInputWithValue = () => {\n        const value = model.get(\"value\") || \"\";\n        lastCommittedValue = value;\n        if (!isEditing) {\n          input.value = value;\n        }\n      };\n\n      const filterChoices = query => {\n        const normalizedQuery = normalize(query);\n        const allChoices = getChoices();\n        if (!normalizedQuery) {\n          return allChoices;\n        }\n        return allChoices.filter(choice =>\n          normalize(choice).includes(normalizedQuery)\n        );\n      };\n\n      const renderList = () => {\n        list.innerHTML = \"\";\n        filteredChoices.forEach(choice => {\n          const option = document.createElement(\"button\");\n          option.type = \"button\";\n          option.classList.add(\"mljar-select-option\");\n          if (choice === model.get(\"value\")) {\n            option.classList.add(\"is-selected\");\n          }\n          option.textContent = choice;\n          option.addEventListener(\"mousedown\", event => {\n            event.preventDefault();\n            event.stopPropagation();\n            model.set(\"value\", choice);\n            model.save_changes();\n            isEditing = false;\n            syncInputWithValue();\n            renderList();\n            setOpen(false);\n          });\n          list.appendChild(option);\n        });\n\n        const hasMatches = filteredChoices.length > 0;\n        list.style.display = hasMatches ? \"block\" : \"none\";\n        emptyState.style.display = hasMatches ? \"none\" : \"block\";\n      };\n\n      const refreshList = () => {\n        filteredChoices = filterChoices(input.value);\n        renderList();\n      };\n\n      const openWithCurrentQuery = () => {\n        isEditing = true;\n        input.value = \"\";\n        refreshList();\n        setOpen(true);\n      };\n\n      const closeDropdown = () => {\n        isEditing = false;\n        setOpen(false);\n        input.value = lastCommittedValue;\n      };\n\n      control.addEventListener(\"click\", event => {\n        event.stopPropagation();\n        if (isDisabled()) {\n          return;\n        }\n        if (event.target === caret && isOpen) {\n          closeDropdown();\n          input.blur();\n          return;\n        }\n        openWithCurrentQuery();\n        input.focus();\n      });\n\n      input.addEventListener(\"input\", () => {\n        if (isDisabled()) {\n          return;\n        }\n        refreshList();\n        setOpen(true);\n      });\n\n      input.addEventListener(\"focus\", () => {\n        if (isDisabled()) {\n          return;\n        }\n        openWithCurrentQuery();\n      });\n\n      input.addEventListener(\"blur\", () => {\n        isEditing = false;\n        input.value = lastCommittedValue;\n      });\n\n      const handleDocumentClick = event => {\n        if (!container.contains(event.target) && !dropdown.contains(event.target)) {\n          closeDropdown();\n        }\n      };\n\n      document.addEventListener(\"click\", handleDocumentClick);\n      window.addEventListener(\"resize\", updateDropdownPosition);\n      document.addEventListener(\"scroll\", updateDropdownPosition, true);\n\n      model.on(\"change:value\", () => {\n        syncInputWithValue();\n        refreshList();\n      });\n\n      model.on(\"change:choices\", () => {\n        const choices = getChoices();\n        if (!choices.includes(model.get(\"value\")) && choices.length > 0) {\n          model.set(\"value\", choices[0]);\n          model.save_changes();\n          return;\n        }\n        syncInputWithValue();\n        refreshList();\n      });\n\n      model.on(\"change:disabled\", () => {\n        updateDisabledState();\n        if (isDisabled()) {\n          closeDropdown();\n        }\n      });\n\n      model.on(\"change:hidden\", () => {\n        updateHiddenState();\n      });\n\n      updateDisabledState();\n      updateHiddenState();\n      syncInputWithValue();\n      refreshList();\n      setOpen(false);\n\n      return () => {\n        dropdown.remove();\n        document.removeEventListener(\"click\", handleDocumentClick);\n        window.removeEventListener(\"resize\", updateDropdownPosition);\n        document.removeEventListener(\"scroll\", updateDropdownPosition, true);\n      };\n    }\n    export default { render };\n    ",
       "_model_module": "anywidget",
       "_model_module_version": "~0.11.*",
       "_model_name": "AnyModel",
       "_view_count": null,
       "_view_module": "anywidget",
       "_view_module_version": "~0.11.*",
       "_view_name": "AnyView",
       "cell_id": "",
       "choices": [
        "Not started",
        "In progress",
        "Complete",
        "Skipped"
       ],
       "disabled": false,
       "hidden": false,
       "label": "Reporting & Insights — status",
       "layout": "IPY_MODEL_46e8479ff738471fb4fce78dc41384c0",
       "layout_path": null,
       "position": "sidebar",
       "render_slot_id": null,
       "source_cell_id": null,
       "tabbable": null,
       "tooltip": null,
       "url_key": "",
       "value": "Not started"
      }
     },
     "7cf7689da95d411bbe31b4db1c2d358f": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "7ed6ace9dd0c4cd5add9b62128ad94ae": {
      "model_module": "anywidget",
      "model_module_version": "~0.11.*",
      "model_name": "AnyModel",
      "state": {
       "_anywidget_id": "mercury.checkbox.CheckboxWidget",
       "_css": "\n    .mljar-checkbox-container {\n        display: inline-flex;\n        align-items: center;\n        gap: 10px;\n        cursor: pointer;\n        user-select: none;\n        -webkit-tap-highlight-color: transparent;\n        font-family: ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;\n        color: #0f172a;\n        padding-left: 5px;\n    }\n    .mljar-checkbox-container.is-disabled {\n        opacity: 0.6;\n        cursor: not-allowed;\n    }\n\n    .mljar-checkbox-input {\n        position: absolute;\n        opacity: 0;\n        width: 0;\n        height: 0;\n    }\n\n    .mljar-checkbox-input:focus-visible + .mljar-checkbox-control {\n        box-shadow: inset 0 0 0 2px #007bff;\n    }\n\n    .mljar-checkbox-label {\n        font-size: 14px;\n        line-height: 1.2;\n        padding-top: 2px;\n    }\n\n    /* --- Toggle style (15% smaller) --- */\n    .mljar-checkbox-container.is-toggle .mljar-checkbox-control {\n        position: relative;\n        width: 34px;\n        height: 19px;\n        border-radius: 999px;\n        background: #f1f1f2;\n        border: 1px solid #cfd1d5;\n        transition: background 150ms ease, border-color 150ms ease;\n    }\n    .mljar-checkbox-container.is-toggle.is-checked .mljar-checkbox-control {\n        background: #007bff;\n        border-color: #007bff;\n    }\n    .mljar-checkbox-container.is-toggle .mljar-checkbox-control::after {\n        content: \"\";\n        position: absolute;\n        top: 2px;\n        left: 2px;\n        width: 15px;\n        height: 15px;\n        border-radius: 50%;\n        background: #ffffff;\n        box-shadow: 0 1px 2px rgba(0,0,0,0.12), 0 0 0 1px rgba(0,0,0,0.04);\n        transition: transform 150ms ease;\n    }\n    .mljar-checkbox-container.is-toggle.is-checked .mljar-checkbox-control::after {\n        transform: translateX(15px);\n    }\n\n    /* --- Classic box style --- */\n    .mljar-checkbox-container.is-box .mljar-checkbox-control {\n        width: 16px;\n        height: 16px;\n        border-radius: 4px;\n        border: 1px solid #cfd1d5;\n        background: #ffffff;\n        display: inline-block;\n        position: relative;\n    }\n    .mljar-checkbox-container.is-box.is-checked .mljar-checkbox-control {\n        border-color: #007bff;\n        background: #007bff;\n    }\n    .mljar-checkbox-container.is-box.is-checked .mljar-checkbox-control::after {\n        content: \"\";\n        position: absolute;\n        left: 4px;\n        top: 0px;\n        width: 5px;\n        height: 10px;\n        border: solid #fff;\n        border-width: 0 2px 2px 0;\n        transform: rotate(45deg);\n    }\n\n    .mljar-checkbox-container:not(.is-disabled):hover .mljar-checkbox-control {\n        border-color: #007bff;\n        background: #f3f3f4;\n    }\n    ",
       "_dom_classes": [],
       "_esm": "\n    function render({ model, el }) {\n      const container = document.createElement(\"label\");\n      container.classList.add(\"mljar-checkbox-container\");\n\n      const input = document.createElement(\"input\");\n      input.type = \"checkbox\";\n      input.classList.add(\"mljar-checkbox-input\");\n\n      const control = document.createElement(\"span\");\n      control.classList.add(\"mljar-checkbox-control\");\n\n      const text = document.createElement(\"span\");\n      text.classList.add(\"mljar-checkbox-label\");\n\n      container.appendChild(input);\n      container.appendChild(control);\n      container.appendChild(text);\n      el.appendChild(container);\n\n      function syncFromModel() {\n        // appearance\n        const a = model.get(\"appearance\") || \"toggle\";\n        container.classList.remove(\"is-toggle\",\"is-box\");\n        container.classList.add(`is-${a}`);\n        input.setAttribute(\"role\", a === \"toggle\" ? \"switch\" : \"checkbox\");\n\n        // value\n        const v = !!model.get(\"value\");\n        if (input.checked !== v) {\n          input.checked = v;\n          input.setAttribute(\"aria-checked\", String(v));\n        }\n        container.classList.toggle(\"is-checked\", v);\n\n        // disabled\n        const d = !!model.get(\"disabled\");\n        input.disabled = d;\n        container.classList.toggle(\"is-disabled\", d);\n\n        // label\n        text.textContent = model.get(\"label\") || \"\";\n\n        // hidden (exists but not visible)\n        container.style.display = model.get(\"hidden\") ? \"none\" : \"inline-flex\";\n      }\n\n      input.addEventListener(\"change\", () => {\n        if (model.get(\"disabled\")) return;\n\n        const v = input.checked;\n        if (model.get(\"value\") !== v) {\n          model.set(\"value\", v);\n          model.set(\"last_changed_at\", new Date().toISOString());\n          model.set(\"n_toggles\", (model.get(\"n_toggles\") || 0) + 1);\n          model.save_changes();\n          // model.send({ type: \"changed\", value: v });\n        }\n      });\n\n      model.on(\"change:value\", syncFromModel);\n      model.on(\"change:disabled\", syncFromModel);\n      model.on(\"change:appearance\", syncFromModel);\n      model.on(\"change:label\", syncFromModel);\n      model.on(\"change:hidden\", syncFromModel);\n\n      syncFromModel();\n\n      // ---- read cell id (no DOM modifications) ----\n      /*\n      const ID_ATTR = \"data-cell-id\";\n      const hostWithId = el.closest(`[${ID_ATTR}]`);\n      const cellId = hostWithId ? hostWithId.getAttribute(ID_ATTR) : null;\n\n      if (cellId) {\n        model.set(\"cell_id\", cellId);\n        model.save_changes();\n        model.send({ type: \"cell_id_detected\", value: cellId });\n      } else {\n        const mo = new MutationObserver(() => {\n          const host = el.closest(`[${ID_ATTR}]`);\n          const newId = host?.getAttribute(ID_ATTR);\n          \n          if (newId) {\n            model.set(\"cell_id\", newId);\n            model.save_changes();\n            model.send({ type: \"cell_id_detected\", value: newId });\n            mo.disconnect();\n          }\n        });\n        mo.observe(document.body, { attributes: true, subtree: true, attributeFilter: [ID_ATTR] });\n      }\n      */\n    }\n    export default { render };\n    ",
       "_model_module": "anywidget",
       "_model_module_version": "~0.11.*",
       "_model_name": "AnyModel",
       "_view_count": null,
       "_view_module": "anywidget",
       "_view_module_version": "~0.11.*",
       "_view_name": "AnyView",
       "appearance": "box",
       "cell_id": "",
       "disabled": false,
       "hidden": false,
       "label": "CX Strategy: Employee engagement",
       "last_changed_at": "",
       "layout": "IPY_MODEL_d534c8937793492a843efeae1e1676d0",
       "layout_path": null,
       "n_toggles": 0,
       "position": "sidebar",
       "render_slot_id": null,
       "source_cell_id": null,
       "tabbable": null,
       "tooltip": null,
       "url_key": "",
       "value": false
      }
     },
     "7f52f7fd05a14a50a281b9c5ec5b5fd2": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "80fca3f575234c3ba087ab24a4e0a1b1": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "82f1f81bb41a4ea39f2a7882b70d2e30": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "8319aeb5add740b0b1949c4cbb34bae7": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "8677632009224150b15b4611b3857650": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "8922090ab38b4984be10659d45650f2e": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "8f091c414a234436990cbabb0d247de9": {
      "model_module": "anywidget",
      "model_module_version": "~0.11.*",
      "model_name": "AnyModel",
      "state": {
       "_anywidget_id": "mercury.select.SelectWidget",
       "_css": "\n    .mljar-select-container {\n      position: relative;\n      display: flex;\n      flex-direction: column;\n      font-family: ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;\n      font-size: 14px;\n      color: #0f172a;\n      padding-left: 4px;\n      padding-right: 4px;\n      overflow: visible;\n    }\n\n    .mljar-select-label {\n      padding-top: 6px;\n      margin-bottom: 4px;\n      font-weight: 600;\n    }\n\n    .mljar-select-control {\n      position: relative;\n      display: flex;\n      align-items: center;\n      cursor: default;\n      overflow: visible;\n    }\n\n    .mljar-select-container.is-open {\n      z-index: 20;\n    }\n\n    .mljar-select-widget-input {\n      width: 100%;\n      min-height: 40px;\n      padding: 9px 36px 9px 10px;\n      border: 1px solid #cfd1d5;\n      border-radius: 6px;\n      background: #ffffff;\n      box-sizing: border-box;\n      line-height: 1.4;\n      transition: border-color 0.15s ease, box-shadow 0.15s ease;\n\n      appearance: none !important;\n      background-color: #ffffff !important;\n      color: #0f172a !important;\n      cursor: default;\n    }\n\n    .mljar-select-widget-input:focus {\n      outline: none;\n      border-color: #007bff;\n      box-shadow: none;\n      cursor: text;\n    }\n\n    .mljar-select-caret {\n      position: absolute;\n      right: 12px;\n      top: 50%;\n      width: 8px;\n      height: 8px;\n      border-right: 1.5px solid #0f172a;\n      border-bottom: 1.5px solid #0f172a;\n      transform: translateY(-65%) rotate(45deg);\n      pointer-events: auto;\n      opacity: 0.5;\n      transition: transform 0.18s ease, opacity 0.18s ease;\n    }\n\n    .mljar-select-container.is-open .mljar-select-caret {\n      opacity: 1;\n      transform: translateY(-35%) rotate(225deg);\n    }\n\n    .mljar-select-dropdown {\n      display: none;\n      position: fixed;\n      z-index: 10000;\n      border: 1px solid #cfd1d5;\n      border-radius: 6px;\n      background: #ffffff;\n      box-shadow: 0 8px 24px rgba(15, 23, 42, 0.12);\n      overflow: hidden;\n    }\n\n    .mljar-select-list {\n      max-height: 260px;\n      overflow-y: auto;\n    }\n\n    .mljar-select-option {\n      display: block;\n      width: 100%;\n      padding: 9px 10px;\n      border: 0;\n      background: transparent;\n      color: #0f172a;\n      text-align: left;\n      cursor: pointer;\n      font: inherit;\n      transition: background-color 0.14s ease, color 0.14s ease;\n    }\n\n    .mljar-select-option:hover {\n      background: #f3f3f4;\n    }\n\n    .mljar-select-option:active {\n      background: #e6f2ff;\n      color: #007bff;\n    }\n\n    .mljar-select-option.is-selected {\n      background: #e6f2ff;\n      color: #007bff;\n      font-weight: 600;\n    }\n\n    .mljar-select-option.is-selected:hover,\n    .mljar-select-option.is-selected:active {\n      background: #e6f2ff;\n      color: #007bff;\n    }\n\n    .mljar-select-empty {\n      display: none;\n      padding: 10px;\n      color: #616673;\n      font-size: 0.95em;\n    }\n\n    .mljar-select-widget-input:disabled {\n      background: #f5f5f5;\n      color: #888;\n      cursor: not-allowed;\n    }\n\n    .mljar-select-control.is-disabled .mljar-select-caret {\n      opacity: 0.45;\n    }\n    ",
       "_dom_classes": [],
       "_esm": "\n    function render({ model, el }) {\n      const normalize = value => String(value ?? \"\").toLowerCase().trim();\n      const getChoices = () =>\n        Array.isArray(model.get(\"choices\")) ? [...model.get(\"choices\")] : [];\n      const isDisabled = () => !!model.get(\"disabled\");\n      const isHidden = () => !!model.get(\"hidden\");\n\n      const container = document.createElement(\"div\");\n      container.classList.add(\"mljar-select-container\");\n\n      if (model.get(\"label\")) {\n        const topLabel = document.createElement(\"div\");\n        topLabel.classList.add(\"mljar-select-label\");\n        topLabel.innerHTML = model.get(\"label\");\n        container.appendChild(topLabel);\n      }\n\n      const control = document.createElement(\"div\");\n      control.classList.add(\"mljar-select-control\");\n\n      const input = document.createElement(\"input\");\n      input.type = \"text\";\n      input.classList.add(\"mljar-select-widget-input\");\n      input.autocomplete = \"off\";\n      input.spellcheck = false;\n\n      const caret = document.createElement(\"div\");\n      caret.classList.add(\"mljar-select-caret\");\n\n      control.appendChild(input);\n      control.appendChild(caret);\n\n      const dropdown = document.createElement(\"div\");\n      dropdown.classList.add(\"mljar-select-dropdown\");\n\n      const list = document.createElement(\"div\");\n      list.classList.add(\"mljar-select-list\");\n\n      const emptyState = document.createElement(\"div\");\n      emptyState.classList.add(\"mljar-select-empty\");\n      emptyState.textContent = \"No matches\";\n\n      dropdown.appendChild(list);\n      dropdown.appendChild(emptyState);\n\n      container.appendChild(control);\n      el.appendChild(container);\n\n      let isOpen = false;\n      let filteredChoices = [];\n      let lastCommittedValue = \"\";\n      let isEditing = false;\n      document.body.appendChild(dropdown);\n\n      const updateDropdownPosition = () => {\n        if (!isOpen) {\n          return;\n        }\n        const rect = control.getBoundingClientRect();\n        dropdown.style.top = `${rect.bottom + 6}px`;\n        dropdown.style.left = `${rect.left}px`;\n        dropdown.style.width = `${rect.width}px`;\n      };\n\n      const setOpen = next => {\n        if (isDisabled()) {\n          isOpen = false;\n        } else {\n          isOpen = !!next;\n        }\n        container.classList.toggle(\"is-open\", isOpen);\n        dropdown.style.display = isOpen ? \"block\" : \"none\";\n        if (isOpen) {\n          updateDropdownPosition();\n        }\n      };\n\n      const updateDisabledState = () => {\n        const disabled = isDisabled();\n        input.disabled = disabled;\n        control.classList.toggle(\"is-disabled\", disabled);\n      };\n\n      const updateHiddenState = () => {\n        container.style.display = isHidden() ? \"none\" : \"\";\n      };\n\n      const syncInputWithValue = () => {\n        const value = model.get(\"value\") || \"\";\n        lastCommittedValue = value;\n        if (!isEditing) {\n          input.value = value;\n        }\n      };\n\n      const filterChoices = query => {\n        const normalizedQuery = normalize(query);\n        const allChoices = getChoices();\n        if (!normalizedQuery) {\n          return allChoices;\n        }\n        return allChoices.filter(choice =>\n          normalize(choice).includes(normalizedQuery)\n        );\n      };\n\n      const renderList = () => {\n        list.innerHTML = \"\";\n        filteredChoices.forEach(choice => {\n          const option = document.createElement(\"button\");\n          option.type = \"button\";\n          option.classList.add(\"mljar-select-option\");\n          if (choice === model.get(\"value\")) {\n            option.classList.add(\"is-selected\");\n          }\n          option.textContent = choice;\n          option.addEventListener(\"mousedown\", event => {\n            event.preventDefault();\n            event.stopPropagation();\n            model.set(\"value\", choice);\n            model.save_changes();\n            isEditing = false;\n            syncInputWithValue();\n            renderList();\n            setOpen(false);\n          });\n          list.appendChild(option);\n        });\n\n        const hasMatches = filteredChoices.length > 0;\n        list.style.display = hasMatches ? \"block\" : \"none\";\n        emptyState.style.display = hasMatches ? \"none\" : \"block\";\n      };\n\n      const refreshList = () => {\n        filteredChoices = filterChoices(input.value);\n        renderList();\n      };\n\n      const openWithCurrentQuery = () => {\n        isEditing = true;\n        input.value = \"\";\n        refreshList();\n        setOpen(true);\n      };\n\n      const closeDropdown = () => {\n        isEditing = false;\n        setOpen(false);\n        input.value = lastCommittedValue;\n      };\n\n      control.addEventListener(\"click\", event => {\n        event.stopPropagation();\n        if (isDisabled()) {\n          return;\n        }\n        if (event.target === caret && isOpen) {\n          closeDropdown();\n          input.blur();\n          return;\n        }\n        openWithCurrentQuery();\n        input.focus();\n      });\n\n      input.addEventListener(\"input\", () => {\n        if (isDisabled()) {\n          return;\n        }\n        refreshList();\n        setOpen(true);\n      });\n\n      input.addEventListener(\"focus\", () => {\n        if (isDisabled()) {\n          return;\n        }\n        openWithCurrentQuery();\n      });\n\n      input.addEventListener(\"blur\", () => {\n        isEditing = false;\n        input.value = lastCommittedValue;\n      });\n\n      const handleDocumentClick = event => {\n        if (!container.contains(event.target) && !dropdown.contains(event.target)) {\n          closeDropdown();\n        }\n      };\n\n      document.addEventListener(\"click\", handleDocumentClick);\n      window.addEventListener(\"resize\", updateDropdownPosition);\n      document.addEventListener(\"scroll\", updateDropdownPosition, true);\n\n      model.on(\"change:value\", () => {\n        syncInputWithValue();\n        refreshList();\n      });\n\n      model.on(\"change:choices\", () => {\n        const choices = getChoices();\n        if (!choices.includes(model.get(\"value\")) && choices.length > 0) {\n          model.set(\"value\", choices[0]);\n          model.save_changes();\n          return;\n        }\n        syncInputWithValue();\n        refreshList();\n      });\n\n      model.on(\"change:disabled\", () => {\n        updateDisabledState();\n        if (isDisabled()) {\n          closeDropdown();\n        }\n      });\n\n      model.on(\"change:hidden\", () => {\n        updateHiddenState();\n      });\n\n      updateDisabledState();\n      updateHiddenState();\n      syncInputWithValue();\n      refreshList();\n      setOpen(false);\n\n      return () => {\n        dropdown.remove();\n        document.removeEventListener(\"click\", handleDocumentClick);\n        window.removeEventListener(\"resize\", updateDropdownPosition);\n        document.removeEventListener(\"scroll\", updateDropdownPosition, true);\n      };\n    }\n    export default { render };\n    ",
       "_model_module": "anywidget",
       "_model_module_version": "~0.11.*",
       "_model_name": "AnyModel",
       "_view_count": null,
       "_view_module": "anywidget",
       "_view_module_version": "~0.11.*",
       "_view_name": "AnyView",
       "cell_id": "",
       "choices": [
        "Not started",
        "In progress",
        "Complete",
        "Skipped"
       ],
       "disabled": false,
       "hidden": false,
       "label": "CX Strategy — status",
       "layout": "IPY_MODEL_33591c514cf243208a28c314bf94830b",
       "layout_path": null,
       "position": "sidebar",
       "render_slot_id": null,
       "source_cell_id": null,
       "tabbable": null,
       "tooltip": null,
       "url_key": "",
       "value": "Not started"
      }
     },
     "8f60dbda5b484579940066e5b0fd26ee": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "96a376557a5449c884051ab62d2a28f0": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "a1654c12728e4d2f876a557dbf9da8c1": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "a250beba66ae4e149f0daa8c353627c7": {
      "model_module": "anywidget",
      "model_module_version": "~0.11.*",
      "model_name": "AnyModel",
      "state": {
       "_anywidget_id": "mercury.text.TextInputWidget",
       "_css": "\n    .mljar-textinput-container {\n      display: flex;\n      flex-direction: column;\n      align-items: flex-start;\n      width: 100%;\n      min-width: 120px;\n      font-family: ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;\n      font-size: 14px;\n      font-weight: normal;\n      color: #0f172a;\n      padding-left: 4px;\n      padding-right: 4px;\n      box-sizing: border-box;\n    }\n\n    .mljar-textinput-top-label {\n      padding-top: 6px;\n      margin-bottom: 6px;\n      text-align: left;\n      width: 100%;\n      font-weight: 600;\n    }\n\n    .mljar-textinput-input {\n      width: 100%;\n      min-height: 40px;\n      padding: 9px 10px;\n      box-sizing: border-box;\n      border: 1px solid #cfd1d5;\n      border-radius: 6px;\n      background: #ffffff;\n      color: #0f172a;\n      line-height: 1.4;\n\n      appearance: none !important;\n      background-color: #ffffff !important;\n    }\n\n    .mljar-textinput-input:focus {\n      outline: none;\n      border-color: #007bff;\n      box-shadow: none;\n    }\n\n    .mljar-textinput-input:disabled {\n      background: #f5f5f5;\n      color: #888;\n      cursor: not-allowed;\n    }\n\n    @media (max-width: 768px) {\n      .mljar-textinput-input {\n        min-height: 44px;\n        padding: 10px 12px;\n      }\n    }\n    ",
       "_dom_classes": [],
       "_esm": "\n    function render({ model, el }) {\n      const container = document.createElement(\"div\");\n      container.classList.add(\"mljar-textinput-container\");\n\n      const topLabel = document.createElement(\"div\");\n      topLabel.classList.add(\"mljar-textinput-top-label\");\n\n      const input = document.createElement(\"input\");\n      input.type = \"text\";\n      input.classList.add(\"mljar-textinput-input\");\n\n      container.appendChild(topLabel);\n      container.appendChild(input);\n      el.appendChild(container);\n\n      let debounceTimer = null;\n\n      input.addEventListener(\"input\", () => {\n        if (model.get(\"disabled\")) return;\n        model.set(\"value\", input.value);\n        if (debounceTimer) clearTimeout(debounceTimer);\n        debounceTimer = setTimeout(() => model.save_changes(), 200);\n      });\n\n      function syncFromModel() {\n        topLabel.innerHTML = model.get(\"label\") || \"Enter text\";\n        input.value = model.get(\"value\") ?? \"\";\n\n        const disabled = !!model.get(\"disabled\");\n        input.disabled = disabled;\n\n        const hidden = !!model.get(\"hidden\");\n        container.style.display = hidden ? \"none\" : \"flex\";\n      }\n\n      model.on(\"change:value\", syncFromModel);\n      model.on(\"change:label\", syncFromModel);\n      model.on(\"change:disabled\", syncFromModel);\n      model.on(\"change:hidden\", syncFromModel);\n\n      syncFromModel();\n\n      /*\n      // ---- read cell id (no DOM modifications) ----\n      const ID_ATTR = \"data-cell-id\";\n      const hostWithId = el.closest(`[${ID_ATTR}]`);\n      const cellId = hostWithId ? hostWithId.getAttribute(ID_ATTR) : null;\n\n      if (cellId) {\n        model.set(\"cell_id\", cellId);\n        model.save_changes();\n        model.send({ type: \"cell_id_detected\", value: cellId });\n      } else {\n        const mo = new MutationObserver(() => {\n          const host = el.closest(`[${ID_ATTR}]`);\n          const newId = host?.getAttribute(ID_ATTR);\n          if (newId) {\n            model.set(\"cell_id\", newId);\n            model.save_changes();\n            model.send({ type: \"cell_id_detected\", value: newId });\n            mo.disconnect();\n          }\n        });\n        mo.observe(document.body, { attributes: true, subtree: true, attributeFilter: [ID_ATTR] });\n      }\n      */\n    }\n    export default { render };\n    ",
       "_model_module": "anywidget",
       "_model_module_version": "~0.11.*",
       "_model_name": "AnyModel",
       "_view_count": null,
       "_view_module": "anywidget",
       "_view_module_version": "~0.11.*",
       "_view_name": "AnyView",
       "cell_id": "",
       "disabled": false,
       "hidden": false,
       "label": "Routing & Automation — notes",
       "layout": "IPY_MODEL_43656bba585e4b8c86168b6eeaea3530",
       "layout_path": null,
       "position": "sidebar",
       "render_slot_id": null,
       "source_cell_id": null,
       "tabbable": null,
       "tooltip": null,
       "url_key": "",
       "value": ""
      }
     },
     "a3819a7c608e439d970efe9652597785": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "a6520b5d0ea3476da951c3f026ef46ee": {
      "model_module": "anywidget",
      "model_module_version": "~0.11.*",
      "model_name": "AnyModel",
      "state": {
       "_anywidget_id": "mercury.select.SelectWidget",
       "_css": "\n    .mljar-select-container {\n      position: relative;\n      display: flex;\n      flex-direction: column;\n      font-family: ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;\n      font-size: 14px;\n      color: #0f172a;\n      padding-left: 4px;\n      padding-right: 4px;\n      overflow: visible;\n    }\n\n    .mljar-select-label {\n      padding-top: 6px;\n      margin-bottom: 4px;\n      font-weight: 600;\n    }\n\n    .mljar-select-control {\n      position: relative;\n      display: flex;\n      align-items: center;\n      cursor: default;\n      overflow: visible;\n    }\n\n    .mljar-select-container.is-open {\n      z-index: 20;\n    }\n\n    .mljar-select-widget-input {\n      width: 100%;\n      min-height: 40px;\n      padding: 9px 36px 9px 10px;\n      border: 1px solid #cfd1d5;\n      border-radius: 6px;\n      background: #ffffff;\n      box-sizing: border-box;\n      line-height: 1.4;\n      transition: border-color 0.15s ease, box-shadow 0.15s ease;\n\n      appearance: none !important;\n      background-color: #ffffff !important;\n      color: #0f172a !important;\n      cursor: default;\n    }\n\n    .mljar-select-widget-input:focus {\n      outline: none;\n      border-color: #007bff;\n      box-shadow: none;\n      cursor: text;\n    }\n\n    .mljar-select-caret {\n      position: absolute;\n      right: 12px;\n      top: 50%;\n      width: 8px;\n      height: 8px;\n      border-right: 1.5px solid #0f172a;\n      border-bottom: 1.5px solid #0f172a;\n      transform: translateY(-65%) rotate(45deg);\n      pointer-events: auto;\n      opacity: 0.5;\n      transition: transform 0.18s ease, opacity 0.18s ease;\n    }\n\n    .mljar-select-container.is-open .mljar-select-caret {\n      opacity: 1;\n      transform: translateY(-35%) rotate(225deg);\n    }\n\n    .mljar-select-dropdown {\n      display: none;\n      position: fixed;\n      z-index: 10000;\n      border: 1px solid #cfd1d5;\n      border-radius: 6px;\n      background: #ffffff;\n      box-shadow: 0 8px 24px rgba(15, 23, 42, 0.12);\n      overflow: hidden;\n    }\n\n    .mljar-select-list {\n      max-height: 260px;\n      overflow-y: auto;\n    }\n\n    .mljar-select-option {\n      display: block;\n      width: 100%;\n      padding: 9px 10px;\n      border: 0;\n      background: transparent;\n      color: #0f172a;\n      text-align: left;\n      cursor: pointer;\n      font: inherit;\n      transition: background-color 0.14s ease, color 0.14s ease;\n    }\n\n    .mljar-select-option:hover {\n      background: #f3f3f4;\n    }\n\n    .mljar-select-option:active {\n      background: #e6f2ff;\n      color: #007bff;\n    }\n\n    .mljar-select-option.is-selected {\n      background: #e6f2ff;\n      color: #007bff;\n      font-weight: 600;\n    }\n\n    .mljar-select-option.is-selected:hover,\n    .mljar-select-option.is-selected:active {\n      background: #e6f2ff;\n      color: #007bff;\n    }\n\n    .mljar-select-empty {\n      display: none;\n      padding: 10px;\n      color: #616673;\n      font-size: 0.95em;\n    }\n\n    .mljar-select-widget-input:disabled {\n      background: #f5f5f5;\n      color: #888;\n      cursor: not-allowed;\n    }\n\n    .mljar-select-control.is-disabled .mljar-select-caret {\n      opacity: 0.45;\n    }\n    ",
       "_dom_classes": [],
       "_esm": "\n    function render({ model, el }) {\n      const normalize = value => String(value ?? \"\").toLowerCase().trim();\n      const getChoices = () =>\n        Array.isArray(model.get(\"choices\")) ? [...model.get(\"choices\")] : [];\n      const isDisabled = () => !!model.get(\"disabled\");\n      const isHidden = () => !!model.get(\"hidden\");\n\n      const container = document.createElement(\"div\");\n      container.classList.add(\"mljar-select-container\");\n\n      if (model.get(\"label\")) {\n        const topLabel = document.createElement(\"div\");\n        topLabel.classList.add(\"mljar-select-label\");\n        topLabel.innerHTML = model.get(\"label\");\n        container.appendChild(topLabel);\n      }\n\n      const control = document.createElement(\"div\");\n      control.classList.add(\"mljar-select-control\");\n\n      const input = document.createElement(\"input\");\n      input.type = \"text\";\n      input.classList.add(\"mljar-select-widget-input\");\n      input.autocomplete = \"off\";\n      input.spellcheck = false;\n\n      const caret = document.createElement(\"div\");\n      caret.classList.add(\"mljar-select-caret\");\n\n      control.appendChild(input);\n      control.appendChild(caret);\n\n      const dropdown = document.createElement(\"div\");\n      dropdown.classList.add(\"mljar-select-dropdown\");\n\n      const list = document.createElement(\"div\");\n      list.classList.add(\"mljar-select-list\");\n\n      const emptyState = document.createElement(\"div\");\n      emptyState.classList.add(\"mljar-select-empty\");\n      emptyState.textContent = \"No matches\";\n\n      dropdown.appendChild(list);\n      dropdown.appendChild(emptyState);\n\n      container.appendChild(control);\n      el.appendChild(container);\n\n      let isOpen = false;\n      let filteredChoices = [];\n      let lastCommittedValue = \"\";\n      let isEditing = false;\n      document.body.appendChild(dropdown);\n\n      const updateDropdownPosition = () => {\n        if (!isOpen) {\n          return;\n        }\n        const rect = control.getBoundingClientRect();\n        dropdown.style.top = `${rect.bottom + 6}px`;\n        dropdown.style.left = `${rect.left}px`;\n        dropdown.style.width = `${rect.width}px`;\n      };\n\n      const setOpen = next => {\n        if (isDisabled()) {\n          isOpen = false;\n        } else {\n          isOpen = !!next;\n        }\n        container.classList.toggle(\"is-open\", isOpen);\n        dropdown.style.display = isOpen ? \"block\" : \"none\";\n        if (isOpen) {\n          updateDropdownPosition();\n        }\n      };\n\n      const updateDisabledState = () => {\n        const disabled = isDisabled();\n        input.disabled = disabled;\n        control.classList.toggle(\"is-disabled\", disabled);\n      };\n\n      const updateHiddenState = () => {\n        container.style.display = isHidden() ? \"none\" : \"\";\n      };\n\n      const syncInputWithValue = () => {\n        const value = model.get(\"value\") || \"\";\n        lastCommittedValue = value;\n        if (!isEditing) {\n          input.value = value;\n        }\n      };\n\n      const filterChoices = query => {\n        const normalizedQuery = normalize(query);\n        const allChoices = getChoices();\n        if (!normalizedQuery) {\n          return allChoices;\n        }\n        return allChoices.filter(choice =>\n          normalize(choice).includes(normalizedQuery)\n        );\n      };\n\n      const renderList = () => {\n        list.innerHTML = \"\";\n        filteredChoices.forEach(choice => {\n          const option = document.createElement(\"button\");\n          option.type = \"button\";\n          option.classList.add(\"mljar-select-option\");\n          if (choice === model.get(\"value\")) {\n            option.classList.add(\"is-selected\");\n          }\n          option.textContent = choice;\n          option.addEventListener(\"mousedown\", event => {\n            event.preventDefault();\n            event.stopPropagation();\n            model.set(\"value\", choice);\n            model.save_changes();\n            isEditing = false;\n            syncInputWithValue();\n            renderList();\n            setOpen(false);\n          });\n          list.appendChild(option);\n        });\n\n        const hasMatches = filteredChoices.length > 0;\n        list.style.display = hasMatches ? \"block\" : \"none\";\n        emptyState.style.display = hasMatches ? \"none\" : \"block\";\n      };\n\n      const refreshList = () => {\n        filteredChoices = filterChoices(input.value);\n        renderList();\n      };\n\n      const openWithCurrentQuery = () => {\n        isEditing = true;\n        input.value = \"\";\n        refreshList();\n        setOpen(true);\n      };\n\n      const closeDropdown = () => {\n        isEditing = false;\n        setOpen(false);\n        input.value = lastCommittedValue;\n      };\n\n      control.addEventListener(\"click\", event => {\n        event.stopPropagation();\n        if (isDisabled()) {\n          return;\n        }\n        if (event.target === caret && isOpen) {\n          closeDropdown();\n          input.blur();\n          return;\n        }\n        openWithCurrentQuery();\n        input.focus();\n      });\n\n      input.addEventListener(\"input\", () => {\n        if (isDisabled()) {\n          return;\n        }\n        refreshList();\n        setOpen(true);\n      });\n\n      input.addEventListener(\"focus\", () => {\n        if (isDisabled()) {\n          return;\n        }\n        openWithCurrentQuery();\n      });\n\n      input.addEventListener(\"blur\", () => {\n        isEditing = false;\n        input.value = lastCommittedValue;\n      });\n\n      const handleDocumentClick = event => {\n        if (!container.contains(event.target) && !dropdown.contains(event.target)) {\n          closeDropdown();\n        }\n      };\n\n      document.addEventListener(\"click\", handleDocumentClick);\n      window.addEventListener(\"resize\", updateDropdownPosition);\n      document.addEventListener(\"scroll\", updateDropdownPosition, true);\n\n      model.on(\"change:value\", () => {\n        syncInputWithValue();\n        refreshList();\n      });\n\n      model.on(\"change:choices\", () => {\n        const choices = getChoices();\n        if (!choices.includes(model.get(\"value\")) && choices.length > 0) {\n          model.set(\"value\", choices[0]);\n          model.save_changes();\n          return;\n        }\n        syncInputWithValue();\n        refreshList();\n      });\n\n      model.on(\"change:disabled\", () => {\n        updateDisabledState();\n        if (isDisabled()) {\n          closeDropdown();\n        }\n      });\n\n      model.on(\"change:hidden\", () => {\n        updateHiddenState();\n      });\n\n      updateDisabledState();\n      updateHiddenState();\n      syncInputWithValue();\n      refreshList();\n      setOpen(false);\n\n      return () => {\n        dropdown.remove();\n        document.removeEventListener(\"click\", handleDocumentClick);\n        window.removeEventListener(\"resize\", updateDropdownPosition);\n        document.removeEventListener(\"scroll\", updateDropdownPosition, true);\n      };\n    }\n    export default { render };\n    ",
       "_model_module": "anywidget",
       "_model_module_version": "~0.11.*",
       "_model_name": "AnyModel",
       "_view_count": null,
       "_view_module": "anywidget",
       "_view_module_version": "~0.11.*",
       "_view_name": "AnyView",
       "cell_id": "",
       "choices": [
        "Not started",
        "In progress",
        "Complete",
        "Skipped"
       ],
       "disabled": false,
       "hidden": false,
       "label": "Background & Organization — status",
       "layout": "IPY_MODEL_de23955c5f1e4ba9b1d793f97035e0ea",
       "layout_path": null,
       "position": "sidebar",
       "render_slot_id": null,
       "source_cell_id": null,
       "tabbable": null,
       "tooltip": null,
       "url_key": "",
       "value": "Not started"
      }
     },
     "a6f992632c2d4739916ddf5c15b7a0f0": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "a9d54509526c4ed59e7951e0f1a9e461": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "aa0972e2e60b481d8f7746be441641e0": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "adda56336c1649e6a9eb361c9be70fff": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "af6a4133d4f5443d9906ec19d6a5a322": {
      "model_module": "anywidget",
      "model_module_version": "~0.11.*",
      "model_name": "AnyModel",
      "state": {
       "_anywidget_id": "mercury.checkbox.CheckboxWidget",
       "_css": "\n    .mljar-checkbox-container {\n        display: inline-flex;\n        align-items: center;\n        gap: 10px;\n        cursor: pointer;\n        user-select: none;\n        -webkit-tap-highlight-color: transparent;\n        font-family: ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;\n        color: #0f172a;\n        padding-left: 5px;\n    }\n    .mljar-checkbox-container.is-disabled {\n        opacity: 0.6;\n        cursor: not-allowed;\n    }\n\n    .mljar-checkbox-input {\n        position: absolute;\n        opacity: 0;\n        width: 0;\n        height: 0;\n    }\n\n    .mljar-checkbox-input:focus-visible + .mljar-checkbox-control {\n        box-shadow: inset 0 0 0 2px #007bff;\n    }\n\n    .mljar-checkbox-label {\n        font-size: 14px;\n        line-height: 1.2;\n        padding-top: 2px;\n    }\n\n    /* --- Toggle style (15% smaller) --- */\n    .mljar-checkbox-container.is-toggle .mljar-checkbox-control {\n        position: relative;\n        width: 34px;\n        height: 19px;\n        border-radius: 999px;\n        background: #f1f1f2;\n        border: 1px solid #cfd1d5;\n        transition: background 150ms ease, border-color 150ms ease;\n    }\n    .mljar-checkbox-container.is-toggle.is-checked .mljar-checkbox-control {\n        background: #007bff;\n        border-color: #007bff;\n    }\n    .mljar-checkbox-container.is-toggle .mljar-checkbox-control::after {\n        content: \"\";\n        position: absolute;\n        top: 2px;\n        left: 2px;\n        width: 15px;\n        height: 15px;\n        border-radius: 50%;\n        background: #ffffff;\n        box-shadow: 0 1px 2px rgba(0,0,0,0.12), 0 0 0 1px rgba(0,0,0,0.04);\n        transition: transform 150ms ease;\n    }\n    .mljar-checkbox-container.is-toggle.is-checked .mljar-checkbox-control::after {\n        transform: translateX(15px);\n    }\n\n    /* --- Classic box style --- */\n    .mljar-checkbox-container.is-box .mljar-checkbox-control {\n        width: 16px;\n        height: 16px;\n        border-radius: 4px;\n        border: 1px solid #cfd1d5;\n        background: #ffffff;\n        display: inline-block;\n        position: relative;\n    }\n    .mljar-checkbox-container.is-box.is-checked .mljar-checkbox-control {\n        border-color: #007bff;\n        background: #007bff;\n    }\n    .mljar-checkbox-container.is-box.is-checked .mljar-checkbox-control::after {\n        content: \"\";\n        position: absolute;\n        left: 4px;\n        top: 0px;\n        width: 5px;\n        height: 10px;\n        border: solid #fff;\n        border-width: 0 2px 2px 0;\n        transform: rotate(45deg);\n    }\n\n    .mljar-checkbox-container:not(.is-disabled):hover .mljar-checkbox-control {\n        border-color: #007bff;\n        background: #f3f3f4;\n    }\n    ",
       "_dom_classes": [],
       "_esm": "\n    function render({ model, el }) {\n      const container = document.createElement(\"label\");\n      container.classList.add(\"mljar-checkbox-container\");\n\n      const input = document.createElement(\"input\");\n      input.type = \"checkbox\";\n      input.classList.add(\"mljar-checkbox-input\");\n\n      const control = document.createElement(\"span\");\n      control.classList.add(\"mljar-checkbox-control\");\n\n      const text = document.createElement(\"span\");\n      text.classList.add(\"mljar-checkbox-label\");\n\n      container.appendChild(input);\n      container.appendChild(control);\n      container.appendChild(text);\n      el.appendChild(container);\n\n      function syncFromModel() {\n        // appearance\n        const a = model.get(\"appearance\") || \"toggle\";\n        container.classList.remove(\"is-toggle\",\"is-box\");\n        container.classList.add(`is-${a}`);\n        input.setAttribute(\"role\", a === \"toggle\" ? \"switch\" : \"checkbox\");\n\n        // value\n        const v = !!model.get(\"value\");\n        if (input.checked !== v) {\n          input.checked = v;\n          input.setAttribute(\"aria-checked\", String(v));\n        }\n        container.classList.toggle(\"is-checked\", v);\n\n        // disabled\n        const d = !!model.get(\"disabled\");\n        input.disabled = d;\n        container.classList.toggle(\"is-disabled\", d);\n\n        // label\n        text.textContent = model.get(\"label\") || \"\";\n\n        // hidden (exists but not visible)\n        container.style.display = model.get(\"hidden\") ? \"none\" : \"inline-flex\";\n      }\n\n      input.addEventListener(\"change\", () => {\n        if (model.get(\"disabled\")) return;\n\n        const v = input.checked;\n        if (model.get(\"value\") !== v) {\n          model.set(\"value\", v);\n          model.set(\"last_changed_at\", new Date().toISOString());\n          model.set(\"n_toggles\", (model.get(\"n_toggles\") || 0) + 1);\n          model.save_changes();\n          // model.send({ type: \"changed\", value: v });\n        }\n      });\n\n      model.on(\"change:value\", syncFromModel);\n      model.on(\"change:disabled\", syncFromModel);\n      model.on(\"change:appearance\", syncFromModel);\n      model.on(\"change:label\", syncFromModel);\n      model.on(\"change:hidden\", syncFromModel);\n\n      syncFromModel();\n\n      // ---- read cell id (no DOM modifications) ----\n      /*\n      const ID_ATTR = \"data-cell-id\";\n      const hostWithId = el.closest(`[${ID_ATTR}]`);\n      const cellId = hostWithId ? hostWithId.getAttribute(ID_ATTR) : null;\n\n      if (cellId) {\n        model.set(\"cell_id\", cellId);\n        model.save_changes();\n        model.send({ type: \"cell_id_detected\", value: cellId });\n      } else {\n        const mo = new MutationObserver(() => {\n          const host = el.closest(`[${ID_ATTR}]`);\n          const newId = host?.getAttribute(ID_ATTR);\n          \n          if (newId) {\n            model.set(\"cell_id\", newId);\n            model.save_changes();\n            model.send({ type: \"cell_id_detected\", value: newId });\n            mo.disconnect();\n          }\n        });\n        mo.observe(document.body, { attributes: true, subtree: true, attributeFilter: [ID_ATTR] });\n      }\n      */\n    }\n    export default { render };\n    ",
       "_model_module": "anywidget",
       "_model_module_version": "~0.11.*",
       "_model_name": "AnyModel",
       "_view_count": null,
       "_view_module": "anywidget",
       "_view_module_version": "~0.11.*",
       "_view_name": "AnyView",
       "appearance": "box",
       "cell_id": "",
       "disabled": false,
       "hidden": false,
       "label": "CX Strategy: Continuous improvement",
       "last_changed_at": "",
       "layout": "IPY_MODEL_a9d54509526c4ed59e7951e0f1a9e461",
       "layout_path": null,
       "n_toggles": 0,
       "position": "sidebar",
       "render_slot_id": null,
       "source_cell_id": null,
       "tabbable": null,
       "tooltip": null,
       "url_key": "",
       "value": false
      }
     },
     "b1181ef7440a47a7916b4367d2e912aa": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "2.0.0",
      "model_name": "HTMLStyleModel",
      "state": {
       "_model_module": "@jupyter-widgets/controls",
       "_model_module_version": "2.0.0",
       "_model_name": "HTMLStyleModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "StyleView",
       "background": null,
       "description_width": "",
       "font_size": null,
       "text_color": null
      }
     },
     "b1d02643012c4444b6cf899feb8d1fef": {
      "model_module": "anywidget",
      "model_module_version": "~0.11.*",
      "model_name": "AnyModel",
      "state": {
       "_anywidget_id": "mercury.checkbox.CheckboxWidget",
       "_css": "\n    .mljar-checkbox-container {\n        display: inline-flex;\n        align-items: center;\n        gap: 10px;\n        cursor: pointer;\n        user-select: none;\n        -webkit-tap-highlight-color: transparent;\n        font-family: ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;\n        color: #0f172a;\n        padding-left: 5px;\n    }\n    .mljar-checkbox-container.is-disabled {\n        opacity: 0.6;\n        cursor: not-allowed;\n    }\n\n    .mljar-checkbox-input {\n        position: absolute;\n        opacity: 0;\n        width: 0;\n        height: 0;\n    }\n\n    .mljar-checkbox-input:focus-visible + .mljar-checkbox-control {\n        box-shadow: inset 0 0 0 2px #007bff;\n    }\n\n    .mljar-checkbox-label {\n        font-size: 14px;\n        line-height: 1.2;\n        padding-top: 2px;\n    }\n\n    /* --- Toggle style (15% smaller) --- */\n    .mljar-checkbox-container.is-toggle .mljar-checkbox-control {\n        position: relative;\n        width: 34px;\n        height: 19px;\n        border-radius: 999px;\n        background: #f1f1f2;\n        border: 1px solid #cfd1d5;\n        transition: background 150ms ease, border-color 150ms ease;\n    }\n    .mljar-checkbox-container.is-toggle.is-checked .mljar-checkbox-control {\n        background: #007bff;\n        border-color: #007bff;\n    }\n    .mljar-checkbox-container.is-toggle .mljar-checkbox-control::after {\n        content: \"\";\n        position: absolute;\n        top: 2px;\n        left: 2px;\n        width: 15px;\n        height: 15px;\n        border-radius: 50%;\n        background: #ffffff;\n        box-shadow: 0 1px 2px rgba(0,0,0,0.12), 0 0 0 1px rgba(0,0,0,0.04);\n        transition: transform 150ms ease;\n    }\n    .mljar-checkbox-container.is-toggle.is-checked .mljar-checkbox-control::after {\n        transform: translateX(15px);\n    }\n\n    /* --- Classic box style --- */\n    .mljar-checkbox-container.is-box .mljar-checkbox-control {\n        width: 16px;\n        height: 16px;\n        border-radius: 4px;\n        border: 1px solid #cfd1d5;\n        background: #ffffff;\n        display: inline-block;\n        position: relative;\n    }\n    .mljar-checkbox-container.is-box.is-checked .mljar-checkbox-control {\n        border-color: #007bff;\n        background: #007bff;\n    }\n    .mljar-checkbox-container.is-box.is-checked .mljar-checkbox-control::after {\n        content: \"\";\n        position: absolute;\n        left: 4px;\n        top: 0px;\n        width: 5px;\n        height: 10px;\n        border: solid #fff;\n        border-width: 0 2px 2px 0;\n        transform: rotate(45deg);\n    }\n\n    .mljar-checkbox-container:not(.is-disabled):hover .mljar-checkbox-control {\n        border-color: #007bff;\n        background: #f3f3f4;\n    }\n    ",
       "_dom_classes": [],
       "_esm": "\n    function render({ model, el }) {\n      const container = document.createElement(\"label\");\n      container.classList.add(\"mljar-checkbox-container\");\n\n      const input = document.createElement(\"input\");\n      input.type = \"checkbox\";\n      input.classList.add(\"mljar-checkbox-input\");\n\n      const control = document.createElement(\"span\");\n      control.classList.add(\"mljar-checkbox-control\");\n\n      const text = document.createElement(\"span\");\n      text.classList.add(\"mljar-checkbox-label\");\n\n      container.appendChild(input);\n      container.appendChild(control);\n      container.appendChild(text);\n      el.appendChild(container);\n\n      function syncFromModel() {\n        // appearance\n        const a = model.get(\"appearance\") || \"toggle\";\n        container.classList.remove(\"is-toggle\",\"is-box\");\n        container.classList.add(`is-${a}`);\n        input.setAttribute(\"role\", a === \"toggle\" ? \"switch\" : \"checkbox\");\n\n        // value\n        const v = !!model.get(\"value\");\n        if (input.checked !== v) {\n          input.checked = v;\n          input.setAttribute(\"aria-checked\", String(v));\n        }\n        container.classList.toggle(\"is-checked\", v);\n\n        // disabled\n        const d = !!model.get(\"disabled\");\n        input.disabled = d;\n        container.classList.toggle(\"is-disabled\", d);\n\n        // label\n        text.textContent = model.get(\"label\") || \"\";\n\n        // hidden (exists but not visible)\n        container.style.display = model.get(\"hidden\") ? \"none\" : \"inline-flex\";\n      }\n\n      input.addEventListener(\"change\", () => {\n        if (model.get(\"disabled\")) return;\n\n        const v = input.checked;\n        if (model.get(\"value\") !== v) {\n          model.set(\"value\", v);\n          model.set(\"last_changed_at\", new Date().toISOString());\n          model.set(\"n_toggles\", (model.get(\"n_toggles\") || 0) + 1);\n          model.save_changes();\n          // model.send({ type: \"changed\", value: v });\n        }\n      });\n\n      model.on(\"change:value\", syncFromModel);\n      model.on(\"change:disabled\", syncFromModel);\n      model.on(\"change:appearance\", syncFromModel);\n      model.on(\"change:label\", syncFromModel);\n      model.on(\"change:hidden\", syncFromModel);\n\n      syncFromModel();\n\n      // ---- read cell id (no DOM modifications) ----\n      /*\n      const ID_ATTR = \"data-cell-id\";\n      const hostWithId = el.closest(`[${ID_ATTR}]`);\n      const cellId = hostWithId ? hostWithId.getAttribute(ID_ATTR) : null;\n\n      if (cellId) {\n        model.set(\"cell_id\", cellId);\n        model.save_changes();\n        model.send({ type: \"cell_id_detected\", value: cellId });\n      } else {\n        const mo = new MutationObserver(() => {\n          const host = el.closest(`[${ID_ATTR}]`);\n          const newId = host?.getAttribute(ID_ATTR);\n          \n          if (newId) {\n            model.set(\"cell_id\", newId);\n            model.save_changes();\n            model.send({ type: \"cell_id_detected\", value: newId });\n            mo.disconnect();\n          }\n        });\n        mo.observe(document.body, { attributes: true, subtree: true, attributeFilter: [ID_ATTR] });\n      }\n      */\n    }\n    export default { render };\n    ",
       "_model_module": "anywidget",
       "_model_module_version": "~0.11.*",
       "_model_name": "AnyModel",
       "_view_count": null,
       "_view_module": "anywidget",
       "_view_module_version": "~0.11.*",
       "_view_name": "AnyView",
       "appearance": "box",
       "cell_id": "",
       "disabled": false,
       "hidden": false,
       "label": "Channels: Inbound contact reasons",
       "last_changed_at": "",
       "layout": "IPY_MODEL_42d5286c049140cba0bbcd5ffbba2359",
       "layout_path": null,
       "n_toggles": 0,
       "position": "sidebar",
       "render_slot_id": null,
       "source_cell_id": null,
       "tabbable": null,
       "tooltip": null,
       "url_key": "",
       "value": false
      }
     },
     "b568a0ea3a574d71b72e8095ed2b92e2": {
      "model_module": "anywidget",
      "model_module_version": "~0.11.*",
      "model_name": "AnyModel",
      "state": {
       "_anywidget_id": "mercury.select.SelectWidget",
       "_css": "\n    .mljar-select-container {\n      position: relative;\n      display: flex;\n      flex-direction: column;\n      font-family: ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;\n      font-size: 14px;\n      color: #0f172a;\n      padding-left: 4px;\n      padding-right: 4px;\n      overflow: visible;\n    }\n\n    .mljar-select-label {\n      padding-top: 6px;\n      margin-bottom: 4px;\n      font-weight: 600;\n    }\n\n    .mljar-select-control {\n      position: relative;\n      display: flex;\n      align-items: center;\n      cursor: default;\n      overflow: visible;\n    }\n\n    .mljar-select-container.is-open {\n      z-index: 20;\n    }\n\n    .mljar-select-widget-input {\n      width: 100%;\n      min-height: 40px;\n      padding: 9px 36px 9px 10px;\n      border: 1px solid #cfd1d5;\n      border-radius: 6px;\n      background: #ffffff;\n      box-sizing: border-box;\n      line-height: 1.4;\n      transition: border-color 0.15s ease, box-shadow 0.15s ease;\n\n      appearance: none !important;\n      background-color: #ffffff !important;\n      color: #0f172a !important;\n      cursor: default;\n    }\n\n    .mljar-select-widget-input:focus {\n      outline: none;\n      border-color: #007bff;\n      box-shadow: none;\n      cursor: text;\n    }\n\n    .mljar-select-caret {\n      position: absolute;\n      right: 12px;\n      top: 50%;\n      width: 8px;\n      height: 8px;\n      border-right: 1.5px solid #0f172a;\n      border-bottom: 1.5px solid #0f172a;\n      transform: translateY(-65%) rotate(45deg);\n      pointer-events: auto;\n      opacity: 0.5;\n      transition: transform 0.18s ease, opacity 0.18s ease;\n    }\n\n    .mljar-select-container.is-open .mljar-select-caret {\n      opacity: 1;\n      transform: translateY(-35%) rotate(225deg);\n    }\n\n    .mljar-select-dropdown {\n      display: none;\n      position: fixed;\n      z-index: 10000;\n      border: 1px solid #cfd1d5;\n      border-radius: 6px;\n      background: #ffffff;\n      box-shadow: 0 8px 24px rgba(15, 23, 42, 0.12);\n      overflow: hidden;\n    }\n\n    .mljar-select-list {\n      max-height: 260px;\n      overflow-y: auto;\n    }\n\n    .mljar-select-option {\n      display: block;\n      width: 100%;\n      padding: 9px 10px;\n      border: 0;\n      background: transparent;\n      color: #0f172a;\n      text-align: left;\n      cursor: pointer;\n      font: inherit;\n      transition: background-color 0.14s ease, color 0.14s ease;\n    }\n\n    .mljar-select-option:hover {\n      background: #f3f3f4;\n    }\n\n    .mljar-select-option:active {\n      background: #e6f2ff;\n      color: #007bff;\n    }\n\n    .mljar-select-option.is-selected {\n      background: #e6f2ff;\n      color: #007bff;\n      font-weight: 600;\n    }\n\n    .mljar-select-option.is-selected:hover,\n    .mljar-select-option.is-selected:active {\n      background: #e6f2ff;\n      color: #007bff;\n    }\n\n    .mljar-select-empty {\n      display: none;\n      padding: 10px;\n      color: #616673;\n      font-size: 0.95em;\n    }\n\n    .mljar-select-widget-input:disabled {\n      background: #f5f5f5;\n      color: #888;\n      cursor: not-allowed;\n    }\n\n    .mljar-select-control.is-disabled .mljar-select-caret {\n      opacity: 0.45;\n    }\n    ",
       "_dom_classes": [],
       "_esm": "\n    function render({ model, el }) {\n      const normalize = value => String(value ?? \"\").toLowerCase().trim();\n      const getChoices = () =>\n        Array.isArray(model.get(\"choices\")) ? [...model.get(\"choices\")] : [];\n      const isDisabled = () => !!model.get(\"disabled\");\n      const isHidden = () => !!model.get(\"hidden\");\n\n      const container = document.createElement(\"div\");\n      container.classList.add(\"mljar-select-container\");\n\n      if (model.get(\"label\")) {\n        const topLabel = document.createElement(\"div\");\n        topLabel.classList.add(\"mljar-select-label\");\n        topLabel.innerHTML = model.get(\"label\");\n        container.appendChild(topLabel);\n      }\n\n      const control = document.createElement(\"div\");\n      control.classList.add(\"mljar-select-control\");\n\n      const input = document.createElement(\"input\");\n      input.type = \"text\";\n      input.classList.add(\"mljar-select-widget-input\");\n      input.autocomplete = \"off\";\n      input.spellcheck = false;\n\n      const caret = document.createElement(\"div\");\n      caret.classList.add(\"mljar-select-caret\");\n\n      control.appendChild(input);\n      control.appendChild(caret);\n\n      const dropdown = document.createElement(\"div\");\n      dropdown.classList.add(\"mljar-select-dropdown\");\n\n      const list = document.createElement(\"div\");\n      list.classList.add(\"mljar-select-list\");\n\n      const emptyState = document.createElement(\"div\");\n      emptyState.classList.add(\"mljar-select-empty\");\n      emptyState.textContent = \"No matches\";\n\n      dropdown.appendChild(list);\n      dropdown.appendChild(emptyState);\n\n      container.appendChild(control);\n      el.appendChild(container);\n\n      let isOpen = false;\n      let filteredChoices = [];\n      let lastCommittedValue = \"\";\n      let isEditing = false;\n      document.body.appendChild(dropdown);\n\n      const updateDropdownPosition = () => {\n        if (!isOpen) {\n          return;\n        }\n        const rect = control.getBoundingClientRect();\n        dropdown.style.top = `${rect.bottom + 6}px`;\n        dropdown.style.left = `${rect.left}px`;\n        dropdown.style.width = `${rect.width}px`;\n      };\n\n      const setOpen = next => {\n        if (isDisabled()) {\n          isOpen = false;\n        } else {\n          isOpen = !!next;\n        }\n        container.classList.toggle(\"is-open\", isOpen);\n        dropdown.style.display = isOpen ? \"block\" : \"none\";\n        if (isOpen) {\n          updateDropdownPosition();\n        }\n      };\n\n      const updateDisabledState = () => {\n        const disabled = isDisabled();\n        input.disabled = disabled;\n        control.classList.toggle(\"is-disabled\", disabled);\n      };\n\n      const updateHiddenState = () => {\n        container.style.display = isHidden() ? \"none\" : \"\";\n      };\n\n      const syncInputWithValue = () => {\n        const value = model.get(\"value\") || \"\";\n        lastCommittedValue = value;\n        if (!isEditing) {\n          input.value = value;\n        }\n      };\n\n      const filterChoices = query => {\n        const normalizedQuery = normalize(query);\n        const allChoices = getChoices();\n        if (!normalizedQuery) {\n          return allChoices;\n        }\n        return allChoices.filter(choice =>\n          normalize(choice).includes(normalizedQuery)\n        );\n      };\n\n      const renderList = () => {\n        list.innerHTML = \"\";\n        filteredChoices.forEach(choice => {\n          const option = document.createElement(\"button\");\n          option.type = \"button\";\n          option.classList.add(\"mljar-select-option\");\n          if (choice === model.get(\"value\")) {\n            option.classList.add(\"is-selected\");\n          }\n          option.textContent = choice;\n          option.addEventListener(\"mousedown\", event => {\n            event.preventDefault();\n            event.stopPropagation();\n            model.set(\"value\", choice);\n            model.save_changes();\n            isEditing = false;\n            syncInputWithValue();\n            renderList();\n            setOpen(false);\n          });\n          list.appendChild(option);\n        });\n\n        const hasMatches = filteredChoices.length > 0;\n        list.style.display = hasMatches ? \"block\" : \"none\";\n        emptyState.style.display = hasMatches ? \"none\" : \"block\";\n      };\n\n      const refreshList = () => {\n        filteredChoices = filterChoices(input.value);\n        renderList();\n      };\n\n      const openWithCurrentQuery = () => {\n        isEditing = true;\n        input.value = \"\";\n        refreshList();\n        setOpen(true);\n      };\n\n      const closeDropdown = () => {\n        isEditing = false;\n        setOpen(false);\n        input.value = lastCommittedValue;\n      };\n\n      control.addEventListener(\"click\", event => {\n        event.stopPropagation();\n        if (isDisabled()) {\n          return;\n        }\n        if (event.target === caret && isOpen) {\n          closeDropdown();\n          input.blur();\n          return;\n        }\n        openWithCurrentQuery();\n        input.focus();\n      });\n\n      input.addEventListener(\"input\", () => {\n        if (isDisabled()) {\n          return;\n        }\n        refreshList();\n        setOpen(true);\n      });\n\n      input.addEventListener(\"focus\", () => {\n        if (isDisabled()) {\n          return;\n        }\n        openWithCurrentQuery();\n      });\n\n      input.addEventListener(\"blur\", () => {\n        isEditing = false;\n        input.value = lastCommittedValue;\n      });\n\n      const handleDocumentClick = event => {\n        if (!container.contains(event.target) && !dropdown.contains(event.target)) {\n          closeDropdown();\n        }\n      };\n\n      document.addEventListener(\"click\", handleDocumentClick);\n      window.addEventListener(\"resize\", updateDropdownPosition);\n      document.addEventListener(\"scroll\", updateDropdownPosition, true);\n\n      model.on(\"change:value\", () => {\n        syncInputWithValue();\n        refreshList();\n      });\n\n      model.on(\"change:choices\", () => {\n        const choices = getChoices();\n        if (!choices.includes(model.get(\"value\")) && choices.length > 0) {\n          model.set(\"value\", choices[0]);\n          model.save_changes();\n          return;\n        }\n        syncInputWithValue();\n        refreshList();\n      });\n\n      model.on(\"change:disabled\", () => {\n        updateDisabledState();\n        if (isDisabled()) {\n          closeDropdown();\n        }\n      });\n\n      model.on(\"change:hidden\", () => {\n        updateHiddenState();\n      });\n\n      updateDisabledState();\n      updateHiddenState();\n      syncInputWithValue();\n      refreshList();\n      setOpen(false);\n\n      return () => {\n        dropdown.remove();\n        document.removeEventListener(\"click\", handleDocumentClick);\n        window.removeEventListener(\"resize\", updateDropdownPosition);\n        document.removeEventListener(\"scroll\", updateDropdownPosition, true);\n      };\n    }\n    export default { render };\n    ",
       "_model_module": "anywidget",
       "_model_module_version": "~0.11.*",
       "_model_name": "AnyModel",
       "_view_count": null,
       "_view_module": "anywidget",
       "_view_module_version": "~0.11.*",
       "_view_name": "AnyView",
       "cell_id": "",
       "choices": [
        "Not started",
        "In progress",
        "Complete",
        "Skipped"
       ],
       "disabled": false,
       "hidden": false,
       "label": "Routing & Automation — status",
       "layout": "IPY_MODEL_041455db212e45ceb2c7b7b29d504825",
       "layout_path": null,
       "position": "sidebar",
       "render_slot_id": null,
       "source_cell_id": null,
       "tabbable": null,
       "tooltip": null,
       "url_key": "",
       "value": "Not started"
      }
     },
     "b73bf6655a994e7fafe9144894ee140d": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "bc46a9479dd14a5b8e57dc6b35afb458": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "c225acc8664d4dd482792cc9ad451178": {
      "model_module": "anywidget",
      "model_module_version": "~0.11.*",
      "model_name": "AnyModel",
      "state": {
       "_anywidget_id": "mercury.checkbox.CheckboxWidget",
       "_css": "\n    .mljar-checkbox-container {\n        display: inline-flex;\n        align-items: center;\n        gap: 10px;\n        cursor: pointer;\n        user-select: none;\n        -webkit-tap-highlight-color: transparent;\n        font-family: ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;\n        color: #0f172a;\n        padding-left: 5px;\n    }\n    .mljar-checkbox-container.is-disabled {\n        opacity: 0.6;\n        cursor: not-allowed;\n    }\n\n    .mljar-checkbox-input {\n        position: absolute;\n        opacity: 0;\n        width: 0;\n        height: 0;\n    }\n\n    .mljar-checkbox-input:focus-visible + .mljar-checkbox-control {\n        box-shadow: inset 0 0 0 2px #007bff;\n    }\n\n    .mljar-checkbox-label {\n        font-size: 14px;\n        line-height: 1.2;\n        padding-top: 2px;\n    }\n\n    /* --- Toggle style (15% smaller) --- */\n    .mljar-checkbox-container.is-toggle .mljar-checkbox-control {\n        position: relative;\n        width: 34px;\n        height: 19px;\n        border-radius: 999px;\n        background: #f1f1f2;\n        border: 1px solid #cfd1d5;\n        transition: background 150ms ease, border-color 150ms ease;\n    }\n    .mljar-checkbox-container.is-toggle.is-checked .mljar-checkbox-control {\n        background: #007bff;\n        border-color: #007bff;\n    }\n    .mljar-checkbox-container.is-toggle .mljar-checkbox-control::after {\n        content: \"\";\n        position: absolute;\n        top: 2px;\n        left: 2px;\n        width: 15px;\n        height: 15px;\n        border-radius: 50%;\n        background: #ffffff;\n        box-shadow: 0 1px 2px rgba(0,0,0,0.12), 0 0 0 1px rgba(0,0,0,0.04);\n        transition: transform 150ms ease;\n    }\n    .mljar-checkbox-container.is-toggle.is-checked .mljar-checkbox-control::after {\n        transform: translateX(15px);\n    }\n\n    /* --- Classic box style --- */\n    .mljar-checkbox-container.is-box .mljar-checkbox-control {\n        width: 16px;\n        height: 16px;\n        border-radius: 4px;\n        border: 1px solid #cfd1d5;\n        background: #ffffff;\n        display: inline-block;\n        position: relative;\n    }\n    .mljar-checkbox-container.is-box.is-checked .mljar-checkbox-control {\n        border-color: #007bff;\n        background: #007bff;\n    }\n    .mljar-checkbox-container.is-box.is-checked .mljar-checkbox-control::after {\n        content: \"\";\n        position: absolute;\n        left: 4px;\n        top: 0px;\n        width: 5px;\n        height: 10px;\n        border: solid #fff;\n        border-width: 0 2px 2px 0;\n        transform: rotate(45deg);\n    }\n\n    .mljar-checkbox-container:not(.is-disabled):hover .mljar-checkbox-control {\n        border-color: #007bff;\n        background: #f3f3f4;\n    }\n    ",
       "_dom_classes": [],
       "_esm": "\n    function render({ model, el }) {\n      const container = document.createElement(\"label\");\n      container.classList.add(\"mljar-checkbox-container\");\n\n      const input = document.createElement(\"input\");\n      input.type = \"checkbox\";\n      input.classList.add(\"mljar-checkbox-input\");\n\n      const control = document.createElement(\"span\");\n      control.classList.add(\"mljar-checkbox-control\");\n\n      const text = document.createElement(\"span\");\n      text.classList.add(\"mljar-checkbox-label\");\n\n      container.appendChild(input);\n      container.appendChild(control);\n      container.appendChild(text);\n      el.appendChild(container);\n\n      function syncFromModel() {\n        // appearance\n        const a = model.get(\"appearance\") || \"toggle\";\n        container.classList.remove(\"is-toggle\",\"is-box\");\n        container.classList.add(`is-${a}`);\n        input.setAttribute(\"role\", a === \"toggle\" ? \"switch\" : \"checkbox\");\n\n        // value\n        const v = !!model.get(\"value\");\n        if (input.checked !== v) {\n          input.checked = v;\n          input.setAttribute(\"aria-checked\", String(v));\n        }\n        container.classList.toggle(\"is-checked\", v);\n\n        // disabled\n        const d = !!model.get(\"disabled\");\n        input.disabled = d;\n        container.classList.toggle(\"is-disabled\", d);\n\n        // label\n        text.textContent = model.get(\"label\") || \"\";\n\n        // hidden (exists but not visible)\n        container.style.display = model.get(\"hidden\") ? \"none\" : \"inline-flex\";\n      }\n\n      input.addEventListener(\"change\", () => {\n        if (model.get(\"disabled\")) return;\n\n        const v = input.checked;\n        if (model.get(\"value\") !== v) {\n          model.set(\"value\", v);\n          model.set(\"last_changed_at\", new Date().toISOString());\n          model.set(\"n_toggles\", (model.get(\"n_toggles\") || 0) + 1);\n          model.save_changes();\n          // model.send({ type: \"changed\", value: v });\n        }\n      });\n\n      model.on(\"change:value\", syncFromModel);\n      model.on(\"change:disabled\", syncFromModel);\n      model.on(\"change:appearance\", syncFromModel);\n      model.on(\"change:label\", syncFromModel);\n      model.on(\"change:hidden\", syncFromModel);\n\n      syncFromModel();\n\n      // ---- read cell id (no DOM modifications) ----\n      /*\n      const ID_ATTR = \"data-cell-id\";\n      const hostWithId = el.closest(`[${ID_ATTR}]`);\n      const cellId = hostWithId ? hostWithId.getAttribute(ID_ATTR) : null;\n\n      if (cellId) {\n        model.set(\"cell_id\", cellId);\n        model.save_changes();\n        model.send({ type: \"cell_id_detected\", value: cellId });\n      } else {\n        const mo = new MutationObserver(() => {\n          const host = el.closest(`[${ID_ATTR}]`);\n          const newId = host?.getAttribute(ID_ATTR);\n          \n          if (newId) {\n            model.set(\"cell_id\", newId);\n            model.save_changes();\n            model.send({ type: \"cell_id_detected\", value: newId });\n            mo.disconnect();\n          }\n        });\n        mo.observe(document.body, { attributes: true, subtree: true, attributeFilter: [ID_ATTR] });\n      }\n      */\n    }\n    export default { render };\n    ",
       "_model_module": "anywidget",
       "_model_module_version": "~0.11.*",
       "_model_name": "AnyModel",
       "_view_count": null,
       "_view_module": "anywidget",
       "_view_module_version": "~0.11.*",
       "_view_name": "AnyView",
       "appearance": "box",
       "cell_id": "",
       "disabled": false,
       "hidden": false,
       "label": "Channels: Voice & video metrics",
       "last_changed_at": "",
       "layout": "IPY_MODEL_1af6c54cb9024baba39d308f1a95480b",
       "layout_path": null,
       "n_toggles": 0,
       "position": "sidebar",
       "render_slot_id": null,
       "source_cell_id": null,
       "tabbable": null,
       "tooltip": null,
       "url_key": "",
       "value": false
      }
     },
     "c531a01e2b5445a685aa9de95bd82d51": {
      "model_module": "anywidget",
      "model_module_version": "~0.11.*",
      "model_name": "AnyModel",
      "state": {
       "_anywidget_id": "mercury.checkbox.CheckboxWidget",
       "_css": "\n    .mljar-checkbox-container {\n        display: inline-flex;\n        align-items: center;\n        gap: 10px;\n        cursor: pointer;\n        user-select: none;\n        -webkit-tap-highlight-color: transparent;\n        font-family: ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;\n        color: #0f172a;\n        padding-left: 5px;\n    }\n    .mljar-checkbox-container.is-disabled {\n        opacity: 0.6;\n        cursor: not-allowed;\n    }\n\n    .mljar-checkbox-input {\n        position: absolute;\n        opacity: 0;\n        width: 0;\n        height: 0;\n    }\n\n    .mljar-checkbox-input:focus-visible + .mljar-checkbox-control {\n        box-shadow: inset 0 0 0 2px #007bff;\n    }\n\n    .mljar-checkbox-label {\n        font-size: 14px;\n        line-height: 1.2;\n        padding-top: 2px;\n    }\n\n    /* --- Toggle style (15% smaller) --- */\n    .mljar-checkbox-container.is-toggle .mljar-checkbox-control {\n        position: relative;\n        width: 34px;\n        height: 19px;\n        border-radius: 999px;\n        background: #f1f1f2;\n        border: 1px solid #cfd1d5;\n        transition: background 150ms ease, border-color 150ms ease;\n    }\n    .mljar-checkbox-container.is-toggle.is-checked .mljar-checkbox-control {\n        background: #007bff;\n        border-color: #007bff;\n    }\n    .mljar-checkbox-container.is-toggle .mljar-checkbox-control::after {\n        content: \"\";\n        position: absolute;\n        top: 2px;\n        left: 2px;\n        width: 15px;\n        height: 15px;\n        border-radius: 50%;\n        background: #ffffff;\n        box-shadow: 0 1px 2px rgba(0,0,0,0.12), 0 0 0 1px rgba(0,0,0,0.04);\n        transition: transform 150ms ease;\n    }\n    .mljar-checkbox-container.is-toggle.is-checked .mljar-checkbox-control::after {\n        transform: translateX(15px);\n    }\n\n    /* --- Classic box style --- */\n    .mljar-checkbox-container.is-box .mljar-checkbox-control {\n        width: 16px;\n        height: 16px;\n        border-radius: 4px;\n        border: 1px solid #cfd1d5;\n        background: #ffffff;\n        display: inline-block;\n        position: relative;\n    }\n    .mljar-checkbox-container.is-box.is-checked .mljar-checkbox-control {\n        border-color: #007bff;\n        background: #007bff;\n    }\n    .mljar-checkbox-container.is-box.is-checked .mljar-checkbox-control::after {\n        content: \"\";\n        position: absolute;\n        left: 4px;\n        top: 0px;\n        width: 5px;\n        height: 10px;\n        border: solid #fff;\n        border-width: 0 2px 2px 0;\n        transform: rotate(45deg);\n    }\n\n    .mljar-checkbox-container:not(.is-disabled):hover .mljar-checkbox-control {\n        border-color: #007bff;\n        background: #f3f3f4;\n    }\n    ",
       "_dom_classes": [],
       "_esm": "\n    function render({ model, el }) {\n      const container = document.createElement(\"label\");\n      container.classList.add(\"mljar-checkbox-container\");\n\n      const input = document.createElement(\"input\");\n      input.type = \"checkbox\";\n      input.classList.add(\"mljar-checkbox-input\");\n\n      const control = document.createElement(\"span\");\n      control.classList.add(\"mljar-checkbox-control\");\n\n      const text = document.createElement(\"span\");\n      text.classList.add(\"mljar-checkbox-label\");\n\n      container.appendChild(input);\n      container.appendChild(control);\n      container.appendChild(text);\n      el.appendChild(container);\n\n      function syncFromModel() {\n        // appearance\n        const a = model.get(\"appearance\") || \"toggle\";\n        container.classList.remove(\"is-toggle\",\"is-box\");\n        container.classList.add(`is-${a}`);\n        input.setAttribute(\"role\", a === \"toggle\" ? \"switch\" : \"checkbox\");\n\n        // value\n        const v = !!model.get(\"value\");\n        if (input.checked !== v) {\n          input.checked = v;\n          input.setAttribute(\"aria-checked\", String(v));\n        }\n        container.classList.toggle(\"is-checked\", v);\n\n        // disabled\n        const d = !!model.get(\"disabled\");\n        input.disabled = d;\n        container.classList.toggle(\"is-disabled\", d);\n\n        // label\n        text.textContent = model.get(\"label\") || \"\";\n\n        // hidden (exists but not visible)\n        container.style.display = model.get(\"hidden\") ? \"none\" : \"inline-flex\";\n      }\n\n      input.addEventListener(\"change\", () => {\n        if (model.get(\"disabled\")) return;\n\n        const v = input.checked;\n        if (model.get(\"value\") !== v) {\n          model.set(\"value\", v);\n          model.set(\"last_changed_at\", new Date().toISOString());\n          model.set(\"n_toggles\", (model.get(\"n_toggles\") || 0) + 1);\n          model.save_changes();\n          // model.send({ type: \"changed\", value: v });\n        }\n      });\n\n      model.on(\"change:value\", syncFromModel);\n      model.on(\"change:disabled\", syncFromModel);\n      model.on(\"change:appearance\", syncFromModel);\n      model.on(\"change:label\", syncFromModel);\n      model.on(\"change:hidden\", syncFromModel);\n\n      syncFromModel();\n\n      // ---- read cell id (no DOM modifications) ----\n      /*\n      const ID_ATTR = \"data-cell-id\";\n      const hostWithId = el.closest(`[${ID_ATTR}]`);\n      const cellId = hostWithId ? hostWithId.getAttribute(ID_ATTR) : null;\n\n      if (cellId) {\n        model.set(\"cell_id\", cellId);\n        model.save_changes();\n        model.send({ type: \"cell_id_detected\", value: cellId });\n      } else {\n        const mo = new MutationObserver(() => {\n          const host = el.closest(`[${ID_ATTR}]`);\n          const newId = host?.getAttribute(ID_ATTR);\n          \n          if (newId) {\n            model.set(\"cell_id\", newId);\n            model.save_changes();\n            model.send({ type: \"cell_id_detected\", value: newId });\n            mo.disconnect();\n          }\n        });\n        mo.observe(document.body, { attributes: true, subtree: true, attributeFilter: [ID_ATTR] });\n      }\n      */\n    }\n    export default { render };\n    ",
       "_model_module": "anywidget",
       "_model_module_version": "~0.11.*",
       "_model_name": "AnyModel",
       "_view_count": null,
       "_view_module": "anywidget",
       "_view_module_version": "~0.11.*",
       "_view_name": "AnyView",
       "appearance": "box",
       "cell_id": "",
       "disabled": false,
       "hidden": false,
       "label": "Background & Organization: Problems & causes today",
       "last_changed_at": "",
       "layout": "IPY_MODEL_7c10ad36a20944459ce75e41397e74be",
       "layout_path": null,
       "n_toggles": 0,
       "position": "sidebar",
       "render_slot_id": null,
       "source_cell_id": null,
       "tabbable": null,
       "tooltip": null,
       "url_key": "",
       "value": false
      }
     },
     "c5b373ec5b224d76b5881b2da681859d": {
      "model_module": "anywidget",
      "model_module_version": "~0.11.*",
      "model_name": "AnyModel",
      "state": {
       "_anywidget_id": "mercury.checkbox.CheckboxWidget",
       "_css": "\n    .mljar-checkbox-container {\n        display: inline-flex;\n        align-items: center;\n        gap: 10px;\n        cursor: pointer;\n        user-select: none;\n        -webkit-tap-highlight-color: transparent;\n        font-family: ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;\n        color: #0f172a;\n        padding-left: 5px;\n    }\n    .mljar-checkbox-container.is-disabled {\n        opacity: 0.6;\n        cursor: not-allowed;\n    }\n\n    .mljar-checkbox-input {\n        position: absolute;\n        opacity: 0;\n        width: 0;\n        height: 0;\n    }\n\n    .mljar-checkbox-input:focus-visible + .mljar-checkbox-control {\n        box-shadow: inset 0 0 0 2px #007bff;\n    }\n\n    .mljar-checkbox-label {\n        font-size: 14px;\n        line-height: 1.2;\n        padding-top: 2px;\n    }\n\n    /* --- Toggle style (15% smaller) --- */\n    .mljar-checkbox-container.is-toggle .mljar-checkbox-control {\n        position: relative;\n        width: 34px;\n        height: 19px;\n        border-radius: 999px;\n        background: #f1f1f2;\n        border: 1px solid #cfd1d5;\n        transition: background 150ms ease, border-color 150ms ease;\n    }\n    .mljar-checkbox-container.is-toggle.is-checked .mljar-checkbox-control {\n        background: #007bff;\n        border-color: #007bff;\n    }\n    .mljar-checkbox-container.is-toggle .mljar-checkbox-control::after {\n        content: \"\";\n        position: absolute;\n        top: 2px;\n        left: 2px;\n        width: 15px;\n        height: 15px;\n        border-radius: 50%;\n        background: #ffffff;\n        box-shadow: 0 1px 2px rgba(0,0,0,0.12), 0 0 0 1px rgba(0,0,0,0.04);\n        transition: transform 150ms ease;\n    }\n    .mljar-checkbox-container.is-toggle.is-checked .mljar-checkbox-control::after {\n        transform: translateX(15px);\n    }\n\n    /* --- Classic box style --- */\n    .mljar-checkbox-container.is-box .mljar-checkbox-control {\n        width: 16px;\n        height: 16px;\n        border-radius: 4px;\n        border: 1px solid #cfd1d5;\n        background: #ffffff;\n        display: inline-block;\n        position: relative;\n    }\n    .mljar-checkbox-container.is-box.is-checked .mljar-checkbox-control {\n        border-color: #007bff;\n        background: #007bff;\n    }\n    .mljar-checkbox-container.is-box.is-checked .mljar-checkbox-control::after {\n        content: \"\";\n        position: absolute;\n        left: 4px;\n        top: 0px;\n        width: 5px;\n        height: 10px;\n        border: solid #fff;\n        border-width: 0 2px 2px 0;\n        transform: rotate(45deg);\n    }\n\n    .mljar-checkbox-container:not(.is-disabled):hover .mljar-checkbox-control {\n        border-color: #007bff;\n        background: #f3f3f4;\n    }\n    ",
       "_dom_classes": [],
       "_esm": "\n    function render({ model, el }) {\n      const container = document.createElement(\"label\");\n      container.classList.add(\"mljar-checkbox-container\");\n\n      const input = document.createElement(\"input\");\n      input.type = \"checkbox\";\n      input.classList.add(\"mljar-checkbox-input\");\n\n      const control = document.createElement(\"span\");\n      control.classList.add(\"mljar-checkbox-control\");\n\n      const text = document.createElement(\"span\");\n      text.classList.add(\"mljar-checkbox-label\");\n\n      container.appendChild(input);\n      container.appendChild(control);\n      container.appendChild(text);\n      el.appendChild(container);\n\n      function syncFromModel() {\n        // appearance\n        const a = model.get(\"appearance\") || \"toggle\";\n        container.classList.remove(\"is-toggle\",\"is-box\");\n        container.classList.add(`is-${a}`);\n        input.setAttribute(\"role\", a === \"toggle\" ? \"switch\" : \"checkbox\");\n\n        // value\n        const v = !!model.get(\"value\");\n        if (input.checked !== v) {\n          input.checked = v;\n          input.setAttribute(\"aria-checked\", String(v));\n        }\n        container.classList.toggle(\"is-checked\", v);\n\n        // disabled\n        const d = !!model.get(\"disabled\");\n        input.disabled = d;\n        container.classList.toggle(\"is-disabled\", d);\n\n        // label\n        text.textContent = model.get(\"label\") || \"\";\n\n        // hidden (exists but not visible)\n        container.style.display = model.get(\"hidden\") ? \"none\" : \"inline-flex\";\n      }\n\n      input.addEventListener(\"change\", () => {\n        if (model.get(\"disabled\")) return;\n\n        const v = input.checked;\n        if (model.get(\"value\") !== v) {\n          model.set(\"value\", v);\n          model.set(\"last_changed_at\", new Date().toISOString());\n          model.set(\"n_toggles\", (model.get(\"n_toggles\") || 0) + 1);\n          model.save_changes();\n          // model.send({ type: \"changed\", value: v });\n        }\n      });\n\n      model.on(\"change:value\", syncFromModel);\n      model.on(\"change:disabled\", syncFromModel);\n      model.on(\"change:appearance\", syncFromModel);\n      model.on(\"change:label\", syncFromModel);\n      model.on(\"change:hidden\", syncFromModel);\n\n      syncFromModel();\n\n      // ---- read cell id (no DOM modifications) ----\n      /*\n      const ID_ATTR = \"data-cell-id\";\n      const hostWithId = el.closest(`[${ID_ATTR}]`);\n      const cellId = hostWithId ? hostWithId.getAttribute(ID_ATTR) : null;\n\n      if (cellId) {\n        model.set(\"cell_id\", cellId);\n        model.save_changes();\n        model.send({ type: \"cell_id_detected\", value: cellId });\n      } else {\n        const mo = new MutationObserver(() => {\n          const host = el.closest(`[${ID_ATTR}]`);\n          const newId = host?.getAttribute(ID_ATTR);\n          \n          if (newId) {\n            model.set(\"cell_id\", newId);\n            model.save_changes();\n            model.send({ type: \"cell_id_detected\", value: newId });\n            mo.disconnect();\n          }\n        });\n        mo.observe(document.body, { attributes: true, subtree: true, attributeFilter: [ID_ATTR] });\n      }\n      */\n    }\n    export default { render };\n    ",
       "_model_module": "anywidget",
       "_model_module_version": "~0.11.*",
       "_model_name": "AnyModel",
       "_view_count": null,
       "_view_module": "anywidget",
       "_view_module_version": "~0.11.*",
       "_view_name": "AnyView",
       "appearance": "box",
       "cell_id": "",
       "disabled": false,
       "hidden": false,
       "label": "Routing & Automation: Digital assistant apps",
       "last_changed_at": "",
       "layout": "IPY_MODEL_6a7a2a1d35e74fecbed1a2fb4d1f61e4",
       "layout_path": null,
       "n_toggles": 0,
       "position": "sidebar",
       "render_slot_id": null,
       "source_cell_id": null,
       "tabbable": null,
       "tooltip": null,
       "url_key": "",
       "value": false
      }
     },
     "cb3fcd9d52cd43f6a1ed9b2e2e4fd065": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "ce19eea1122b461e919dd45db8fbbc0a": {
      "model_module": "anywidget",
      "model_module_version": "~0.11.*",
      "model_name": "AnyModel",
      "state": {
       "_anywidget_id": "mercury.select.SelectWidget",
       "_css": "\n    .mljar-select-container {\n      position: relative;\n      display: flex;\n      flex-direction: column;\n      font-family: ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;\n      font-size: 14px;\n      color: #0f172a;\n      padding-left: 4px;\n      padding-right: 4px;\n      overflow: visible;\n    }\n\n    .mljar-select-label {\n      padding-top: 6px;\n      margin-bottom: 4px;\n      font-weight: 600;\n    }\n\n    .mljar-select-control {\n      position: relative;\n      display: flex;\n      align-items: center;\n      cursor: default;\n      overflow: visible;\n    }\n\n    .mljar-select-container.is-open {\n      z-index: 20;\n    }\n\n    .mljar-select-widget-input {\n      width: 100%;\n      min-height: 40px;\n      padding: 9px 36px 9px 10px;\n      border: 1px solid #cfd1d5;\n      border-radius: 6px;\n      background: #ffffff;\n      box-sizing: border-box;\n      line-height: 1.4;\n      transition: border-color 0.15s ease, box-shadow 0.15s ease;\n\n      appearance: none !important;\n      background-color: #ffffff !important;\n      color: #0f172a !important;\n      cursor: default;\n    }\n\n    .mljar-select-widget-input:focus {\n      outline: none;\n      border-color: #007bff;\n      box-shadow: none;\n      cursor: text;\n    }\n\n    .mljar-select-caret {\n      position: absolute;\n      right: 12px;\n      top: 50%;\n      width: 8px;\n      height: 8px;\n      border-right: 1.5px solid #0f172a;\n      border-bottom: 1.5px solid #0f172a;\n      transform: translateY(-65%) rotate(45deg);\n      pointer-events: auto;\n      opacity: 0.5;\n      transition: transform 0.18s ease, opacity 0.18s ease;\n    }\n\n    .mljar-select-container.is-open .mljar-select-caret {\n      opacity: 1;\n      transform: translateY(-35%) rotate(225deg);\n    }\n\n    .mljar-select-dropdown {\n      display: none;\n      position: fixed;\n      z-index: 10000;\n      border: 1px solid #cfd1d5;\n      border-radius: 6px;\n      background: #ffffff;\n      box-shadow: 0 8px 24px rgba(15, 23, 42, 0.12);\n      overflow: hidden;\n    }\n\n    .mljar-select-list {\n      max-height: 260px;\n      overflow-y: auto;\n    }\n\n    .mljar-select-option {\n      display: block;\n      width: 100%;\n      padding: 9px 10px;\n      border: 0;\n      background: transparent;\n      color: #0f172a;\n      text-align: left;\n      cursor: pointer;\n      font: inherit;\n      transition: background-color 0.14s ease, color 0.14s ease;\n    }\n\n    .mljar-select-option:hover {\n      background: #f3f3f4;\n    }\n\n    .mljar-select-option:active {\n      background: #e6f2ff;\n      color: #007bff;\n    }\n\n    .mljar-select-option.is-selected {\n      background: #e6f2ff;\n      color: #007bff;\n      font-weight: 600;\n    }\n\n    .mljar-select-option.is-selected:hover,\n    .mljar-select-option.is-selected:active {\n      background: #e6f2ff;\n      color: #007bff;\n    }\n\n    .mljar-select-empty {\n      display: none;\n      padding: 10px;\n      color: #616673;\n      font-size: 0.95em;\n    }\n\n    .mljar-select-widget-input:disabled {\n      background: #f5f5f5;\n      color: #888;\n      cursor: not-allowed;\n    }\n\n    .mljar-select-control.is-disabled .mljar-select-caret {\n      opacity: 0.45;\n    }\n    ",
       "_dom_classes": [],
       "_esm": "\n    function render({ model, el }) {\n      const normalize = value => String(value ?? \"\").toLowerCase().trim();\n      const getChoices = () =>\n        Array.isArray(model.get(\"choices\")) ? [...model.get(\"choices\")] : [];\n      const isDisabled = () => !!model.get(\"disabled\");\n      const isHidden = () => !!model.get(\"hidden\");\n\n      const container = document.createElement(\"div\");\n      container.classList.add(\"mljar-select-container\");\n\n      if (model.get(\"label\")) {\n        const topLabel = document.createElement(\"div\");\n        topLabel.classList.add(\"mljar-select-label\");\n        topLabel.innerHTML = model.get(\"label\");\n        container.appendChild(topLabel);\n      }\n\n      const control = document.createElement(\"div\");\n      control.classList.add(\"mljar-select-control\");\n\n      const input = document.createElement(\"input\");\n      input.type = \"text\";\n      input.classList.add(\"mljar-select-widget-input\");\n      input.autocomplete = \"off\";\n      input.spellcheck = false;\n\n      const caret = document.createElement(\"div\");\n      caret.classList.add(\"mljar-select-caret\");\n\n      control.appendChild(input);\n      control.appendChild(caret);\n\n      const dropdown = document.createElement(\"div\");\n      dropdown.classList.add(\"mljar-select-dropdown\");\n\n      const list = document.createElement(\"div\");\n      list.classList.add(\"mljar-select-list\");\n\n      const emptyState = document.createElement(\"div\");\n      emptyState.classList.add(\"mljar-select-empty\");\n      emptyState.textContent = \"No matches\";\n\n      dropdown.appendChild(list);\n      dropdown.appendChild(emptyState);\n\n      container.appendChild(control);\n      el.appendChild(container);\n\n      let isOpen = false;\n      let filteredChoices = [];\n      let lastCommittedValue = \"\";\n      let isEditing = false;\n      document.body.appendChild(dropdown);\n\n      const updateDropdownPosition = () => {\n        if (!isOpen) {\n          return;\n        }\n        const rect = control.getBoundingClientRect();\n        dropdown.style.top = `${rect.bottom + 6}px`;\n        dropdown.style.left = `${rect.left}px`;\n        dropdown.style.width = `${rect.width}px`;\n      };\n\n      const setOpen = next => {\n        if (isDisabled()) {\n          isOpen = false;\n        } else {\n          isOpen = !!next;\n        }\n        container.classList.toggle(\"is-open\", isOpen);\n        dropdown.style.display = isOpen ? \"block\" : \"none\";\n        if (isOpen) {\n          updateDropdownPosition();\n        }\n      };\n\n      const updateDisabledState = () => {\n        const disabled = isDisabled();\n        input.disabled = disabled;\n        control.classList.toggle(\"is-disabled\", disabled);\n      };\n\n      const updateHiddenState = () => {\n        container.style.display = isHidden() ? \"none\" : \"\";\n      };\n\n      const syncInputWithValue = () => {\n        const value = model.get(\"value\") || \"\";\n        lastCommittedValue = value;\n        if (!isEditing) {\n          input.value = value;\n        }\n      };\n\n      const filterChoices = query => {\n        const normalizedQuery = normalize(query);\n        const allChoices = getChoices();\n        if (!normalizedQuery) {\n          return allChoices;\n        }\n        return allChoices.filter(choice =>\n          normalize(choice).includes(normalizedQuery)\n        );\n      };\n\n      const renderList = () => {\n        list.innerHTML = \"\";\n        filteredChoices.forEach(choice => {\n          const option = document.createElement(\"button\");\n          option.type = \"button\";\n          option.classList.add(\"mljar-select-option\");\n          if (choice === model.get(\"value\")) {\n            option.classList.add(\"is-selected\");\n          }\n          option.textContent = choice;\n          option.addEventListener(\"mousedown\", event => {\n            event.preventDefault();\n            event.stopPropagation();\n            model.set(\"value\", choice);\n            model.save_changes();\n            isEditing = false;\n            syncInputWithValue();\n            renderList();\n            setOpen(false);\n          });\n          list.appendChild(option);\n        });\n\n        const hasMatches = filteredChoices.length > 0;\n        list.style.display = hasMatches ? \"block\" : \"none\";\n        emptyState.style.display = hasMatches ? \"none\" : \"block\";\n      };\n\n      const refreshList = () => {\n        filteredChoices = filterChoices(input.value);\n        renderList();\n      };\n\n      const openWithCurrentQuery = () => {\n        isEditing = true;\n        input.value = \"\";\n        refreshList();\n        setOpen(true);\n      };\n\n      const closeDropdown = () => {\n        isEditing = false;\n        setOpen(false);\n        input.value = lastCommittedValue;\n      };\n\n      control.addEventListener(\"click\", event => {\n        event.stopPropagation();\n        if (isDisabled()) {\n          return;\n        }\n        if (event.target === caret && isOpen) {\n          closeDropdown();\n          input.blur();\n          return;\n        }\n        openWithCurrentQuery();\n        input.focus();\n      });\n\n      input.addEventListener(\"input\", () => {\n        if (isDisabled()) {\n          return;\n        }\n        refreshList();\n        setOpen(true);\n      });\n\n      input.addEventListener(\"focus\", () => {\n        if (isDisabled()) {\n          return;\n        }\n        openWithCurrentQuery();\n      });\n\n      input.addEventListener(\"blur\", () => {\n        isEditing = false;\n        input.value = lastCommittedValue;\n      });\n\n      const handleDocumentClick = event => {\n        if (!container.contains(event.target) && !dropdown.contains(event.target)) {\n          closeDropdown();\n        }\n      };\n\n      document.addEventListener(\"click\", handleDocumentClick);\n      window.addEventListener(\"resize\", updateDropdownPosition);\n      document.addEventListener(\"scroll\", updateDropdownPosition, true);\n\n      model.on(\"change:value\", () => {\n        syncInputWithValue();\n        refreshList();\n      });\n\n      model.on(\"change:choices\", () => {\n        const choices = getChoices();\n        if (!choices.includes(model.get(\"value\")) && choices.length > 0) {\n          model.set(\"value\", choices[0]);\n          model.save_changes();\n          return;\n        }\n        syncInputWithValue();\n        refreshList();\n      });\n\n      model.on(\"change:disabled\", () => {\n        updateDisabledState();\n        if (isDisabled()) {\n          closeDropdown();\n        }\n      });\n\n      model.on(\"change:hidden\", () => {\n        updateHiddenState();\n      });\n\n      updateDisabledState();\n      updateHiddenState();\n      syncInputWithValue();\n      refreshList();\n      setOpen(false);\n\n      return () => {\n        dropdown.remove();\n        document.removeEventListener(\"click\", handleDocumentClick);\n        window.removeEventListener(\"resize\", updateDropdownPosition);\n        document.removeEventListener(\"scroll\", updateDropdownPosition, true);\n      };\n    }\n    export default { render };\n    ",
       "_model_module": "anywidget",
       "_model_module_version": "~0.11.*",
       "_model_name": "AnyModel",
       "_view_count": null,
       "_view_module": "anywidget",
       "_view_module_version": "~0.11.*",
       "_view_name": "AnyView",
       "cell_id": "",
       "choices": [
        "Not started",
        "In progress",
        "Complete",
        "Skipped"
       ],
       "disabled": false,
       "hidden": false,
       "label": "Training — status",
       "layout": "IPY_MODEL_e4247da2f7c54293b7bfeb528d81adc2",
       "layout_path": null,
       "position": "sidebar",
       "render_slot_id": null,
       "source_cell_id": null,
       "tabbable": null,
       "tooltip": null,
       "url_key": "",
       "value": "Not started"
      }
     },
     "d346a4b5ed514c019df7d18e505233fb": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "d534c8937793492a843efeae1e1676d0": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "dd2e189ff03d4b76bd92e483dbe721ae": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "de23955c5f1e4ba9b1d793f97035e0ea": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "e1c00f930b2f4fc6bd6e694b1560fe5d": {
      "model_module": "anywidget",
      "model_module_version": "~0.11.*",
      "model_name": "AnyModel",
      "state": {
       "_anywidget_id": "mercury.checkbox.CheckboxWidget",
       "_css": "\n    .mljar-checkbox-container {\n        display: inline-flex;\n        align-items: center;\n        gap: 10px;\n        cursor: pointer;\n        user-select: none;\n        -webkit-tap-highlight-color: transparent;\n        font-family: ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;\n        color: #0f172a;\n        padding-left: 5px;\n    }\n    .mljar-checkbox-container.is-disabled {\n        opacity: 0.6;\n        cursor: not-allowed;\n    }\n\n    .mljar-checkbox-input {\n        position: absolute;\n        opacity: 0;\n        width: 0;\n        height: 0;\n    }\n\n    .mljar-checkbox-input:focus-visible + .mljar-checkbox-control {\n        box-shadow: inset 0 0 0 2px #007bff;\n    }\n\n    .mljar-checkbox-label {\n        font-size: 14px;\n        line-height: 1.2;\n        padding-top: 2px;\n    }\n\n    /* --- Toggle style (15% smaller) --- */\n    .mljar-checkbox-container.is-toggle .mljar-checkbox-control {\n        position: relative;\n        width: 34px;\n        height: 19px;\n        border-radius: 999px;\n        background: #f1f1f2;\n        border: 1px solid #cfd1d5;\n        transition: background 150ms ease, border-color 150ms ease;\n    }\n    .mljar-checkbox-container.is-toggle.is-checked .mljar-checkbox-control {\n        background: #007bff;\n        border-color: #007bff;\n    }\n    .mljar-checkbox-container.is-toggle .mljar-checkbox-control::after {\n        content: \"\";\n        position: absolute;\n        top: 2px;\n        left: 2px;\n        width: 15px;\n        height: 15px;\n        border-radius: 50%;\n        background: #ffffff;\n        box-shadow: 0 1px 2px rgba(0,0,0,0.12), 0 0 0 1px rgba(0,0,0,0.04);\n        transition: transform 150ms ease;\n    }\n    .mljar-checkbox-container.is-toggle.is-checked .mljar-checkbox-control::after {\n        transform: translateX(15px);\n    }\n\n    /* --- Classic box style --- */\n    .mljar-checkbox-container.is-box .mljar-checkbox-control {\n        width: 16px;\n        height: 16px;\n        border-radius: 4px;\n        border: 1px solid #cfd1d5;\n        background: #ffffff;\n        display: inline-block;\n        position: relative;\n    }\n    .mljar-checkbox-container.is-box.is-checked .mljar-checkbox-control {\n        border-color: #007bff;\n        background: #007bff;\n    }\n    .mljar-checkbox-container.is-box.is-checked .mljar-checkbox-control::after {\n        content: \"\";\n        position: absolute;\n        left: 4px;\n        top: 0px;\n        width: 5px;\n        height: 10px;\n        border: solid #fff;\n        border-width: 0 2px 2px 0;\n        transform: rotate(45deg);\n    }\n\n    .mljar-checkbox-container:not(.is-disabled):hover .mljar-checkbox-control {\n        border-color: #007bff;\n        background: #f3f3f4;\n    }\n    ",
       "_dom_classes": [],
       "_esm": "\n    function render({ model, el }) {\n      const container = document.createElement(\"label\");\n      container.classList.add(\"mljar-checkbox-container\");\n\n      const input = document.createElement(\"input\");\n      input.type = \"checkbox\";\n      input.classList.add(\"mljar-checkbox-input\");\n\n      const control = document.createElement(\"span\");\n      control.classList.add(\"mljar-checkbox-control\");\n\n      const text = document.createElement(\"span\");\n      text.classList.add(\"mljar-checkbox-label\");\n\n      container.appendChild(input);\n      container.appendChild(control);\n      container.appendChild(text);\n      el.appendChild(container);\n\n      function syncFromModel() {\n        // appearance\n        const a = model.get(\"appearance\") || \"toggle\";\n        container.classList.remove(\"is-toggle\",\"is-box\");\n        container.classList.add(`is-${a}`);\n        input.setAttribute(\"role\", a === \"toggle\" ? \"switch\" : \"checkbox\");\n\n        // value\n        const v = !!model.get(\"value\");\n        if (input.checked !== v) {\n          input.checked = v;\n          input.setAttribute(\"aria-checked\", String(v));\n        }\n        container.classList.toggle(\"is-checked\", v);\n\n        // disabled\n        const d = !!model.get(\"disabled\");\n        input.disabled = d;\n        container.classList.toggle(\"is-disabled\", d);\n\n        // label\n        text.textContent = model.get(\"label\") || \"\";\n\n        // hidden (exists but not visible)\n        container.style.display = model.get(\"hidden\") ? \"none\" : \"inline-flex\";\n      }\n\n      input.addEventListener(\"change\", () => {\n        if (model.get(\"disabled\")) return;\n\n        const v = input.checked;\n        if (model.get(\"value\") !== v) {\n          model.set(\"value\", v);\n          model.set(\"last_changed_at\", new Date().toISOString());\n          model.set(\"n_toggles\", (model.get(\"n_toggles\") || 0) + 1);\n          model.save_changes();\n          // model.send({ type: \"changed\", value: v });\n        }\n      });\n\n      model.on(\"change:value\", syncFromModel);\n      model.on(\"change:disabled\", syncFromModel);\n      model.on(\"change:appearance\", syncFromModel);\n      model.on(\"change:label\", syncFromModel);\n      model.on(\"change:hidden\", syncFromModel);\n\n      syncFromModel();\n\n      // ---- read cell id (no DOM modifications) ----\n      /*\n      const ID_ATTR = \"data-cell-id\";\n      const hostWithId = el.closest(`[${ID_ATTR}]`);\n      const cellId = hostWithId ? hostWithId.getAttribute(ID_ATTR) : null;\n\n      if (cellId) {\n        model.set(\"cell_id\", cellId);\n        model.save_changes();\n        model.send({ type: \"cell_id_detected\", value: cellId });\n      } else {\n        const mo = new MutationObserver(() => {\n          const host = el.closest(`[${ID_ATTR}]`);\n          const newId = host?.getAttribute(ID_ATTR);\n          \n          if (newId) {\n            model.set(\"cell_id\", newId);\n            model.save_changes();\n            model.send({ type: \"cell_id_detected\", value: newId });\n            mo.disconnect();\n          }\n        });\n        mo.observe(document.body, { attributes: true, subtree: true, attributeFilter: [ID_ATTR] });\n      }\n      */\n    }\n    export default { render };\n    ",
       "_model_module": "anywidget",
       "_model_module_version": "~0.11.*",
       "_model_name": "AnyModel",
       "_view_count": null,
       "_view_module": "anywidget",
       "_view_module_version": "~0.11.*",
       "_view_name": "AnyView",
       "appearance": "box",
       "cell_id": "",
       "disabled": false,
       "hidden": false,
       "label": "Channels: Digital channels",
       "last_changed_at": "",
       "layout": "IPY_MODEL_d346a4b5ed514c019df7d18e505233fb",
       "layout_path": null,
       "n_toggles": 0,
       "position": "sidebar",
       "render_slot_id": null,
       "source_cell_id": null,
       "tabbable": null,
       "tooltip": null,
       "url_key": "",
       "value": false
      }
     },
     "e4247da2f7c54293b7bfeb528d81adc2": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "e611c2d7646447f29b4d9d4b5bf5fa73": {
      "model_module": "anywidget",
      "model_module_version": "~0.11.*",
      "model_name": "AnyModel",
      "state": {
       "_anywidget_id": "mercury.select.SelectWidget",
       "_css": "\n    .mljar-select-container {\n      position: relative;\n      display: flex;\n      flex-direction: column;\n      font-family: ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;\n      font-size: 14px;\n      color: #0f172a;\n      padding-left: 4px;\n      padding-right: 4px;\n      overflow: visible;\n    }\n\n    .mljar-select-label {\n      padding-top: 6px;\n      margin-bottom: 4px;\n      font-weight: 600;\n    }\n\n    .mljar-select-control {\n      position: relative;\n      display: flex;\n      align-items: center;\n      cursor: default;\n      overflow: visible;\n    }\n\n    .mljar-select-container.is-open {\n      z-index: 20;\n    }\n\n    .mljar-select-widget-input {\n      width: 100%;\n      min-height: 40px;\n      padding: 9px 36px 9px 10px;\n      border: 1px solid #cfd1d5;\n      border-radius: 6px;\n      background: #ffffff;\n      box-sizing: border-box;\n      line-height: 1.4;\n      transition: border-color 0.15s ease, box-shadow 0.15s ease;\n\n      appearance: none !important;\n      background-color: #ffffff !important;\n      color: #0f172a !important;\n      cursor: default;\n    }\n\n    .mljar-select-widget-input:focus {\n      outline: none;\n      border-color: #007bff;\n      box-shadow: none;\n      cursor: text;\n    }\n\n    .mljar-select-caret {\n      position: absolute;\n      right: 12px;\n      top: 50%;\n      width: 8px;\n      height: 8px;\n      border-right: 1.5px solid #0f172a;\n      border-bottom: 1.5px solid #0f172a;\n      transform: translateY(-65%) rotate(45deg);\n      pointer-events: auto;\n      opacity: 0.5;\n      transition: transform 0.18s ease, opacity 0.18s ease;\n    }\n\n    .mljar-select-container.is-open .mljar-select-caret {\n      opacity: 1;\n      transform: translateY(-35%) rotate(225deg);\n    }\n\n    .mljar-select-dropdown {\n      display: none;\n      position: fixed;\n      z-index: 10000;\n      border: 1px solid #cfd1d5;\n      border-radius: 6px;\n      background: #ffffff;\n      box-shadow: 0 8px 24px rgba(15, 23, 42, 0.12);\n      overflow: hidden;\n    }\n\n    .mljar-select-list {\n      max-height: 260px;\n      overflow-y: auto;\n    }\n\n    .mljar-select-option {\n      display: block;\n      width: 100%;\n      padding: 9px 10px;\n      border: 0;\n      background: transparent;\n      color: #0f172a;\n      text-align: left;\n      cursor: pointer;\n      font: inherit;\n      transition: background-color 0.14s ease, color 0.14s ease;\n    }\n\n    .mljar-select-option:hover {\n      background: #f3f3f4;\n    }\n\n    .mljar-select-option:active {\n      background: #e6f2ff;\n      color: #007bff;\n    }\n\n    .mljar-select-option.is-selected {\n      background: #e6f2ff;\n      color: #007bff;\n      font-weight: 600;\n    }\n\n    .mljar-select-option.is-selected:hover,\n    .mljar-select-option.is-selected:active {\n      background: #e6f2ff;\n      color: #007bff;\n    }\n\n    .mljar-select-empty {\n      display: none;\n      padding: 10px;\n      color: #616673;\n      font-size: 0.95em;\n    }\n\n    .mljar-select-widget-input:disabled {\n      background: #f5f5f5;\n      color: #888;\n      cursor: not-allowed;\n    }\n\n    .mljar-select-control.is-disabled .mljar-select-caret {\n      opacity: 0.45;\n    }\n    ",
       "_dom_classes": [],
       "_esm": "\n    function render({ model, el }) {\n      const normalize = value => String(value ?? \"\").toLowerCase().trim();\n      const getChoices = () =>\n        Array.isArray(model.get(\"choices\")) ? [...model.get(\"choices\")] : [];\n      const isDisabled = () => !!model.get(\"disabled\");\n      const isHidden = () => !!model.get(\"hidden\");\n\n      const container = document.createElement(\"div\");\n      container.classList.add(\"mljar-select-container\");\n\n      if (model.get(\"label\")) {\n        const topLabel = document.createElement(\"div\");\n        topLabel.classList.add(\"mljar-select-label\");\n        topLabel.innerHTML = model.get(\"label\");\n        container.appendChild(topLabel);\n      }\n\n      const control = document.createElement(\"div\");\n      control.classList.add(\"mljar-select-control\");\n\n      const input = document.createElement(\"input\");\n      input.type = \"text\";\n      input.classList.add(\"mljar-select-widget-input\");\n      input.autocomplete = \"off\";\n      input.spellcheck = false;\n\n      const caret = document.createElement(\"div\");\n      caret.classList.add(\"mljar-select-caret\");\n\n      control.appendChild(input);\n      control.appendChild(caret);\n\n      const dropdown = document.createElement(\"div\");\n      dropdown.classList.add(\"mljar-select-dropdown\");\n\n      const list = document.createElement(\"div\");\n      list.classList.add(\"mljar-select-list\");\n\n      const emptyState = document.createElement(\"div\");\n      emptyState.classList.add(\"mljar-select-empty\");\n      emptyState.textContent = \"No matches\";\n\n      dropdown.appendChild(list);\n      dropdown.appendChild(emptyState);\n\n      container.appendChild(control);\n      el.appendChild(container);\n\n      let isOpen = false;\n      let filteredChoices = [];\n      let lastCommittedValue = \"\";\n      let isEditing = false;\n      document.body.appendChild(dropdown);\n\n      const updateDropdownPosition = () => {\n        if (!isOpen) {\n          return;\n        }\n        const rect = control.getBoundingClientRect();\n        dropdown.style.top = `${rect.bottom + 6}px`;\n        dropdown.style.left = `${rect.left}px`;\n        dropdown.style.width = `${rect.width}px`;\n      };\n\n      const setOpen = next => {\n        if (isDisabled()) {\n          isOpen = false;\n        } else {\n          isOpen = !!next;\n        }\n        container.classList.toggle(\"is-open\", isOpen);\n        dropdown.style.display = isOpen ? \"block\" : \"none\";\n        if (isOpen) {\n          updateDropdownPosition();\n        }\n      };\n\n      const updateDisabledState = () => {\n        const disabled = isDisabled();\n        input.disabled = disabled;\n        control.classList.toggle(\"is-disabled\", disabled);\n      };\n\n      const updateHiddenState = () => {\n        container.style.display = isHidden() ? \"none\" : \"\";\n      };\n\n      const syncInputWithValue = () => {\n        const value = model.get(\"value\") || \"\";\n        lastCommittedValue = value;\n        if (!isEditing) {\n          input.value = value;\n        }\n      };\n\n      const filterChoices = query => {\n        const normalizedQuery = normalize(query);\n        const allChoices = getChoices();\n        if (!normalizedQuery) {\n          return allChoices;\n        }\n        return allChoices.filter(choice =>\n          normalize(choice).includes(normalizedQuery)\n        );\n      };\n\n      const renderList = () => {\n        list.innerHTML = \"\";\n        filteredChoices.forEach(choice => {\n          const option = document.createElement(\"button\");\n          option.type = \"button\";\n          option.classList.add(\"mljar-select-option\");\n          if (choice === model.get(\"value\")) {\n            option.classList.add(\"is-selected\");\n          }\n          option.textContent = choice;\n          option.addEventListener(\"mousedown\", event => {\n            event.preventDefault();\n            event.stopPropagation();\n            model.set(\"value\", choice);\n            model.save_changes();\n            isEditing = false;\n            syncInputWithValue();\n            renderList();\n            setOpen(false);\n          });\n          list.appendChild(option);\n        });\n\n        const hasMatches = filteredChoices.length > 0;\n        list.style.display = hasMatches ? \"block\" : \"none\";\n        emptyState.style.display = hasMatches ? \"none\" : \"block\";\n      };\n\n      const refreshList = () => {\n        filteredChoices = filterChoices(input.value);\n        renderList();\n      };\n\n      const openWithCurrentQuery = () => {\n        isEditing = true;\n        input.value = \"\";\n        refreshList();\n        setOpen(true);\n      };\n\n      const closeDropdown = () => {\n        isEditing = false;\n        setOpen(false);\n        input.value = lastCommittedValue;\n      };\n\n      control.addEventListener(\"click\", event => {\n        event.stopPropagation();\n        if (isDisabled()) {\n          return;\n        }\n        if (event.target === caret && isOpen) {\n          closeDropdown();\n          input.blur();\n          return;\n        }\n        openWithCurrentQuery();\n        input.focus();\n      });\n\n      input.addEventListener(\"input\", () => {\n        if (isDisabled()) {\n          return;\n        }\n        refreshList();\n        setOpen(true);\n      });\n\n      input.addEventListener(\"focus\", () => {\n        if (isDisabled()) {\n          return;\n        }\n        openWithCurrentQuery();\n      });\n\n      input.addEventListener(\"blur\", () => {\n        isEditing = false;\n        input.value = lastCommittedValue;\n      });\n\n      const handleDocumentClick = event => {\n        if (!container.contains(event.target) && !dropdown.contains(event.target)) {\n          closeDropdown();\n        }\n      };\n\n      document.addEventListener(\"click\", handleDocumentClick);\n      window.addEventListener(\"resize\", updateDropdownPosition);\n      document.addEventListener(\"scroll\", updateDropdownPosition, true);\n\n      model.on(\"change:value\", () => {\n        syncInputWithValue();\n        refreshList();\n      });\n\n      model.on(\"change:choices\", () => {\n        const choices = getChoices();\n        if (!choices.includes(model.get(\"value\")) && choices.length > 0) {\n          model.set(\"value\", choices[0]);\n          model.save_changes();\n          return;\n        }\n        syncInputWithValue();\n        refreshList();\n      });\n\n      model.on(\"change:disabled\", () => {\n        updateDisabledState();\n        if (isDisabled()) {\n          closeDropdown();\n        }\n      });\n\n      model.on(\"change:hidden\", () => {\n        updateHiddenState();\n      });\n\n      updateDisabledState();\n      updateHiddenState();\n      syncInputWithValue();\n      refreshList();\n      setOpen(false);\n\n      return () => {\n        dropdown.remove();\n        document.removeEventListener(\"click\", handleDocumentClick);\n        window.removeEventListener(\"resize\", updateDropdownPosition);\n        document.removeEventListener(\"scroll\", updateDropdownPosition, true);\n      };\n    }\n    export default { render };\n    ",
       "_model_module": "anywidget",
       "_model_module_version": "~0.11.*",
       "_model_name": "AnyModel",
       "_view_count": null,
       "_view_module": "anywidget",
       "_view_module_version": "~0.11.*",
       "_view_name": "AnyView",
       "cell_id": "",
       "choices": [
        "Not started",
        "In progress",
        "Complete",
        "Skipped"
       ],
       "disabled": false,
       "hidden": false,
       "label": "Agent & Supervisor Environment — status",
       "layout": "IPY_MODEL_a1654c12728e4d2f876a557dbf9da8c1",
       "layout_path": null,
       "position": "sidebar",
       "render_slot_id": null,
       "source_cell_id": null,
       "tabbable": null,
       "tooltip": null,
       "url_key": "",
       "value": "Not started"
      }
     },
     "e65e3f4ec0cd4f3b8aef0b06807eb9eb": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "e98c64895e4b40439efca1c8e576a35d": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "eeb51c493f684fd4b4469c9bc27f7bef": {
      "model_module": "anywidget",
      "model_module_version": "~0.11.*",
      "model_name": "AnyModel",
      "state": {
       "_anywidget_id": "mercury.checkbox.CheckboxWidget",
       "_css": "\n    .mljar-checkbox-container {\n        display: inline-flex;\n        align-items: center;\n        gap: 10px;\n        cursor: pointer;\n        user-select: none;\n        -webkit-tap-highlight-color: transparent;\n        font-family: ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;\n        color: #0f172a;\n        padding-left: 5px;\n    }\n    .mljar-checkbox-container.is-disabled {\n        opacity: 0.6;\n        cursor: not-allowed;\n    }\n\n    .mljar-checkbox-input {\n        position: absolute;\n        opacity: 0;\n        width: 0;\n        height: 0;\n    }\n\n    .mljar-checkbox-input:focus-visible + .mljar-checkbox-control {\n        box-shadow: inset 0 0 0 2px #007bff;\n    }\n\n    .mljar-checkbox-label {\n        font-size: 14px;\n        line-height: 1.2;\n        padding-top: 2px;\n    }\n\n    /* --- Toggle style (15% smaller) --- */\n    .mljar-checkbox-container.is-toggle .mljar-checkbox-control {\n        position: relative;\n        width: 34px;\n        height: 19px;\n        border-radius: 999px;\n        background: #f1f1f2;\n        border: 1px solid #cfd1d5;\n        transition: background 150ms ease, border-color 150ms ease;\n    }\n    .mljar-checkbox-container.is-toggle.is-checked .mljar-checkbox-control {\n        background: #007bff;\n        border-color: #007bff;\n    }\n    .mljar-checkbox-container.is-toggle .mljar-checkbox-control::after {\n        content: \"\";\n        position: absolute;\n        top: 2px;\n        left: 2px;\n        width: 15px;\n        height: 15px;\n        border-radius: 50%;\n        background: #ffffff;\n        box-shadow: 0 1px 2px rgba(0,0,0,0.12), 0 0 0 1px rgba(0,0,0,0.04);\n        transition: transform 150ms ease;\n    }\n    .mljar-checkbox-container.is-toggle.is-checked .mljar-checkbox-control::after {\n        transform: translateX(15px);\n    }\n\n    /* --- Classic box style --- */\n    .mljar-checkbox-container.is-box .mljar-checkbox-control {\n        width: 16px;\n        height: 16px;\n        border-radius: 4px;\n        border: 1px solid #cfd1d5;\n        background: #ffffff;\n        display: inline-block;\n        position: relative;\n    }\n    .mljar-checkbox-container.is-box.is-checked .mljar-checkbox-control {\n        border-color: #007bff;\n        background: #007bff;\n    }\n    .mljar-checkbox-container.is-box.is-checked .mljar-checkbox-control::after {\n        content: \"\";\n        position: absolute;\n        left: 4px;\n        top: 0px;\n        width: 5px;\n        height: 10px;\n        border: solid #fff;\n        border-width: 0 2px 2px 0;\n        transform: rotate(45deg);\n    }\n\n    .mljar-checkbox-container:not(.is-disabled):hover .mljar-checkbox-control {\n        border-color: #007bff;\n        background: #f3f3f4;\n    }\n    ",
       "_dom_classes": [],
       "_esm": "\n    function render({ model, el }) {\n      const container = document.createElement(\"label\");\n      container.classList.add(\"mljar-checkbox-container\");\n\n      const input = document.createElement(\"input\");\n      input.type = \"checkbox\";\n      input.classList.add(\"mljar-checkbox-input\");\n\n      const control = document.createElement(\"span\");\n      control.classList.add(\"mljar-checkbox-control\");\n\n      const text = document.createElement(\"span\");\n      text.classList.add(\"mljar-checkbox-label\");\n\n      container.appendChild(input);\n      container.appendChild(control);\n      container.appendChild(text);\n      el.appendChild(container);\n\n      function syncFromModel() {\n        // appearance\n        const a = model.get(\"appearance\") || \"toggle\";\n        container.classList.remove(\"is-toggle\",\"is-box\");\n        container.classList.add(`is-${a}`);\n        input.setAttribute(\"role\", a === \"toggle\" ? \"switch\" : \"checkbox\");\n\n        // value\n        const v = !!model.get(\"value\");\n        if (input.checked !== v) {\n          input.checked = v;\n          input.setAttribute(\"aria-checked\", String(v));\n        }\n        container.classList.toggle(\"is-checked\", v);\n\n        // disabled\n        const d = !!model.get(\"disabled\");\n        input.disabled = d;\n        container.classList.toggle(\"is-disabled\", d);\n\n        // label\n        text.textContent = model.get(\"label\") || \"\";\n\n        // hidden (exists but not visible)\n        container.style.display = model.get(\"hidden\") ? \"none\" : \"inline-flex\";\n      }\n\n      input.addEventListener(\"change\", () => {\n        if (model.get(\"disabled\")) return;\n\n        const v = input.checked;\n        if (model.get(\"value\") !== v) {\n          model.set(\"value\", v);\n          model.set(\"last_changed_at\", new Date().toISOString());\n          model.set(\"n_toggles\", (model.get(\"n_toggles\") || 0) + 1);\n          model.save_changes();\n          // model.send({ type: \"changed\", value: v });\n        }\n      });\n\n      model.on(\"change:value\", syncFromModel);\n      model.on(\"change:disabled\", syncFromModel);\n      model.on(\"change:appearance\", syncFromModel);\n      model.on(\"change:label\", syncFromModel);\n      model.on(\"change:hidden\", syncFromModel);\n\n      syncFromModel();\n\n      // ---- read cell id (no DOM modifications) ----\n      /*\n      const ID_ATTR = \"data-cell-id\";\n      const hostWithId = el.closest(`[${ID_ATTR}]`);\n      const cellId = hostWithId ? hostWithId.getAttribute(ID_ATTR) : null;\n\n      if (cellId) {\n        model.set(\"cell_id\", cellId);\n        model.save_changes();\n        model.send({ type: \"cell_id_detected\", value: cellId });\n      } else {\n        const mo = new MutationObserver(() => {\n          const host = el.closest(`[${ID_ATTR}]`);\n          const newId = host?.getAttribute(ID_ATTR);\n          \n          if (newId) {\n            model.set(\"cell_id\", newId);\n            model.save_changes();\n            model.send({ type: \"cell_id_detected\", value: newId });\n            mo.disconnect();\n          }\n        });\n        mo.observe(document.body, { attributes: true, subtree: true, attributeFilter: [ID_ATTR] });\n      }\n      */\n    }\n    export default { render };\n    ",
       "_model_module": "anywidget",
       "_model_module_version": "~0.11.*",
       "_model_name": "AnyModel",
       "_view_count": null,
       "_view_module": "anywidget",
       "_view_module_version": "~0.11.*",
       "_view_name": "AnyView",
       "appearance": "box",
       "cell_id": "",
       "disabled": false,
       "hidden": false,
       "label": "Channels: Outbound",
       "last_changed_at": "",
       "layout": "IPY_MODEL_174a2effb95041b0b61ca80bf0d5c226",
       "layout_path": null,
       "n_toggles": 0,
       "position": "sidebar",
       "render_slot_id": null,
       "source_cell_id": null,
       "tabbable": null,
       "tooltip": null,
       "url_key": "",
       "value": false
      }
     },
     "f124bb0f618046d59879ddfe613b2d57": {
      "model_module": "anywidget",
      "model_module_version": "~0.11.*",
      "model_name": "AnyModel",
      "state": {
       "_anywidget_id": "mercury.text.TextInputWidget",
       "_css": "\n    .mljar-textinput-container {\n      display: flex;\n      flex-direction: column;\n      align-items: flex-start;\n      width: 100%;\n      min-width: 120px;\n      font-family: ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;\n      font-size: 14px;\n      font-weight: normal;\n      color: #0f172a;\n      padding-left: 4px;\n      padding-right: 4px;\n      box-sizing: border-box;\n    }\n\n    .mljar-textinput-top-label {\n      padding-top: 6px;\n      margin-bottom: 6px;\n      text-align: left;\n      width: 100%;\n      font-weight: 600;\n    }\n\n    .mljar-textinput-input {\n      width: 100%;\n      min-height: 40px;\n      padding: 9px 10px;\n      box-sizing: border-box;\n      border: 1px solid #cfd1d5;\n      border-radius: 6px;\n      background: #ffffff;\n      color: #0f172a;\n      line-height: 1.4;\n\n      appearance: none !important;\n      background-color: #ffffff !important;\n    }\n\n    .mljar-textinput-input:focus {\n      outline: none;\n      border-color: #007bff;\n      box-shadow: none;\n    }\n\n    .mljar-textinput-input:disabled {\n      background: #f5f5f5;\n      color: #888;\n      cursor: not-allowed;\n    }\n\n    @media (max-width: 768px) {\n      .mljar-textinput-input {\n        min-height: 44px;\n        padding: 10px 12px;\n      }\n    }\n    ",
       "_dom_classes": [],
       "_esm": "\n    function render({ model, el }) {\n      const container = document.createElement(\"div\");\n      container.classList.add(\"mljar-textinput-container\");\n\n      const topLabel = document.createElement(\"div\");\n      topLabel.classList.add(\"mljar-textinput-top-label\");\n\n      const input = document.createElement(\"input\");\n      input.type = \"text\";\n      input.classList.add(\"mljar-textinput-input\");\n\n      container.appendChild(topLabel);\n      container.appendChild(input);\n      el.appendChild(container);\n\n      let debounceTimer = null;\n\n      input.addEventListener(\"input\", () => {\n        if (model.get(\"disabled\")) return;\n        model.set(\"value\", input.value);\n        if (debounceTimer) clearTimeout(debounceTimer);\n        debounceTimer = setTimeout(() => model.save_changes(), 200);\n      });\n\n      function syncFromModel() {\n        topLabel.innerHTML = model.get(\"label\") || \"Enter text\";\n        input.value = model.get(\"value\") ?? \"\";\n\n        const disabled = !!model.get(\"disabled\");\n        input.disabled = disabled;\n\n        const hidden = !!model.get(\"hidden\");\n        container.style.display = hidden ? \"none\" : \"flex\";\n      }\n\n      model.on(\"change:value\", syncFromModel);\n      model.on(\"change:label\", syncFromModel);\n      model.on(\"change:disabled\", syncFromModel);\n      model.on(\"change:hidden\", syncFromModel);\n\n      syncFromModel();\n\n      /*\n      // ---- read cell id (no DOM modifications) ----\n      const ID_ATTR = \"data-cell-id\";\n      const hostWithId = el.closest(`[${ID_ATTR}]`);\n      const cellId = hostWithId ? hostWithId.getAttribute(ID_ATTR) : null;\n\n      if (cellId) {\n        model.set(\"cell_id\", cellId);\n        model.save_changes();\n        model.send({ type: \"cell_id_detected\", value: cellId });\n      } else {\n        const mo = new MutationObserver(() => {\n          const host = el.closest(`[${ID_ATTR}]`);\n          const newId = host?.getAttribute(ID_ATTR);\n          if (newId) {\n            model.set(\"cell_id\", newId);\n            model.save_changes();\n            model.send({ type: \"cell_id_detected\", value: newId });\n            mo.disconnect();\n          }\n        });\n        mo.observe(document.body, { attributes: true, subtree: true, attributeFilter: [ID_ATTR] });\n      }\n      */\n    }\n    export default { render };\n    ",
       "_model_module": "anywidget",
       "_model_module_version": "~0.11.*",
       "_model_name": "AnyModel",
       "_view_count": null,
       "_view_module": "anywidget",
       "_view_module_version": "~0.11.*",
       "_view_name": "AnyView",
       "cell_id": "",
       "disabled": false,
       "hidden": false,
       "label": "CX Strategy — notes",
       "layout": "IPY_MODEL_579c991732914cb6b24d468ba77d1d5b",
       "layout_path": null,
       "position": "sidebar",
       "render_slot_id": null,
       "source_cell_id": null,
       "tabbable": null,
       "tooltip": null,
       "url_key": "",
       "value": ""
      }
     },
     "f766085686be42d4aa2c2c99427b1f16": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "fc9718f4007145fcb6382bb421ab30e4": {
      "model_module": "anywidget",
      "model_module_version": "~0.11.*",
      "model_name": "AnyModel",
      "state": {
       "_anywidget_id": "mercury.text.TextInputWidget",
       "_css": "\n    .mljar-textinput-container {\n      display: flex;\n      flex-direction: column;\n      align-items: flex-start;\n      width: 100%;\n      min-width: 120px;\n      font-family: ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;\n      font-size: 14px;\n      font-weight: normal;\n      color: #0f172a;\n      padding-left: 4px;\n      padding-right: 4px;\n      box-sizing: border-box;\n    }\n\n    .mljar-textinput-top-label {\n      padding-top: 6px;\n      margin-bottom: 6px;\n      text-align: left;\n      width: 100%;\n      font-weight: 600;\n    }\n\n    .mljar-textinput-input {\n      width: 100%;\n      min-height: 40px;\n      padding: 9px 10px;\n      box-sizing: border-box;\n      border: 1px solid #cfd1d5;\n      border-radius: 6px;\n      background: #ffffff;\n      color: #0f172a;\n      line-height: 1.4;\n\n      appearance: none !important;\n      background-color: #ffffff !important;\n    }\n\n    .mljar-textinput-input:focus {\n      outline: none;\n      border-color: #007bff;\n      box-shadow: none;\n    }\n\n    .mljar-textinput-input:disabled {\n      background: #f5f5f5;\n      color: #888;\n      cursor: not-allowed;\n    }\n\n    @media (max-width: 768px) {\n      .mljar-textinput-input {\n        min-height: 44px;\n        padding: 10px 12px;\n      }\n    }\n    ",
       "_dom_classes": [],
       "_esm": "\n    function render({ model, el }) {\n      const container = document.createElement(\"div\");\n      container.classList.add(\"mljar-textinput-container\");\n\n      const topLabel = document.createElement(\"div\");\n      topLabel.classList.add(\"mljar-textinput-top-label\");\n\n      const input = document.createElement(\"input\");\n      input.type = \"text\";\n      input.classList.add(\"mljar-textinput-input\");\n\n      container.appendChild(topLabel);\n      container.appendChild(input);\n      el.appendChild(container);\n\n      let debounceTimer = null;\n\n      input.addEventListener(\"input\", () => {\n        if (model.get(\"disabled\")) return;\n        model.set(\"value\", input.value);\n        if (debounceTimer) clearTimeout(debounceTimer);\n        debounceTimer = setTimeout(() => model.save_changes(), 200);\n      });\n\n      function syncFromModel() {\n        topLabel.innerHTML = model.get(\"label\") || \"Enter text\";\n        input.value = model.get(\"value\") ?? \"\";\n\n        const disabled = !!model.get(\"disabled\");\n        input.disabled = disabled;\n\n        const hidden = !!model.get(\"hidden\");\n        container.style.display = hidden ? \"none\" : \"flex\";\n      }\n\n      model.on(\"change:value\", syncFromModel);\n      model.on(\"change:label\", syncFromModel);\n      model.on(\"change:disabled\", syncFromModel);\n      model.on(\"change:hidden\", syncFromModel);\n\n      syncFromModel();\n\n      /*\n      // ---- read cell id (no DOM modifications) ----\n      const ID_ATTR = \"data-cell-id\";\n      const hostWithId = el.closest(`[${ID_ATTR}]`);\n      const cellId = hostWithId ? hostWithId.getAttribute(ID_ATTR) : null;\n\n      if (cellId) {\n        model.set(\"cell_id\", cellId);\n        model.save_changes();\n        model.send({ type: \"cell_id_detected\", value: cellId });\n      } else {\n        const mo = new MutationObserver(() => {\n          const host = el.closest(`[${ID_ATTR}]`);\n          const newId = host?.getAttribute(ID_ATTR);\n          if (newId) {\n            model.set(\"cell_id\", newId);\n            model.save_changes();\n            model.send({ type: \"cell_id_detected\", value: newId });\n            mo.disconnect();\n          }\n        });\n        mo.observe(document.body, { attributes: true, subtree: true, attributeFilter: [ID_ATTR] });\n      }\n      */\n    }\n    export default { render };\n    ",
       "_model_module": "anywidget",
       "_model_module_version": "~0.11.*",
       "_model_name": "AnyModel",
       "_view_count": null,
       "_view_module": "anywidget",
       "_view_module_version": "~0.11.*",
       "_view_name": "AnyView",
       "cell_id": "",
       "disabled": false,
       "hidden": false,
       "label": "Background & Organization — notes",
       "layout": "IPY_MODEL_aa0972e2e60b481d8f7746be441641e0",
       "layout_path": null,
       "position": "sidebar",
       "render_slot_id": null,
       "source_cell_id": null,
       "tabbable": null,
       "tooltip": null,
       "url_key": "",
       "value": ""
      }
     }
    },
    "version_major": 2,
    "version_minor": 0
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
