{"id":24336,"date":"2026-05-18T12:38:33","date_gmt":"2026-05-18T12:38:33","guid":{"rendered":"https:\/\/dumondeducation.com\/?page_id=24336"},"modified":"2026-08-18T06:49:42","modified_gmt":"2026-08-18T06:49:42","slug":"pivot-dashboard","status":"publish","type":"page","link":"https:\/\/dumondeducation.com\/de\/pivot-dashboard\/","title":{"rendered":"Pivot Dashboard"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"24336\" class=\"elementor elementor-24336\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2975941 e-flex e-con-boxed e-con e-parent\" data-id=\"2975941\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-e2b8611 e-con-full e-flex e-con e-child\" data-id=\"e2b8611\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4e49fdf elementor-widget elementor-widget-heading\" data-id=\"4e49fdf\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">PIVOT Self-Development Dashboard<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-b67619b e-flex e-con-boxed e-con e-parent\" data-id=\"b67619b\" data-element_type=\"container\" data-e-type=\"container\" id=\"master-action-plan\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c43ecc6 elementor-widget elementor-widget-html\" data-id=\"c43ecc6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!--\nPIVOT Dashboard v2.16.65 \u2014 LAUNCH-SAFETY \/ ENVIRONMENT-AWARE AJAX\nBaseline: v2.16.56 VOICE DEVELOPMENT ACTIONS PILOT.\nScope: connects voice-to-text to the actual floating + Add New Self-Development Action journey, removes the duplicate standalone Journal action block, and keeps the blue Development Snapshot as the single action overview while preserving assessment, Career Alignment, Journal export, wallet, rewards and membership architecture.\n- v2.16.64: My PIVOT Milestones now reads visit totals, milestone status, achievement dates and reward-awarded state from window.PIVOT_MILESTONE_DATA supplied by the secure server-side rewards engine.\n- v2.16.64: retires browser\/localStorage visit counting and removes legacy pivot_milestone_visits, pivot_last_visit_date and pivot_badge_dates keys without touching Journal or credit data.\n- v2.16.65: removes the Dashboard's obsolete browser-authoritative Credit deduction path. Paid Credit redemption can no longer be authorised by DOM wallet text, localStorage, a browser date or a browser-selected amount from this Dashboard.\n- v2.16.65: adds one environment-aware AJAX resolver that prefers the secure WordPress bridge and remains safe on root, staging and subdirectory installs.\n- v2.16.65: adds member-timezone-aware date helpers. Dashboard dates now prefer the trusted Member Timezone Core payload instead of the browser\/device calendar when it is available.\n- v2.16.65: makes Premium navigation environment-aware instead of hard-coding the live-site Premium URL.\n- v2.16.65: adds the current secure nonce to compatible Dashboard AJAX requests when the WordPress bridge provides one; server handlers remain authoritative for whether the nonce is required.\n- The floating + Add New Self-Development Action modal now receives the same Type or Speak control used by contextual actions.\n- New Development Actions now support Type or Speak.\n- Completion reflections now support Type or Speak.\n- Voice recordings are uploaded only for transcription; PIVOT does not intentionally store the audio file.\n- Transcripts always return to the existing editable textareas before the user saves.\n- Voice-created entries keep recorded-at metadata while continuing to use the existing action\/reflection data model.\n- Microphone denial, unsupported browsers or transcription errors fall back cleanly to normal typing.\n- Recording is capped at three minutes per note and active microphone streams are released when the modal closes.\n- Developing \/ Established \/ Higher level summary cards now open the exact capability areas in that band.\n- Each listed capability can jump directly back to its original assessment question for review\/update.\n- Planned \/ Completed action summary cards now open filtered action lists.\n- Individual journal action cards now open a view\/edit panel; planned actions retain the existing Mark complete journey.\n- Fixes filtered action completion to use the original action index rather than a filtered-array index.\n- Existing assessment scoring, scales, evidence gates, Career Alignment, O*NET logic, rewards and membership access are unchanged.\n- Phone review panels now open below the sticky PIVOT navigation instead of being hidden behind it.\n- Review panels reset to the top whenever opened so headings and close controls remain visible.\n- Career Explorer results now use a phone-first stacked card layout rather than squeezing the result and CTA side-by-side.\n- Career result lists use a deliberate phone-sized internal scroll viewport so long occupation lists do not make the Dashboard page endless.\n- The results viewport is now enforced in the rendered element itself as well as CSS, preventing legacy mobile rules from cancelling the internal scroll.\n- The page-level Dashboard heading is explicitly locked to the PIVOT Poppins\/Inter typography so legacy theme fonts cannot reappear.\n- Career Alignment and dimension badges stay inside the card at narrow widths, with readable full-width rows.\n- The Career Explorer search field uses a shorter mobile-safe prompt and padding.\n- Career detail navigation, regional selector and alignment summary receive matching phone-safe layout rules.\n- v2.16.63: Planned \/ Completed action lists use a PIVOT-blue close control at the top and a second Close control after the final item.\n- v2.16.62: the floating Add New Self-Development Action form reliably resets to the top on close and on each fresh opening.\n- v2.16.61: Planned \/ Completed action lists include a clear Back to Dashboard control.\n-->\n\n<script id=\"pivot-growth-secure-server-data-v1\">window.PIVOT_GROWTH_HUB_CONFIG=Object.assign({},window.PIVOT_GROWTH_HUB_CONFIG||{},{\"version\":\"1.0.2\",\"serverAuthority\":true,\"ajaxUrl\":\"https:\\\/\\\/dumondeducation.com\\\/wp-admin\\\/admin-ajax.php\",\"nonce\":\"59baa9c0f1\",\"siteUrl\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/\",\"growthHubUrl\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/growth-hub\\\/\",\"premiumUrl\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/premium-upgrade\\\/\",\"bookingUrl\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/book-coaching\\\/\",\"tier\":\"guest\",\"premium\":false,\"loggedIn\":false,\"balance\":null,\"memberTimezone\":\"\",\"memberLocalDate\":\"\",\"timezoneReady\":false,\"nextLocalMidnightUtc\":\"\",\"dailyCap\":500,\"dailySpend\":0,\"dailyRemaining\":500,\"timezoneGuardActive\":false,\"unlockedProductIds\":[],\"unlockedTitles\":[],\"bigChat\":{\"completedToday\":false,\"lastCompleted\":\"\",\"streak\":0,\"sessions\":0,\"reward\":5}});window.pivotPremiumDatabase=[{\"id\":\"post-28862\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Create a Personal Knowledge Base\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28862.png?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-create-a-personal-knowledge-base\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Creating a personal knowledge base means saving useful notes, summaries, links, templates, examples and reflections in one organised\\u2026\",\"primary_lane\":\"Learning & Digital Confidence\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28858\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Learn Through Trial Projects\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28858.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-learn-through-trial-projects\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Learning through trial projects means testing a new skill on a small, low-risk piece of work before using\\u2026\",\"primary_lane\":\"Thinking & Decision-Making\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":19,\"classification_reason\":[\"risk\",\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28854\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Review Meeting Notes or Reports\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28854.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-review-meeting-notes-or-reports\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Reviewing meeting notes or reports means studying professional documents to understand how information is structured, how evidence is\\u2026\",\"primary_lane\":\"Learning & Digital Confidence\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28850\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Request Opportunities to Observe Meetings\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28850.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-request-opportunities-to-observe-meetings\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Requesting opportunities to observe meetings means asking to sit in on appropriate professional discussions so that you can\\u2026\",\"primary_lane\":\"Leadership & Management\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28846\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Practise Networking Conversations\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28846.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-practise-networking-conversations\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Practising networking conversations means preparing and rehearsing short introductions, useful questions, listening skills, natural endings and relevant follow-up\\u2026\",\"primary_lane\":\"Communication & Relationships\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":19,\"classification_reason\":[\"listening\",\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28842\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Practise Decision-Making\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28842.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-practise-decision-making\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Practising decision-making means comparing options, considering risks, using evidence and explaining your reasoning before making a choice. The\\u2026\",\"primary_lane\":\"Thinking & Decision-Making\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":26,\"classification_reason\":[\"decision\",\"decision making\",\"reasoning\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28838\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Practise Problem-Solving Activities\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28838.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-practise-problem-solving-activities\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Practising problem-solving activities means using case studies, puzzles, scenarios, workplace problems or business challenges to strengthen analytical thinking,\\u2026\",\"primary_lane\":\"Thinking & Decision-Making\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":15,\"classification_reason\":[\"problem solving\",\"analytical\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28834\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Use AI as a Learning Assistant\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28834.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-use-ai-as-a-learning-assistant\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Using AI as a learning assistant means using artificial-intelligence tools to support explanation, questioning, practice, feedback, planning and\\u2026\",\"primary_lane\":\"Learning & Digital Confidence\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":15,\"classification_reason\":[\"ai\",\"artificial intelligence\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28830\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Attend Coaching or Advice Sessions\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28830.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-attend-coaching-or-advice-sessions\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Attending coaching or advice sessions means using structured guidance from university career services, workplace human-resources support, training advisers,\\u2026\",\"primary_lane\":\"Personal & Professional Development\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28826\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Create a Development Buddy System\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28826.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-create-a-development-buddy-system\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Creating a development buddy system means forming a structured, two-way partnership with another person so that you can\\u2026\",\"primary_lane\":\"Personal & Professional Development\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28822\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Study Successful People\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28822.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-study-successful-people\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Studying successful people means learning from biographies, interviews, talks, articles, case studies and other credible sources about people\\u2026\",\"primary_lane\":\"Learning & Digital Confidence\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":8,\"classification_reason\":[\"study\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28818\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Review Policies or Standards\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28818.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-review-policies-or-standards\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Reviewing policies or standards means reading relevant workplace, industry, academic or professional documents so that you understand expected\\u2026\",\"primary_lane\":\"Learning & Digital Confidence\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28814\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Use Feedback from Customers or Users\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28814.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-use-feedback-from-customers-or-users\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Using feedback from customers or users means learning from the people who receive, use or are affected by\\u2026\",\"primary_lane\":\"Communication & Relationships\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":11,\"classification_reason\":[\"feedback\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28810\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Complete Reflective Exercises\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28810.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-complete-reflective-exercises\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Completing reflective exercises means using structured questions, frameworks or activities to think carefully about experiences, values, goals, strengths,\\u2026\",\"primary_lane\":\"Personal & Professional Development\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28806\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Join Professional Associations\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28806.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-join-professional-associations\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Joining a professional association means becoming connected to a recognised body linked to your field, profession, industry or\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":19,\"classification_reason\":[\"profession\",\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28802\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Share Learning with Others\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28802.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-share-learning-with-others\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Sharing learning with others means presenting useful ideas from a course, book, article, podcast, webinar or other credible\\u2026\",\"primary_lane\":\"Communication & Relationships\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28798\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Develop a Personal Brand\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28798.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-develop-a-personal-brand\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Developing a personal brand means building a clear, credible professional identity based on your strengths, values, skills, evidence\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28794\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Set Up Regular Review Meetings\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28794.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-set-up-regular-review-meetings\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Setting up regular review meetings means arranging occasional, purposeful check-ins with a mentor, manager, tutor, coach or peer\\u2026\",\"primary_lane\":\"Personal & Professional Development\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28790\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Create an Achievement Log\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28790.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-create-an-achievement-log\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Creating an achievement log means keeping a structured record of completed work, positive feedback, progress, responsibilities, results and\\u2026\",\"primary_lane\":\"Personal & Professional Development\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28786\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Create a Feedback Log\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28786.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-create-a-feedback-log\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Creating a feedback log means keeping a structured record of useful feedback received from managers, teachers, colleagues, customers,\\u2026\",\"primary_lane\":\"Communication & Relationships\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":11,\"classification_reason\":[\"feedback\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28782\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Reflect After Important Tasks\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28782.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-reflect-after-important-tasks\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Reflecting after an important task means pausing after a meeting, presentation, project, decision or conversation to examine what\\u2026\",\"primary_lane\":\"Personal & Professional Development\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28778\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Learn from Mistakes\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28778.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-learn-from-mistakes\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Learning from mistakes means reviewing an error, poor decision, missed expectation or unsuccessful result so that you understand\\u2026\",\"primary_lane\":\"Wellbeing, Confidence & Resilience\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28774\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Ask for a New Responsibility at Work\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28774.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-ask-for-a-new-responsibility-at-work\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Asking for a new responsibility at work means requesting the opportunity to support a project, lead a defined\\u2026\",\"primary_lane\":\"Leadership & Management\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28770\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Record Yourself Practising\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28770.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-record-yourself-practising\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Recording yourself practising means creating an audio or video record of a presentation, interview answer, explanation, language task\\u2026\",\"primary_lane\":\"Learning & Digital Confidence\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28766\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Attend Language Practice Sessions\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28766.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-attend-language-practice-sessions\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Attending language practice sessions means improving English or another language through regular interaction with other people. This may\\u2026\",\"primary_lane\":\"Communication & Relationships\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28762\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Use Apps and Digital Tools\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28762.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-use-apps-and-digital-tools\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Using apps and digital tools for development means choosing technology that helps you organise, learn, practise, reflect, create\\u2026\",\"primary_lane\":\"Learning & Digital Confidence\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28758\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Build a Habit Routine\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28758.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-build-a-habit-routine\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Building a habit routine means creating a regular, repeatable time and process for learning, reflection, practice or reading\\u2026\",\"primary_lane\":\"Productivity & Self-Management\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28754\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Create an Action Plan\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28754.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-create-an-action-plan\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Creating an action plan means turning a development need, goal or decision into a practical sequence of steps.\\u2026\",\"primary_lane\":\"Productivity & Self-Management\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28750\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Map Skills Gaps\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28750.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-map-skills-gaps\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Mapping skills gaps means comparing the capabilities and evidence you currently have with the requirements of a target\\u2026\",\"primary_lane\":\"Personal & Professional Development\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28746\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Analyse Job Descriptions\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28746.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-analyse-job-descriptions\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Analysing job descriptions means reading job adverts systematically to understand what employers are really asking for. It involves\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":11,\"classification_reason\":[\"job\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28742\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Research Career Pathways\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28742.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-research-career-pathways\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Researching career pathways means exploring how people enter, develop and progress within a type of work. It includes\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":11,\"classification_reason\":[\"career\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28738\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Benchmark Against Others\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28738.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-benchmark-against-others\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Benchmarking means comparing your skills, work or performance with a relevant standard or example of good practice so\\u2026\",\"primary_lane\":\"Personal & Professional Development\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28732\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Experiment with New Methods\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28732.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-experiment-with-new-methods\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Experimenting with new methods means trying a different way of studying, working, communicating, planning or solving problems and\\u2026\",\"primary_lane\":\"Thinking & Decision-Making\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28728\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Use Action Learning\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28728.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-use-action-learning\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Action learning means developing your capability while working on a real problem. You take a considered action, observe\\u2026\",\"primary_lane\":\"Thinking & Decision-Making\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28724\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Receive Peer Review\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28724.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-receive-peer-review\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Receiving peer review means inviting classmates, colleagues or other suitable reviewers to examine your work and suggest improvements\\u2026\",\"primary_lane\":\"Communication & Relationships\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28720\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Peer Review Someone\\u2019s Work\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28720.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-peer-review-someones-work\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Peer review means examining another person\\u2019s work and giving feedback that helps them understand its strengths, weaknesses and\\u2026\",\"primary_lane\":\"Communication & Relationships\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":19,\"classification_reason\":[\"feedback\",\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28716\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Teach Someone Else\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28716.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-teach-someone-else\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Teaching another person is one of the clearest ways to test whether you really understand a topic. It\\u2026\",\"primary_lane\":\"Learning & Digital Confidence\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28712\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Join a Competition\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28712.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-join-a-competition\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Competitions can provide a focused way to stretch your abilities through a clear brief, deadline and external standard.\\u2026\",\"primary_lane\":\"Wellbeing, Confidence & Resilience\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28708\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Start a Small Project\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28708.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-start-a-small-project\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"A small project gives you the opportunity to create something useful over a defined period of time. It\\u2026\",\"primary_lane\":\"Productivity & Self-Management\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28702\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Complete a Challenge Task\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28702.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-complete-a-challenge-task\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"A challenge task is a practical activity you set yourself to stretch an existing capability or develop a\\u2026\",\"primary_lane\":\"Wellbeing, Confidence & Resilience\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28696\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Use Simulations\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28696.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-use-simulations\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Simulations allow you to practise business, management, leadership, finance and decision-making in a realistic but controlled scenario. You\\u2026\",\"primary_lane\":\"Thinking & Decision-Making\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":7,\"classification_reason\":[\"decision\",\"decision making\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28690\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Practise Using Digital Tools\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28690.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-practise-using-digital-tools\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Digital confidence develops when you use tools to complete meaningful tasks\\u2014not when you simply watch demonstrations or collect\\u2026\",\"primary_lane\":\"Learning & Digital Confidence\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":20,\"classification_reason\":[\"digital confidence\",\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28684\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Practise Professional Writing\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28684.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-practise-professional-writing\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Professional writing is the ability to communicate information, decisions, requests and recommendations clearly in a format suited to\\u2026\",\"primary_lane\":\"Communication & Relationships\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28678\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Practise Interviews\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28678.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-practise-interviews\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Mock interviews give you a structured way to practise answering questions, explaining your experience, managing nerves and presenting\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28672\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Role-Play Difficult Situations\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28672.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-role-play-difficult-situations\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Role-play allows you to practise a difficult conversation before facing a real one. It can help you prepare\\u2026\",\"primary_lane\":\"Communication & Relationships\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":19,\"classification_reason\":[\"conversation\",\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28666\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Practise Public Speaking\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28666.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-practise-public-speaking\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Public speaking is the ability to communicate ideas clearly to a group. You can practise it through class\\u2026\",\"primary_lane\":\"Communication & Relationships\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28660\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Join a Club or Society\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28660.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-join-a-club-or-society\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Joining a club or society can help you develop leadership, organisation, teamwork and social confidence through activities outside\\u2026\",\"primary_lane\":\"Communication & Relationships\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":19,\"classification_reason\":[\"teamwork\",\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28654\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Volunteer Outside Work or Study\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28654.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-volunteer-outside-work-or-study\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Volunteering outside work or study means giving your time, effort or skills to support a cause, community, organisation\\u2026\",\"primary_lane\":\"Personal & Professional Development\",\"secondary_lanes\":[\"Learning & Digital Confidence\"],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":24,\"classification_reason\":[\"curated item override\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28648\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Complete an Internship\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28648.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-complete-an-internship\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"An internship is a structured period of workplace learning connected to career goals. It usually lasts longer than\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":19,\"classification_reason\":[\"career\",\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28642\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Complete Work Experience\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28642.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-complete-work-experience\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Work experience gives you short-term practical exposure to a job, organisation or industry. It may involve observing employees,\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":19,\"classification_reason\":[\"job\",\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28636\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Attend an Open Day\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28636.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-attend-an-open-day\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"An open day is an organised opportunity to explore a university, employer, training provider or professional body before\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28630\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Visit a Workplace\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28630.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-visit-a-workplace\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Informational interviews are short, purposeful conversations with people working in roles, organisations or industries that interest you. They\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28624\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Conduct Informational Interviews\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28624.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-conduct-informational-interviews\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Informational interviews are short, purposeful conversations with people working in roles, organisations or industries that interest you. They\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28618\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Interview Someone Experienced\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28618.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-interview-someone-experienced\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Interviewing someone experienced is a structured way to learn from a person who has worked in a role,\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":8,\"classification_reason\":[\"interview\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28611\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Have a Career Conversation\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28611.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-have-a-career-conversation\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"A career conversation is a purposeful discussion with someone who can help you explore possible directions, understand role\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[\"Communication & Relationships\"],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":11,\"classification_reason\":[\"career\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28605\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Request a Performance Review\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28605.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-request-a-performance-review\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"A performance review is a structured conversation about your work, progress, strengths, development needs, support and future opportunities.\\u2026\",\"primary_lane\":\"Personal & Professional Development\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28599\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Update Your CV or R\\u00e9sum\\u00e9\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28599.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-update-your-cv-or-resume\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Updating your CV or r\\u00e9sum\\u00e9 means adding new and relevant evidence of your skills, experience, achievements, responsibilities, qualifications\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":11,\"classification_reason\":[\"cv\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28593\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Build a Portfolio\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28593.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-build-a-portfolio\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"A portfolio is a carefully selected collection of work and evidence that demonstrates what you can do, how\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28587\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Track Progress\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28587.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-track-progress\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Tracking progress means keeping organised evidence of development over time. This may include training records, certificates, feedback, reflections,\\u2026\",\"primary_lane\":\"Productivity & Self-Management\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28581\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Set SMART Goals\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28581.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-set-smart-goals\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"SMART goals turn broad intentions into development targets that are specific, measurable, achievable, relevant and time-bound. They help\\u2026\",\"primary_lane\":\"Productivity & Self-Management\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":11,\"classification_reason\":[\"goals\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28575\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Create a Professional Development Plan\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28575.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-create-a-professional-development-plan\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"A professional development plan is a structured career-focused plan that identifies where you want to go, which skills,\\u2026\",\"primary_lane\":\"Personal & Professional Development\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":12,\"classification_reason\":[\"professional development\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28569\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Create a Personal Development Plan\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28569.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-create-a-personal-development-plan\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"A personal development plan is a structured record of what you want to improve, why it matters, what\\u2026\",\"primary_lane\":\"Personal & Professional Development\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":12,\"classification_reason\":[\"personal development\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28563\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Keep a Reflective Journal\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28563.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-keep-a-reflective-journal\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"A reflective journal is a private or professionally managed record of experiences, learning, challenges, decisions and future actions.\\u2026\",\"primary_lane\":\"Personal & Professional Development\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28557\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Complete Self-Assessments\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28557.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-complete-self-assessments\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Self-assessments are structured tools that help you reflect on your skills, knowledge, behaviour, preferences, confidence and development needs.\\u2026\",\"primary_lane\":\"Personal & Professional Development\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28551\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Use Templates and Checklists\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28551.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-use-templates-and-checklists\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Templates and checklists are structured tools that help people plan, create, review and complete work consistently. A template\\u2026\",\"primary_lane\":\"Productivity & Self-Management\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28545\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Analyse Examples of Good Work\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28545.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-analyse-examples-of-good-work\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Analysing examples of good work means studying strong reports, presentations, CVs, emails, project plans, strategies or other outputs\\u2026\",\"primary_lane\":\"Thinking & Decision-Making\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28539\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Review Case Studies\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28539.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-review-case-studies\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Case studies use real or realistic situations to examine decisions, problems, actions and outcomes. They may describe an\\u2026\",\"primary_lane\":\"Thinking & Decision-Making\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":19,\"classification_reason\":[\"decisions\",\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28533\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Subscribe to Newsletters\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28533.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-subscribe-to-newsletters\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Professional newsletters can help you keep up with research, industry change, events, opportunities, new tools and expert commentary.\\u2026\",\"primary_lane\":\"Learning & Digital Confidence\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28527\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Follow Thought Leaders\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28527.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-follow-thought-leaders\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Following thought leaders can expose you to new ideas, research, professional debates, emerging practices and different ways of\\u2026\",\"primary_lane\":\"Learning & Digital Confidence\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28521\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Read Industry Reports\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28521.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-read-industry-reports\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Industry reports can help you understand the forces changing a sector, including technology, customer behaviour, regulation, skills, investment,\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28515\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Create a Reading List\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28515.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-create-a-reading-list\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"A reading list is a planned collection of books, articles, reports, blogs and other written resources connected to\\u2026\",\"primary_lane\":\"Learning & Digital Confidence\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28509\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Use Micro-Learning\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28509.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-use-micro-learning\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Micro-learning means developing knowledge or skills through short, focused learning sessions. A session might involve one video, one\\u2026\",\"primary_lane\":\"Learning & Digital Confidence\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28503\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Complete a Professional Certificate\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28503.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-complete-a-professional-certificate\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"A professional certificate is a structured programme that confirms you have completed learning or demonstrated competence in a\\u2026\",\"primary_lane\":\"Learning & Digital Confidence\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28497\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Build a Learning Network\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28497.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-build-a-learning-network\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"A learning network is a group of people who are developing similar skills, exploring related subjects or working\\u2026\",\"primary_lane\":\"Learning & Digital Confidence\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-23967\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Career Spotlight: Market Research Analysts &amp; Marketing Specialists\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-23967.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/career-spotlight-market-research-analysts-marketing-specialists\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Ever wondered why certain brands seem to know exactly what you\\u2019re thinking? That\\u2019s the work of Market Research\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":8,\"classification_reason\":[\"career\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-23975\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Career Spotlight: Actors\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-23975.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/career-spotlight-actors\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Acting is perhaps one of the most visible yet misunderstood careers. While we see the glamour of the\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":11,\"classification_reason\":[\"career\",\"careers\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-23981\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Career Spotlight: Audio and Video Technicians\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-23981.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/career-spotlight-audio-and-video-technicians\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"If you love the \\\"magic\\\" behind a live concert or a crisp YouTube video, a career as an\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":11,\"classification_reason\":[\"career\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-23979\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Career Spotlight: Athletes and Sports Competitors\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-23979.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/career-spotlight-athletes-and-sports-competitors\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"For many, being a professional Athlete is the ultimate dream. It is a career of extreme highs and\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":11,\"classification_reason\":[\"career\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-23977\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Career Spotlight: Art Directors\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-23977.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/career-spotlight-art-directors\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"If you have a vision for how a brand should look and the leadership skills to make it\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":8,\"classification_reason\":[\"career\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-23973\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Career Spotlight: Training and Development Specialists\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-23973.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/career-spotlight-training-and-development-specialists\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Are you passionate about helping others reach their full potential? Training and Development Specialists (often called Learning &amp;\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":8,\"classification_reason\":[\"career\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-23971\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Career Spotlight: Tax Examiners, Collectors and Revenue Agent\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-23971.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/career-spotlight-tax-examiners-collectors-and-revenue-agent\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"If you have a sharp eye for detail and a passion for fairness, a career in tax might\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":11,\"classification_reason\":[\"career\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-23969\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Career Spotlight: Project Management Specialists\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-23969.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/career-spotlight-project-management-specialists\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"If you are the person who always organises the group holiday or keeps the family calendar on track,\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[\"Leadership & Management\"],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":8,\"classification_reason\":[\"career\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-23964\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Career Spotlight: Financial and Investment Analysts\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-23964.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/career-spotlight-financial-and-investment-analysts\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"If you are a news junkie who loves to predict what happens next, a career as a Financial\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[\"Money & Practical Life Skills\"],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":11,\"classification_reason\":[\"career\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-23962\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Career Spotlight: Accountants and Auditors\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-23962.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/career-spotlight-accountants-and-auditors\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"If you think accounting is just about tax returns and calculators, think again. In 2026, Accountants and Auditors\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":8,\"classification_reason\":[\"career\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-23985\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Career Spotlight: Film and Video Editors\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-23985.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/career-spotlight-film-and-video-editors\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"If a Director is the \\\"author\\\" of a movie, the Editor is the \\\"architect.\\\" They take hundreds of\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":8,\"classification_reason\":[\"career\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-23983\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Career Spotlight: Camera Operators (TV, Video, and Film)\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-23983.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/career-spotlight-camera-operators-tv-video-and-film\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Camera Operators are the technical and creative eyes of a production. Whether they are capturing a fast-paced football\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":8,\"classification_reason\":[\"career\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-23987\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Career Spotlight: Fashion Designers\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-23987.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/career-spotlight-fashion-designers\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Fashion design is for those who want to shape how the world looks and feels. It is a\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":8,\"classification_reason\":[\"career\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-23989\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Career Spotlight: Graphic Designers\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-23989.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/career-spotlight-graphic-designers\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Graphic Designers are the visual storytellers of the modern world. They combine art and technology to communicate ideas\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":8,\"classification_reason\":[\"career\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-23991\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Career Spotlight: Interior Designers\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-23991.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/career-spotlight-interior-designers\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Interior Designers don't just \\\"decorate\\\" rooms; they design the way we live and work. They ensure that indoor\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":8,\"classification_reason\":[\"career\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-23993\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Career Spotlight: Musicians and Singers\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-23993.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/career-spotlight-musicians-and-singers\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Being a professional Musician or Singer is a career driven by passion and talent. In 2026, the path\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":11,\"classification_reason\":[\"career\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-23995\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Career Spotlight: Photographers\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-23995.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/career-spotlight-photographers\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"In 2026, being a Photographer is about much more than just clicking a button. It is a blend\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":8,\"classification_reason\":[\"career\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-23997\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Career Spotlight: Producers and Directors\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-23997.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/career-spotlight-producers-and-directors\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Producers and Directors are the leaders of the screen. While the Producer handles the \\\"business\\\" (money, hiring, and\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":8,\"classification_reason\":[\"career\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-23999\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Career Spotlight: Special Effects (VFX) Artists and Animators\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-23999.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/career-spotlight-special-effects-vfx-artists-and-animators\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"VFX Artists and Animators are the modern-day wizards of cinema and gaming. They bring the impossible to life\\u2014whether\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":8,\"classification_reason\":[\"career\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28472\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Join a Professional Community\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28472.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-join-a-professional-community\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"A professional community brings together people who share an industry, role, subject, career interest or learning goal. It\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":19,\"classification_reason\":[\"career\",\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28466\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Join a Discussion Group\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28466.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-join-a-discussion-group\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"A discussion group brings people together to explore a topic through structured conversation. Participants may share experiences, compare\\u2026\",\"primary_lane\":\"Communication & Relationships\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":19,\"classification_reason\":[\"conversation\",\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28460\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Prepare and Deliver a Presentation\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28460.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-prepare-and-deliver-a-presentation\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Preparing and delivering a presentation is a practical way to improve confidence, communication, structure and professional speaking. A\\u2026\",\"primary_lane\":\"Communication & Relationships\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":19,\"classification_reason\":[\"communication\",\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28454\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Lead a Small Activity\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28454.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-lead-a-small-activity\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Leading a small activity is a practical way to develop leadership before taking responsibility for a larger team\\u2026\",\"primary_lane\":\"Leadership & Management\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":19,\"classification_reason\":[\"leadership\",\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28448\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Take on a Stretch Assignment\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28448.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-take-on-a-stretch-assignment\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"A stretch assignment is a real task that sits slightly beyond what you already do confidently. It may\\u2026\",\"primary_lane\":\"Wellbeing, Confidence & Resilience\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28442\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Volunteer for a Task\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28442.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-volunteer-for-a-task\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Volunteering for a task means offering to take responsibility for a useful activity, project, event or piece of\\u2026\",\"primary_lane\":\"Leadership & Management\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28436\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Take Part in a Group Project\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28436.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-take-part-in-a-group-project\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"A group project gives you the opportunity to work with other people towards a shared outcome. It may\\u2026\",\"primary_lane\":\"Communication & Relationships\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28430\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Join a Professional Event\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28430.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-join-a-professional-event\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Professional events can help you understand careers, organisations, industries and professional communities by speaking directly with people who\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":19,\"classification_reason\":[\"careers\",\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28424\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Attend a Conference\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28424.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-attend-a-conference\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"A conference brings people together to share knowledge, discuss current developments, present research, explore professional challenges and build\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28418\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Join a Workshop\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28418.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-join-a-workshop\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"A workshop is an interactive learning session in which participants do more than listen. You may discuss ideas,\\u2026\",\"primary_lane\":\"Learning & Digital Confidence\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28408\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Use a Coach\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28408.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-use-a-coach\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"A coach helps you work towards a defined goal through structured questions, reflection, challenge, practice and review. Coaching\\u2026\",\"primary_lane\":\"Personal & Professional Development\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28402\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Use a Mentor\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28402.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-use-a-mentor\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"A mentor is someone with relevant experience who helps you think more clearly about your development, choices and\\u2026\",\"primary_lane\":\"Personal & Professional Development\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28396\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Ask for Feedback\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28396.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-ask-for-feedback\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Feedback can help you see your work from another person\\u2019s perspective. A teacher, manager, colleague, mentor or peer\\u2026\",\"primary_lane\":\"Communication & Relationships\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":11,\"classification_reason\":[\"feedback\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28390\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Investigate a Topic\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28390.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-investigate-a-topic\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Investigating a topic means researching an area you need to understand more clearly before making a decision, beginning\\u2026\",\"primary_lane\":\"Thinking & Decision-Making\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":19,\"classification_reason\":[\"decision\",\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28384\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Practise a Skill Regularly\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28384.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-practise-a-skill-regularly\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Regular practice is one of the most reliable ways to improve a skill. Whether you are developing presentation\\u2026\",\"primary_lane\":\"Learning & Digital Confidence\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28378\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Observe Good Practice\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28378.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-observe-good-practice\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Observing good practice means deliberately watching how skilled people communicate, lead meetings, solve problems, support customers, organise work\\u2026\",\"primary_lane\":\"Learning & Digital Confidence\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28372\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Shadow Someone Experienced\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28372.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-shadow-someone-experienced\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Shadowing means spending an agreed period observing a more experienced colleague, manager, teacher or professional while they carry\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28366\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Watch Educational Videos\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28366.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-watch-educational-videos\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Educational videos can help you understand ideas quickly by combining spoken explanation, visual examples, diagrams, demonstrations and real\\u2026\",\"primary_lane\":\"Learning & Digital Confidence\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28360\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Watch a Webinar\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28360.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-watch-a-webinar\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"A webinar is a live or recorded online session in which an expert, practitioner, organisation or panel shares\\u2026\",\"primary_lane\":\"Learning & Digital Confidence\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28354\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Listen to a Podcast\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28354.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-listen-to-a-podcast\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Podcasts can make learning easier to fit into everyday life. You can listen while travelling, walking, exercising, completing\\u2026\",\"primary_lane\":\"Learning & Digital Confidence\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28348\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Read an Article or Blog\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28348.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-read-an-article-or-blog\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Why reading articles and blogs is a smart learning habit Not every learning step needs to be big.\\u2026\",\"primary_lane\":\"Learning & Digital Confidence\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28335\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Read a Book\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28335.png?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-how-to-guide-to-self-directed-learning-read-a-book\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Reading a well-chosen book can introduce you to new ideas, deepen your understanding, challenge your assumptions and give\\u2026\",\"primary_lane\":\"Learning & Digital Confidence\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28313\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Complete an online course\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28313.png?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/complete-an-online-course\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"An online course can give you flexible access to knowledge, demonstrations, practice activities and expert guidance from almost\\u2026\",\"primary_lane\":\"Learning & Digital Confidence\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28290\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The How-To Guide to Self-Directed Learning: Attend Formal Training\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/pivot-generated-covers\\\/pivot-how-to-28290.webp?fit=300%2C158&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/attend-formal-training\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Formal training can help you develop a new skill, strengthen an existing one, or gain the knowledge needed\\u2026\",\"primary_lane\":\"Learning & Digital Confidence\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"curated series subject\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-28067\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"What Skills and Personal Qualities Are Employers Looking for in 2026?\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/ChatGPT-Image-Jul-28-2026-12_11_33-PM.webp?fit=300%2C169&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/skills-personal-qualities-employers-want-2026\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Qualifications and technical knowledge remain important, especially in specialist careers. However, employers increasingly want evidence of what a\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":34,\"classification_reason\":[\"career\",\"careers\",\"employability\",\"employability skills\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-22658\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Shine Bright: The Best Jobs and Careers for Extroverts\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/JOB-HUNTING-10.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/shine-bright-the-best-jobs-and-careers-for-extroverts\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Extrovert\"],\"desc\":\"Are you the kind of person who lights up a room just by walking into it? Do you\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"careers\",\"jobs\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-22647\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Zero Talent Required: Workplace Behaviours That Make All the Difference\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/JOB-HUNTING-9.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/zero-talent-required-workplace-behaviours-that-make-all-the-difference\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Work Behaviours\"],\"desc\":\"In the hustle and bustle of the modern workplace, we often focus on skills, qualifications, and experience. We\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":26,\"classification_reason\":[\"workplace behaviours\",\"work behaviours\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-22679\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Trade the Commute for Coconut Trees: 10 Ideas for a Working Vacation\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/JOB-HUNTING-13.webp?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/trade-the-commute-for-coconut-trees-10-ideas-for-a-working-vacation\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Working Vacation\"],\"desc\":\"Feeling that familiar tug-of-war between the need to earn and the yearning to explore? You're not alone! The\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":25,\"classification_reason\":[\"working vacation\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-22640\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Unleash Your Inner Muse: Top 10 Jobs for Creative Souls\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/JOB-HUNTING-8.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/unleash-your-inner-muse-top-10-jobs-for-creative-souls\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Creativity\"],\"desc\":\"Are you someone whose mind is constantly buzzing with new ideas? Do you find yourself drawn to projects\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[\"Thinking & Decision-Making\"],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":32,\"classification_reason\":[\"jobs\",\"curated item override\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-22672\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Unlock Your Flexibility: 20 Part-Time Jobs That Fit Your Life\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/JOB-HUNTING-12.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/unlock-your-flexibility-20-part-time-jobs-that-fit-your-life\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Part-Time\"],\"desc\":\"Life's busy. Whether you're a student juggling studies, a parent needing flexible hours, someone looking to supplement their\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":43,\"classification_reason\":[\"jobs\",\"part time\",\"part time jobs\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-22686\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Level Up Your Life: Powerful Self-Development Strategies for Adults\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/JOB-HUNTING-14.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/level-up-your-life-powerful-self-development-strategies-for-adults\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Self-development\"],\"desc\":\"Life as an adult is a whirlwind. Between work, family, and social obligations, it's easy to get caught\\u2026\",\"primary_lane\":\"Personal & Professional Development\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":25,\"classification_reason\":[\"self development\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-22665\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Shine Your Inner Light: The Best Jobs and Careers for Introverts\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/JOB-HUNTING-11.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/shine-your-inner-light-the-best-jobs-and-careers-for-introverts\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Introvert\"],\"desc\":\"In a world that often seems to celebrate the loud and the outgoing, it's easy for introverts to\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"careers\",\"jobs\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-22389\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Beyond the Horizon: 10 Rewarding Jobs Working at Sea (and What It Takes to Get There!)\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/JOB-HUNTING-2.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/beyond-the-horizon-10-rewarding-jobs-working-at-sea-and-what-it-takes-to-get-there\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Working at Sea\"],\"desc\":\"\\u00a0The allure of the open ocean is timeless. The vast expanse of blue, the salty air, and the\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":8,\"classification_reason\":[\"jobs\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-22383\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"So You Want to Become a Photographer? Capturing Moments, Crafting Stories!\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/Job-Roles-62.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/so-you-want-to-become-a-photographer-capturing-moments-crafting-stories\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Job Outlines\",\"Photographer\"],\"desc\":\"The world through a lens \\u2013 it's a captivating perspective that many dream of turning into a career.\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":19,\"classification_reason\":[\"career\",\"job\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-22377\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"So You Want to Become a Beautician? Painting Confidence, One Treatment at a Time!\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/Job-Roles-61.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/so-you-want-to-become-a-beautician-painting-confidence-one-treatment-at-a-time\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Beautician\",\"Job Outlines\"],\"desc\":\"The beauty industry is a vibrant and ever-evolving world, offering a multitude of ways to help people look\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[\"Wellbeing, Confidence & Resilience\"],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"job\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-22371\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"So You Want to Become a Physiotherapist? Helping Bodies Move and Thrive!\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/Job-Roles-60.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/so-you-want-to-become-a-physiotherapist-helping-bodies-move-and-thrive\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Job Outlines\",\"Physiotherapist\"],\"desc\":\"Do you find yourself fascinated by the human body and its incredible capacity for movement and recovery? Are\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"job\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-22365\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"So You Want to Become an Optician? Focusing on Vision and Style!\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/Job-Roles-59.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/so-you-want-to-become-an-optician-focusing-on-vision-and-style\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Job Outlines\",\"Optician\"],\"desc\":\"Do you have a knack for detail, an interest in healthcare, and a flair for fashion? If so,\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"job\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-22359\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"So You Want to Become a Welder? Forging a Solid Career!\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/Job-Roles-58.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/so-you-want-to-become-a-welder-forging-a-solid-career\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Job Outlines\",\"Welder\"],\"desc\":\"The spark of the arc, the hiss of the gas, the satisfaction of joining two pieces of metal\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":24,\"classification_reason\":[\"career\",\"job\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-22353\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Night Owls Wanted: 10 Jobs That Thrive After Dark\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/JOB-HUNTING-1.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/night-owls-wanted-10-jobs-that-thrive-after-dark\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Night Working\"],\"desc\":\"The sun sets, the world sleeps, but some industries keep humming. For those who thrive in the quiet\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":8,\"classification_reason\":[\"jobs\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-22347\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"20 Jobs You Can Do Right Now (Almost!) - No Qualifications Required\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/JOB-HUNTING.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/20-jobs-you-can-do-right-now-almost-no-qualifications-required\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"No Qualifications\"],\"desc\":\"\\u00a0Feeling stuck in a rut? Need some quick income? The good news is that there are still plenty\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":8,\"classification_reason\":[\"jobs\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-22395\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Pack Your Bags, Chase the Horizon: 10 Jobs That Fuel Your Wanderlust\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/JOB-HUNTING-3.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/pack-your-bags-chase-the-horizon-10-jobs-that-fuel-your-wanderlust\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Frequent Travel\"],\"desc\":\"\\u00a0Do you feel a constant pull towards the unknown? Does the thought of a traditional 9-to-5 leave you\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":8,\"classification_reason\":[\"jobs\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-22329\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"So You Want to Become a Tailor? Stitching Together a Career in Craftsmanship!\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/Job-Roles-56.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/so-you-want-to-become-a-tailor-stitching-together-a-career-in-craftsmanship\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Job Outlines\",\"Tailor\"],\"desc\":\"In a world of mass-produced clothing, the art of tailoring stands out as a testament to precision, skill,\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":24,\"classification_reason\":[\"career\",\"job\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-22323\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"So You Want to Become a Web Designer? Crafting Digital Experiences!\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/Job-Roles-55.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/so-you-want-to-become-a-web-designer-crafting-digital-experiences\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Job Outlines\",\"Web Designer\"],\"desc\":\"In today's digital-first world, websites are the storefronts, the information hubs, and the communication channels for individuals and\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"job\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-22317\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"So You Want to Become a Jewellery Maker? Crafting Beauty, Spark by Spark!\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/Job-Roles-54.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/so-you-want-to-become-a-jewellery-maker-crafting-beauty-spark-by-spark\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Jewellery Maker\",\"Job Outlines\"],\"desc\":\"Do you find yourself drawn to the delicate sparkle of gemstones, the smooth gleam of polished metal, and\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"job\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-22311\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"So You Want to Become a Confectioner? Sweetening the World, One Treat at a Time!\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/Job-Roles-53.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/so-you-want-to-become-a-confectioner-sweetening-the-world-one-treat-at-a-time\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Confectioner\",\"Job Outlines\"],\"desc\":\"Do you find yourself mesmerized by the artistry of sugar work, the rich aroma of melting chocolate, and\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"job\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-22305\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"So You Want to Become a Lifeguard? Guardians of the Water!\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/Job-Roles-52.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/so-you-want-to-become-a-lifeguard-guardians-of-the-water\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Job Outlines\",\"Lifeguard\"],\"desc\":\"The image of a lifeguard often conjures up sunny days, watchful eyes scanning the water, and the heroic\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"job\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-22299\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"So You Want to Become a Gas Fitter? Ensuring Safety, Powering Homes!\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/Job-Roles-51.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/so-you-want-to-become-a-gas-fitter-ensuring-safety-powering-homes\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Gas Fitter\",\"Job Outlines\"],\"desc\":\"In our modern world, natural gas plays a crucial role in heating our homes, cooking our food, and\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"job\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-22293\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"So You Want to Become a Delivery Driver? Hitting the Road to Opportunity!\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/Job-Roles-50.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/so-you-want-to-become-a-delivery-driver-hitting-the-road-to-opportunity\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Delivery Driver\",\"Job Outlines\"],\"desc\":\"In our fast-paced world, delivery drivers are the unsung heroes who keep things moving. From packages and groceries\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"job\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-22287\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"So You Want to Become a Paramedic? The Frontline of Emergency Care!\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/Job-Roles-49.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/so-you-want-to-become-a-paramedic-the-frontline-of-emergency-care\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Job Outlines\",\"Paramedic\"],\"desc\":\"The wail of the siren, the urgency of the moment \\u2013 paramedics are the highly skilled medical professionals\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"job\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-22408\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Escape the Office: 10 Remote Jobs You Can Do From Home\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/JOB-HUNTING-5.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/escape-the-office-10-remote-jobs-you-can-do-from-home\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Working from Home\"],\"desc\":\"The rise of remote work has opened up a world of possibilities for those seeking flexibility and autonomy\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":30,\"classification_reason\":[\"jobs\",\"working from home\",\"remote work\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-22281\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"So You Want to Join the Armed Forces? A Path of Service, Discipline, and Purpose!\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/Job-Roles-48.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/so-you-want-to-join-the-armed-forces-a-path-of-service-discipline-and-purpose\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Armed Forces\",\"Job Outlines\"],\"desc\":\"The call to serve your country in the armed forces is a powerful one, driven by a sense\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"job\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-22275\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"So You Want to Become a Fashion Designer? Weaving Dreams into Reality!\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/Job-Roles-47.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/so-you-want-to-become-a-fashion-designer-weaving-dreams-into-reality\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Fashion Designer\",\"Job Outlines\"],\"desc\":\"Do you find yourself sketching designs on napkins, dreaming in colour palettes, and envisioning the next ground-breaking silhouette?\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"job\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-22269\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"So You Want to Become a Kitchen Fitter? Building the Heart of the Home!\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/Job-Roles-46.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/so-you-want-to-become-a-kitchen-fitter-building-the-heart-of-the-home\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Job Outlines\",\"Kitchen Fitter\"],\"desc\":\"The kitchen is often called the heart of the home, and kitchen fitters are the skilled craftspeople who\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"job\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-22263\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"So You Want to Become a Janitor? More Than Just Mops and Buckets!\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/Job-Roles-45.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/so-you-want-to-become-a-janitor-more-than-just-mops-and-buckets\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Janitor\",\"Job Outlines\"],\"desc\":\"While often unseen, the work of a janitor is essential for maintaining clean, safe, and healthy environments in\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"job\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-22257\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"So You Want to Work in Retail? Let's Stock Up on Success!\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/Job-Roles-44.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/so-you-want-to-work-in-retail-lets-stock-up-on-success\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Job Outlines\",\"Retail\"],\"desc\":\"From the bustling energy of department stores to the curated charm of boutiques, the retail industry offers a\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"job\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-22251\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"So You Want to Work in Sales? Let's Talk Closing Deals and Building Relationships!\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/Job-Roles-43.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/so-you-want-to-work-in-sales-lets-talk-closing-deals-and-building-relationships\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Job Outlines\",\"Sales\"],\"desc\":\"From the adrenaline of hitting targets to the satisfaction of helping customers find the perfect solution, a career\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[\"Communication & Relationships\"],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":43,\"classification_reason\":[\"career\",\"job\",\"sales\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-22188\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"So You Want to Become a Horologist? Tick-Tock Goes Your Journey!\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/Job-Roles-36.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/so-you-want-to-become-a-horologist-tick-tock-goes-your-journey\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Horologist\",\"Job Outlines\"],\"desc\":\"Do you find yourself mesmerized by the intricate dance of gears and springs within a timepiece? Are you\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"job\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-22179\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"So You Want to Become an Insurance Agent? Protecting Futures, Building Relationships!\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/Job-Roles-35.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/so-you-want-to-become-an-insurance-agent-protecting-futures-building-relationships\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Insurance Agent\",\"Job Outlines\"],\"desc\":\"In a world filled with uncertainties, insurance agents play a vital role in helping individuals, families, and businesses\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[\"Communication & Relationships\"],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"job\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-22206\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"So You Want to Become a Gardener? Cultivating Your Green Thumb!\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/Job-Roles-37.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/so-you-want-to-become-a-gardener-cultivating-your-green-thumb\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Gardener\",\"Job Outlines\"],\"desc\":\"The scent of freshly turned soil, the vibrant colours of blooming flowers, the satisfaction of harvesting your own\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"job\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-22154\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"So You Want to Become a Quantity Surveyor? Let's Calculate Your Future!\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/Job-Roles-34.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/so-you-want-to-become-a-quantity-surveyor-lets-calculate-your-future\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Job Outlines\",\"Quantity Surveyor\"],\"desc\":\"More than just counting bricks and beams, quantity surveyors are the financial guardians of construction projects. They manage\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"job\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-22148\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"So You Want to Become a Bartender? Let's Shake Things Up!\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/Job-Roles-33.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/so-you-want-to-become-a-bartender-lets-shake-things-up\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Bartender\",\"Job Outlines\"],\"desc\":\"More than just pouring drinks, being a bartender (mixologist, bar staff) is about creating an atmosphere, crafting experiences,\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"job\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-22200\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The Biggest Challenges Facing Job Seekers and How to Overcome Them\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/Untitled-design-2025-04-01T160041.754.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-biggest-challenges-facing-job-seekers-and-how-to-overcome-them\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Job Seeking\"],\"desc\":\"The job market is constantly evolving, and with it, the challenges faced by job seekers. In today's competitive\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":44,\"classification_reason\":[\"job\",\"job seeking\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-22142\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"So You Want to Become a Commercial Pilot? Buckle Up for Adventure and Precision!\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/Job-Roles-32.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/so-you-want-to-become-a-commercial-pilot-buckle-up-for-adventure-and-precision\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Commercial Pilot\",\"Job Outlines\"],\"desc\":\"The allure of soaring through the skies, the challenge of mastering a complex machine, and the responsibility of\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"job\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-22136\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"So You Want to Become a Train Driver? All Aboard for Responsibility and Precision!\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/Job-Roles-31.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/so-you-want-to-become-a-train-driver-all-aboard-for-responsibility-and-precision\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Job Outlines\",\"Train Driver\"],\"desc\":\"The rhythmic rumble of the rails, the panoramic views from the cab, and the responsibility of safely transporting\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"job\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-22130\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"So You Want to Become a Taxi Driver? Let's Hit the Road!\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/Job-Roles-30.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/so-you-want-to-become-a-taxi-driver-lets-hit-the-road\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Job Outlines\",\"Taxi Driver\"],\"desc\":\"Being a taxi driver offers a unique blend of independence and interaction. You'll navigate city streets, meet diverse\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"job\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-22124\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"So You Want to Become a Security Guard? Let's Talk Vigilance and Responsibility!\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/Job-Roles-29.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/so-you-want-to-become-a-security-guard-lets-talk-vigilance-and-responsibility\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Job Outlines\",\"Security Guard\"],\"desc\":\"Being a security guard is a vital role that ensures the safety and security of people and property.\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"job\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-22118\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"So You Want to Become a Teacher's Assistant? Let's Get Ready to Support!\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/Job-Roles-28.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/so-you-want-to-become-a-teachers-assistant-lets-get-ready-to-support\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Job Outlines\",\"Teacher's Assistant\"],\"desc\":\"Being a teacher's assistant is a rewarding role that allows you to directly impact students' lives and contribute\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"job\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-22112\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"So You Want to Become a Lorry Driver? Hit the Open Road!\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/Job-Roles-27.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/so-you-want-to-become-a-lorry-driver-hit-the-open-road\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Job Outlines\",\"Lorry Driver\"],\"desc\":\"The freedom of the open road, the challenge of navigating large vehicles, and the satisfaction of delivering goods\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"job\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-22106\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"So You Want to Become a Barista? Let's Brew Up Some Knowledge!\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/Job-Roles-26.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/so-you-want-to-become-a-barista-lets-brew-up-some-knowledge\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Barista\",\"Job Outlines\"],\"desc\":\"More than just pouring coffee, being a barista is about crafting experiences. It's about combining the art of\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"job\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-22100\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"So You Want to Become a Carpenter? Let's Build Something Great!\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/Job-Roles-25.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/so-you-want-to-become-a-carpenter-lets-build-something-great\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Carpenter\",\"Job Outlines\"],\"desc\":\"From framing houses to crafting intricate furniture, carpentry is a skilled trade that transforms raw materials into functional\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"job\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-22094\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"So You Want to Become a Pharmacist? Let's Talk Medications and Meticulousness!\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/Job-Roles-24.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/so-you-want-to-become-a-pharmacist-lets-talk-medications-and-meticulousness\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Job Outlines\",\"Pharmacist\"],\"desc\":\"More than just dispensing prescriptions, pharmacists are essential healthcare professionals who ensure the safe and effective use of\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"job\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-22085\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"So You Want to Become an Architect? Let's Build Your Dream!\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/Job-Roles-23.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/so-you-want-to-become-an-architect-lets-build-your-dream\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Architect\",\"Job Outlines\"],\"desc\":\"From designing breath-taking skyscrapers to crafting cozy homes, architects shape the spaces we live, work, and play in.\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"job\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-22079\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"So You Want to Become a Computer Programmer? Let's Code Your Future!\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/Job-Roles-22.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/so-you-want-to-become-a-computer-programmer-lets-code-your-future\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Computer Programmer\",\"Job Outlines\"],\"desc\":\"From crafting sleek mobile apps to building complex software systems, computer programmers are the architects of the digital\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"job\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-22073\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"So You Want to Become a Journalist? Let's Uncover the Truth!\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/Job-Roles-21.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/so-you-want-to-become-a-journalist-lets-uncover-the-truth\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Job Outlines\",\"Journalist\"],\"desc\":\"The thrill of uncovering a story, the power of words to inform and inspire, the responsibility of holding\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"job\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-22067\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"So You Want to Become an Estate Agent? Let's Talk Property and People!\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/Job-Roles-20.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/so-you-want-to-become-an-estate-agent-lets-talk-property-and-people\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Estate Agent\",\"Job Outlines\"],\"desc\":\"The thrill of closing a deal, the satisfaction of matching people with their dream homes, and the dynamic\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"job\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-22061\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Ditch the Desk: 10 Amazing Careers for Outdoor Enthusiasts\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/Untitled-design-2025-03-24T114810.038.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/ditch-the-desk-10-amazing-careers-for-outdoor-enthusiasts\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Working Outdoors\"],\"desc\":\"Are you tired of staring at a screen all day? Do you dream of trading your office chair\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":8,\"classification_reason\":[\"careers\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-22055\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"So You Want to Become a Car Mechanic? Let's Get Under the Hood!\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/Job-Roles-19.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/so-you-want-to-become-a-car-mechanic-lets-get-under-the-hood\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Car Mechanic\",\"Job Outlines\"],\"desc\":\"The satisfying hum of a well-tuned engine, the challenge of diagnosing complex problems, and the satisfaction of getting\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"job\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-22049\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"So You Want to Become a Baker? Let's Rise to the Occasion!\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/Job-Roles-18.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/so-you-want-to-become-a-baker-lets-rise-to-the-occasion\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Baker\",\"Job Outlines\"],\"desc\":\"The aroma of freshly baked bread, the artistry of a perfectly decorated cake, the joy of creating something\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"job\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-22043\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"So You Want to Become a Zoo Keeper? Let's Talk Animal Care and Commitment!\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/Job-Roles-17.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/so-you-want-to-become-a-zoo-keeper-lets-talk-animal-care-and-commitment\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Job Outlines\",\"Zoo Keeper\"],\"desc\":\"More than just feeding and cleaning, being a zoo keeper is about dedicated animal care, conservation, and education.\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"job\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-22037\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"So You Want to Become a Graphic Designer? Let's Get Creative!\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/Job-Roles-16.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/so-you-want-to-become-a-graphic-designer-lets-get-creative\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Graphic Designer\",\"Job Outlines\"],\"desc\":\"From eye-catching logos to engaging website layouts, graphic designers shape the visual world around us. It's a career\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":19,\"classification_reason\":[\"career\",\"job\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-22414\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Land Your Dream Job in Entertainment: 10 Career Paths\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/JOB-HUNTING-6.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/22414\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Entertainment Industry\"],\"desc\":\"The entertainment industry is a vibrant and exciting field that offers a wide range of career opportunities for\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":19,\"classification_reason\":[\"career\",\"job\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-22421\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"10 High-Octane Careers in Motorsport\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/Gemini_Generated_Image_z3jj7ez3jj7ez3jj.jpeg?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/10-high-octane-careers-in-motorsport\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Motorsport\"],\"desc\":\"The world of motorsport is a thrilling blend of speed, strategy, and technology. It offers a wide range\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":8,\"classification_reason\":[\"careers\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-21973\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"So You Want to Become a Personal Assistant? Let's Talk Organization and Discretion!\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/Job-Roles-15.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/so-you-want-to-become-a-personal-assistant-lets-talk-organization-and-discretion\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Job Outlines\",\"Personal Assistant\"],\"desc\":\"Being a personal assistant (PA) is a dynamic and demanding role that requires a unique blend of organizational\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[\"Productivity & Self-Management\"],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"job\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-21967\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"So You Want to Become a Receptionist? First Impressions Matter!\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/Job-Roles-14.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/so-you-want-to-become-a-receptionist-first-impressions-matter\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Job Outlines\",\"Receptionist\"],\"desc\":\"Being a receptionist is often the first point of contact for a company or organization. It's a role\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"job\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-21961\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"So You Want to Become a Sports Coach? Let's Get in the Game!\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/Job-Roles-13.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/so-you-want-to-become-a-sports-coach-lets-get-in-the-game\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Job Outlines\",\"Sports Coach\"],\"desc\":\"More than just blowing a whistle and setting up drills, sports coaching is about inspiring athletes, fostering teamwork,\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"job\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-21955\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"So You Want to Become a Builder? Let's Lay a Solid Foundation!\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/Job-Roles-12.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/so-you-want-to-become-a-builder-lets-lay-a-solid-foundation\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Builder\",\"Job Outlines\"],\"desc\":\"From framing a house to laying brick, building is a tangible and rewarding career. Seeing your work stand\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":19,\"classification_reason\":[\"career\",\"job\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-21944\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"So You Want to Become a Hairdresser? Let's Get Styling!\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/Job-Roles-9.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/so-you-want-to-become-a-hairdresser-lets-get-styling\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Hairdresser\",\"Job Outlines\"],\"desc\":\"More than just cutting and colouring, hairdressing is an art form. It's about transforming appearances, boosting confidence, and\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"job\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-21938\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"So You Want to Become a Nurse? Let's Talk Compassion and Care!\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/Job-Roles-7.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/so-you-want-to-become-a-nurse-lets-talk-compassion-and-care\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Job Outlines\",\"Nurse\"],\"desc\":\"Nursing is a deeply rewarding profession that allows you to make a real difference in people's lives. From\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":19,\"classification_reason\":[\"job\",\"profession\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-21932\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Level Up Your Learning: Essential Study Skills You Need to Develop\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/WhatsApp-Image-2025-03-20-at-13.49.31_b221e145.jpg?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/level-up-your-learning-essential-study-skills-you-need-to-develop\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Self-Directed Learning\",\"Study Skills\"],\"desc\":\"We've all been there: staring at a textbook, feeling overwhelmed and wondering where to even begin. Whether you're\\u2026\",\"primary_lane\":\"Learning & Digital Confidence\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":67,\"classification_reason\":[\"self directed learning\",\"study skills\",\"study\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-21925\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"So You Want to Become a Veterinarian? Let's Talk Tails and Treatments!\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/Job-Roles-10.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/so-you-want-to-become-a-veterinarian-lets-talk-tails-and-treatments\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Job Outlines\",\"Veterinarian\"],\"desc\":\"More than just cuddling puppies and kittens, veterinary medicine is a complex and demanding field. It's about diagnosing\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"job\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-21919\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"So You Want to Become a Florist? Let's Bloom Together!\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/Job-Roles-5.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/so-you-want-to-become-a-florist-lets-bloom-together\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Florist\",\"Job Outlines\"],\"desc\":\"More than just arranging flowers, floristry is an art form that brings beauty and joy to people's lives.\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"job\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-21913\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"So You Want to Become a Travel Agent? Let's Navigate the World!\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/Job-Roles-11.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/so-you-want-to-become-a-travel-agent-lets-navigate-the-world\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Job Outlines\",\"Travel Agent\"],\"desc\":\"More than just booking flights and hotels, travel agents are architects of unforgettable experiences. They craft personalized itineraries,\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"job\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-21903\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"So You Want to Become a Dentist? Let's Talk Teeth and Tenacity!\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/Job-Roles-3.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/so-you-want-to-become-a-dentist-lets-talk-teeth-and-tenacity\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Dentist\",\"Job Outlines\"],\"desc\":\"More than just filling cavities, dentistry is about maintaining oral health, boosting confidence, and improving overall well-being. If\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[\"Wellbeing, Confidence & Resilience\"],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"job\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-21897\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"So You Want to Become a Lawyer? Let's Argue Your Case!\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/Job-Roles-2.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/so-you-want-to-become-a-lawyer-lets-argue-your-case\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Job Outlines\",\"Lawyer\"],\"desc\":\"The courtroom drama, the pursuit of justice, the intellectual challenge \\u2013 a career in law holds a certain\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":19,\"classification_reason\":[\"career\",\"job\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-21888\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"So You Want to Become a Plumber? Let's Get Down to Pipes and Practicalities!\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/Job-Roles-1.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/so-you-want-to-become-a-plumber-lets-get-down-to-pipes-and-practicalities\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Job Outlines\",\"Plumber\"],\"desc\":\"From fixing leaky faucets to installing complex plumbing systems, plumbers are essential for maintaining the comfort and functionality\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"job\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-21879\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"So You Want to Become an Electrician? Let's Get Wired In!\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/Job-Roles.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/so-you-want-to-become-an-electrician-lets-get-wired-in\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Electrician\",\"Job Outlines\"],\"desc\":\"The hum of electricity, the satisfaction of solving complex wiring puzzles, and the knowledge that you're powering homes\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"job\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-21857\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"So You Want to Become a Chef? Let's Turn Up the Heat!\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/TEACHER-1.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/so-you-want-to-become-a-chef-lets-turn-up-the-heat\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Chef\",\"Job Outlines\"],\"desc\":\"The allure of creating culinary masterpieces, the buzz of a busy kitchen, and the joy of seeing someone\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"job\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-21849\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"So You Want to Become a Teacher? Let's Talk!\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/TEACHER.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/so-you-want-to-become-a-teacher-lets-talk\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Job Outlines\",\"Teacher\"],\"desc\":\"The idea of shaping young minds, fostering a love of learning, and contributing to the future is undoubtedly\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"job\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-21801\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Continue Your Studies or Learn a Trade?\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/Gemini_Generated_Image_88pw0l88pw0l88pw.jpeg?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/continue-your-studies-or-learn-a-trade\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Careers\"],\"desc\":\"The decision of whether to continue your studies or learn a trade is a big one. It's important\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"careers\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-21791\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Unlock Your Child's Potential: The Surprising Benefits of Online Tutoring\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/Unlock-Your-Childs-Potential-The-Surprising-Benefits-of-Online-Tutoring.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/unlock-your-childs-potential-the-surprising-benefits-of-online-tutoring\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Online Tutoring\"],\"desc\":\"In today's fast-paced educational landscape, parents are constantly seeking ways to give their children an edge. While traditional\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[\"Personal & Professional Development\"],\"hub_section\":\"Resource Library\",\"classification_decision\":\"exclude\",\"classification_score\":21,\"classification_reason\":[\"employability\",\"employability skills\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-21769\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The Unfiltered You: Why Honest Self-Assessment Matters\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/Untitled-design-2025-03-14T201938.119.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-unfiltered-you-why-honest-self-assessment-matters\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Self-Assessment\"],\"desc\":\"In a world that constantly demands growth and adaptation, understanding yourself is paramount. But how well do you\\u2026\",\"primary_lane\":\"Personal & Professional Development\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":52,\"classification_reason\":[\"growth\",\"self assessment\",\"assessment\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-21762\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Essential Things to Consider When You Are Getting Close to Leaving School and Deciding on Your Next Steps to Take\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/Untitled-design-2025-03-14T200144.116.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/essential-things-to-consider-when-you-are-getting-close-to-leaving-school-and-deciding-on-your-next-steps-to-take\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Graduation is a time of excitement and anticipation, but it can also be a time of uncertainty. As\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[\"Learning & Digital Confidence\"],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":40,\"classification_reason\":[\"employability\",\"employability skills\",\"next steps\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-21753\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The Uphill Climb: Why Learning New Things, Despite the Frustration, is Worth Every Step\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/Untitled-design-2025-03-14T190652.983.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/the-uphill-climb-why-learning-new-things-despite-the-frustration-is-worth-every-step\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Let's be honest: learning something new is rarely a smooth, linear journey. Whether it's mastering a new language,\\u2026\",\"primary_lane\":\"Learning & Digital Confidence\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":23,\"classification_reason\":[\"self directed learning\",\"lifelong learning\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-21579\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Land Your Dream Job: Mastering the Essential Employability Skills\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/Lifelong-Learning-6.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/land-your-dream-job-mastering-the-essential-employability-skills\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Employability Skills\",\"Job Seeking\",\"PIVOT\",\"Self-Directed Learning\"],\"desc\":\"In today's competitive job market, a stellar resume and impressive qualifications are just the starting point. Employers are\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":106,\"classification_reason\":[\"job\",\"job seeking\",\"employability\",\"employability skills\",\"cv\",\"resume\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-21573\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Thrive in the Future: Why 21st Century Skills Are No Longer Optional\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/Lifelong-Learning-5.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/thrive-in-the-future-why-21st-century-skills-are-no-longer-optional\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"21st Century Skills\",\"Learning Support\",\"Lifelong Learning\",\"Self-Directed Learning\"],\"desc\":\"In a world where change is the only constant, your ability to adapt, innovate, and connect is your\\u2026\",\"primary_lane\":\"Learning & Digital Confidence\",\"secondary_lanes\":[\"Personal & Professional Development\"],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":35,\"classification_reason\":[\"self directed learning\",\"lifelong learning\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-21558\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Are You Happy in Your Current Job? Time for a Change?\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/Lifelong-Learning-4.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/are-you-happy-in-your-current-job-time-for-a-change\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"We spend a significant portion of our lives at work. So, it's only natural to ask: are you\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":8,\"classification_reason\":[\"job\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-21549\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Unlocking Your Potential: The Habits of Highly Effective People and How to Develop Them\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/Lifelong-Learning-3.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/unlocking-your-potential-the-habits-of-highly-effective-people-and-how-to-develop-them\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"We all admire those individuals who seem to effortlessly navigate life, achieving their goals and radiating a sense\\u2026\",\"primary_lane\":\"Productivity & Self-Management\",\"secondary_lanes\":[\"Personal & Professional Development\"],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":11,\"classification_reason\":[\"goals\",\"habits\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-21507\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Level Up Your Job Hunt: Why You Need a Resume\\\/CV and Letter Writing Pro\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/Lifelong-Learning-2.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/level-up-your-job-hunt-why-you-need-a-resume-cv-and-letter-writing-pro\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"Landing your dream job isn't just about your skills and experience; it's about how you present them. In\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":27,\"classification_reason\":[\"job\",\"cv\",\"resume\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-21489\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Never Stop Growing: Why Lifelong Learning is Your Superpower\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/Lifelong-Learning.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/never-stop-growing-why-lifelong-learning-is-your-superpower\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"In a world that's constantly evolving, the idea of \\\"finishing\\\" your education seems increasingly outdated. We're no longer\\u2026\",\"primary_lane\":\"Learning & Digital Confidence\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":31,\"classification_reason\":[\"self directed learning\",\"lifelong learning\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-21478\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Unleash Your Inner Explorer: The Power of Self-Directed Learning\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/Lifelong-Learning-1.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/unleash-your-inner-explorer-the-power-of-self-directed-learning\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"PIVOT\",\"Self-Directed Learning\"],\"desc\":\"We live at a time where information doubles at an astonishing rate, traditional education models are struggling to\\u2026\",\"primary_lane\":\"Learning & Digital Confidence\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":26,\"classification_reason\":[\"self directed learning\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-22427\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"A Paw-Sitive Career: 10 Jobs for Animal Lovers\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/JOB-HUNTING-7.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/a-paw-sitive-career-10-jobs-for-animal-lovers\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Working with Animals\"],\"desc\":\"Do you love animals? Do you dream of spending your days surrounded by furry, feathered, or scaly friends?\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"career\",\"jobs\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-22212\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"So You Want to Become a Farmer? Cultivating Your Future!\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/Job-Roles-38.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/so-you-want-to-become-a-farmer-cultivating-your-future\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Farmer\",\"Job Outlines\"],\"desc\":\"The allure of working the land, nurturing life, and providing sustenance is a powerful one. Farming, while often\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"job\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-22402\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"10 Delicious Careers: Jobs for Food Lovers\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/JOB-HUNTING-4.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/10-delicious-careers-jobs-for-food-lovers\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Food\"],\"desc\":\"The food industry is a vibrant and dynamic sector that offers a wide range of career opportunities for\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":19,\"classification_reason\":[\"career\",\"careers\",\"jobs\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-22239\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"So You Want to Become a Carer? Making a Real Difference\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/Job-Roles-42.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/so-you-want-to-become-a-carer-making-a-real-difference\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Carer\",\"Job Outlines\"],\"desc\":\"Being a carer is a deeply rewarding profession that involves providing essential support and care to individuals who\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":19,\"classification_reason\":[\"job\",\"profession\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-22233\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"So You Want to Become a Deep Sea Diver? Plunging into the Extreme!\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/Job-Roles-41.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/so-you-want-to-become-a-deep-sea-diver-plunging-into-the-extreme\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Deep Sea Diver\",\"Job Outlines\"],\"desc\":\"The ocean's depths hold a mysterious allure, and the idea of exploring shipwrecks, servicing underwater structures, or conducting\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"job\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-22194\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Unlock Your Freedom: A Guide to the Digital Nomad Lifestyle\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/Untitled-design-2025-04-01T152417.078.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/unlock-your-freedom-a-guide-to-the-digital-nomad-lifestyle\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Digital Nomad\"],\"desc\":\"The allure of working from anywhere in the world, trading your commute for breath-taking views, and designing a\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":25,\"classification_reason\":[\"digital nomad\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-22227\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"So You Want to Become an Ecologist? Exploring the Web of Life!\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/Job-Roles-40.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/so-you-want-to-become-an-ecologist-exploring-the-web-of-life\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Ecologist\",\"Job Outlines\"],\"desc\":\"Do you find yourself captivated by the intricate relationships between living organisms and their environment? Are you passionate\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"job\"],\"classification_version\":\"0.1.5\"},{\"id\":\"post-22218\",\"server_kind\":\"post\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"So You Want to Become an Astronaut? Aim for the Stars (Literally!)\",\"type\":\"Article\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/Job-Roles-39.png?fit=300%2C300&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/so-you-want-to-become-an-astronaut-aim-for-the-stars-literally\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Astronaut\",\"Job Outlines\"],\"desc\":\"The dream of floating in zero gravity, gazing at Earth from orbit, and exploring the vast unknown of\\u2026\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"job\"],\"classification_version\":\"0.1.5\"},{\"id\":\"course-26068\",\"server_kind\":\"course\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Time & Energy: The Personal Logistics Masterclass.\",\"type\":\"Course\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/ChatGPT-Image-Jun-25-2026-11_11_02-AM.webp?fit=300%2C169&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/courses\\\/time-energy-the-personal-logistics-masterclass-2\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Course\",\"Learning\"],\"desc\":\"Build and test a practical personal logistics system for managing time, attention, energy, priorities, recovery and weekly review.\",\"primary_lane\":\"Productivity & Self-Management\",\"secondary_lanes\":[],\"hub_section\":\"Masterclass Courses\",\"classification_decision\":\"include\",\"classification_score\":24,\"classification_reason\":[\"time energy\",\"priorities\",\"personal logistics\"],\"classification_version\":\"0.1.5\"},{\"id\":\"course-29607\",\"server_kind\":\"course\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Managing Priorities Under Pressure\",\"type\":\"Course\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/managing-priorities-under-pressure-featured-20260819-082053.webp?fit=300%2C169&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/courses\\\/managing-priorities-under-pressure\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Course\",\"Learning\"],\"desc\":\"Learn a practical method for judging competing demands, communicating trade-offs and adjusting priorities when circumstances change.\",\"primary_lane\":\"Productivity & Self-Management\",\"secondary_lanes\":[\"Thinking & Decision-Making\"],\"hub_section\":\"Masterclass Courses\",\"classification_decision\":\"include\",\"classification_score\":42,\"classification_reason\":[\"productivity\",\"time management\",\"prioritisation\",\"priorities\"],\"classification_version\":\"0.1.5\"},{\"id\":\"course-29635\",\"server_kind\":\"course\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Making Better Decisions at Work\",\"type\":\"Course\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/making-better-decisions-at-work-featured-20260819-144925.webp?fit=300%2C169&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/courses\\\/making-better-decisions-at-work\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Course\",\"Learning\"],\"desc\":\"Learn a repeatable way to frame workplace decisions, gather enough evidence, compare competing options, manage uncertainty and learn\\u2026\",\"primary_lane\":\"Thinking & Decision-Making\",\"secondary_lanes\":[],\"hub_section\":\"Masterclass Courses\",\"classification_decision\":\"include\",\"classification_score\":66,\"classification_reason\":[\"critical thinking\",\"decision\",\"decisions\",\"decision making\",\"risk\",\"uncertainty\"],\"classification_version\":\"0.1.5\"},{\"id\":\"course-26101\",\"server_kind\":\"course\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The Communication Protocol: High-Signal Interpersonal Mechanics.\",\"type\":\"Course\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/ChatGPT-Image-Jun-26-2026-08_11_56-AM-1.webp?fit=300%2C169&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/courses\\\/the-communication-protocol-high-signal-interpersonal-mechanics\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Course\",\"Learning\"],\"desc\":\"A seven-step practical course in clear, respectful communication, with 45\\u201360-minute lessons, applied exercises, an independent capstone portfolio, curated\\u2026\",\"primary_lane\":\"Communication & Relationships\",\"secondary_lanes\":[],\"hub_section\":\"Masterclass Courses\",\"classification_decision\":\"include\",\"classification_score\":11,\"classification_reason\":[\"communication\"],\"classification_version\":\"0.1.5\"},{\"id\":\"course-26084\",\"server_kind\":\"course\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Money Mechanics: Essential Financial Literacy for the Real World.\",\"type\":\"Course\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/ChatGPT-Image-Jun-25-2026-12_59_35-PM-1.png?fit=300%2C169&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/courses\\\/money-mechanics-essential-financial-literacy-for-the-real-world\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Course\",\"Learning\"],\"desc\":\"Build an evidence-based cash-flow plan covering spending, emergency savings, debt, independent income, automation and long-term financial decisions.\",\"primary_lane\":\"Money & Practical Life Skills\",\"secondary_lanes\":[],\"hub_section\":\"Masterclass Courses\",\"classification_decision\":\"include\",\"classification_score\":28,\"classification_reason\":[\"financial literacy\",\"money\",\"financial\"],\"classification_version\":\"0.1.5\"},{\"id\":\"course-29597\",\"server_kind\":\"course\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Giving Useful Feedback\",\"type\":\"Course\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/giving-useful-feedback-featured-20260819-065915.webp?fit=300%2C169&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/courses\\\/giving-useful-feedback\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Course\",\"Learning\"],\"desc\":\"Learn a practical approach for preparing, delivering and following up on clear, specific and constructive feedback, with an\\u2026\",\"primary_lane\":\"Communication & Relationships\",\"secondary_lanes\":[\"Leadership & Management\"],\"hub_section\":\"Masterclass Courses\",\"classification_decision\":\"include\",\"classification_score\":31,\"classification_reason\":[\"communication\",\"feedback\"],\"classification_version\":\"0.1.5\"},{\"id\":\"course-25474\",\"server_kind\":\"course\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The Self-Directed Learner: Taking Control of Your Own Growth.\",\"type\":\"Course\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/The_Self_Directed_Learner_Course_Cover.webp?fit=300%2C169&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/courses\\\/the-self-directed-learner-taking-control-of-your-own-growth\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Course\",\"Learning\"],\"desc\":\"Welcome to a practical course about taking greater responsibility for your own growth. Self-directed learning does not require\\u2026\",\"primary_lane\":\"Learning & Digital Confidence\",\"secondary_lanes\":[\"Personal & Professional Development\"],\"hub_section\":\"Masterclass Courses\",\"classification_decision\":\"include\",\"classification_score\":15,\"classification_reason\":[\"self directed learning\",\"self directed learner\"],\"classification_version\":\"0.1.5\"},{\"id\":\"course-25976\",\"server_kind\":\"course\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Standout: The No-Nonsense Guide to Employability\",\"type\":\"Course\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/Standout_Course_Cover.webp?fit=300%2C169&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/courses\\\/standout-the-no-nonsense-guide-to-employability\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Course\",\"Learning\"],\"desc\":\"A practical 10-step course for identifying transferable capabilities, building professional trust and creating an evidence-based employability action plan.\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Masterclass Courses\",\"classification_decision\":\"include\",\"classification_score\":11,\"classification_reason\":[\"employability\"],\"classification_version\":\"0.1.5\"},{\"id\":\"course-25910\",\"server_kind\":\"course\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The Launchpad: Essential 21st Century Skills for Every Career\",\"type\":\"Course\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/ChatGPT-Image-Jun-23-2026-05_47_06-PM.webp?fit=300%2C169&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/courses\\\/the-launchpad-essential-21st-century-skills-for-every-career\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Course\",\"Learning\"],\"desc\":\"A practical foundation in adaptable learning, communication, teamwork, problem-solving and responsible digital practice. Allow approximately 45\\u201360 minutes for\\u2026\",\"primary_lane\":\"Personal & Professional Development\",\"secondary_lanes\":[\"Career Exploration & Employability\"],\"hub_section\":\"Masterclass Courses\",\"classification_decision\":\"include\",\"classification_score\":10,\"classification_reason\":[\"21st century skills\"],\"classification_version\":\"0.1.5\"},{\"id\":\"course-25886\",\"server_kind\":\"course\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The Adaptability Advantage: Mastering 21st Century Skills\",\"type\":\"Course\",\"tier\":\"free\",\"cost\":0,\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/ChatGPT-Image-Jun-23-2026-05_35_36-PM.webp?fit=300%2C169&ssl=1\",\"link\":\"https:\\\/\\\/dumondeducation.com\\\/de\\\/courses\\\/the-adaptability-advantage-mastering-21st-century-skills\\\/\",\"server_unlocked\":true,\"server_purchasable\":false,\"tags\":[\"Course\",\"Learning\"],\"desc\":\"A practical course in adaptability, critical thinking, problem solving, collaboration and responsible digital-tool use, with an indicative PIVOT\\u2026\",\"primary_lane\":\"Wellbeing, Confidence & Resilience\",\"secondary_lanes\":[\"Personal & Professional Development\",\"Thinking & Decision-Making\"],\"hub_section\":\"Masterclass Courses\",\"classification_decision\":\"include\",\"classification_score\":11,\"classification_reason\":[\"adaptability\"],\"classification_version\":\"0.1.5\"},{\"id\":28972,\"server_kind\":\"product\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Appointment\",\"type\":\"PDF Guide\",\"tier\":\"standard\",\"cost\":0,\"euro\":\"0.00\",\"display_price\":\"Free\",\"image\":\"\",\"link\":\"\",\"server_unlocked\":false,\"server_purchasable\":false,\"tags\":[\"Resource\"],\"desc\":\"\",\"primary_lane\":\"Personal & Professional Development\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"exclude\",\"classification_score\":0,\"classification_reason\":[],\"classification_version\":\"0.1.5\"},{\"id\":28084,\"server_kind\":\"product\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"What Employers are Looking for in 2026\",\"type\":\"PDF Guide\",\"tier\":\"standard\",\"cost\":50,\"euro\":\"1.00\",\"display_price\":\"50 Credits\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/ChatGPT-Image-Jul-28-2026-03_52_55-PM.webp?fit=725%2C1024&ssl=1\",\"link\":\"\",\"server_unlocked\":false,\"server_purchasable\":true,\"tags\":[\"Resilience\"],\"desc\":\"\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[\"Wellbeing, Confidence & Resilience\"],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":21,\"classification_reason\":[\"employability\",\"employability skills\"],\"classification_version\":\"0.1.5\"},{\"id\":26739,\"server_kind\":\"product\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"PIVOT Premium Membership \\u2014 12 Months\",\"type\":\"PDF Guide\",\"tier\":\"standard\",\"cost\":4329,\"euro\":\"39.00\",\"display_price\":\"4329 Credits\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/Add-a-subheading.webp?fit=1020%2C1020&ssl=1\",\"link\":\"\",\"server_unlocked\":false,\"server_purchasable\":true,\"tags\":[\"Resource\"],\"desc\":\"FORMAT: SUBSCRIPTION\",\"primary_lane\":\"Personal & Professional Development\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"exclude\",\"classification_score\":0,\"classification_reason\":[],\"classification_version\":\"0.1.5\"},{\"id\":26048,\"server_kind\":\"product\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Top 10 Tips for Bouncing Back from Setbacks\",\"type\":\"PDF Guide\",\"tier\":\"standard\",\"cost\":50,\"euro\":\"1.00\",\"display_price\":\"50 Credits\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/Top-10-Tips-for-Bouncing-Back-from-Setbacks.webp?fit=724%2C1024&ssl=1\",\"link\":\"\",\"server_unlocked\":false,\"server_purchasable\":true,\"tags\":[\"Resilience\"],\"desc\":\"\",\"primary_lane\":\"Wellbeing, Confidence & Resilience\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":24,\"classification_reason\":[\"resilience\",\"setbacks\"],\"classification_version\":\"0.1.5\"},{\"id\":26044,\"server_kind\":\"product\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Top 10 Tips for Improving Your Confidence\",\"type\":\"PDF Guide\",\"tier\":\"standard\",\"cost\":50,\"euro\":\"1.00\",\"display_price\":\"50 Credits\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/Top-10-Tips-for-Improving-Your-Confidence.webp?fit=724%2C1024&ssl=1\",\"link\":\"\",\"server_unlocked\":false,\"server_purchasable\":true,\"tags\":[\"Confidence. Self-confidence\"],\"desc\":\"\",\"primary_lane\":\"Wellbeing, Confidence & Resilience\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":41,\"classification_reason\":[\"confidence\",\"self confidence\"],\"classification_version\":\"0.1.5\"},{\"id\":26040,\"server_kind\":\"product\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Top 10 Tips for Financial Literacy\",\"type\":\"PDF Guide\",\"tier\":\"standard\",\"cost\":50,\"euro\":\"1.00\",\"display_price\":\"50 Credits\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/Top-10-Tips-for-Financial-Literacy.webp?fit=724%2C1024&ssl=1\",\"link\":\"\",\"server_unlocked\":false,\"server_purchasable\":true,\"tags\":[\"Financial Literacy\"],\"desc\":\"\",\"primary_lane\":\"Money & Practical Life Skills\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":49,\"classification_reason\":[\"financial literacy\",\"financial\"],\"classification_version\":\"0.1.5\"},{\"id\":26036,\"server_kind\":\"product\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Top 10 Tips for Managing Your Time and Energy\",\"type\":\"PDF Guide\",\"tier\":\"standard\",\"cost\":50,\"euro\":\"1.00\",\"display_price\":\"50 Credits\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/Top-10-Tips-for-Managing-Your-Time-and-Energy.webp?fit=724%2C1024&ssl=1\",\"link\":\"\",\"server_unlocked\":false,\"server_purchasable\":true,\"tags\":[\"Time Management\"],\"desc\":\"\",\"primary_lane\":\"Productivity & Self-Management\",\"secondary_lanes\":[\"Leadership & Management\"],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":27,\"classification_reason\":[\"time management\",\"time and energy\"],\"classification_version\":\"0.1.5\"},{\"id\":26032,\"server_kind\":\"product\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Top 10 Tips for the Self-Directed Learner\",\"type\":\"PDF Guide\",\"tier\":\"standard\",\"cost\":0,\"euro\":\"0.00\",\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/Top-10-Tips-for-the-Self-Directed-Learner.webp?fit=724%2C1024&ssl=1\",\"link\":\"\",\"server_unlocked\":false,\"server_purchasable\":false,\"tags\":[\"Self-Directed Learning\"],\"desc\":\"\",\"primary_lane\":\"Learning & Digital Confidence\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":28,\"classification_reason\":[\"self directed learning\",\"self directed learner\"],\"classification_version\":\"0.1.5\"},{\"id\":26028,\"server_kind\":\"product\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Top 10 Tips for Developing Listening Skills\",\"type\":\"PDF Guide\",\"tier\":\"standard\",\"cost\":50,\"euro\":\"1.00\",\"display_price\":\"50 Credits\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/Top-10-Tips-for-Developing-Listening-Skills.webp?fit=724%2C1024&ssl=1\",\"link\":\"\",\"server_unlocked\":false,\"server_purchasable\":true,\"tags\":[\"Listening Skills\"],\"desc\":\"\",\"primary_lane\":\"Communication & Relationships\",\"secondary_lanes\":[\"Personal & Professional Development\"],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":24,\"classification_reason\":[\"listening\"],\"classification_version\":\"0.1.5\"},{\"id\":26026,\"server_kind\":\"product\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Top 10 Tips for Developing Basic Mathematical Skills\",\"type\":\"PDF Guide\",\"tier\":\"standard\",\"cost\":50,\"euro\":\"1.00\",\"display_price\":\"50 Credits\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/Top-10-Tips-for-Developing-Basic-Mathmatical-Skills.webp?fit=724%2C1024&ssl=1\",\"link\":\"\",\"server_unlocked\":false,\"server_purchasable\":true,\"tags\":[\"Math\",\"maths\"],\"desc\":\"\",\"primary_lane\":\"Learning & Digital Confidence\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":41,\"classification_reason\":[\"mathematical skills\",\"maths\",\"math\"],\"classification_version\":\"0.1.5\"},{\"id\":26022,\"server_kind\":\"product\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Top 10 Tips for Developing Conflict Resolution Skills\",\"type\":\"PDF Guide\",\"tier\":\"standard\",\"cost\":50,\"euro\":\"1.00\",\"display_price\":\"50 Credits\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/Top-10-Tips-for-Developing-Conflict-Resolution-Skills.webp?fit=724%2C1024&ssl=1\",\"link\":\"\",\"server_unlocked\":false,\"server_purchasable\":true,\"tags\":[\"Conflict Resolution\"],\"desc\":\"\",\"primary_lane\":\"Communication & Relationships\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":24,\"classification_reason\":[\"conflict\"],\"classification_version\":\"0.1.5\"},{\"id\":26018,\"server_kind\":\"product\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Top 10 Tips for Developing Computer Literacy\",\"type\":\"PDF Guide\",\"tier\":\"standard\",\"cost\":50,\"euro\":\"1.00\",\"display_price\":\"50 Credits\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/Top-10-Tips-for-Developing-Computer-Literacy.webp?fit=724%2C1024&ssl=1\",\"link\":\"\",\"server_unlocked\":false,\"server_purchasable\":true,\"tags\":[\"Computer Literacy\",\"Computers\",\"Computing\"],\"desc\":\"\",\"primary_lane\":\"Learning & Digital Confidence\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":41,\"classification_reason\":[\"computer literacy\",\"computing\"],\"classification_version\":\"0.1.5\"},{\"id\":26014,\"server_kind\":\"product\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Top 10 Tips for Developing Sales Skills\",\"type\":\"PDF Guide\",\"tier\":\"standard\",\"cost\":50,\"euro\":\"1.00\",\"display_price\":\"50 Credits\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/Top-10-Tips-for-Developing-Sales-Skills.webp?fit=724%2C1024&ssl=1\",\"link\":\"\",\"server_unlocked\":false,\"server_purchasable\":true,\"tags\":[\"Sales\"],\"desc\":\"\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[\"Communication & Relationships\"],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":33,\"classification_reason\":[\"sales\",\"sales skills\"],\"classification_version\":\"0.1.5\"},{\"id\":26004,\"server_kind\":\"product\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Top 10 Tips for Developing Employability Skills\",\"type\":\"PDF Guide\",\"tier\":\"standard\",\"cost\":0,\"euro\":\"0.00\",\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/Top-10-Tips-for-Developing-Employability-Skills.webp?fit=724%2C1024&ssl=1\",\"link\":\"\",\"server_unlocked\":false,\"server_purchasable\":false,\"tags\":[\"Employability Skills\"],\"desc\":\"\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":49,\"classification_reason\":[\"employability\",\"employability skills\"],\"classification_version\":\"0.1.5\"},{\"id\":25999,\"server_kind\":\"product\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Top 10 Tips for Developing 21st Century Skills\",\"type\":\"PDF Guide\",\"tier\":\"standard\",\"cost\":0,\"euro\":\"0.00\",\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/Untitled-design-11-1.webp?fit=724%2C1024&ssl=1\",\"link\":\"\",\"server_unlocked\":false,\"server_purchasable\":false,\"tags\":[\"21st Century Skills\"],\"desc\":\"\",\"primary_lane\":\"Personal & Professional Development\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":26,\"classification_reason\":[\"21st century skills\"],\"classification_version\":\"0.1.5\"},{\"id\":21807,\"server_kind\":\"product\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Top 10 Tips for Developing Trunk Strength\",\"type\":\"PDF Guide\",\"tier\":\"standard\",\"cost\":50,\"euro\":\"1.00\",\"display_price\":\"50 Credits\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/Top-10-Tips-for-Developing-Trunk-Strength.webp?fit=724%2C1024&ssl=1\",\"link\":\"\",\"server_unlocked\":false,\"server_purchasable\":true,\"tags\":[\"Trunk Strength\"],\"desc\":\"Downloadable PDF with the Top 10 Tips for Developing Trunk Strength\",\"primary_lane\":\"Physical & Practical Capability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":28,\"classification_reason\":[\"trunk strength\"],\"classification_version\":\"0.1.5\"},{\"id\":21746,\"server_kind\":\"product\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"5 Reasons Why Authentic Assessment and Reporting is Crucial\",\"type\":\"PDF Guide\",\"tier\":\"standard\",\"cost\":50,\"euro\":\"1.00\",\"display_price\":\"50 Credits\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/5-Reasons-Why-Authentic-Assessment-and-Reporting-is-Crucial.webp?fit=724%2C1024&ssl=1\",\"link\":\"\",\"server_unlocked\":false,\"server_purchasable\":true,\"tags\":[\"Assessment\"],\"desc\":\"Downloadable PDF with 5 Reasons Why Authentic Assessment and Reporting is Crucial\",\"primary_lane\":\"Personal & Professional Development\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":27,\"classification_reason\":[\"assessment\"],\"classification_version\":\"0.1.5\"},{\"id\":21738,\"server_kind\":\"product\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"What is Organisational Culture?\",\"type\":\"PDF Guide\",\"tier\":\"standard\",\"cost\":50,\"euro\":\"1.00\",\"display_price\":\"50 Credits\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/What-is-Organisational-Culture-.webp?fit=724%2C1024&ssl=1\",\"link\":\"\",\"server_unlocked\":false,\"server_purchasable\":true,\"tags\":[\"Organisational Culture\"],\"desc\":\"Downloadable PDF on What is Organisational Culture?\",\"primary_lane\":\"Leadership & Management\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":65,\"classification_reason\":[\"leadership\",\"organisational culture\",\"culture\"],\"classification_version\":\"0.1.5\"},{\"id\":21730,\"server_kind\":\"product\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Earning, Building, and Keeping Respect\",\"type\":\"PDF Guide\",\"tier\":\"standard\",\"cost\":50,\"euro\":\"1.00\",\"display_price\":\"50 Credits\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/Earning-Building-and-Keeping-Respect.webp?fit=724%2C1024&ssl=1\",\"link\":\"\",\"server_unlocked\":false,\"server_purchasable\":true,\"tags\":[\"Respect\"],\"desc\":\"Downloadable PDF on Earning, Building, and Keeping Respect\",\"primary_lane\":\"Communication & Relationships\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":27,\"classification_reason\":[\"respect\"],\"classification_version\":\"0.1.5\"},{\"id\":21687,\"server_kind\":\"product\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"The Importance of Leaders as Enablers\",\"type\":\"PDF Guide\",\"tier\":\"standard\",\"cost\":0,\"euro\":\"0.00\",\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/Leaders-as-Enablers.webp?fit=724%2C1024&ssl=1\",\"link\":\"\",\"server_unlocked\":false,\"server_purchasable\":false,\"tags\":[\"Leadership\"],\"desc\":\"Downloadable PDF on The Importance of Leaders as Enablers\",\"primary_lane\":\"Leadership & Management\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"leadership\"],\"classification_version\":\"0.1.5\"},{\"id\":21680,\"server_kind\":\"product\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Operational Versus Cultural Hierarchy\",\"type\":\"PDF Guide\",\"tier\":\"standard\",\"cost\":50,\"euro\":\"1.00\",\"display_price\":\"50 Credits\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/Operational-Verus-Cultural-Hierarchy-.webp?fit=724%2C1024&ssl=1\",\"link\":\"\",\"server_unlocked\":false,\"server_purchasable\":true,\"tags\":[\"Leadership\"],\"desc\":\"Downloadable PDF on Operational Versus Cultural Hierarchy\",\"primary_lane\":\"Leadership & Management\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":27,\"classification_reason\":[\"leadership\",\"hierarchy\"],\"classification_version\":\"0.1.5\"},{\"id\":21673,\"server_kind\":\"product\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Leadership - Crucial Areas to Focus On\",\"type\":\"PDF Guide\",\"tier\":\"standard\",\"cost\":50,\"euro\":\"1.00\",\"display_price\":\"50 Credits\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/Leadership-Crucial-Areas-to-Focus-On-.webp?fit=724%2C1024&ssl=1\",\"link\":\"\",\"server_unlocked\":false,\"server_purchasable\":true,\"tags\":[\"Leadership\"],\"desc\":\"Downloadable PDF on Leadership -\\u00a0 Crucial Areas to Focus On\",\"primary_lane\":\"Leadership & Management\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":27,\"classification_reason\":[\"leadership\"],\"classification_version\":\"0.1.5\"},{\"id\":21666,\"server_kind\":\"product\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Forward Leadership\",\"type\":\"PDF Guide\",\"tier\":\"standard\",\"cost\":50,\"euro\":\"1.00\",\"display_price\":\"50 Credits\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/Forward-Leadership.webp?fit=724%2C1024&ssl=1\",\"link\":\"\",\"server_unlocked\":false,\"server_purchasable\":true,\"tags\":[\"Leadership\"],\"desc\":\"Downloadable PDF on the Importance of Forward Leadership.\",\"primary_lane\":\"Leadership & Management\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":27,\"classification_reason\":[\"leadership\"],\"classification_version\":\"0.1.5\"},{\"id\":21656,\"server_kind\":\"product\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Failures, Mistakes and Errors. Possible Root causes and ways to avoid them.\",\"type\":\"PDF Guide\",\"tier\":\"standard\",\"cost\":50,\"euro\":\"1.00\",\"display_price\":\"50 Credits\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/Failures-Mistakes-and-Errors.-Possible-Root-causes-and-ways-to-avoid-them.-.webp?fit=724%2C1024&ssl=1\",\"link\":\"\",\"server_unlocked\":false,\"server_purchasable\":true,\"tags\":[\"Errors\",\"Failures\",\"Leadership\",\"Mistakes\"],\"desc\":\"Downloadable PDF on Failures, Mistakes and Errors. Possible Root causes and ways to avoid them.\",\"primary_lane\":\"Leadership & Management\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":16,\"classification_reason\":[\"leadership\"],\"classification_version\":\"0.1.5\"},{\"id\":21649,\"server_kind\":\"product\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"13 Ways to Brilliance\",\"type\":\"PDF Guide\",\"tier\":\"standard\",\"cost\":0,\"euro\":\"0.00\",\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/13-Ways-to-Brilliance.webp?fit=724%2C1024&ssl=1\",\"link\":\"\",\"server_unlocked\":false,\"server_purchasable\":false,\"tags\":[\"Brilliance\"],\"desc\":\"Downloadable PDF with 13 Ways to Brilliance.\",\"primary_lane\":\"Leadership & Management\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":10,\"classification_reason\":[\"leadership\"],\"classification_version\":\"0.1.5\"},{\"id\":21627,\"server_kind\":\"product\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Top 10 Tips for Developing Gross Motor Skills\",\"type\":\"PDF Guide\",\"tier\":\"standard\",\"cost\":50,\"euro\":\"1.00\",\"display_price\":\"50 Credits\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/Top-10-Tips-for-Developing-Gross-Motor-Skills.webp?fit=724%2C1024&ssl=1\",\"link\":\"\",\"server_unlocked\":false,\"server_purchasable\":true,\"tags\":[\"Gross Motor Skills\"],\"desc\":\"Downloadable PDF with the Top 10 Tips for Developing Gross Motor Skills\",\"primary_lane\":\"Physical & Practical Capability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":85,\"classification_reason\":[\"gross motor\",\"gross motor skills\",\"motor skills\"],\"classification_version\":\"0.1.5\"},{\"id\":21620,\"server_kind\":\"product\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Top 10 Tips for Developing Fine Motor Skills\",\"type\":\"PDF Guide\",\"tier\":\"standard\",\"cost\":50,\"euro\":\"1.00\",\"display_price\":\"50 Credits\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/Top-10-Tips-for-Developing-Fine-Motor-Skills.webp?fit=724%2C1024&ssl=1\",\"link\":\"\",\"server_unlocked\":false,\"server_purchasable\":true,\"tags\":[\"Fine Motor Skills\"],\"desc\":\"Downloadable PDF with the\\u00a0Top 10 Tips for Developing Fine Motor Skills\",\"primary_lane\":\"Physical & Practical Capability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":85,\"classification_reason\":[\"fine motor\",\"fine motor skills\",\"motor skills\"],\"classification_version\":\"0.1.5\"},{\"id\":21610,\"server_kind\":\"product\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Top 10 Tips for Developing Emotional Intelligence (EI)\",\"type\":\"PDF Guide\",\"tier\":\"standard\",\"cost\":0,\"euro\":\"0.00\",\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/Top-10-Tips-for-Developing-Emotional-Intelligence-EI.webp?fit=724%2C1024&ssl=1\",\"link\":\"\",\"server_unlocked\":false,\"server_purchasable\":false,\"tags\":[\"Emotional Intelligence (EI)\"],\"desc\":\"Downloadable PDF with the Top 10 Tips for Developing Emotional Intelligence (EI)\",\"primary_lane\":\"Communication & Relationships\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":28,\"classification_reason\":[\"emotional intelligence\"],\"classification_version\":\"0.1.5\"},{\"id\":21539,\"server_kind\":\"product\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Top 10 Tips for Developing Spatial Awareness\",\"type\":\"PDF Guide\",\"tier\":\"standard\",\"cost\":50,\"euro\":\"1.00\",\"display_price\":\"50 Credits\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/Top-10-Tips-to-Develop-Spatial-Awareness.webp?fit=724%2C1024&ssl=1\",\"link\":\"\",\"server_unlocked\":false,\"server_purchasable\":true,\"tags\":[\"Spatial Awareness\"],\"desc\":\"Downloadable PDF with the Top 10 Tips for Developing Spatial Awareness.\",\"primary_lane\":\"Physical & Practical Capability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":28,\"classification_reason\":[\"spatial awareness\"],\"classification_version\":\"0.1.5\"},{\"id\":21531,\"server_kind\":\"product\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Top 10 Tips to Improve Hand-Eye Coordination\",\"type\":\"PDF Guide\",\"tier\":\"standard\",\"cost\":50,\"euro\":\"1.00\",\"display_price\":\"50 Credits\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/Top-10-Tips-to-Improve-Hand-.webp?fit=724%2C1024&ssl=1\",\"link\":\"\",\"server_unlocked\":false,\"server_purchasable\":true,\"tags\":[\"Hand-Eye Coordination\"],\"desc\":\"Downloadable PDF with Top 10 Tips for Improving Hand-Eye Coordination.\",\"primary_lane\":\"Physical & Practical Capability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":29,\"classification_reason\":[\"hand eye coordination\"],\"classification_version\":\"0.1.5\"},{\"id\":21430,\"server_kind\":\"product\",\"server_authority\":\"pivot-growth-secure-v1\",\"title\":\"Top 10 Tips for Interview Preparation\",\"type\":\"PDF Guide\",\"tier\":\"standard\",\"cost\":0,\"euro\":\"0.00\",\"display_price\":\"Free\",\"image\":\"https:\\\/\\\/i0.wp.com\\\/dumondeducation.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/Top-10-Tips-For-Interview-Preparation-1.webp?fit=724%2C1024&ssl=1\",\"link\":\"\",\"server_unlocked\":false,\"server_purchasable\":false,\"tags\":[\"Downloadable\",\"Free resources\",\"Interviews\"],\"desc\":\"FREE Downloadable PDF with the Top 10 Tips to help with Interview Preparation.\",\"primary_lane\":\"Career Exploration & Employability\",\"secondary_lanes\":[],\"hub_section\":\"Resource Library\",\"classification_decision\":\"include\",\"classification_score\":11,\"classification_reason\":[\"interview\"],\"classification_version\":\"0.1.5\"}];window.PIVOT_GROWTH_SECURE_SERVER_READY=true;<\/script>\n<script type=\"application\/json\" id=\"pivot-notices-json\">[]<\/script>\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@400;500;600;700;800;900&family=Poppins:wght@600;700;800;900&display=swap\" rel=\"stylesheet\">\n\n<!--\n    PIVOT LIVE ACCESS MODE\n    Membership\/access status is supplied by [pivot_hub_data].\n    No front-end test tier is forced here.\n-->\n<style id=\"pivot-notice-ticker-styles\">\n\t\/*\nPIVOT Dashboard v2.16.47 - PREMIUM JOURNAL PAYLOAD PASS\n- Journal export now uses the validated 0-7 capability snapshot\n- Removes mixed-scale headline scoring from the PDF payload\n- Preserves reflections and richer development-action data for print\n =========================================================\n\t   PIVOT DASHBOARD NOTICE TICKER\n\t   ========================================================= *\/\n\n\t#pivot-notice-ticker,\n\t#pivot-notice-ticker * {\n\t\tbox-sizing: border-box;\n\t\tfont-family: \"Inter\", \"Helvetica Neue\", Helvetica, Arial, sans-serif !important;\n\t}\n\n\t#pivot-notice-ticker {\n\t\talign-items: stretch;\n\t\tbackground: #ffffff;\n\t\tborder: 1px solid #dbe3ef;\n\t\tborder-radius: 16px;\n\t\tbox-shadow: 0 8px 24px rgba(15, 23, 42, 0.07);\n\t\tdisplay: flex;\n\t\tmargin: 0 0 24px;\n\t\tmin-height: 66px;\n\t\toverflow: hidden;\n\t\tposition: relative;\n\t\twidth: 100%;\n\t}\n\n\t.pivot-ticker-label {\n\t\talign-items: center;\n\t\tbackground: #002FA7;\n\t\tcolor: #ffffff;\n\t\tdisplay: flex;\n\t\tflex: 0 0 auto;\n\t\tgap: 12px;\n\t\tjustify-content: center;\n\t\tpadding: 0 19px;\n\t\twhite-space: nowrap;\n\t}\n\n\t.pivot-ticker-label-text {\n\t\tcolor: #ffffff;\n\t\tfont-size: 12px;\n\t\tfont-weight: 800;\n\t\tletter-spacing: 0.1em;\n\t\ttext-transform: uppercase;\n\t}\n\n\t.pivot-ticker-live-dot {\n\tanimation: pivotTickerPulse 1.4s ease-in-out infinite;\n\tbackground: #22c55e;\n\tborder-radius: 50%;\n\tbox-shadow:\n\t\t0 0 0 6px rgba(34, 197, 94, 0.22),\n\t\t0 0 14px rgba(34, 197, 94, 0.75),\n\t\t0 0 24px rgba(34, 197, 94, 0.45);\n\tdisplay: block;\n\theight: 16px;\n\twidth: 16px;\n\tflex: 0 0 16px;\n}\n\n\t.pivot-ticker-stage {\n\t\talign-items: center;\n\t\tdisplay: flex;\n\t\tflex: 1 1 auto;\n\t\tmin-width: 0;\n\t\toverflow: hidden;\n\t\tpadding: 10px 14px;\n\t}\n\n\t.pivot-ticker-item {\n\t\talign-items: center;\n\t\tanimation: pivotTickerEnter 0.35s ease both;\n\t\tdisplay: flex;\n\t\tgap: 12px;\n\t\tmin-width: 0;\n\t\twidth: 100%;\n\t}\n\n\t.pivot-ticker-type {\n\t\tborder-radius: 999px;\n\t\tflex: 0 0 auto;\n\t\tfont-size: 10px;\n\t\tfont-weight: 800;\n\t\tletter-spacing: 0.06em;\n\t\tpadding: 6px 9px;\n\t\ttext-transform: uppercase;\n\t\twhite-space: nowrap;\n\t}\n\n\t.pivot-ticker-type--update {\n\t\tbackground: #e8efff;\n\t\tcolor: #002FA7;\n\t}\n\n\t.pivot-ticker-type--news {\n\t\tbackground: #e8f7ef;\n\t\tcolor: #18794e;\n\t}\n\n\t.pivot-ticker-type--offer {\n\t\tbackground: #fff3db;\n\t\tcolor: #9a5b00;\n\t}\n\n\t.pivot-ticker-type--important {\n\t\tbackground: #fce8e8;\n\t\tcolor: #a33a3a;\n\t}\n\n\t.pivot-ticker-copy {\n\t\talign-items: baseline;\n\t\tdisplay: flex;\n\t\tflex: 1 1 auto;\n\t\tgap: 8px;\n\t\tmin-width: 0;\n\t\toverflow: hidden;\n\t}\n\n\t.pivot-ticker-title {\n\t\tcolor: #0f172a !important;\n\t\tflex: 0 0 auto;\n\t\tfont-size: 14px;\n\t\tfont-weight: 750;\n\t\twhite-space: nowrap;\n\t}\n\n\t.pivot-ticker-message {\n\t\tcolor: #526075 !important;\n\t\tfont-size: 14px;\n\t\tfont-weight: 400;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t\twhite-space: nowrap;\n\t}\n\n\t.pivot-ticker-action {\n\t\tbackground: #002FA7 !important;\n\t\tborder-radius: 8px;\n\t\tcolor: #ffffff !important;\n\t\tflex: 0 0 auto;\n\t\tfont-size: 12px;\n\t\tfont-weight: 700;\n\t\tpadding: 8px 12px;\n\t\ttext-decoration: none !important;\n\t\twhite-space: nowrap;\n\t}\n\n\t.pivot-ticker-action:hover {\n\t\tbackground: #001b63 !important;\n\t\tcolor: #ffffff !important;\n\t}\n\n\t.pivot-ticker-dismiss {\n\t\talign-items: center;\n\t\tbackground: transparent !important;\n\t\tborder: 0 !important;\n\t\tborder-radius: 50% !important;\n\t\tcolor: #64748b !important;\n\t\tcursor: pointer;\n\t\tdisplay: flex;\n\t\tflex: 0 0 28px;\n\t\tfont-size: 19px !important;\n\t\tfont-weight: 400 !important;\n\t\theight: 28px;\n\t\tjustify-content: center;\n\t\tline-height: 1 !important;\n\t\tmargin: 0 !important;\n\t\tpadding: 0 !important;\n\t\twidth: 28px;\n\t}\n\n\t.pivot-ticker-dismiss:hover {\n\t\tbackground: #f1f5f9 !important;\n\t\tcolor: #0f172a !important;\n\t}\n\n\t.pivot-ticker-controls {\n\t\talign-items: center;\n\t\tborder-left: 1px solid #e2e8f0;\n\t\tdisplay: flex;\n\t\tflex: 0 0 auto;\n\t\tgap: 3px;\n\t\tpadding: 0 8px;\n\t}\n\n\t.pivot-ticker-control {\n\t\talign-items: center;\n\t\tbackground: transparent !important;\n\t\tborder: 0 !important;\n\t\tborder-radius: 7px !important;\n\t\tcolor: #475569 !important;\n\t\tcursor: pointer;\n\t\tdisplay: flex;\n\t\tfont-size: 16px !important;\n\t\theight: 32px;\n\t\tjustify-content: center;\n\t\tline-height: 1 !important;\n\t\tmargin: 0 !important;\n\t\tmin-height: 32px !important;\n\t\tmin-width: 30px !important;\n\t\tpadding: 0 !important;\n\t\twidth: 30px;\n\t}\n\n\t.pivot-ticker-control:hover {\n\t\tbackground: #f1f5f9 !important;\n\t\tcolor: #002FA7 !important;\n\t}\n\n\t.pivot-ticker-counter {\n\t\tcolor: #64748b;\n\t\tfont-size: 11px;\n\t\tfont-weight: 700;\n\t\tmin-width: 32px;\n\t\ttext-align: center;\n\t\twhite-space: nowrap;\n\t}\n\n\t@keyframes pivotTickerEnter {\n\t\tfrom {\n\t\t\topacity: 0;\n\t\t\ttransform: translateX(18px);\n\t\t}\n\n\t\tto {\n\t\t\topacity: 1;\n\t\t\ttransform: translateX(0);\n\t\t}\n\t}\n\n\t@keyframes pivotTickerPulse {\n\t\t0%,\n\t\t100% {\n\t\t\topacity: 1;\n\t\t\ttransform: scale(1);\n\t\t}\n\n\t\t50% {\n\t\t\topacity: 0.55;\n\t\t\ttransform: scale(0.8);\n\t\t}\n\t}\n\n\t@media (max-width: 760px) {\n\t\t#pivot-notice-ticker {\n\t\t\tflex-wrap: wrap;\n\t\t}\n\n\t\t.pivot-ticker-label {\n\t\t\tjustify-content: flex-start;\n\t\t\tmin-height: 36px;\n\t\t\tpadding: 8px 14px;\n\t\t\twidth: 100%;\n\t\t}\n\n\t\t.pivot-ticker-stage {\n\t\t\talign-items: flex-start;\n\t\t\tpadding: 12px 10px 12px 14px;\n\t\t}\n\n\t\t.pivot-ticker-item {\n\t\t\talign-items: flex-start;\n\t\t\tflex-wrap: wrap;\n\t\t\tgap: 8px;\n\t\t}\n\n\t\t.pivot-ticker-copy {\n\t\t\talign-items: flex-start;\n\t\t\tdisplay: flex;\n\t\t\tflex-basis: calc(100% - 90px);\n\t\t\tflex-direction: column;\n\t\t\tgap: 3px;\n\t\t}\n\n\t\t.pivot-ticker-title,\n\t\t.pivot-ticker-message {\n\t\t\toverflow: visible;\n\t\t\twhite-space: normal;\n\t\t}\n\n\t\t.pivot-ticker-controls {\n\t\t\tborder-left: 0;\n\t\t\tborder-top: 1px solid #e2e8f0;\n\t\t\tjustify-content: center;\n\t\t\tmin-height: 42px;\n\t\t\twidth: 100%;\n\t\t}\n\t}\n\n\t@media (prefers-reduced-motion: reduce) {\n\t\t.pivot-ticker-live-dot,\n\t\t.pivot-ticker-item {\n\t\t\tanimation: none !important;\n\t\t}\n\t}\n<\/style>\n<script>\n\twindow.pivotTickerState = {\n\t\tindex: 0,\n\t\ttimer: null,\n\t\tpaused: false,\n\t\thovered: false\n\t};\n\n\twindow.pivotTickerEscape = function (value) {\n\t\treturn String(value ?? '').replace(\/[&<>\"']\/g, function (character) {\n\t\t\tconst replacements = {\n\t\t\t\t'&': '&amp;',\n\t\t\t\t'<': '&lt;',\n\t\t\t\t'>': '&gt;',\n\t\t\t\t'\"': '&quot;',\n\t\t\t\t\"'\": '&#039;'\n\t\t\t};\n\n\t\t\treturn replacements[character];\n\t\t});\n\t};\n\n\twindow.pivotGetDismissedNoticeIds = function () {\n\t\ttry {\n\t\t\tconst stored = JSON.parse(\n\t\t\t\tlocalStorage.getItem('pivotDismissedNotices') || '[]'\n\t\t\t);\n\n\t\t\treturn Array.isArray(stored)\n\t\t\t\t? stored.map(String)\n\t\t\t\t: [];\n\t\t} catch (error) {\n\t\t\treturn [];\n\t\t}\n\t};\n\n\twindow.pivotGetNoticeItems = function () {\n\t\tconst dataElement = document.getElementById('pivot-notices-json');\n\n\t\tif (!dataElement) {\n\t\t\treturn [];\n\t\t}\n\n\t\tlet items = [];\n\n\t\ttry {\n\t\t\titems = JSON.parse(dataElement.textContent || '[]');\n\t\t} catch (error) {\n\t\t\tconsole.error('PIVOT notice data could not be read.', error);\n\t\t\treturn [];\n\t\t}\n\n\t\tif (!Array.isArray(items)) {\n\t\t\treturn [];\n\t\t}\n\n\t\tconst dismissed = window.pivotGetDismissedNoticeIds();\n\n\t\treturn items.filter(function (item) {\n\t\t\treturn item && !dismissed.includes(String(item.id));\n\t\t});\n\t};\n\n\twindow.pivotGetTickerTypeDetails = function (type) {\n\t\tconst types = {\n\t\t\tupdate: {\n\t\t\t\tlabel: 'PIVOT Update',\n\t\t\t\tclassName: 'update'\n\t\t\t},\n\t\t\tnews: {\n\t\t\t\tlabel: 'News',\n\t\t\t\tclassName: 'news'\n\t\t\t},\n\t\t\toffer: {\n\t\t\t\tlabel: 'Offer',\n\t\t\t\tclassName: 'offer'\n\t\t\t},\n\t\t\timportant: {\n\t\t\t\tlabel: 'Important',\n\t\t\t\tclassName: 'important'\n\t\t\t}\n\t\t};\n\n\t\treturn types[type] || types.update;\n\t};\n\n\twindow.pivotBuildTickerItemHtml = function (item) {\n\t\tconst typeDetails = window.pivotGetTickerTypeDetails(item.type);\n\n\t\tconst title = window.pivotTickerEscape(item.title);\n\t\tconst message = window.pivotTickerEscape(item.message);\n\t\tconst buttonText = window.pivotTickerEscape(item.button_text);\n\t\tconst url = window.pivotTickerEscape(item.url);\n\n\t\tlet actionHtml = '';\n\n\t\tif (buttonText && url) {\n\t\t\tactionHtml = `\n\t\t\t\t<a\n\t\t\t\t\tclass=\"pivot-ticker-action\"\n\t\t\t\t\thref=\"${url}\"\n\t\t\t\t>\n\t\t\t\t\t${buttonText}\n\t\t\t\t<\/a>\n\t\t\t`;\n\t\t}\n\n\t\tlet dismissHtml = '';\n\n\t\tif (item.dismissible) {\n\t\t\tdismissHtml = `\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tclass=\"pivot-ticker-dismiss\"\n\t\t\t\t\tonclick=\"event.stopPropagation(); window.pivotDismissTickerNotice();\"\n\t\t\t\t\taria-label=\"Dismiss this notice\"\n\t\t\t\t\ttitle=\"Dismiss this notice\"\n\t\t\t\t>\n\t\t\t\t\t&times;\n\t\t\t\t<\/button>\n\t\t\t`;\n\t\t}\n\n\t\treturn `\n\t\t\t<div class=\"pivot-ticker-item\">\n\t\t\t\t<span class=\"pivot-ticker-type pivot-ticker-type--${typeDetails.className}\">\n\t\t\t\t\t${typeDetails.label}\n\t\t\t\t<\/span>\n\n\t\t\t\t<div class=\"pivot-ticker-copy\">\n\t\t\t\t\t<strong class=\"pivot-ticker-title\">\n\t\t\t\t\t\t${title}\n\t\t\t\t\t<\/strong>\n\n\t\t\t\t\t<span class=\"pivot-ticker-message\">\n\t\t\t\t\t\t${message}\n\t\t\t\t\t<\/span>\n\t\t\t\t<\/div>\n\n\t\t\t\t${actionHtml}\n\t\t\t\t${dismissHtml}\n\t\t\t<\/div>\n\t\t`;\n\t};\n\n\twindow.pivotBuildNoticeTickerHtml = function () {\n\t\tconst items = window.pivotGetNoticeItems();\n\n\t\tif (!items.length) {\n\t\t\treturn '';\n\t\t}\n\n\t\twindow.pivotTickerState.index = 0;\n\n\t\treturn `\n\t\t\t<section\n\t\t\t\tid=\"pivot-notice-ticker\"\n\t\t\t\taria-label=\"PIVOT dashboard notices\"\n\t\t\t\tonmouseenter=\"window.pivotSetTickerHover(true);\"\n\t\t\t\tonmouseleave=\"window.pivotSetTickerHover(false);\"\n\t\t\t>\n\t\t\t\t<div class=\"pivot-ticker-label\">\n\t\t\t\t\t<span class=\"pivot-ticker-live-dot\" aria-hidden=\"true\"><\/span>\n\t\t\t\t\t<span class=\"pivot-ticker-label-text\">PIVOT Live<\/span>\n\t\t\t\t<\/div>\n\n\t\t\t\t<div\n\t\t\t\t\tid=\"pivot-ticker-stage\"\n\t\t\t\t\tclass=\"pivot-ticker-stage\"\n\t\t\t\t\taria-live=\"polite\"\n\t\t\t\t>\n\t\t\t\t\t${window.pivotBuildTickerItemHtml(items[0])}\n\t\t\t\t<\/div>\n\n\t\t\t\t<div class=\"pivot-ticker-controls\">\n\t\t\t\t\t<button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tclass=\"pivot-ticker-control\"\n\t\t\t\t\t\tonclick=\"window.pivotMoveTicker(-1);\"\n\t\t\t\t\t\taria-label=\"Previous notice\"\n\t\t\t\t\t\ttitle=\"Previous notice\"\n\t\t\t\t\t>\n\t\t\t\t\t\t&#8249;\n\t\t\t\t\t<\/button>\n\n\t\t\t\t\t<button\n\t\t\t\t\t\tid=\"pivot-ticker-pause\"\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tclass=\"pivot-ticker-control\"\n\t\t\t\t\t\tonclick=\"window.pivotToggleTicker();\"\n\t\t\t\t\t\taria-label=\"Pause notices\"\n\t\t\t\t\t\ttitle=\"Pause notices\"\n\t\t\t\t\t>\n\t\t\t\t\t\t&#10074;&#10074;\n\t\t\t\t\t<\/button>\n\n\t\t\t\t\t<button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tclass=\"pivot-ticker-control\"\n\t\t\t\t\t\tonclick=\"window.pivotMoveTicker(1);\"\n\t\t\t\t\t\taria-label=\"Next notice\"\n\t\t\t\t\t\ttitle=\"Next notice\"\n\t\t\t\t\t>\n\t\t\t\t\t\t&#8250;\n\t\t\t\t\t<\/button>\n\n\t\t\t\t\t<span\n\t\t\t\t\t\tid=\"pivot-ticker-counter\"\n\t\t\t\t\t\tclass=\"pivot-ticker-counter\"\n\t\t\t\t\t>\n\t\t\t\t\t\t1 \/ ${items.length}\n\t\t\t\t\t<\/span>\n\t\t\t\t<\/div>\n\t\t\t<\/section>\n\t\t`;\n\t};\n\n\twindow.pivotRenderCurrentTickerNotice = function () {\n\t\tconst items = window.pivotGetNoticeItems();\n\t\tconst ticker = document.getElementById('pivot-notice-ticker');\n\t\tconst stage = document.getElementById('pivot-ticker-stage');\n\t\tconst counter = document.getElementById('pivot-ticker-counter');\n\n\t\tif (!items.length) {\n\t\t\tif (ticker) {\n\t\t\t\tticker.remove();\n\t\t\t}\n\n\t\t\twindow.pivotStopTicker();\n\t\t\treturn;\n\t\t}\n\n\t\tif (!stage) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (window.pivotTickerState.index >= items.length) {\n\t\t\twindow.pivotTickerState.index = 0;\n\t\t}\n\n\t\tif (window.pivotTickerState.index < 0) {\n\t\t\twindow.pivotTickerState.index = items.length - 1;\n\t\t}\n\n\t\tconst currentItem = items[window.pivotTickerState.index];\n\n\t\tstage.innerHTML = window.pivotBuildTickerItemHtml(currentItem);\n\n\t\tif (counter) {\n\t\t\tcounter.textContent =\n\t\t\t\t(window.pivotTickerState.index + 1) +\n\t\t\t\t' \/ ' +\n\t\t\t\titems.length;\n\t\t}\n\t};\n\n\twindow.pivotStopTicker = function () {\n\t\tif (window.pivotTickerState.timer) {\n\t\t\tclearInterval(window.pivotTickerState.timer);\n\t\t\twindow.pivotTickerState.timer = null;\n\t\t}\n\t};\n\n\twindow.pivotScheduleTicker = function () {\n\t\twindow.pivotStopTicker();\n\n\t\tconst items = window.pivotGetNoticeItems();\n\n\t\tconst reducedMotion = window.matchMedia &&\n\t\t\twindow.matchMedia('(prefers-reduced-motion: reduce)').matches;\n\n\t\tif (\n\t\t\titems.length < 2 ||\n\t\t\twindow.pivotTickerState.paused ||\n\t\t\twindow.pivotTickerState.hovered ||\n\t\t\treducedMotion\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\twindow.pivotTickerState.timer = setInterval(function () {\n\t\t\twindow.pivotTickerState.index += 1;\n\n\t\t\tif (window.pivotTickerState.index >= items.length) {\n\t\t\t\twindow.pivotTickerState.index = 0;\n\t\t\t}\n\n\t\t\twindow.pivotRenderCurrentTickerNotice();\n\t\t}, 7000);\n\t};\n\n\twindow.pivotStartNoticeTicker = function () {\n\t\tif (!document.getElementById('pivot-notice-ticker')) {\n\t\t\twindow.pivotStopTicker();\n\t\t\treturn;\n\t\t}\n\n\t\twindow.pivotTickerState.index = 0;\n\t\twindow.pivotRenderCurrentTickerNotice();\n\t\twindow.pivotScheduleTicker();\n\t};\n\n\twindow.pivotMoveTicker = function (direction) {\n\t\tconst items = window.pivotGetNoticeItems();\n\n\t\tif (!items.length) {\n\t\t\treturn;\n\t\t}\n\n\t\twindow.pivotTickerState.index += direction;\n\n\t\tif (window.pivotTickerState.index >= items.length) {\n\t\t\twindow.pivotTickerState.index = 0;\n\t\t}\n\n\t\tif (window.pivotTickerState.index < 0) {\n\t\t\twindow.pivotTickerState.index = items.length - 1;\n\t\t}\n\n\t\twindow.pivotRenderCurrentTickerNotice();\n\t\twindow.pivotScheduleTicker();\n\t};\n\n\twindow.pivotToggleTicker = function () {\n\t\tconst pauseButton = document.getElementById('pivot-ticker-pause');\n\n\t\twindow.pivotTickerState.paused =\n\t\t\t!window.pivotTickerState.paused;\n\n\t\tif (pauseButton) {\n\t\t\tif (window.pivotTickerState.paused) {\n\t\t\t\tpauseButton.innerHTML = '&#9654;';\n\t\t\t\tpauseButton.setAttribute(\n\t\t\t\t\t'aria-label',\n\t\t\t\t\t'Play notices'\n\t\t\t\t);\n\t\t\t\tpauseButton.title = 'Play notices';\n\t\t\t} else {\n\t\t\t\tpauseButton.innerHTML = '&#10074;&#10074;';\n\t\t\t\tpauseButton.setAttribute(\n\t\t\t\t\t'aria-label',\n\t\t\t\t\t'Pause notices'\n\t\t\t\t);\n\t\t\t\tpauseButton.title = 'Pause notices';\n\t\t\t}\n\t\t}\n\n\t\twindow.pivotScheduleTicker();\n\t};\n\n\twindow.pivotSetTickerHover = function (isHovered) {\n\t\twindow.pivotTickerState.hovered = Boolean(isHovered);\n\t\twindow.pivotScheduleTicker();\n\t};\n\n\twindow.pivotDismissTickerNotice = function () {\n\t\tconst items = window.pivotGetNoticeItems();\n\n\t\tif (!items.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst currentItem = items[window.pivotTickerState.index];\n\n\t\tif (!currentItem || !currentItem.dismissible) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst dismissed = window.pivotGetDismissedNoticeIds();\n\t\tconst noticeId = String(currentItem.id);\n\n\t\tif (!dismissed.includes(noticeId)) {\n\t\t\tdismissed.push(noticeId);\n\t\t}\n\n\t\tlocalStorage.setItem(\n\t\t\t'pivotDismissedNotices',\n\t\t\tJSON.stringify(dismissed)\n\t\t);\n\n\t\tconst remainingItems = window.pivotGetNoticeItems();\n\n\t\tif (\n\t\t\twindow.pivotTickerState.index >=\n\t\t\tremainingItems.length\n\t\t) {\n\t\t\twindow.pivotTickerState.index = 0;\n\t\t}\n\n\t\twindow.pivotRenderCurrentTickerNotice();\n\t\twindow.pivotScheduleTicker();\n\t};\n<\/script>\n<style>\n\n    \/* AGGRESSIVE FLATSOME OVERRIDES FOR DASHBOARD PAGE *\/\n    .is-pivot-app-page header#header, \n    .is-pivot-app-page .site-header, \n    .is-pivot-app-page .header-wrapper,\n    .is-pivot-app-page .elementor-location-header { display: none !important; opacity: 0 !important; visibility: hidden !important; }\n    .is-pivot-app-page footer, .is-pivot-app-page #site-footer, .is-pivot-app-page #colophon, .is-pivot-app-page .absolute-footer, .is-pivot-app-page .elementor-location-footer { display: none !important; }\n    html, body { margin-top: 0 !important; padding-top: 0 !important; }\n    .is-pivot-app-page body { padding-top: 75px !important; }\n    \/* =========================================================\n       PIVOT HELP v1 \u2014 CLEAR, ACCESSIBLE, CONTEXTUAL HELP MODALS\n       ========================================================= *\/\n    #pivot-info-modal,\n    #pivot-info-modal * {\n        box-sizing: border-box !important;\n        font-family: 'Inter', \"Helvetica Neue\", Helvetica, Arial, sans-serif !important;\n        letter-spacing: normal !important;\n    }\n\n    #pivot-info-modal .pivot-help-dialog {\n        background: #ffffff !important;\n        border-radius: 22px !important;\n        border-top: 6px solid #002FA7 !important;\n        box-shadow: 0 28px 65px -18px rgba(15, 23, 42, 0.48) !important;\n        max-height: min(82vh, 760px) !important;\n        max-width: 620px !important;\n        overflow-y: auto !important;\n        padding: 36px 38px 34px !important;\n        position: relative !important;\n        transform: translateY(18px) !important;\n        transition: transform 0.25s ease !important;\n        width: 100% !important;\n    }\n\n    #pivot-info-modal .pivot-help-eyebrow {\n        align-items: center !important;\n        color: #002FA7 !important;\n        display: flex !important;\n        font-size: 0.72rem !important;\n        font-weight: 850 !important;\n        gap: 8px !important;\n        letter-spacing: 0.1em !important;\n        margin: 0 48px 12px 0 !important;\n        text-transform: uppercase !important;\n    }\n\n    #pivot-info-modal .pivot-help-eyebrow::before {\n        background: #002FA7 !important;\n        border-radius: 50% !important;\n        content: \"\" !important;\n        display: inline-block !important;\n        flex: 0 0 9px !important;\n        height: 9px !important;\n        width: 9px !important;\n    }\n\n    #pivot-info-modal h3 {\n        color: #0f172a !important;\n        font-family: 'Inter', \"Helvetica Neue\", Helvetica, Arial, sans-serif !important;\n        font-size: clamp(1.45rem, 3vw, 1.8rem) !important;\n        font-weight: 850 !important;\n        line-height: 1.22 !important;\n        margin: 0 48px 13px 0 !important;\n    }\n\n    #pivot-info-modal .pivot-help-intro {\n        color: #526075 !important;\n        font-size: 1rem !important;\n        font-weight: 450 !important;\n        line-height: 1.65 !important;\n        margin: 0 !important;\n    }\n\n    #pivot-info-modal .pivot-help-sections {\n        border-top: 1px solid #e2e8f0 !important;\n        display: grid !important;\n        gap: 0 !important;\n        margin-top: 22px !important;\n        padding-top: 4px !important;\n    }\n\n    #pivot-info-modal .pivot-help-section {\n        border-bottom: 1px solid #eef2f7 !important;\n        padding: 16px 0 !important;\n    }\n\n    #pivot-info-modal .pivot-help-section:last-child {\n        border-bottom: 0 !important;\n        padding-bottom: 4px !important;\n    }\n\n    #pivot-info-modal .pivot-help-section-title {\n        color: #0f172a !important;\n        display: block !important;\n        font-size: 0.84rem !important;\n        font-weight: 850 !important;\n        line-height: 1.35 !important;\n        margin: 0 0 5px !important;\n    }\n\n    #pivot-info-modal .pivot-help-section-text {\n        color: #526075 !important;\n        font-size: 0.94rem !important;\n        font-weight: 450 !important;\n        line-height: 1.62 !important;\n        margin: 0 !important;\n    }\n\n    #pivot-info-modal .pivot-help-tip {\n        background: #f0fdf4 !important;\n        border: 1px solid #bbf7d0 !important;\n        border-radius: 12px !important;\n        color: #166534 !important;\n        font-size: 0.9rem !important;\n        font-weight: 650 !important;\n        line-height: 1.55 !important;\n        margin-top: 18px !important;\n        padding: 13px 15px !important;\n    }\n\n    #pivot-info-modal .pivot-help-close {\n        align-items: center !important;\n        background: #f1f5f9 !important;\n        border: 0 !important;\n        border-radius: 50% !important;\n        color: #475569 !important;\n        cursor: pointer !important;\n        display: flex !important;\n        font-size: 1.2rem !important;\n        font-weight: 700 !important;\n        height: 42px !important;\n        justify-content: center !important;\n        line-height: 1 !important;\n        margin: 0 !important;\n        padding: 0 !important;\n        position: absolute !important;\n        right: 18px !important;\n        top: 16px !important;\n        transition: all 0.18s ease !important;\n        width: 42px !important;\n    }\n\n    #pivot-info-modal .pivot-help-close:hover,\n    #pivot-info-modal .pivot-help-close:focus {\n        background: #e2e8f0 !important;\n        color: #002FA7 !important;\n        outline: 2px solid rgba(0, 47, 167, 0.18) !important;\n        outline-offset: 2px !important;\n    }\n\n    @media (max-width: 600px) {\n        #pivot-info-modal .pivot-help-dialog {\n            border-radius: 18px !important;\n            max-height: 86vh !important;\n            padding: 29px 22px 25px !important;\n        }\n\n        #pivot-info-modal h3 {\n            font-size: 1.42rem !important;\n        }\n\n        #pivot-info-modal .pivot-help-intro {\n            font-size: 0.95rem !important;\n        }\n    }\n<\/style>\n<div id=\"pivot-dashboard-preloader\" style=\"position: absolute; top: 0; left: 0; width: 100%; height: 100%; min-height: 600px; background: #f8fafc; z-index: 9999; display: flex; flex-direction: column; align-items: center; justify-content: center; border-radius: 20px; transition: opacity 0.5s ease-out;\">\n    <div id=\"pivot-loading-carousel\" style=\"text-align: center; margin-bottom: 40px; min-height: 120px; position: relative; display: flex; align-items: center; justify-content: center; width: 100%; max-width: 700px; padding: 0 20px; box-sizing: border-box;\">\n        <h3 class=\"pivot-loading-slide\" style=\"position: absolute; width: 100%; transition: opacity 1.2s ease-in-out; opacity: 1; color: #334155; font-family: inherit !important; font-size: 1.4rem; line-height: 1.6; font-weight: 600; margin: 0;\">PIVOT is bringing together your current self-assessment profile.<\/h3>\n        <h3 class=\"pivot-loading-slide\" style=\"position: absolute; width: 100%; transition: opacity 1.2s ease-in-out; opacity: 0; color: #334155; font-family: inherit !important; font-size: 1.4rem; line-height: 1.6; font-weight: 600; margin: 0;\">Your development record connects self-awareness, choices, action, reflection and evidence.<\/h3>\n        <h3 class=\"pivot-loading-slide\" style=\"position: absolute; width: 100%; transition: opacity 1.2s ease-in-out; opacity: 0; color: #334155; font-family: inherit !important; font-size: 1.4rem; line-height: 1.6; font-weight: 600; margin: 0;\">A lower self-rating is not automatically a weakness. Context, goals and circumstances matter.<\/h3>\n        <h3 class=\"pivot-loading-slide\" style=\"position: absolute; width: 100%; transition: opacity 1.2s ease-in-out; opacity: 0; color: #334155; font-family: inherit !important; font-size: 1.4rem; line-height: 1.6; font-weight: 600; margin: 0;\">Development can happen through work, study, courses, projects, coaching, practice and everyday experience.<\/h3>\n        <h3 class=\"pivot-loading-slide\" style=\"position: absolute; width: 100%; transition: opacity 1.2s ease-in-out; opacity: 0; color: #334155; font-family: inherit !important; font-size: 1.4rem; line-height: 1.6; font-weight: 600; margin: 0;\">Career Explorer is optional and becomes more informative as the relevant parts of your profile are completed.<\/h3>\n        <h3 class=\"pivot-loading-slide\" style=\"position: absolute; width: 100%; transition: opacity 1.2s ease-in-out; opacity: 0; color: #334155; font-family: inherit !important; font-size: 1.4rem; line-height: 1.6; font-weight: 600; margin: 0;\">Your PIVOT record is designed to evolve as your responses and development activity change.<\/h3>\n    <\/div>\n    <div class=\"pivot-loader-ring\"><\/div>\n<\/div>\n\n<script>\n    window.scrollTo(0, 0);\n    let preventJump = setInterval(() => {\n        window.scrollTo(0, 0);\n        let preloader = document.getElementById('pivot-dashboard-preloader');\n        if (preloader && (preloader.style.display === 'none' || preloader.style.opacity === '0')) clearInterval(preventJump);\n    }, 15);\n    setTimeout(() => clearInterval(preventJump), 15000);\n\n    setTimeout(() => {\n        let pivotSlides = document.querySelectorAll('#pivot-dashboard-preloader .pivot-loading-slide');\n        let pivotCurrentSlide = 0;\n        if (pivotSlides.length > 0) {\n            setInterval(() => {\n                pivotSlides[pivotCurrentSlide].style.opacity = '0';\n                pivotCurrentSlide = (pivotCurrentSlide + 1) % pivotSlides.length;\n                pivotSlides[pivotCurrentSlide].style.opacity = '1';\n            }, 8000); \n        }\n    }, 200);\n<\/script>\n\n<style>\n    .force-clean-preloader-h2 { font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif !important; color: #0f172a !important; font-size: 1.8rem !important; margin: 25px 0 10px 0 !important; font-weight: 800 !important; text-transform: none !important; letter-spacing: normal !important; }\n    .force-clean-preloader-p { font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif !important; color: #64748b !important; font-size: 1rem !important; max-width: 350px !important; text-align: center !important; line-height: 1.5 !important; font-weight: 400 !important; text-transform: none !important; }\n    #pivot-dashboard-wrapper { position: relative; } \n    .pivot-loader-ring { display: inline-block; width: 60px; height: 60px; border: 6px solid #e0e7ff; border-radius: 50%; border-top-color: #ea580c; border-left-color: #002FA7; animation: pivotSpin 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite; }\n    @keyframes pivotSpin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } }\n<\/style>\n\n<div id=\"pivot-flash-screen\" style=\"display:flex; position:fixed; top:0; left:0; width:100vw; height:100vh; background:rgba(255,255,255,1); z-index:2147483647; flex-direction:column; align-items:center; justify-content:center; transition: opacity 0.4s ease;\">\n    <div class=\"spinner\" style=\"margin-bottom: 20px;\"><\/div>\n    <div id=\"pivot-flash-text\" style=\"font-size:1.8rem; font-weight:800; color:#0f172a; text-align:center; max-width:600px; padding:0 20px; line-height:1.4;\">Syncing PIVOT Engine v2.0...<\/div>\n<\/div>\n\n<div id=\"pivot-wrapper\" style=\"visibility: hidden; opacity: 0; transition: opacity 0.3s ease; min-height: 60vh;\">\n    <div id=\"system-loading-zone\" style=\"display:none; margin-top: 50px; text-align: center;\"><\/div>\n    <div id=\"gateway-pillars-anchor\" style=\"display:none;\"><\/div>\n    <div id=\"module-buttons-anchor\" style=\"display:none; margin-top: 25px;\"><\/div>\n    <div id=\"assessment-content-anchor\" style=\"display:none; margin-top: 25px;\"><\/div>\n<\/div>\n<div id=\"pivot-badge-storage\" style=\"display: none;\">\n    <div id=\"earned-badges-data\"><\/div>\n<\/div>\n\n<!-- NEW: Hidden Storage for Automatic Course Certificates -->\n<div id=\"pivot-cert-storage\" style=\"display: none;\">\n    <div id=\"auto-cert-data\">[pivot_my_certificates]<\/div>\n<\/div>\n\n<style>\n    .mycred-badge-list { list-style: none !important; padding: 0 !important; margin: 0 !important; display: flex !important; flex-wrap: wrap !important; gap: 15px !important; justify-content: center !important; }\n    .mycred-badge-list li { display: inline-flex !important; flex-direction: column !important; align-items: center !important; text-align: center !important; width: 100px !important; margin-bottom: 10px !important; }\n    .mycred-badge-image { width: 75px !important; height: 75px !important; object-fit: contain !important; margin-bottom: 8px !important; border-radius: 18px !important; box-shadow: 0 8px 20px rgba(0,0,0,0.1) !important; transition: transform 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275) !important; }\n    .mycred-badge-image:hover { transform: scale(1.1) translateY(-4px) !important; box-shadow: 0 12px 25px rgba(0, 47, 167, 0.2) !important; }\n    .mycred-badge-title { font-size: 0.75rem !important; font-weight: 800 !important; color: #0f172a !important; line-height: 1.2 !important; }\n    #pivot-all-view .mycred-badge-image { filter: grayscale(100%) opacity(60%) !important; box-shadow: none !important; }\n    .pivot-premium-card, .elementor-post, .post-item { position: relative !important; transition: transform 0.3s ease; }\n    .pivot-premium-card:hover, .elementor-post:hover, .post-item:hover { transform: translateY(-5px); cursor: pointer; box-shadow: 0 10px 20px rgba(0,0,0,0.08); }\n    .pivot-premium-card a::after, .elementor-post a::after, .post-item a::after { content: \"\"; position: absolute; top: 0; left: 0; right: 0; bottom: 0; z-index: 10; }\n    #assessment-content-anchor .pivot-premium-card a::after, #assessment-content-anchor .pivot-premium-card .pivot-btn-accent::after { display: none !important; content: none !important; }\n    #assessment-content-anchor input[type=\"range\"], #assessment-content-anchor button, #assessment-content-anchor select, #assessment-content-anchor summary, #assessment-content-anchor .info-icon, #assessment-content-anchor a, #assessment-content-anchor .pivot-journal-item button { position: relative !important; z-index: 99 !important; pointer-events: auto !important; }\n    #assessment-content-anchor .pivot-premium-card { cursor: default !important; }\n    #pivot-wrapper * { font-family: inherit !important; box-sizing: border-box; }\n    #pivot-global-fab { position: fixed; bottom: 110px; right: 30px; width: 65px; height: 65px; border-radius: 50%; background-color: #002FA7; background-image: url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 24 24' fill='%23ffffff' stroke='%23ffffff' stroke-width='1' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolygon points='13 2 3 14 12 14 11 22 21 10 12 10 13 2'%3E%3C\/polygon%3E%3C\/svg%3E\"); background-size: 28px; background-repeat: no-repeat; background-position: center; border: none; cursor: pointer; z-index: 99998; box-shadow: 0 10px 25px rgba(0,47,167,0.4); transition: transform 0.2s cubic-bezier(0.175, 0.885, 0.32, 1.275); touch-action: manipulation; }\n    #pivot-global-fab:hover { transform: scale(1.15) translateY(-5px); background-color: #001B63; }\n    .pivot-premium-card { background: #ffffff; border-radius: 20px; padding: 30px; box-shadow: 0 15px 35px -5px rgba(0, 30, 80, 0.18); margin-bottom: 30px; transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1); border: 1px solid rgba(0,0,0,0.08); position: relative; overflow: hidden; }\n    .pivot-card-accent-blue::before { content: \"\"; position: absolute; top: 0; left: 0; right: 0; height: 6px; background: #002FA7; }\n    .pivot-card-accent-orange::before { content: \"\"; position: absolute; top: 0; left: 0; right: 0; height: 6px; background: #b45309; }\n    .pivot-card-accent-teal::before { content: \"\"; position: absolute; top: 0; left: 0; right: 0; height: 6px; background: #0f766e; }\n    .pivot-module-row { cursor: pointer; touch-action: manipulation; }\n    .pivot-module-row:hover { transform: translateY(-6px); box-shadow: 0 25px 45px -10px rgba(0, 47, 167, 0.35); border-color: rgba(0, 47, 167, 0.4); }\n    .pivot-module-row.locked-card:hover { transform: translateY(-2px); box-shadow: 0 15px 35px -5px rgba(0, 30, 80, 0.18); border-color: rgba(0,0,0,0.08); }\n    .pivot-grid-4 { display: grid; grid-template-columns: repeat(4, 1fr); gap: 25px; margin-bottom: 40px; }\n    @media (max-width: 1100px) { .pivot-grid-4 { grid-template-columns: repeat(3, 1fr); } }\n    @media (max-width: 850px) { .pivot-grid-4 { grid-template-columns: repeat(2, 1fr); } }\n    @media (max-width: 550px) { .pivot-grid-4 { grid-template-columns: 1fr; } }\n    .pivot-grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 30px; margin-bottom: 40px; }\n    @media (max-width: 900px) { .pivot-grid-2 { grid-template-columns: 1fr; } }\n    .pivot-grid-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 25px; margin-bottom: 40px; }\n    @media (max-width: 1024px) { .pivot-grid-3 { grid-template-columns: repeat(2, 1fr); } }\n    @media (max-width: 768px) { .pivot-grid-3 { grid-template-columns: 1fr; } }\n    .pivot-square-card { height: 100%; min-height: 260px; display: flex; flex-direction: column; justify-content: space-between; margin-bottom: 0 !important; padding: 25px; }\n    .pivot-btn-accent, .pivot-btn-outline, .pivot-btn-secondary, .pivot-btn-success { position: relative; z-index: 5; touch-action: manipulation; padding: 12px 24px !important; border-radius: 10px !important; font-weight: 700 !important; cursor:pointer; transition: all 0.2s; white-space: nowrap !important; line-height: 1.2 !important; opacity: 1 !important; }\n    .pivot-btn-accent { background: #002FA7 !important; color: #fff !important; border: none !important; }\n    .pivot-btn-accent:hover { background: #001B63 !important; transform: translateY(-2px); box-shadow: 0 8px 15px rgba(0, 47, 167, 0.25) !important; }\n    .pivot-btn-outline { background: transparent !important; color: #002FA7 !important; border: 2px solid #002FA7 !important; margin-left: 15px; }\n    .pivot-btn-outline:hover { background: #f0f4fa !important; box-shadow: 0 4px 10px rgba(0, 47, 167, 0.1) !important; transform: translateY(-2px); }\n    .pivot-btn-secondary { background: #f1f5f9 !important; color: #475569 !important; border: none !important; }\n    .pivot-btn-secondary:hover { background: #e2e8f0 !important; transform: translateY(-2px); }\n    .pivot-btn-success { background: #16a34a !important; color: #fff !important; border: none !important; }\n    .pivot-btn-success:hover { background: #15803d !important; transform: translateY(-2px); box-shadow: 0 8px 15px rgba(21, 128, 61, 0.2) !important; }\n    .pivot-action-btn-mini { background: #002FA7 !important; color: #fff !important; border: none !important; padding: 6px 12px !important; border-radius: 6px !important; font-size: 0.75rem !important; font-weight: 700 !important; cursor: pointer; touch-action: manipulation; opacity: 1 !important; white-space: nowrap !important; }\n    .pivot-badge { padding: 6px 12px; border-radius: 8px; font-size: 0.75rem; font-weight: 800; background: #f1f5f9; color: #475569; letter-spacing: 0.5px; text-transform: uppercase;}\n    .pivot-badge.complete { background: #dcfce7; color: #166534; }\n    .info-icon { display: inline-flex; align-items: center; justify-content: center; width: 22px; height: 22px; border-radius: 50%; background: #e2e8f0; color: #475569; font-size: 0.85rem; font-weight: bold; cursor: pointer; margin-left: 8px; vertical-align: middle; transition: all 0.2s; box-shadow: 0 2px 4px rgba(0,0,0,0.05); }\n    .info-icon:hover { background: #002FA7; color: #fff; transform: scale(1.1); }\n    .pivot-pill-nav { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 25px; border-bottom: 2px solid #f1f5f9; padding-bottom: 15px; }\n    .pivot-pill-tab { background: #f1f5f9; color: #64748b; padding: 10px 20px; border-radius: 20px; font-size: 0.95rem; font-weight: 800; cursor: pointer; transition: all 0.2s; border: 2px solid transparent; touch-action: manipulation; }\n    .pivot-pill-tab:hover { background: #e2e8f0; color: #334155; }\n    .pivot-pill-tab.active { background: #e0e7ff; color: #002FA7; border-color: #c7d2fe; box-shadow: 0 4px 10px rgba(0,47,167,0.1); }\n    .pivot-region-select { appearance: none; background: #f8fafc url('data:image\/svg+xml;utf8,<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"%23002FA7\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"6 9 12 15 18 9\"><\/polyline><\/svg>') no-repeat right 15px center; padding: 12px 45px 12px 15px; border-radius: 12px; border: 2px solid #cbd5e1; font-size: 1rem; font-weight: 700; color: #0f172a; cursor: pointer; outline: none; transition: border-color 0.2s; box-shadow: 0 2px 5px rgba(0,0,0,0.02); flex: 1; min-width: 220px; max-width: 350px; text-overflow: ellipsis; white-space: nowrap; overflow: hidden; height: auto !important; min-height: 48px !important; line-height: normal !important; }\n    .pivot-region-select:focus { border-color: #002FA7; }\n    .pivot-prompt-pill { display: inline-block; background: #f0f4fa; color: #002FA7; padding: 8px 16px; border-radius: 8px; font-size: 0.85rem; font-weight: 700; margin: 4px; border: 1px solid #c7d2fe; box-shadow: 0 2px 4px rgba(0,0,0,0.02); transition: transform 0.2s; }\n    .pivot-prompt-pill:hover { transform: translateY(-2px); background: #e0e7ff; border-color: #c7d2fe; }\n    .pivot-wordcloud-container { border-radius: 16px; padding: 10px; text-align: center; display: flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: 4px 8px; overflow: hidden; height: 100%; width: 100%; align-content: center; }\n    .wc-tag { display: inline-block; transition: transform 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275); line-height: 1.1; cursor: default; }\n    .wc-tag:hover { transform: scale(1.05) !important; z-index: 10; }\n    .wc-size-5 { font-size: 1.15rem; color: #b45309; text-shadow: 0 2px 6px rgba(180,83,9,0.1); font-weight: 900; }\n    .wc-size-4 { font-size: 1.0rem; color: #0f766e; font-weight: 800; }\n    .wc-size-3 { font-size: 0.85rem; color: #002FA7; font-weight: 700; }\n    .wc-size-2 { font-size: 0.75rem; color: #64748b; font-weight: 600; opacity: 0.9; }\n    .wc-size-1 { font-size: 0.65rem; color: #94a3b8; font-weight: 600; opacity: 0.7; }\n\n    .pivot-context-wordcloud {\n        gap: 4px 8px;\n        overflow: hidden;\n    }\n\n    .pivot-context-wordcloud .pivot-context-cloud-tag {\n        opacity: 1;\n        line-height: 1.1;\n    }\n\n    .pivot-context-wordcloud.compact .wc-size-5 {\n        font-size: 1.15rem;\n    }\n\n    .pivot-context-wordcloud.compact .wc-size-4 {\n        font-size: 1rem;\n    }\n    .pivot-career-item { display: flex; justify-content: space-between; align-items: center; padding: 18px 20px; background: #ffffff; border: 1px solid #e2e8f0; border-radius: 14px; margin-top: 12px; cursor: pointer; transition: all 0.2s ease; box-shadow: 0 4px 12px rgba(0,0,0,0.02); }\n    .pivot-career-item:hover { background: #fafcff; border-color: #002FA7; transform: translateX(4px); box-shadow: 0 10px 20px rgba(0, 47, 167, 0.08); }\n    .metric-pill-combined { background: #e0e7ff; color: #002FA7; padding: 5px 12px; border-radius: 6px; font-size: 0.8rem; font-weight: 800; text-transform: uppercase; letter-spacing: 0.5px; border: 1px solid #c7d2fe; display: inline-block; }\n    .metric-pill-cap { background: #e0f2fe; color: #002FA7; padding: 4px 10px; border-radius: 6px; font-size: 0.78rem; font-weight: 700; border: 1px solid #bae6fd; display: inline-block; }\n    .metric-pill-pref { background: #f0fdf4; color: #166534; padding: 4px 10px; border-radius: 6px; font-size: 0.78rem; font-weight: 700; border: 1px solid #bbf7d0; display: inline-block; }\n    .metric-pill-interest { background: #fff7ed; color: #9a3412; padding: 4px 10px; border-radius: 6px; font-size: 0.78rem; font-weight: 700; border: 1px solid #fed7aa; display: inline-block; }\n    .metric-pill-style { background: #f5f3ff; color: #6d28d9; padding: 4px 10px; border-radius: 6px; font-size: 0.78rem; font-weight: 700; border: 1px solid #ddd6fe; display: inline-block; }\n    .pivot-journal-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin: 20px 0; }\n    .pivot-journal-col { background: #f8fafc; border-radius: 14px; padding: 20px; border: 1px solid #e2e8f0; }\n    .pivot-journal-item { background: #fff; border-radius: 12px; padding: 18px; margin-bottom: 12px; box-shadow: 0 4px 10px rgba(0,0,0,0.03); border: 1px solid #e2e8f0; font-size: 0.95rem; transition: transform 0.2s; border-left: 4px solid #002FA7; }\n    .pivot-journal-item:hover { transform: translateX(4px); border-color: #cbd5e1; }\n    .pivot-journal-item.completed { border-left-color: #16a34a; background: #f0fdf4; }\n    .descriptor-box {\n        background: linear-gradient(180deg, #ffffff 0%, #fbfdff 100%);\n        padding: 28px;\n        border-radius: 20px;\n        border: 1px solid #dbe5f1;\n        border-left: 5px solid #002FA7;\n        box-shadow: 0 16px 36px rgba(15, 23, 42, 0.08);\n        min-height: 220px;\n    }\n    .descriptor-eyebrow {\n        color: #002FA7;\n        font-size: 0.72rem;\n        font-weight: 850;\n        letter-spacing: 0.09em;\n        margin-bottom: 8px;\n        text-transform: uppercase;\n    }\n    .descriptor-support {\n        color: #64748b;\n        font-size: 0.88rem;\n        line-height: 1.55;\n        margin: -5px 0 17px;\n    }\n    .descriptor-keywords {\n        display: grid;\n        gap: 8px;\n    }\n    .descriptor-box .pivot-prompt-pill {\n        display: block;\n        margin: 0;\n        padding: 10px 12px;\n        border-radius: 10px;\n        background: #f5f8ff;\n        border: 1px solid #cbd9fb;\n        color: #0037a6;\n        box-shadow: none;\n        font-size: 0.82rem;\n        font-weight: 700;\n        line-height: 1.35;\n    }\n    .descriptor-box .pivot-prompt-pill:hover {\n        transform: none;\n        background: #edf3ff;\n        border-color: #9fb8f3;\n    }\n\n    \/* v2.16.50 \u2014 keep the selected-rating interpretation beside the question\n       on both desktop and mobile without changing any assessment data. *\/\n    .pivot-active-descriptor-mobile {\n        display: none;\n    }\n    .pivot-active-descriptor-desktop {\n        display: block;\n    }\n    .setup-input-group { margin-bottom: 15px; display: flex; flex-direction: column; gap: 5px; }\n    .setup-input-group label { font-weight: 700; color: #1e293b; font-size: 0.9rem; display:flex; justify-content:space-between; align-items:center; }\n    .setup-input-group input { padding: 10px; border-radius: 8px; border: 1px solid #cbd5e1; background: #fff; }\n    #pivot-toast { position: fixed; top: 220px; right: -400px; padding: 18px 25px; border-radius: 14px; color: white; font-weight: 700; font-size: 1.1rem; box-shadow: 0 20px 40px rgba(10,25,60,0.25); transition: right 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275); z-index: 99999; display: flex; align-items: center; gap: 15px; max-width: 360px; line-height: 1.4; }\n    #pivot-toast.show { right: 40px; }\n    .spinner { border: 6px solid #f1f5f9; border-top: 6px solid #002FA7; border-radius: 50%; width: 50px; height: 50px; animation: spin 1s linear infinite; margin: 0 auto 20px auto; }\n    @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } }\n    .mobile-huge-text { font-size: 4.5rem; }\n    .mobile-large-text { font-size: 1.8rem; }\n    \/* =========================================================\n       PIVOT ASSESSMENT QUESTION EXPERIENCE \u2014 PREMIUM POLISH\n       ========================================================= *\/\n    .pivot-assessment-question-card {\n        border: 1px solid #dbe5f1 !important;\n        border-radius: 22px !important;\n        box-shadow: 0 18px 46px rgba(15, 23, 42, 0.08) !important;\n        padding: 30px !important;\n    }\n\n    .question-grid {\n        display: grid;\n        grid-template-columns: minmax(0, 1fr);\n        gap: 26px;\n        align-items: start;\n    }\n    .question-grid > div { min-width: 0; }\n\n    @media (min-width: 900px) {\n        .question-grid {\n            grid-template-columns: minmax(0, 1.28fr) minmax(300px, 0.72fr);\n            gap: 36px;\n        }\n    }\n\n    .pivot-question-title {\n        color: #0f172a !important;\n        font-size: 1.82rem !important;\n        font-weight: 850 !important;\n        letter-spacing: -0.015em !important;\n        line-height: 1.18 !important;\n        margin: 0 0 10px !important;\n    }\n\n    .pivot-question-description {\n        color: #64748b !important;\n        font-size: 1rem !important;\n        line-height: 1.58 !important;\n        margin: 0 0 20px !important;\n        max-width: 820px;\n    }\n\n    .pivot-question-exit {\n        background: #f8fafc !important;\n        border: 1px solid #d7e0eb !important;\n        border-radius: 10px !important;\n        color: #475569 !important;\n        font-size: 0.78rem !important;\n        font-weight: 800 !important;\n        padding: 9px 13px !important;\n        box-shadow: none !important;\n        white-space: nowrap !important;\n    }\n    .pivot-question-exit:hover,\n    .pivot-question-exit:focus-visible {\n        background: #eef4ff !important;\n        border-color: #b8caf1 !important;\n        color: #002FA7 !important;\n        transform: translateY(-1px);\n    }\n\n    .pivot-question-progress-wrap {\n        display: flex;\n        align-items: center;\n        gap: 12px;\n        margin: -6px 0 26px;\n    }\n    .pivot-question-progress-track {\n        flex: 1 1 auto;\n        height: 5px;\n        overflow: hidden;\n        border-radius: 999px;\n        background: #e8edf4;\n    }\n    .pivot-question-progress-fill {\n        display: block;\n        height: 100%;\n        border-radius: inherit;\n        background: linear-gradient(90deg, #002FA7, #315ee8);\n        transition: width .25s ease;\n    }\n    .pivot-question-progress-text {\n        flex: 0 0 auto;\n        color: #64748b;\n        font-size: .72rem;\n        font-weight: 800;\n        letter-spacing: .045em;\n        white-space: nowrap;\n        text-transform: uppercase;\n    }\n\n    .compact-slider-area {\n        display: flex;\n        flex-direction: column;\n        align-items: stretch;\n        gap: 16px;\n        margin-bottom: 25px;\n        background: linear-gradient(180deg, #f8fafc 0%, #f4f7fb 100%);\n        padding: 30px 32px 26px;\n        border-radius: 18px;\n        border: 1px solid #dbe4ef;\n        box-shadow: inset 0 1px 0 rgba(255,255,255,.85);\n    }\n\n    .pivot-slider-header {\n        display: flex;\n        justify-content: space-between;\n        align-items: flex-end;\n        gap: 18px;\n        margin-bottom: 6px;\n    }\n    .pivot-scale-heading {\n        color: #64748b;\n        font-size: .78rem;\n        font-weight: 850;\n        letter-spacing: .075em;\n        text-transform: uppercase;\n    }\n    .pivot-scale-helper {\n        display: block;\n        color: #94a3b8;\n        font-size: .72rem;\n        font-weight: 600;\n        letter-spacing: 0;\n        margin-top: 4px;\n        text-transform: none;\n    }\n    .pivot-slider-score {\n        display: flex;\n        align-items: baseline;\n        gap: 6px;\n        flex: 0 0 auto;\n    }\n    #slider_current_val {\n        color: #002FA7 !important;\n        font-size: 3.65rem !important;\n        font-weight: 900 !important;\n        letter-spacing: -0.05em;\n        line-height: .82 !important;\n    }\n    .pivot-slider-max {\n        color: #94a3b8;\n        font-size: 1.12rem;\n        font-weight: 800;\n    }\n\n    .pivot-slider-wrapper {\n        padding: 5px 0 0;\n        position: relative;\n        width: 100%;\n    }\n\n    .pivot-slider {\n        --pivot-slider-pct: 0%;\n        -webkit-appearance: none;\n        appearance: none;\n        width: 100%;\n        height: 9px;\n        margin: 0 0 10px;\n        border-radius: 999px;\n        outline: none;\n        cursor: pointer;\n        background:\n            linear-gradient(\n                90deg,\n                #002FA7 0%,\n                #315ee8 var(--pivot-slider-pct),\n                #d5deea var(--pivot-slider-pct),\n                #d5deea 100%\n            );\n    }\n    .pivot-slider::-webkit-slider-thumb {\n        -webkit-appearance: none;\n        appearance: none;\n        width: 28px;\n        height: 28px;\n        border: 4px solid #ffffff;\n        border-radius: 50%;\n        background: #002FA7;\n        cursor: grab;\n        box-shadow:\n            0 0 0 1px rgba(0,47,167,.13),\n            0 5px 13px rgba(0,47,167,.32);\n        transition: transform .12s ease, box-shadow .12s ease;\n    }\n    .pivot-slider::-webkit-slider-thumb:hover {\n        transform: scale(1.08);\n        box-shadow:\n            0 0 0 5px rgba(0,47,167,.10),\n            0 6px 15px rgba(0,47,167,.34);\n    }\n    .pivot-slider::-webkit-slider-thumb:active {\n        cursor: grabbing;\n        transform: scale(1.03);\n    }\n    .pivot-slider::-moz-range-thumb {\n        width: 20px;\n        height: 20px;\n        border: 4px solid #ffffff;\n        border-radius: 50%;\n        background: #002FA7;\n        cursor: grab;\n        box-shadow:\n            0 0 0 1px rgba(0,47,167,.13),\n            0 5px 13px rgba(0,47,167,.32);\n    }\n    .pivot-slider:focus-visible {\n        outline: 3px solid rgba(0,47,167,.18);\n        outline-offset: 5px;\n    }\n\n    \/* Three equal marker zones keep the middle label visually centred.\n       This fixes the old percentage\/thumb-offset calculation. *\/\n    .slider-markers {\n        display: grid !important;\n        grid-template-columns: 1fr auto 1fr;\n        align-items: center;\n        width: 100%;\n        padding: 0 !important;\n        margin-top: 5px !important;\n        color: #64748b;\n        font-size: .82rem;\n        font-weight: 750;\n        line-height: 1;\n    }\n    .slider-markers span {\n        position: static !important;\n        transform: none !important;\n    }\n    .slider-markers span:first-child { justify-self: start; }\n    .slider-markers span:nth-child(2) {\n        justify-self: center;\n        color: #475569;\n    }\n    .slider-markers span:last-child { justify-self: end; }\n\n    .pivot-rating-number-row {\n        display: grid;\n        grid-template-columns: repeat(auto-fit, minmax(34px, 1fr));\n        gap: 7px;\n        margin-top: 15px;\n    }\n\n    .pivot-rating-number-btn {\n        min-width: 34px;\n        min-height: 34px;\n        padding: 6px 5px !important;\n        border-radius: 9px !important;\n        border: 1px solid #cbd5e1 !important;\n        background: #ffffff !important;\n        color: #475569 !important;\n        font-size: .82rem !important;\n        font-weight: 850 !important;\n        line-height: 1 !important;\n        cursor: pointer;\n        box-shadow: none !important;\n        transition:\n            background .16s ease,\n            border-color .16s ease,\n            color .16s ease,\n            transform .16s ease;\n    }\n\n    .pivot-rating-number-btn:hover {\n        border-color: #002FA7 !important;\n        color: #002FA7 !important;\n        background: #f5f8ff !important;\n        transform: translateY(-1px);\n    }\n\n    .pivot-rating-number-btn.is-selected {\n        background: #002FA7 !important;\n        border-color: #002FA7 !important;\n        color: #ffffff !important;\n        box-shadow: 0 5px 12px rgba(0,47,167,.16) !important;\n    }\n\n    .pivot-assessment-actions-mobile {\n        display: none;\n    }\n\n    .pivot-assessment-actions-desktop {\n        display: block;\n    }\n\n    .pivot-assessment-actions-desktop .pivot-assessment-actions {\n        margin-top: 16px !important;\n        padding-top: 16px !important;\n    }\n\n    .pivot-assessment-actions-desktop .pivot-assessment-actions button {\n        padding-left: 12px !important;\n        padding-right: 12px !important;\n        font-size: .84rem !important;\n    }\n\n    .pivot-assessment-actions {\n        display: grid !important;\n        grid-template-columns: minmax(110px, auto) minmax(130px, auto) minmax(120px, auto);\n        justify-content: space-between;\n        align-items: center;\n        gap: 14px;\n        margin-top: 28px !important;\n        padding-top: 24px !important;\n        border-top: 1px solid #e2e8f0 !important;\n    }\n    .pivot-assessment-actions button {\n        min-height: 50px;\n        margin: 0 !important;\n        border-radius: 11px !important;\n        padding: 12px 22px !important;\n        font-size: .94rem !important;\n        font-weight: 800 !important;\n        line-height: 1.15 !important;\n        white-space: normal !important;\n    }\n    .pivot-assessment-actions button:disabled {\n        opacity: .45 !important;\n        cursor: not-allowed !important;\n        transform: none !important;\n        box-shadow: none !important;\n    }\n\n    \/* =========================================================\n       QUICK NAVIGATION \u2014 v2.16.16 visual polish\n       Intentionally uses strong specificity \/ !important rules\n       so global theme button styles cannot turn the active row\n       into a solid blue button.\n       ========================================================= *\/\n    .pivot-question-tracker {\n        margin-top: 28px;\n    }\n    .pivot-question-tracker-head {\n        display: flex;\n        align-items: flex-end;\n        justify-content: space-between;\n        gap: 16px;\n        margin-bottom: 12px;\n    }\n    .pivot-question-tracker-title {\n        color: #0f172a;\n        font-size: .92rem;\n        font-weight: 900;\n        letter-spacing: .045em;\n        text-transform: uppercase;\n    }\n    .pivot-question-tracker-meta {\n        color: #64748b;\n        font-size: .78rem;\n        font-weight: 650;\n        margin-top: 4px;\n    }\n    .pivot-question-tracker-position {\n        display: inline-flex;\n        align-items: center;\n        justify-content: center;\n        min-width: 58px;\n        padding: 6px 10px;\n        border: 1px solid #c9d8f7;\n        border-radius: 999px;\n        background: #f4f7ff;\n        color: #002FA7;\n        font-size: .74rem;\n        font-weight: 900;\n        line-height: 1;\n        white-space: nowrap;\n    }\n    .pivot-question-list {\n        max-height: 310px;\n        overflow-y: auto;\n        border: 1px solid #dbe4ef;\n        border-radius: 16px;\n        background: #f8fafc;\n        padding: 8px;\n        box-shadow: inset 0 1px 0 rgba(255,255,255,.8);\n        scrollbar-width: thin;\n        scrollbar-color: #b8c6da transparent;\n    }\n    .pivot-question-list::-webkit-scrollbar {\n        width: 7px;\n    }\n    .pivot-question-list::-webkit-scrollbar-track {\n        background: transparent;\n    }\n    .pivot-question-list::-webkit-scrollbar-thumb {\n        background: #c5d1e0;\n        border-radius: 999px;\n    }\n\n    #assessment-content-anchor .pivot-question-nav-item {\n        -webkit-appearance: none !important;\n        appearance: none !important;\n        width: 100% !important;\n        min-height: 50px !important;\n        margin: 0 0 7px !important;\n        padding: 9px 11px !important;\n        display: flex !important;\n        align-items: center !important;\n        justify-content: space-between !important;\n        gap: 12px !important;\n        border: 1px solid #e1e8f0 !important;\n        border-left: 4px solid transparent !important;\n        border-radius: 11px !important;\n        background: #ffffff !important;\n        background-image: none !important;\n        color: #0f172a !important;\n        cursor: pointer !important;\n        text-align: left !important;\n        box-shadow: none !important;\n        transform: none !important;\n        opacity: 1 !important;\n        text-shadow: none !important;\n        transition:\n            border-color .16s ease,\n            background .16s ease,\n            transform .16s ease,\n            box-shadow .16s ease !important;\n    }\n    #assessment-content-anchor .pivot-question-nav-item:last-child {\n        margin-bottom: 0 !important;\n    }\n    #assessment-content-anchor .pivot-question-nav-item:hover {\n        border-color: #b9c9df !important;\n        border-left-color: #94a9c6 !important;\n        background: #fbfdff !important;\n        color: #0f172a !important;\n        transform: translateY(-1px) !important;\n        box-shadow: 0 4px 12px rgba(15,23,42,.05) !important;\n    }\n    #assessment-content-anchor .pivot-question-nav-item:focus,\n    #assessment-content-anchor .pivot-question-nav-item:focus-visible,\n    #assessment-content-anchor .pivot-question-nav-item:active {\n        background: #ffffff !important;\n        background-image: none !important;\n        color: #0f172a !important;\n        outline: none !important;\n        box-shadow: 0 0 0 3px rgba(0,47,167,.10) !important;\n    }\n    #assessment-content-anchor .pivot-question-nav-item.is-active,\n    #assessment-content-anchor .pivot-question-nav-item.is-active:hover,\n    #assessment-content-anchor .pivot-question-nav-item.is-active:focus,\n    #assessment-content-anchor .pivot-question-nav-item.is-active:active {\n        border-color: #b9cbf5 !important;\n        border-left-color: #002FA7 !important;\n        background: #f2f6ff !important;\n        background-image: none !important;\n        color: #0f172a !important;\n        box-shadow: 0 5px 14px rgba(0,47,167,.08) !important;\n    }\n    #assessment-content-anchor .pivot-question-nav-item.is-answered:not(.is-active),\n    #assessment-content-anchor .pivot-question-nav-item.is-answered:not(.is-active):hover,\n    #assessment-content-anchor .pivot-question-nav-item.is-answered:not(.is-active):focus {\n        border-color: #cce8d6 !important;\n        border-left-color: #22a35a !important;\n        background: #f7fcf9 !important;\n        background-image: none !important;\n        color: #0f172a !important;\n    }\n    .pivot-question-nav-main {\n        display: flex;\n        align-items: center;\n        gap: 10px;\n        min-width: 0;\n        flex: 1;\n    }\n    .pivot-question-nav-number {\n        width: 28px;\n        height: 28px;\n        flex: 0 0 28px;\n        display: grid;\n        place-items: center;\n        border: 1px solid #dde5ef;\n        border-radius: 9px;\n        background: #f1f5f9;\n        color: #64748b;\n        font-size: .72rem;\n        font-weight: 900;\n        line-height: 1;\n    }\n    .pivot-question-nav-item.is-active .pivot-question-nav-number {\n        border-color: #002FA7;\n        background: #002FA7;\n        color: #ffffff;\n    }\n    .pivot-question-nav-item.is-answered:not(.is-active) .pivot-question-nav-number {\n        border-color: #bbefcc;\n        background: #dcfce7;\n        color: #15803d;\n    }\n    .pivot-question-nav-title {\n        min-width: 0;\n        overflow: hidden;\n        color: #0f172a !important;\n        font-size: .82rem;\n        font-weight: 700;\n        line-height: 1.3;\n        text-overflow: ellipsis;\n        white-space: nowrap;\n    }\n    .pivot-question-nav-item.is-active .pivot-question-nav-title {\n        color: #001f70 !important;\n        font-weight: 850;\n    }\n    .pivot-question-score {\n        min-width: 34px;\n        flex: 0 0 auto;\n        padding: 4px 8px;\n        border: 1px solid #bbefcc;\n        border-radius: 999px;\n        background: #ecfdf3;\n        text-align: center;\n        color: #15803d !important;\n        font-size: .84rem;\n        font-weight: 900;\n        line-height: 1.1;\n    }\n    .pivot-question-pending {\n        flex: 0 0 auto;\n        padding: 5px 8px;\n        border: 1px solid #dce4ed;\n        border-radius: 999px;\n        background: #f1f5f9;\n        color: #64748b !important;\n        font-size: .60rem;\n        font-weight: 850;\n        line-height: 1;\n        letter-spacing: .035em;\n        text-transform: uppercase;\n    }\n\n    @media (max-width: 900px) {\n        .pivot-active-descriptor-desktop {\n            display: none !important;\n        }\n\n        .pivot-active-descriptor-mobile {\n            display: block !important;\n            min-height: 0 !important;\n            margin: 16px 0 4px !important;\n            padding: 22px !important;\n            border-radius: 16px !important;\n        }\n\n        .pivot-assessment-actions-desktop {\n            display: none;\n        }\n\n        .pivot-assessment-actions-mobile {\n            display: block;\n        }\n\n        .compact-slider-area {\n            margin-bottom: 8px !important;\n            padding: 20px !important;\n        }\n        .pivot-assessment-actions {\n            grid-template-columns: 1fr 1fr 1fr;\n            gap: 10px;\n            margin-top: 18px !important;\n            padding-top: 18px !important;\n        }\n        .pivot-assessment-actions button {\n            padding: 11px 10px !important;\n            font-size: .86rem !important;\n        }\n    }\n\n    @media (max-width: 600px) {\n        #pivot-global-fab {\n            width: 52px !important;\n            height: 52px !important;\n            right: 18px !important;\n            bottom: 132px !important;\n            background-size: 22px !important;\n            box-shadow: 0 8px 20px rgba(0,47,167,0.30) !important;\n        }\n\n        .pivot-journal-item-row {\n            flex-direction: column !important;\n            align-items: stretch !important;\n            gap: 12px !important;\n        }\n\n        .pivot-journal-item-main {\n            width: 100% !important;\n            min-width: 0 !important;\n        }\n\n        .pivot-journal-complete-btn {\n            width: 100% !important;\n            max-width: 100% !important;\n            white-space: normal !important;\n            padding: 11px 14px !important;\n        }\n\n        .pivot-assessment-question-card {\n            padding: 20px !important;\n            border-radius: 18px !important;\n        }\n        .pivot-question-title {\n            font-size: 1.55rem !important;\n        }\n        .pivot-slider-header {\n            align-items: flex-start;\n        }\n        #slider_current_val {\n            font-size: 3rem !important;\n        }\n        .pivot-assessment-actions {\n            grid-template-columns: 1fr 1fr;\n        }\n        .pivot-assessment-actions .pivot-assessment-next {\n            grid-column: 1 \/ -1;\n        }\n        .pivot-question-tracker-head {\n            align-items: flex-start;\n        }\n        .pivot-question-nav-title {\n            white-space: normal;\n            display: -webkit-box;\n            -webkit-line-clamp: 2;\n            -webkit-box-orient: vertical;\n        }\n    }\n\n    .strategy-details { background: #fff; border: 1px solid #e2e8f0; border-radius: 12px; overflow: hidden; }\n    .strategy-summary { padding: 15px 20px; font-weight: 700; color: #002FA7; cursor: pointer; background: #f8fafc; list-style: none; display: flex; align-items: center; gap: 10px; transition: background 0.2s; }\n    .strategy-summary:hover { background: #f1f5f9; }\n    .strategy-summary::-webkit-details-marker { display: none; }\n    .strategy-body { padding: 20px; border-top: 1px solid #e2e8f0; }\n    .pivot-carousel-wrapper { position: relative; margin-top: 15px; width: 100%; display: flex; align-items: center; }\n    .pivot-resource-carousel { display: flex; overflow-x: auto; scroll-snap-type: x mandatory; gap: 20px; padding: 10px 5px 25px 5px; scroll-behavior: smooth; flex: 1; -ms-overflow-style: none; scrollbar-width: none; }\n    .pivot-resource-carousel::-webkit-scrollbar { display: none !important; } \n    .pivot-carousel-btn { touch-action: manipulation; flex-shrink: 0 !important; width: 45px !important; height: 45px !important; min-width: 45px !important; min-height: 45px !important; padding: 0 !important; border-radius: 50% !important; background-color: #002FA7 !important; border: 2px solid #002FA7 !important; box-shadow: 0 4px 10px rgba(0, 47, 167, 0.2) !important; cursor: pointer !important; z-index: 10 !important; display: flex !important; align-items: center !important; justify-content: center !important; transition: all 0.2s ease-in-out !important; margin: 0 10px !important; color: transparent !important; background-repeat: no-repeat !important; background-position: center !important; background-size: 22px !important; }\n    .pivot-carousel-btn:hover { background-color: #001B63 !important; border-color: #001B63 !important; box-shadow: 0 6px 15px rgba(0, 47, 167, 0.4) !important; transform: scale(1.1) !important; }\n    .pivot-carousel-btn.prev { background-image: url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='15 18 9 12 15 6'%3E%3C\/polyline%3E%3C\/svg%3E\") !important; }\n    .pivot-carousel-btn.next { background-image: url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='9 18 15 12 9 6'%3E%3C\/polyline%3E%3C\/svg%3E\") !important; }\n    @media (max-width: 600px) { .pivot-carousel-btn { display: none !important; } }\n    .pivot-carousel-btn:active { transform: scale(0.95) !important; }\n    .pivot-resource-card { flex: 0 0 260px; scroll-snap-align: start; background: #fff; border-radius: 16px; border: 1px solid #e2e8f0; overflow: hidden; box-shadow: 0 4px 10px rgba(0,0,0,0.03); cursor: pointer; transition: all 0.2s; position: relative; display: flex; flex-direction: column; justify-content: space-between; touch-action: manipulation; }\n    .pivot-resource-card:hover { transform: translateY(-4px); box-shadow: 0 15px 30px rgba(0, 47, 167, 0.15); border-color: #002FA7; }\n    .pivot-resource-image { height: 140px; background-color: #f1f5f9; background-size: cover; background-position: center; position: relative; border-bottom: 1px solid #e2e8f0; }\n    .pivot-resource-content { padding: 16px; }\n    .pivot-resource-tier { position: absolute; top: 12px; right: 12px; padding: 5px 12px; border-radius: 8px; font-size: 0.7rem; font-weight: 800; text-transform: uppercase; letter-spacing: 0.5px; box-shadow: 0 4px 10px rgba(0,0,0,0.1); }\n    .tier-free { background: #dcfce7; color: #166534; }\n    .tier-premium { background: #002FA7; color: #fff; }\n    .pivot-modal-overlay, .pivot-modal-overlay * { font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif !important; }\n    .pivot-modal-overlay { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(15,23,42,0.7); z-index: 999999; display: flex; align-items: center; justify-content: center; padding: 20px; backdrop-filter: blur(5px); opacity: 0; visibility: hidden; transition: all 0.3s; }\n    .pivot-modal-overlay.active { opacity: 1; visibility: visible; }\n    .pivot-modal-box { background: #fff; border-radius: 20px; padding: 35px; width: 100%; max-width: 650px; box-shadow: 0 25px 50px -12px rgba(0,0,0,0.5); transform: translateY(20px); transition: all 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275); max-height: 90vh; overflow-y: auto; }\n    .pivot-modal-overlay.active .pivot-modal-box { transform: translateY(0); }\n    .action-type-pill { display: inline-flex; align-items: center; background: #ffffff; color: #475569; padding: 6px 12px; border-radius: 8px; font-size: 0.8rem; font-weight: 700; cursor: pointer; border: 1px solid #cbd5e1; transition: all 0.2s; margin: 4px; user-select: none; }\n    .action-type-pill:hover { background: #f1f5f9; color: #0f172a; transform: translateY(-1px); border-color: #94a3b8; }\n    .action-type-pill.selected { background: #e0e7ff; color: #002FA7; border-color: #002FA7; box-shadow: 0 4px 10px rgba(0,47,167,0.15); }\n    .modal-input { width: 100%; padding: 15px; border-radius: 12px; border: 1px solid #cbd5e1; font-size: 1rem; margin-top: 8px; background: #f8fafc; transition: border-color 0.2s; }\n    .modal-input:focus { outline: none; border-color: #002FA7; background: #fff; }\n\n    \/* =========================================================\n       PIVOT VOICE NOTES \u2014 DEVELOPMENT ACTIONS PILOT\n       v2.16.58: surface safe server transcription errors + normalize global-action API context.\n       ========================================================= *\/\n    .pivot-voice-note {\n        margin-top: 14px;\n        padding: 15px;\n        border: 1px solid #d9e4f4;\n        border-radius: 14px;\n        background: linear-gradient(180deg, #f8fbff 0%, #f3f7ff 100%);\n    }\n    .pivot-voice-note-head {\n        display: flex;\n        align-items: center;\n        justify-content: space-between;\n        gap: 12px;\n        flex-wrap: wrap;\n    }\n    .pivot-voice-note-label {\n        color: #0f172a;\n        font-size: .88rem;\n        font-weight: 800;\n        line-height: 1.35;\n    }\n    .pivot-voice-btn {\n        appearance: none;\n        border: 0 !important;\n        border-radius: 999px !important;\n        min-height: 44px;\n        padding: 10px 16px !important;\n        background: #002FA7 !important;\n        color: #fff !important;\n        font-size: .82rem !important;\n        font-weight: 800 !important;\n        line-height: 1.2 !important;\n        letter-spacing: .01em;\n        box-shadow: 0 7px 18px rgba(0,47,167,.18) !important;\n        cursor: pointer;\n        white-space: nowrap;\n        transition: transform .18s ease, box-shadow .18s ease, background .18s ease;\n    }\n    .pivot-voice-btn:hover,\n    .pivot-voice-btn:focus-visible {\n        background: #001B63 !important;\n        transform: translateY(-1px);\n        box-shadow: 0 9px 22px rgba(0,47,167,.24) !important;\n        outline: none;\n    }\n    .pivot-voice-btn.is-recording {\n        background: #b91c1c !important;\n        box-shadow: 0 8px 22px rgba(185,28,28,.22) !important;\n    }\n    .pivot-voice-btn[disabled] {\n        opacity: .58 !important;\n        cursor: wait !important;\n        transform: none !important;\n        box-shadow: none !important;\n    }\n    .pivot-voice-status {\n        margin-top: 10px;\n        color: #475569;\n        font-size: .8rem;\n        font-weight: 700;\n        line-height: 1.45;\n        min-height: 1.2em;\n    }\n    .pivot-voice-status[data-state=\"recording\"] { color: #b91c1c; }\n    .pivot-voice-status[data-state=\"success\"] { color: #047857; }\n    .pivot-voice-status[data-state=\"error\"] { color: #b45309; }\n    .pivot-voice-help,\n    .pivot-voice-privacy {\n        margin: 7px 0 0;\n        color: #64748b;\n        font-size: .76rem;\n        line-height: 1.45;\n    }\n    .pivot-voice-privacy {\n        display: flex;\n        align-items: flex-start;\n        gap: 7px;\n    }\n    .pivot-voice-privacy::before {\n        content: \"\ud83d\udd12\";\n        flex: 0 0 auto;\n        font-size: .8rem;\n        line-height: 1.35;\n    }\n    .pivot-global-action-voice-note {\n        clear: both;\n        width: 100%;\n        box-sizing: border-box;\n        margin-bottom: 8px;\n    }\n    @media (max-width: 600px) {\n        .pivot-voice-note { padding: 13px; }\n        .pivot-voice-note-head { align-items: stretch; }\n        .pivot-voice-note-label { width: 100%; }\n        .pivot-voice-btn {\n            width: 100% !important;\n            white-space: normal !important;\n            min-height: 48px;\n        }\n    }\n    .pill-library-container { max-height: 180px; overflow-y: auto; padding: 10px; border: 1px solid #e2e8f0; border-radius: 10px; background: #f8fafc; margin-bottom: 20px; }\n    .pivot-resource-card.request-card { background: linear-gradient(135deg, #002FA7 0%, #001B63 100%) !important; border: none !important; box-shadow: 0 15px 35px -5px rgba(0, 47, 167, 0.4) !important; display: flex !important; align-items: center !important; justify-content: center !important; text-align: center !important; cursor: pointer !important; transition: all 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275) !important; position: relative; overflow: hidden; }\n    .pivot-resource-card.request-card::before { content: \"\"; position: absolute; top: -50%; left: -50%; width: 200%; height: 200%; background: radial-gradient(circle, rgba(255,255,255,0.1) 10%, transparent 40%); transform: rotate(45deg); pointer-events: none; }\n    .pivot-resource-card.request-card:hover { border-color: transparent !important; transform: translateY(-8px) scale(1.02) !important; box-shadow: 0 20px 40px rgba(0, 47, 167, 0.6) !important; }\n    .request-card-content h3 { color: #ffffff !important; font-weight: 900 !important; font-size: 1.3rem !important; margin: 10px 0 !important; }\n    .request-card-content p { color: #e2e8f0 !important; font-size: 0.9rem !important; line-height: 1.4 !important; margin-bottom: 15px !important; }\n    .request-card-btn { background-color: #b45309 !important; color: #ffffff !important; box-shadow: 0 4px 15px rgba(180, 83, 9, 0.4) !important; transition: all 0.3s ease !important; }\n    .pivot-resource-card.request-card:hover .request-card-btn { background-color: #ea580c !important; transform: translateY(-2px); }\n    .request-card-icon { font-size: 3.5rem !important; margin-bottom: 5px !important; animation: floatIcon 3s ease-in-out infinite; display: block; }\n    @keyframes floatIcon { 0% { transform: translateY(0px); } 50% { transform: translateY(-8px); } 100% { transform: translateY(0px); } }\n    @media (max-width: 600px) { .pivot-premium-card { padding: 20px; overflow: visible !important; } .mobile-huge-text { font-size: 2.8rem !important; } .mobile-large-text { font-size: 1.2rem !important; } .question-header-row { flex-direction: column !important; align-items: flex-start !important; gap: 12px !important; } .question-header-row div { width: 100% !important; justify-content: space-between !important; } .pivot-header-action-row { flex-direction: column !important; gap: 15px !important; align-items: stretch !important; } .pivot-header-action-row div { display: flex; flex-direction: column; gap: 10px; } .pivot-modal-box { padding: 25px; } }\n    @media print { body * { visibility: hidden; } #pivot-wrapper, #pivot-wrapper * { visibility: visible; } #pivot-wrapper { position: absolute; left: 0; top: 0; width: 100%; } .pivot-btn-accent, .pivot-btn-outline, .pivot-btn-secondary, .pivot-btn-success, .pivot-btn-pdf, .strategy-details, .pivot-carousel-wrapper, input, .info-icon, #pivot-global-fab { display: none !important; } .pivot-premium-card { page-break-inside: avoid; border: 1px solid #cbd5e1 !important; box-shadow: none !important; margin-bottom: 20px !important; } }\n<\/style>\n\n<script>\n    var SYSTEM_VERSION = \"2.16.65-launch-safety-environment-timezone\"; \n    \n    var SYSTEM_URLS = {\n        core_21st: \"https:\/\/dumondeducation.com\/wp-content\/uploads\/2026\/05\/21st-Century-Skills.csv\",\n        core_employability: \"https:\/\/dumondeducation.com\/wp-content\/uploads\/2026\/05\/Employability-Skills.csv\",\n        core_ksa: \"https:\/\/dumondeducation.com\/wp-content\/uploads\/2026\/05\/skills_assessments.csv\",\n        core_preferences: \"https:\/\/dumondeducation.com\/wp-content\/uploads\/2026\/05\/PREFERENCE-ASSESSMENTS.csv\",\n        core_context: \"https:\/\/dumondeducation.com\/wp-content\/uploads\/2026\/05\/Context-Assessment.csv\",\n        grading_context: \"https:\/\/dumondeducation.com\/wp-content\/uploads\/2026\/05\/PIVOT-Questions-and-Grading-sheets-for-Gemini-1-Work-Context-Grading-1.csv\",\n        onet_profiles: \"https:\/\/dumondeducation.com\/wp-content\/uploads\/2026\/05\/Abilities-1.csv\",\n        onet_abilities_runtime: \"https:\/\/dumondeducation.com\/wp-content\/uploads\/2026\/08\/PIVOT-ONET-Abilities-30-3-RUNTIME.csv\",\n        onet_knowledge_runtime: \"https:\/\/dumondeducation.com\/wp-content\/uploads\/2026\/08\/PIVOT-ONET-Knowledge-30-3-RUNTIME.csv\",\n        onet_transferable_skills_runtime: \"https:\/\/dumondeducation.com\/wp-content\/uploads\/2026\/08\/PIVOT-ONET-Transferable-Skills-30-3-RUNTIME.csv\",\n        onet_work_activities_runtime: \"https:\/\/dumondeducation.com\/wp-content\/uploads\/2026\/08\/PIVOT-ONET-Work-Activities-30-3-RUNTIME.csv\",\n        onet_essential_skills: \"https:\/\/dumondeducation.com\/wp-content\/uploads\/2026\/08\/PIVOT-ONET-Essential-Skills-30-3.csv\",\n        onet_work_context_runtime: \"https:\/\/dumondeducation.com\/wp-content\/uploads\/2026\/08\/PIVOT-ONET-Work-Context-30-3-RUNTIME.csv\",\n        onet_work_styles_runtime: \"https:\/\/dumondeducation.com\/wp-content\/uploads\/2026\/08\/PIVOT-ONET-Work-Styles-30-3-RUNTIME.csv\",\n        onet_career_interests_runtime: \"https:\/\/dumondeducation.com\/wp-content\/uploads\/2026\/08\/PIVOT-ONET-Career-Interests-30-3-RUNTIME.csv\",\n        scale_10: \"https:\/\/dumondeducation.com\/wp-content\/uploads\/2026\/05\/1-10-Standard-Grading.csv\",\n        scale_5: \"https:\/\/dumondeducation.com\/wp-content\/uploads\/2026\/05\/Personal-Importance-Grading.csv\",\n        scale_interest: \"https:\/\/dumondeducation.com\/wp-content\/uploads\/2026\/05\/Career-Interest-Grading.csv\",\n        scale_workstyle: \"https:\/\/dumondeducation.com\/wp-content\/uploads\/2026\/05\/Work-Style-Grading.csv\",\n        scale_context_generic: \"https:\/\/dumondeducation.com\/wp-content\/uploads\/2026\/05\/PIVOT-Questions-and-Grading-sheets-for-Gemini-1-Work-Context-Grading-1.csv\"\n    };\n\n    var FREE_ACCESS_MODULES = [\"Work Preferences\", \"21st Century Skills\", \"Employability Skills\", \"Basic Skills Assessment\"];\n    \n    var fallbackScale1To5 = { 1: { title: \"1. Not Important\", keywords: [] }, 5: { title: \"5. Essential\", keywords: [] } };\n    var fallbackScale1To7Interest = {\n        1: { title: \"1. Strongly dislike\", keywords: [\"Would actively avoid\", \"Very unappealing\"] },\n        2: { title: \"2. Dislike\", keywords: [\"Low interest\", \"Unappealing\"] },\n        3: { title: \"3. Slightly dislike\", keywords: [\"Limited interest\", \"More unappealing than appealing\"] },\n        4: { title: \"4. Neutral\", keywords: [\"Neither interested nor uninterested\", \"No strong preference\"] },\n        5: { title: \"5. Somewhat interested\", keywords: [\"Moderately appealing\", \"Some interest\"] },\n        6: { title: \"6. Interested\", keywords: [\"Strong interest\", \"Appealing\"] },\n        7: { title: \"7. Very interested\", keywords: [\"Very strong interest\", \"Highly appealing\"] }\n    };\n    var fallbackScale1To5WorkStyle = {\n        1: { title: \"1. Very unlike me\", keywords: [\"Rarely describes how I work\", \"Not typical of me\"] },\n        2: { title: \"2. Mostly unlike me\", keywords: [\"Usually unlike how I work\", \"More unlike me than like me\"] },\n        3: { title: \"3. Sometimes like me\", keywords: [\"Depends on the situation\", \"Mixed or situational\"] },\n        4: { title: \"4. Mostly like me\", keywords: [\"Usually describes how I work\", \"More like me than unlike me\"] },\n        5: { title: \"5. Very like me\", keywords: [\"Strongly describes how I work\", \"Highly typical of me\"] }\n    };\n    var fallbackScale1To10 = { 1: { title: \"1. Lowest current rating\", keywords: [] }, 10: { title: \"10. Highest current rating\", keywords: [] } };\n\n    window.safeLocalParse = function(key, fallback) { \n        try { \n            let data = localStorage.getItem(key); \n            if (!data) return fallback;\n            let parsed = JSON.parse(data); \n            if (parsed === null || typeof parsed !== 'object') return fallback;\n            if (Array.isArray(fallback) && !Array.isArray(parsed)) return fallback;\n            if (!Array.isArray(fallback) && typeof fallback === 'object' && Array.isArray(parsed)) return fallback;\n            return parsed;\n        } catch(e) { return fallback; } \n    };\n\n    \/\/ =========================================================\n    \/\/ PIVOT v2.16.65 \u2014 ENVIRONMENT + MEMBER DATE SAFETY CORE\n    \/\/ =========================================================\n    window.pivotGetAjaxUrl = function() {\n        const candidates = [];\n\n        if (window.pivotSyncData && window.pivotSyncData.ajaxUrl) {\n            candidates.push(window.pivotSyncData.ajaxUrl);\n        }\n        if (window.PivotCareerInsightsAPI && window.PivotCareerInsightsAPI.ajaxUrl) {\n            candidates.push(window.PivotCareerInsightsAPI.ajaxUrl);\n        }\n        if (window.PivotVoiceAPI && window.PivotVoiceAPI.ajaxUrl) {\n            candidates.push(window.PivotVoiceAPI.ajaxUrl);\n        }\n        if (window.PIVOT_TIMEZONE_DATA && window.PIVOT_TIMEZONE_DATA.ajax_url) {\n            candidates.push(window.PIVOT_TIMEZONE_DATA.ajax_url);\n        }\n\n        for (const candidate of candidates) {\n            if (!candidate) continue;\n            try {\n                const resolved = new URL(String(candidate), window.location.origin);\n                if (\n                    resolved.origin === window.location.origin &&\n                    \/\\\/wp-admin\\\/admin-ajax\\.php\\\/?$\/i.test(resolved.pathname)\n                ) {\n                    return resolved.href;\n                }\n            } catch (error) {}\n        }\n\n        \/\/ Final environment-safe fallback. Derive the WordPress installation\n        \/\/ root from this PIVOT route rather than assuming WordPress lives at \/.\n        const path = String(window.location.pathname || '\/');\n        const routeMarkers = [\n            '\/pivot-dashboard\/',\n            '\/growth-hub\/',\n            '\/wallet\/'\n        ];\n        let installationPath = '\/';\n\n        for (const marker of routeMarkers) {\n            const markerIndex = path.toLowerCase().indexOf(marker);\n            if (markerIndex >= 0) {\n                installationPath = path.slice(0, markerIndex + 1);\n                break;\n            }\n        }\n\n        if (!installationPath.endsWith('\/')) {\n            installationPath += '\/';\n        }\n\n        return new URL(\n            installationPath + 'wp-admin\/admin-ajax.php',\n            window.location.origin\n        ).href;\n    };\n\n    window.pivotGetSiteBaseUrl = function() {\n        try {\n            const ajax = new URL(window.pivotGetAjaxUrl());\n            const suffix = '\/wp-admin\/admin-ajax.php';\n            const lowerPath = ajax.pathname.toLowerCase();\n            const idx = lowerPath.lastIndexOf(suffix);\n            if (idx >= 0) {\n                ajax.pathname = ajax.pathname.slice(0, idx + 1);\n                ajax.search = '';\n                ajax.hash = '';\n                return ajax.href;\n            }\n        } catch (error) {}\n\n        return new URL('\/', window.location.origin).href;\n    };\n\n    window.pivotGetMemberTimezone = function() {\n        const data = window.PIVOT_TIMEZONE_DATA;\n        if (!data || typeof data !== 'object') return '';\n\n        const candidates = [\n            data.member_timezone,\n            data.timezone,\n            data.memberTimezone,\n            data.time_zone\n        ];\n\n        for (const candidate of candidates) {\n            const value = String(candidate || '').trim();\n            if (!value) continue;\n            try {\n                new Intl.DateTimeFormat('en-GB', { timeZone: value }).format(new Date());\n                return value;\n            } catch (error) {}\n        }\n\n        return '';\n    };\n\n    window.pivotFormatMemberDate = function(value) {\n        const date = value instanceof Date ? value : new Date(value);\n        if (Number.isNaN(date.getTime())) return '';\n\n        const timeZone = window.pivotGetMemberTimezone();\n        try {\n            return new Intl.DateTimeFormat(undefined, {\n                year: 'numeric',\n                month: 'numeric',\n                day: 'numeric',\n                ...(timeZone ? { timeZone: timeZone } : {})\n            }).format(date);\n        } catch (error) {\n            return date.toLocaleDateString();\n        }\n    };\n\n    window.pivotToday = function() {\n        const data = window.PIVOT_TIMEZONE_DATA;\n        const trustedDate = data && typeof data === 'object'\n            ? String(data.server_local_date || '').trim()\n            : '';\n\n        \/\/ The timezone core provides YYYY-MM-DD. Rebuild that calendar date\n        \/\/ locally only for display formatting; never parse it as UTC midnight.\n        if (\/^\\d{4}-\\d{2}-\\d{2}$\/.test(trustedDate)) {\n            const parts = trustedDate.split('-').map(Number);\n            const safeMidday = new Date(parts[0], parts[1] - 1, parts[2], 12, 0, 0, 0);\n            return safeMidday.toLocaleDateString();\n        }\n\n        return window.pivotFormatMemberDate(new Date());\n    };\n\n    window.pivotAppendSecureNonce = function(params) {\n        if (\n            params &&\n            typeof params.append === 'function' &&\n            window.pivotSyncData &&\n            window.pivotSyncData.nonce &&\n            !params.has('nonce')\n        ) {\n            params.append('nonce', window.pivotSyncData.nonce);\n        }\n        return params;\n    };\n\n    window.getSafeJobKey = function(rawTitle) { return rawTitle ? String(rawTitle).toLowerCase().replace(\/[^a-z0-9]\/g, '') : ''; };\n\n    window.pivotSyncToWPDatabase = function() {\n        const ajaxUrl = window.pivotGetAjaxUrl();\n        const params = new URLSearchParams();\n        params.append('action', 'pivot_save_user_data');\n        window.pivotAppendSecureNonce(params);\n\n        let flatScores = window.getFlattenedUserScores();\n        for (const [skill, score] of Object.entries(flatScores)) {\n            params.append(`scores[${skill}]`, score);\n        }\n\n        let actions = window.safeLocalParse('pivotDevActions', []);\n        actions.forEach(act => {\n            let isCompleted = (act.status === 'completed') ? 'true' : 'false';\n            params.append(`actions[${act.id}]`, isCompleted);\n        });\n\n        fetch(ajaxUrl, {\n            method: 'POST',\n            credentials: 'same-origin',\n            cache: 'no-store',\n            body: params,\n            headers: { 'Content-Type': 'application\/x-www-form-urlencoded' }\n        })\n        .then(response => response.json())\n        .then(data => { if(data.success) console.log('PIVOT Database Synced Successfully'); })\n        .catch(err => console.error('PIVOT Database Sync Error:', err));\n    };\n\n    let pivotSyncTimeout;\n    window.pivotDebouncedSync = function() {\n        clearTimeout(pivotSyncTimeout);\n        pivotSyncTimeout = setTimeout(() => { window.pivotSyncToWPDatabase(); }, 1500); \n    };\n\n    window.pivotScrollToTop = function() {\n        const wrapper = document.getElementById('pivot-wrapper');\n        if (wrapper) { \n            const y = wrapper.getBoundingClientRect().top + window.scrollY - 80; \n            window.scrollTo({ top: y, behavior: 'smooth' }); \n        } else { window.scrollTo({ top: 0, behavior: 'smooth' }); }\n    };\n\n    window.pivotScrollQuestionToTop = function(behavior = 'smooth') {\n        const anchor = document.getElementById('assessment-content-anchor');\n        if (!anchor || anchor.style.display === 'none') return;\n\n        const target =\n            anchor.querySelector('.pivot-question-title') ||\n            anchor.querySelector('.pivot-assessment-question-card') ||\n            anchor;\n\n        const stickyOffset = 118;\n        const y =\n            target.getBoundingClientRect().top +\n            window.scrollY -\n            stickyOffset;\n\n        window.scrollTo({\n            top: Math.max(0, y),\n            behavior: behavior\n        });\n    };\n\n    window.pivotGoToAssessmentQuestion = function(index) {\n        window.pivotRenderQuestion(index);\n\n        window.requestAnimationFrame(function() {\n            window.requestAnimationFrame(function() {\n                window.pivotScrollQuestionToTop('smooth');\n            });\n        });\n    };\n\n    window.pivotToastTimeout = null;\n    window.pivotRockTimeout = null;\n    \/* =========================================================\n       PIVOT ASSESSMENT FEEDBACK \u2014 AUDITED \/ NON-RANDOM\n       Self-assessment answers are not right or wrong, so feedback\n       acknowledges progress without judging the quality of a response.\n       ========================================================= *\/\n    window.pivotGetAssessmentProgressFeedback = function() {\n        const state = window.pivotActiveAssessment || {};\n        const questions = Array.isArray(state.questions) ? state.questions : [];\n\n        if (!questions.length) return 'Response recorded.';\n\n        const answeredCount = questions.reduce(function(total, question) {\n            const score = state.scores ? state.scores[question.id] : undefined;\n            return total + (window.pivotIsAnsweredAssessmentResponse(state.pillar, state.mod, score) ? 1 : 0);\n        }, 0);\n\n        const remaining = Math.max(0, questions.length - answeredCount);\n        const pct = Math.round((answeredCount \/ questions.length) * 100);\n\n        if (remaining === 0) {\n            return 'Response recorded. All questions are answered.';\n        }\n\n        if (pct >= 80) {\n            return 'Response recorded. You are nearly there.';\n        }\n\n        if (pct >= 40) {\n            return 'Response recorded. Your profile is taking shape.';\n        }\n\n        return 'Response recorded.';\n    };\n\n    window.pivotShowToast = function(type, points = 0, customMessage = null) {\n        if (type === 'gamification' && typeof window.pivotCelebrateCreditEarn === 'function') {\n            window.pivotCelebrateCreditEarn(\n                points,\n                customMessage || 'Credits have been added to your PIVOT wallet.'\n            );\n            return;\n        }\n\n        if (type === 'gamification') {\n            let rockModal = document.getElementById('pivot-rock-reward-modal');\n            if (!rockModal) {\n                rockModal = document.createElement('div');\n                rockModal.id = 'pivot-rock-reward-modal';\n                rockModal.innerHTML = `\n                    <div style=\"position:fixed; top:0; left:0; width:100vw; height:100vh; background:rgba(0, 0, 0, 0.85); backdrop-filter:blur(10px); z-index:9999999; display:flex; align-items:center; justify-content:center; opacity:0; visibility:hidden; transition:all 0.5s cubic-bezier(0.175, 0.885, 0.32, 1.275);\" id=\"pivot-rock-overlay\" onclick=\"this.classList.remove('show')\">\n                        <div id=\"pivot-rock-content\" style=\"background:radial-gradient(circle at center, #1e293b 0%, #000000 100%); border:4px solid #ea580c; border-radius:30px; padding:60px 40px; text-align:center; box-shadow:0 0 100px rgba(234, 88, 12, 0.5); transform:scale(0.1) rotate(-15deg); transition:all 0.7s cubic-bezier(0.34, 1.56, 0.64, 1); max-width:90%; width:550px; cursor:default;\" onclick=\"event.stopPropagation()\">\n                            <img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/dumondeducation.com\/wp-content\/uploads\/2026\/06\/PIVOT-Credit-2-e1782786217417.webp\" style=\"width:160px; height:160px; margin:0 auto 25px; border-radius:50%; box-shadow:0 0 60px rgba(212,175,55,0.8); animation:pivotRockPulse 1.5s ease-in-out infinite alternate;\">\n                            <h2 style=\"color:#ffffff; font-size:2.2rem; font-weight:900; margin:0 0 5px 0; text-transform:uppercase; letter-spacing:3px; text-shadow:0 4px 10px rgba(0,0,0,0.8); font-family:'Helvetica Neue', Helvetica, sans-serif;\">PIVOT Credits Earned<\/h2>\n                            <div style=\"font-size:8rem; font-weight:900; color:#d4af37; text-shadow:0 10px 40px rgba(212,175,55,0.9), 0 0 20px rgba(234,88,12,0.6); margin:0; line-height:1.1; font-family:'Helvetica Neue', Helvetica, sans-serif; animation:pivotRockScale 2s ease-in-out infinite alternate;\" id=\"pivot-rock-points\">+${points}<\/div>\n                            <p style=\"color:#e2e8f0; font-size:1.2rem; font-weight:700; margin:20px 0 0 0; font-style:italic;\" id=\"pivot-rock-msg\">${customMessage || 'PIVOT Credits earned.'}<\/p>\n                            <p style=\"color:#64748b; font-size:0.9rem; margin:35px 0 0 0; text-transform:uppercase; letter-spacing:2px;\">Click anywhere to continue<\/p>\n                            <style>\n                                @keyframes pivotRockPulse { 0% { transform: scale(1); box-shadow:0 0 30px rgba(212,175,55,0.5); } 100% { transform: scale(1.1); box-shadow:0 0 80px rgba(212,175,55,1); } }\n                                @keyframes pivotRockScale { 0% { transform: scale(0.95); } 100% { transform: scale(1.05); } }\n                                #pivot-rock-overlay.show { opacity:1; visibility:visible; }\n                                #pivot-rock-overlay.show #pivot-rock-content { transform:scale(1) rotate(0deg); }\n                            <\/style>\n                        <\/div>\n                    <\/div>\n                `;\n                document.body.appendChild(rockModal);\n            } else {\n                document.getElementById('pivot-rock-points').innerText = `+${points}`;\n                document.getElementById('pivot-rock-msg').innerText = customMessage || 'PIVOT Credits earned.';\n            }\n\n            if (window.pivotRockTimeout) clearTimeout(window.pivotRockTimeout);\n            let overlay = document.getElementById('pivot-rock-overlay');\n            setTimeout(() => { overlay.classList.add('show'); }, 50);\n            window.pivotRockTimeout = setTimeout(() => { overlay.classList.remove('show'); }, 10000);\n            return;\n        }\n\n        let toast = document.getElementById('pivot-toast');\n        if (!toast) {\n            toast = document.createElement('div');\n            toast.id = 'pivot-toast';\n            document.body.appendChild(toast);\n        }\n\n        if (window.pivotToastTimeout) clearTimeout(window.pivotToastTimeout);\n        toast.style.color = '#ffffff';\n\n        let icon = '\u2713';\n        let message = customMessage ? String(customMessage).trim() : '';\n\n        if (!message) {\n            if (type === 'complete') {\n                message = 'Assessment complete. Your responses have been saved.';\n            } else if (type === 'save') {\n                message = 'Progress saved.';\n            } else if (type === 'attention') {\n                message = 'Please review the remaining questions.';\n            } else {\n                message = window.pivotGetAssessmentProgressFeedback();\n            }\n        }\n\n        if (type === 'complete') {\n            toast.style.background = '#16a34a';\n            icon = '\u2713';\n        } else if (type === 'attention') {\n            toast.style.background = '#b45309';\n            icon = '!';\n        } else {\n            toast.style.background = '#002FA7';\n            icon = '\u2713';\n        }\n\n        \/* textContent prevents imported\/legacy text being interpreted as HTML. *\/\n        toast.textContent = icon + ' ' + message;\n        toast.classList.add('show');\n        window.pivotToastTimeout = setTimeout(() => toast.classList.remove('show'), 3000);\n    };\n\n    window.pivotShowSetupScreen = function() { alert(\"Setup screen access is managed via the WordPress backend.\"); };\n\n    \/* Legacy random encouragement data is no longer used. *\/\n    try { localStorage.removeItem('sys_encouragements'); localStorage.removeItem('sys_complete_msgs'); } catch (e) {}\n    window.pivotActiveAssessment = { pillar: '', mod: '', questions: [], currentIndex: 0, scores: {} };\n    window.pivotMasterStore = window.safeLocalParse('sys_master_store', {});\n    window.pivotJobProfiles = window.safeLocalParse('sys_job_profiles', {});\n    window.pivotContextGradingStore = window.safeLocalParse('sys_context_grading', {});\n    window.pivotScale10 = window.safeLocalParse('sys_scale10', null);\n    window.pivotScale5 = window.safeLocalParse('sys_scale5', null);\n    window.pivotScaleInterest = window.safeLocalParse('sys_scale_interest', null);\n    window.pivotScaleWorkStyle = window.safeLocalParse('sys_scale_workstyle', null);\n    window.pivotScaleContext = window.safeLocalParse('sys_scale_context', null);\n\n    window.PIVOT_INTEREST_SCALE_VERSION = '30.3-interest-v1';\n    window.PIVOT_RIASEC_NAMES = {\"1.B.1.a\":\"Realistic\",\"1.B.1.b\":\"Investigative\",\"1.B.1.c\":\"Artistic\",\"1.B.1.d\":\"Social\",\"1.B.1.e\":\"Enterprising\",\"1.B.1.f\":\"Conventional\"};\n    window.PIVOT_SPECIFIC_INTEREST_NAMES = {\"1.B.3.a\":\"Mechanics\/Electronics\",\"1.B.3.b\":\"Construction\/Woodwork\",\"1.B.3.c\":\"Transportation\/Machine Operation\",\"1.B.3.d\":\"Physical\/Manual Labor\",\"1.B.3.e\":\"Protective Service\",\"1.B.3.f\":\"Agriculture\",\"1.B.3.g\":\"Nature\/Outdoors\",\"1.B.3.h\":\"Animal Service\",\"1.B.3.i\":\"Athletics\",\"1.B.3.j\":\"Engineering\",\"1.B.3.k\":\"Physical Science\",\"1.B.3.l\":\"Life Science\",\"1.B.3.m\":\"Medical Science\",\"1.B.3.n\":\"Social Science\",\"1.B.3.o\":\"Humanities\",\"1.B.3.p\":\"Mathematics\/Statistics\",\"1.B.3.q\":\"Information Technology\",\"1.B.3.r\":\"Visual Arts\",\"1.B.3.s\":\"Applied Arts and Design\",\"1.B.3.t\":\"Performing Arts\",\"1.B.3.u\":\"Music\",\"1.B.3.v\":\"Creative Writing\",\"1.B.3.w\":\"Media\",\"1.B.3.x\":\"Culinary Art\",\"1.B.3.y\":\"Teaching\/Education\",\"1.B.3.z\":\"Social Service\",\"1.B.3.aa\":\"Health Care Service\",\"1.B.3.ab\":\"Religious Activities\",\"1.B.3.ac\":\"Personal Service\",\"1.B.3.ad\":\"Professional Advising\",\"1.B.3.ae\":\"Business Initiatives\",\"1.B.3.af\":\"Sales\",\"1.B.3.ag\":\"Marketing\/Advertising\",\"1.B.3.ah\":\"Finance\",\"1.B.3.ai\":\"Accounting\",\"1.B.3.aj\":\"Human Resources\",\"1.B.3.ak\":\"Office Work\",\"1.B.3.al\":\"Management\/Administration\",\"1.B.3.am\":\"Public Speaking\",\"1.B.3.an\":\"Politics\",\"1.B.3.ao\":\"Law\"};\n    window.pivotIsCareerInterestModule = function(pillar, mod) {\n        return pillar === 'Work Preferences' &&\n            (mod === 'General Work Interest' || mod === 'Work Focus and Interest');\n    };\n    window.pivotGetInterestMigrationState = function() {\n        let state = window.safeLocalParse('pivot_interest_scale_migration', {});\n        return state && typeof state === 'object' && !Array.isArray(state) ? state : {};\n    };\n    window.pivotMarkInterestModuleMigrated = function(mod) {\n        let state = window.pivotGetInterestMigrationState();\n        state[mod] = window.PIVOT_INTEREST_SCALE_VERSION;\n        localStorage.setItem('pivot_interest_scale_migration', JSON.stringify(state));\n    };\n\n    window.PIVOT_WORK_STYLE_SCALE_VERSION = '30.3-work-style-v1';\n    window.PIVOT_WORK_STYLE_NAMES = {\"1.D.1.a\":\"Innovation\",\"1.D.1.b\":\"Achievement Orientation\",\"1.D.1.c\":\"Intellectual Curiosity\",\"1.D.1.d\":\"Tolerance for Ambiguity\",\"1.D.1.e\":\"Initiative\",\"1.D.1.f\":\"Adaptability\",\"1.D.1.g\":\"Self-Confidence\",\"1.D.1.h\":\"Perseverance\",\"1.D.1.i\":\"Leadership Orientation\",\"1.D.2.a\":\"Humility\",\"1.D.2.b\":\"Sincerity\",\"1.D.2.c\":\"Empathy\",\"1.D.2.d\":\"Cooperation\",\"1.D.2.e\":\"Optimism\",\"1.D.2.f\":\"Social Orientation\",\"1.D.3.a\":\"Cautiousness\",\"1.D.3.b\":\"Attention to Detail\",\"1.D.3.c\":\"Dependability\",\"1.D.3.d\":\"Integrity\",\"1.D.4.a\":\"Stress Tolerance\",\"1.D.4.b\":\"Self-Control\"};\n    window.pivotIsWorkStyleModule = function(pillar, mod) {\n        return pillar === 'Work Requirement and Style' && mod === 'Work Requirement and Style';\n    };\n    window.pivotGetWorkStyleMigrationState = function() {\n        let state = window.safeLocalParse('pivot_work_style_scale_migration', {});\n        return state && typeof state === 'object' && !Array.isArray(state) ? state : {};\n    };\n    window.pivotMarkWorkStyleModuleMigrated = function(mod) {\n        let state = window.pivotGetWorkStyleMigrationState();\n        state[mod] = window.PIVOT_WORK_STYLE_SCALE_VERSION;\n        localStorage.setItem('pivot_work_style_scale_migration', JSON.stringify(state));\n    };\n\n    window.PIVOT_WORK_ACTIVITIES_SCALE_VERSION = '30.3-work-activities-level-v1';\n    window.PIVOT_WORK_ACTIVITIES_LEVEL_CONFIG = {\"4.A.1.a.1\":{\"element_name\":\"Getting Information\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle when performing Getting Information?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Follow a standard blueprint\"},{\"value\":4,\"description\":\"Review a budget\"},{\"value\":7,\"description\":\"Study international tax laws\"}]},\"4.A.1.a.2\":{\"element_name\":\"Monitoring Processes, Materials, or Surroundings\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle when performing Monitoring Processes, Materials, or Surroundings?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Check to see if baking bread is done\"},{\"value\":4,\"description\":\"Test electrical circuits\"},{\"value\":7,\"description\":\"Check the status of a patient in critical medical care\"}]},\"4.A.1.b.1\":{\"element_name\":\"Identifying Objects, Actions, and Events\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle when performing Identifying Objects, Actions, and Events?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Test an automobile transmission\"},{\"value\":4,\"description\":\"Judge the suitability of food products for an event\"},{\"value\":7,\"description\":\"Determine the reaction of a virus to a new drug\"}]},\"4.A.1.b.2\":{\"element_name\":\"Inspecting Equipment, Structures, or Materials\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle when performing Inspecting Equipment, Structures, or Materials?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Check that doors to building are locked\"},{\"value\":4,\"description\":\"Inspect equipment in a chemical processing plant\"},{\"value\":7,\"description\":\"Conduct a thorough inspection of an aircraft engine\"}]},\"4.A.1.b.3\":{\"element_name\":\"Estimating the Quantifiable Characteristics of Products, Events, or Information\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle when performing Estimating the Quantifiable Characteristics of Products, Events, or Information?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Estimate the size of household furniture to be shipped\"},{\"value\":4,\"description\":\"Estimate the time required to evacuate a city in the event of a major disaster\"},{\"value\":7,\"description\":\"Estimate the amount of natural resources that lie beneath the world's oceans\"}]},\"4.A.2.a.1\":{\"element_name\":\"Judging the Qualities of Objects, Services, or People\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle when performing Judging the Qualities of Objects, Services, or People?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Determine whether to remove a tree that has been damaged\"},{\"value\":4,\"description\":\"Determine the value of property lost in a fire\"},{\"value\":7,\"description\":\"Establish the value of a recently discovered ancient artwork\"}]},\"4.A.2.a.2\":{\"element_name\":\"Processing Information\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle when performing Processing Information?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Calculate the costs for shipping packages\"},{\"value\":4,\"description\":\"Calculate the adjustments for insurance claims\"},{\"value\":7,\"description\":\"Compile data for a complex scientific report\"}]},\"4.A.2.a.3\":{\"element_name\":\"Evaluating Information to Determine Compliance with Standards\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle when performing Evaluating Information to Determine Compliance with Standards?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Review forms for completeness\"},{\"value\":4,\"description\":\"Evaluate a complicated insurance claim for compliance with policy terms\"},{\"value\":7,\"description\":\"Make a ruling in court on a complicated motion\"}]},\"4.A.2.a.4\":{\"element_name\":\"Analyzing Data or Information\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle when performing Analyzing Data or Information?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Skim a short article to gather the main point\"},{\"value\":4,\"description\":\"Determine the interest cost to finance a new building\"},{\"value\":7,\"description\":\"Analyze the cost of medical care services for all hospitals in the country\"}]},\"4.A.2.b.1\":{\"element_name\":\"Making Decisions and Solving Problems\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle when performing Making Decisions and Solving Problems?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Determine the meal selection for a cafeteria\"},{\"value\":4,\"description\":\"Select the location for a major retail store\"},{\"value\":7,\"description\":\"Make the final decision about a company's 5-year plan\"}]},\"4.A.2.b.2\":{\"element_name\":\"Thinking Creatively\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle when performing Thinking Creatively?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Change the spacing on a printed report\"},{\"value\":4,\"description\":\"Adapt popular music for a high school marching band\"},{\"value\":7,\"description\":\"Create new computer software\"}]},\"4.A.2.b.3\":{\"element_name\":\"Updating and Using Relevant Knowledge\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle when performing Updating and Using Relevant Knowledge?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Keep up with price changes in a small retail store\"},{\"value\":4,\"description\":\"Keep current on changes in maintenance procedures for repairing sports cars\"},{\"value\":7,\"description\":\"Learn information related to a complex and rapidly changing technology\"}]},\"4.A.2.b.4\":{\"element_name\":\"Developing Objectives and Strategies\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle when performing Developing Objectives and Strategies?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Plan the holiday schedule for an airline workforce\"},{\"value\":4,\"description\":\"Develop the plan to complete the merger of two organizations over a 3-year period\"},{\"value\":7,\"description\":\"Develop a 10-year business plan for an organization\"}]},\"4.A.2.b.5\":{\"element_name\":\"Scheduling Work and Activities\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle when performing Scheduling Work and Activities?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Make appointments for patients using a predetermined schedule\"},{\"value\":4,\"description\":\"Prepare the work schedule for salesclerks in a large retail store\"},{\"value\":7,\"description\":\"Schedule a complex conference program with multiple, parallel sessions\"}]},\"4.A.2.b.6\":{\"element_name\":\"Organizing, Planning, and Prioritizing Work\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle when performing Organizing, Planning, and Prioritizing Work?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Organize a work schedule that is repetitive and easy to plan\"},{\"value\":4,\"description\":\"Plan and adjust a personal to-do list according to changing demands\"},{\"value\":7,\"description\":\"Prioritize and plan multiple tasks several months ahead\"}]},\"4.A.3.a.1\":{\"element_name\":\"Performing General Physical Activities\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle when performing Performing General Physical Activities?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Walk between workstations in a small office\"},{\"value\":4,\"description\":\"Paint the outside of a house\"},{\"value\":7,\"description\":\"Climb up and down poles to install electricity\"}]},\"4.A.3.a.2\":{\"element_name\":\"Handling and Moving Objects\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle when performing Handling and Moving Objects?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Change settings on copy machines\"},{\"value\":4,\"description\":\"Arrange books in a library\"},{\"value\":7,\"description\":\"Load boxes on an assembly line\"}]},\"4.A.3.a.3\":{\"element_name\":\"Controlling Machines and Processes\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle when performing Controlling Machines and Processes?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Operate a cash register\"},{\"value\":4,\"description\":\"Operate a drilling rig\"},{\"value\":7,\"description\":\"Operate a precision milling machine\"}]},\"4.A.3.a.4\":{\"element_name\":\"Operating Vehicles, Mechanized Devices, or Equipment\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle when performing Operating Vehicles, Mechanized Devices, or Equipment?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Drive a car\"},{\"value\":4,\"description\":\"Drive an 18-wheel tractor-trailer\"},{\"value\":7,\"description\":\"Hover a helicopter in strong wind\"}]},\"4.A.3.b.1\":{\"element_name\":\"Working with Computers\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle when performing Working with Computers?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Enter employee information into a database\"},{\"value\":4,\"description\":\"Write software for keeping track of parts in inventory\"},{\"value\":7,\"description\":\"Set up a new computer system for a large multinational company\"}]},\"4.A.3.b.2\":{\"element_name\":\"Drafting, Laying Out, and Specifying Technical Devices, Parts, and Equipment\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle when performing Drafting, Laying Out, and Specifying Technical Devices, Parts, and Equipment?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Specify the lighting for a work area\"},{\"value\":4,\"description\":\"Specify the furniture and equipment for a new school\"},{\"value\":7,\"description\":\"Draw the layout of a circuit board for a high-performance computer\"}]},\"4.A.3.b.4\":{\"element_name\":\"Repairing and Maintaining Mechanical Equipment\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle when performing Repairing and Maintaining Mechanical Equipment?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Make simple, external adjustments to a door hinge with ordinary hand tools\"},{\"value\":4,\"description\":\"Change the oil on a tractor\"},{\"value\":7,\"description\":\"Overhaul a power plant turbine\"}]},\"4.A.3.b.5\":{\"element_name\":\"Repairing and Maintaining Electronic Equipment\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle when performing Repairing and Maintaining Electronic Equipment?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Use display settings to adjust a television picture\"},{\"value\":4,\"description\":\"Make repairs by removing and replacing circuit boards\"},{\"value\":7,\"description\":\"Use complex test equipment to calibrate electronic equipment\"}]},\"4.A.3.b.6\":{\"element_name\":\"Documenting\/Recording Information\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle when performing Documenting\/Recording Information?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Record the weight of a patient during a routine health exam\"},{\"value\":4,\"description\":\"Document the results of a crime scene investigation\"},{\"value\":7,\"description\":\"Maintain information about the use of satellites for industry communications\"}]},\"4.A.4.a.1\":{\"element_name\":\"Interpreting the Meaning of Information for Others\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle when performing Interpreting the Meaning of Information for Others?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Interpret a blood pressure reading\"},{\"value\":4,\"description\":\"Interpret how foreign tax laws apply to U.S. exports\"},{\"value\":7,\"description\":\"Interpret a complex experiment in physics for general audiences\"}]},\"4.A.4.a.2\":{\"element_name\":\"Communicating with Supervisors, Peers, or Subordinates\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle when performing Communicating with Supervisors, Peers, or Subordinates?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Write brief messages to others\"},{\"value\":4,\"description\":\"Report the results of a sales meeting to a supervisor\"},{\"value\":7,\"description\":\"Create and deliver a presentation on a company's internal policies\"}]},\"4.A.4.a.3\":{\"element_name\":\"Communicating with People Outside the Organization\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle when performing Communicating with People Outside the Organization?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Have little contact with people outside the organization\"},{\"value\":4,\"description\":\"Present information to potential clients about available services\"},{\"value\":7,\"description\":\"Prepare or deliver press releases\"}]},\"4.A.4.a.4\":{\"element_name\":\"Establishing and Maintaining Interpersonal Relationships\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle when performing Establishing and Maintaining Interpersonal Relationships?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Exchange greetings with a coworker\"},{\"value\":4,\"description\":\"Maintain good working relationships with almost all coworkers and clients\"},{\"value\":7,\"description\":\"Gain cooperation from a diverse group of executives with competing interests\"}]},\"4.A.4.a.5\":{\"element_name\":\"Assisting and Caring for Others\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle when performing Assisting and Caring for Others?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Help a coworker complete an assignment\"},{\"value\":4,\"description\":\"Help a medical patient find in-home assistance or healthcare\"},{\"value\":7,\"description\":\"Care for seriously injured persons in an emergency room\"}]},\"4.A.4.a.6\":{\"element_name\":\"Selling or Influencing Others\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle when performing Selling or Influencing Others?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Convince a coworker to assist with an assignment\"},{\"value\":4,\"description\":\"Make a sales pitch to convince others to buy a product\"},{\"value\":7,\"description\":\"Deliver a major sales campaign in a new market\"}]},\"4.A.4.a.7\":{\"element_name\":\"Resolving Conflicts and Negotiating with Others\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle when performing Resolving Conflicts and Negotiating with Others?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Apologize to a customer who complains about waiting too long\"},{\"value\":4,\"description\":\"Get two subordinates to agree about vacation schedules\"},{\"value\":7,\"description\":\"Negotiate a major labor-management contract\"}]},\"4.A.4.a.8\":{\"element_name\":\"Performing for or Working Directly with the Public\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle when performing Performing for or Working Directly with the Public?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Check tickets at a concert\"},{\"value\":4,\"description\":\"Sell shoes in a crowded shoe store\"},{\"value\":7,\"description\":\"Perform a monologue on TV\"}]},\"4.A.4.b.1\":{\"element_name\":\"Coordinating the Work and Activities of Others\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle when performing Coordinating the Work and Activities of Others?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Exchange information during a shift change\"},{\"value\":4,\"description\":\"Organize the cleanup crew after a major sporting event\"},{\"value\":7,\"description\":\"Act as general contractor for building a large industrial complex\"}]},\"4.A.4.b.2\":{\"element_name\":\"Developing and Building Teams\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle when performing Developing and Building Teams?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Encourage two coworkers to stick with a tough assignment\"},{\"value\":4,\"description\":\"Lead an assembly team in an automobile plant\"},{\"value\":7,\"description\":\"Lead a large team to design and build a new aircraft\"}]},\"4.A.4.b.3\":{\"element_name\":\"Training and Teaching Others\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle when performing Training and Teaching Others?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Give coworkers brief instructions on a simple procedural change\"},{\"value\":4,\"description\":\"Teach a social sciences course to high school students\"},{\"value\":7,\"description\":\"Develop and conduct training programs for a medical school\"}]},\"4.A.4.b.4\":{\"element_name\":\"Guiding, Directing, and Motivating Subordinates\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle when performing Guiding, Directing, and Motivating Subordinates?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Work occasionally as a backup supervisor\"},{\"value\":4,\"description\":\"Manage a small team of employees in a dynamic workplace\"},{\"value\":7,\"description\":\"Manage a severely downsized unit\"}]},\"4.A.4.b.5\":{\"element_name\":\"Coaching and Developing Others\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle when performing Coaching and Developing Others?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Show a coworker how to operate a piece of equipment\"},{\"value\":4,\"description\":\"Provide on-the-job training for administrative workers\"},{\"value\":7,\"description\":\"Coach a college athletic team\"}]},\"4.A.4.b.6\":{\"element_name\":\"Providing Consultation and Advice to Others\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle when performing Providing Consultation and Advice to Others?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Work in a position that requires little advising of others\"},{\"value\":4,\"description\":\"Recommend a new software package to increase operational efficiency\"},{\"value\":7,\"description\":\"Provide ideas for changing an organization to increase profitability\"}]},\"4.A.4.c.1\":{\"element_name\":\"Performing Administrative Activities\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle when performing Performing Administrative Activities?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Complete routine paperwork\"},{\"value\":4,\"description\":\"Complete tax forms for a small business\"},{\"value\":7,\"description\":\"Serve as the benefits director for a large computer sales organization\"}]},\"4.A.4.c.2\":{\"element_name\":\"Staffing Organizational Units\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle when performing Staffing Organizational Units?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Work in a position that has minimal staffing requirements\"},{\"value\":4,\"description\":\"Interview candidates for a sales position and make hiring recommendations\"},{\"value\":7,\"description\":\"Direct a recruiting program for a large international organization\"}]},\"4.A.4.c.3\":{\"element_name\":\"Monitoring and Controlling Resources\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle when performing Monitoring and Controlling Resources?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Work as a server responsible for keeping track of utensils\"},{\"value\":4,\"description\":\"Work as a chef responsible for ordering food for the menu\"},{\"value\":7,\"description\":\"Serve as a financial executive in charge of a large company's budget\"}]}};\n\n    window.pivotIsWorkActivitiesModule = function(pillar, mod) {\n        if (pillar !== 'Generalized Work Activities') return false;\n\n        const pillarStore =\n            window.pivotMasterStore &&\n            window.pivotMasterStore[pillar];\n\n        const questions =\n            pillarStore &&\n            pillarStore[mod];\n\n        const list = Array.isArray(questions)\n            ? questions\n            : (questions && typeof questions === 'object'\n                ? Object.values(questions)\n                : []);\n\n        return list.length === 41 &&\n            list.every(function(question) {\n                return question &&\n                    Object.prototype.hasOwnProperty.call(\n                        window.PIVOT_WORK_ACTIVITIES_LEVEL_CONFIG,\n                        String(question.id || '').trim()\n                    );\n            });\n    };\n\n    window.pivotGetWorkActivitiesMigrationState = function() {\n        let state = window.safeLocalParse(\n            'pivot_work_activities_scale_migration',\n            {}\n        );\n\n        return state &&\n            typeof state === 'object' &&\n            !Array.isArray(state)\n                ? state\n                : {};\n    };\n\n    window.pivotMarkWorkActivitiesModuleMigrated = function(mod) {\n        let state = window.pivotGetWorkActivitiesMigrationState();\n        state[mod] = window.PIVOT_WORK_ACTIVITIES_SCALE_VERSION;\n\n        localStorage.setItem(\n            'pivot_work_activities_scale_migration',\n            JSON.stringify(state)\n        );\n    };\n\n    window.pivotGetWorkActivityLevelConfig = function(questionId) {\n        return window.PIVOT_WORK_ACTIVITIES_LEVEL_CONFIG[\n            String(questionId || '').trim()\n        ] || null;\n    };\n\n    window.pivotGetWorkActivityScaleData = function(questionId, value) {\n        const cfg = window.pivotGetWorkActivityLevelConfig(questionId);\n        const numeric = Number(value);\n\n        if (\n            !cfg ||\n            !Number.isFinite(numeric) ||\n            numeric < 0 ||\n            numeric > 7\n        ) return null;\n\n        const anchors = Array.isArray(cfg.anchors)\n            ? cfg.anchors.slice().sort(\n                (a, b) => Number(a.value) - Number(b.value)\n            )\n            : [];\n\n        const exact = anchors.find(\n            anchor => Number(anchor.value) === numeric\n        );\n\n        if (exact) {\n            return {\n                title: 'Level ' + numeric,\n                keywords: [\n                    String(exact.description || '').trim()\n                ].filter(Boolean)\n            };\n        }\n\n        const lower =\n            anchors.filter(\n                anchor => Number(anchor.value) < numeric\n            ).pop() || null;\n\n        const upper =\n            anchors.find(\n                anchor => Number(anchor.value) > numeric\n            ) || null;\n\n        const keywords = [];\n\n        if (lower && upper) {\n            keywords.push(\n                'Between the nearby O*NET reference examples'\n            );\n        } else if (!lower && upper) {\n            keywords.push(\n                'Below the Level ' + upper.value + ' reference example'\n            );\n        } else if (lower && !upper) {\n            keywords.push(\n                'Above the Level ' + lower.value + ' reference example'\n            );\n        }\n\n        if (lower) {\n            keywords.push(\n                'Level ' + lower.value + ': ' + lower.description\n            );\n        }\n\n        if (upper) {\n            keywords.push(\n                'Level ' + upper.value + ': ' + upper.description\n            );\n        }\n\n        return {\n            title: 'Level ' + numeric,\n            keywords: keywords\n        };\n    };\n\n    window.pivotGetWorkActivityAnchorHtml = function(questionId) {\n        const cfg = window.pivotGetWorkActivityLevelConfig(questionId);\n\n        if (!cfg || !Array.isArray(cfg.anchors)) return '';\n\n        const esc =\n            typeof window.pivotEscapeHelpHtml === 'function'\n                ? window.pivotEscapeHelpHtml\n                : function(value) {\n                    return String(value == null ? '' : value)\n                        .replace(\/&\/g, '&amp;')\n                        .replace(\/<\/g, '&lt;')\n                        .replace(\/>\/g, '&gt;')\n                        .replace(\/\"\/g, '&quot;')\n                        .replace(\/'\/g, '&#039;');\n                };\n\n        return `\n            <div style=\"margin-top:16px;border:1px solid #dbe3ef;border-radius:14px;padding:14px;background:#ffffff;\">\n                <div style=\"font-size:.72rem;font-weight:850;text-transform:uppercase;letter-spacing:.06em;color:#002FA7;margin-bottom:10px;\">\n                    O*NET reference examples\n                <\/div>\n\n                <div style=\"display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;\">\n                    ${cfg.anchors.map(anchor => `\n                        <div style=\"border:1px solid #e2e8f0;border-radius:10px;padding:10px;background:#f8fafc;\">\n                            <div style=\"font-size:.72rem;font-weight:850;color:#002FA7;margin-bottom:4px;\">\n                                Level ${esc(anchor.value)}\n                            <\/div>\n\n                            <div style=\"font-size:.78rem;line-height:1.4;color:#475569;\">\n                                ${esc(anchor.description)}\n                            <\/div>\n                        <\/div>\n                    `).join('')}\n                <\/div>\n\n                <div style=\"margin-top:10px;font-size:.75rem;line-height:1.4;color:#64748b;\">\n                    Use these official O*NET examples to choose the highest level of this Work Activity that you can currently carry out.\n                <\/div>\n            <\/div>\n        `;\n    };\n\n    window.PIVOT_TRANSFERABLE_SKILLS_SCALE_VERSION = '30.3-transferable-skills-level-v1';\n    window.PIVOT_TRANSFERABLE_SKILLS_PARENT_ID = '2.B.3';\n    window.PIVOT_TRANSFERABLE_SKILLS_LEVEL_CONFIG = {\"2.B.1.a\":{\"element_name\":\"Social Perceptiveness\",\"recommended_question\":\"Using the examples below, what level best describes the complexity of situations in which you can currently use Social Perceptiveness effectively?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Notice that customers are angry because they have been waiting too long\"},{\"value\":4,\"description\":\"Be aware of how a coworker's promotion will affect a work group\"},{\"value\":6,\"description\":\"Counsel patients who are depressed during a crisis period\"}]},\"2.B.1.b\":{\"element_name\":\"Coordination\",\"recommended_question\":\"Using the examples below, what level best describes the complexity of situations in which you can currently use Coordination effectively?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Schedule appointments for a medical clinic\"},{\"value\":4,\"description\":\"Work with others to put a new roof on a house\"},{\"value\":6,\"description\":\"Direct a project requiring coordination between multiple subcontractors\"}]},\"2.B.1.c\":{\"element_name\":\"Persuasion\",\"recommended_question\":\"Using the examples below, what level best describes the complexity of situations in which you can currently use Persuasion effectively?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Solicit donations for a charity\"},{\"value\":4,\"description\":\"Convince a supervisor to purchase new office equipment\"},{\"value\":6,\"description\":\"Change the opinion of the jury in a complex legal case\"}]},\"2.B.1.d\":{\"element_name\":\"Negotiation\",\"recommended_question\":\"Using the examples below, what level best describes the complexity of situations in which you can currently use Negotiation effectively?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Present justification to a manager for altering a work schedule\"},{\"value\":4,\"description\":\"Contract with a wholesaler to sell items at a given cost\"},{\"value\":6,\"description\":\"Work as an ambassador in negotiating a new treaty\"}]},\"2.B.1.e\":{\"element_name\":\"Instructing\",\"recommended_question\":\"Using the examples below, what level best describes the complexity of situations in which you can currently use Instructing effectively?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Instruct a new employee in the use of a timekeeping system\"},{\"value\":4,\"description\":\"Instruct a coworker in how to operate a software program\"},{\"value\":6,\"description\":\"Demonstrate a surgical procedure to interns in a teaching hospital\"}]},\"2.B.1.f\":{\"element_name\":\"Service Orientation\",\"recommended_question\":\"Using the examples below, what level best describes the complexity of situations in which you can currently use Service Orientation effectively?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Ask customers if they would like a cup of coffee\"},{\"value\":4,\"description\":\"Make flight reservations for customers using an online booking site\"},{\"value\":6,\"description\":\"Direct relief agency operations in a disaster area\"}]},\"2.B.2.i\":{\"element_name\":\"Complex Problem Solving\",\"recommended_question\":\"Using the examples below, what level best describes the complexity of situations in which you can currently use Complex Problem Solving effectively?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Lay out tools to complete a job\"},{\"value\":4,\"description\":\"Redesign a floor layout to take advantage of new manufacturing techniques\"},{\"value\":6,\"description\":\"Develop a plan to provide emergency relief for a major metropolitan area\"}]},\"2.B.3.a\":{\"element_name\":\"Operations Analysis\",\"recommended_question\":\"Using the examples below, what level best describes the complexity of situations in which you can currently use Operations Analysis effectively?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Select a printer for an office\"},{\"value\":4,\"description\":\"Suggest changes in software to make a system more user friendly\"},{\"value\":6,\"description\":\"Identify the control system needed for a new process production plant\"}]},\"2.B.3.b\":{\"element_name\":\"Technology Design\",\"recommended_question\":\"Using the examples below, what level best describes the complexity of situations in which you can currently use Technology Design effectively?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Adjust exercise equipment for use by a customer\"},{\"value\":4,\"description\":\"Redesign the handle on a hand tool for easier gripping\"},{\"value\":6,\"description\":\"Create new technology for producing industrial diamonds\"}]},\"2.B.3.c\":{\"element_name\":\"Equipment Selection\",\"recommended_question\":\"Using the examples below, what level best describes the complexity of situations in which you can currently use Equipment Selection effectively?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Select a tool to adjust a loose part on a bicycle\"},{\"value\":4,\"description\":\"Choose a software application to complete a work assignment\"},{\"value\":6,\"description\":\"Identify the equipment needed to produce a new product line\"}]},\"2.B.3.d\":{\"element_name\":\"Installation\",\"recommended_question\":\"Using the examples below, what level best describes the complexity of situations in which you can currently use Installation effectively?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Install a new air filter in an air conditioner\"},{\"value\":4,\"description\":\"Install a speaker system in a car\"},{\"value\":6,\"description\":\"Install a custom-made production machine for a new product\"}]},\"2.B.3.e\":{\"element_name\":\"Programming\",\"recommended_question\":\"Using the examples below, what level best describes the complexity of situations in which you can currently use Programming effectively?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Write a program to sort objects in a database\"},{\"value\":4,\"description\":\"Write a statistical analysis program to analyze demographic data\"},{\"value\":6,\"description\":\"Write programs to analyze geological data for existence of mineral deposits\"}]},\"2.B.3.g\":{\"element_name\":\"Operations Monitoring\",\"recommended_question\":\"Using the examples below, what level best describes the complexity of situations in which you can currently use Operations Monitoring effectively?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Monitor completion times while running a computer program\"},{\"value\":4,\"description\":\"Monitor machine functions on an automated production line\"},{\"value\":6,\"description\":\"Monitor feedback control in a processing facility to maintain production flow\"}]},\"2.B.3.h\":{\"element_name\":\"Operation and Control\",\"recommended_question\":\"Using the examples below, what level best describes the complexity of situations in which you can currently use Operation and Control effectively?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Navigate the settings on an office printer to print on both sides of the paper\"},{\"value\":4,\"description\":\"Adjust the speed of assembly line equipment based on the product being assembled\"},{\"value\":6,\"description\":\"Control aircraft approach and landing at a large airport during a busy period\"}]},\"2.B.3.j\":{\"element_name\":\"Equipment Maintenance\",\"recommended_question\":\"Using the examples below, what level best describes the complexity of situations in which you can currently use Equipment Maintenance effectively?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Add oil to an engine as indicated by a warning light\"},{\"value\":4,\"description\":\"Clean moving parts in production machinery\"},{\"value\":6,\"description\":\"Conduct maintenance checks on an aircraft\"}]},\"2.B.3.k\":{\"element_name\":\"Troubleshooting\",\"recommended_question\":\"Using the examples below, what level best describes the complexity of situations in which you can currently use Troubleshooting effectively?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Identify the source of a leak by looking under a machine\"},{\"value\":4,\"description\":\"Identify the circuit causing an electrical system to fail\"},{\"value\":6,\"description\":\"Direct the debugging of code for a new operating system\"}]},\"2.B.3.l\":{\"element_name\":\"Repairing\",\"recommended_question\":\"Using the examples below, what level best describes the complexity of situations in which you can currently use Repairing effectively?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Tighten a screw to get a door to close properly\"},{\"value\":4,\"description\":\"Replace a faulty hydraulic valve\"},{\"value\":6,\"description\":\"Repair structural damage after an earthquake\"}]},\"2.B.3.m\":{\"element_name\":\"Quality Control Analysis\",\"recommended_question\":\"Using the examples below, what level best describes the complexity of situations in which you can currently use Quality Control Analysis effectively?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Inspect a draft email for errors (e.g., grammar, punctuation)\"},{\"value\":4,\"description\":\"Assess new parts for precision and accuracy to specifications\"},{\"value\":6,\"description\":\"Develop procedures to test a prototype of a new computer system\"}]},\"2.B.4.e\":{\"element_name\":\"Judgment and Decision Making\",\"recommended_question\":\"Using the examples below, what level best describes the complexity of situations in which you can currently use Judgment and Decision Making effectively?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Decide how scheduling a break will affect work flow\"},{\"value\":4,\"description\":\"Evaluate a loan application for degree of risk\"},{\"value\":6,\"description\":\"Decide whether a manufacturing company should invest in new robotics technology\"}]},\"2.B.4.g\":{\"element_name\":\"Systems Analysis\",\"recommended_question\":\"Using the examples below, what level best describes the complexity of situations in which you can currently use Systems Analysis effectively?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Determine how loss of a team member will affect the completion of a job\"},{\"value\":4,\"description\":\"Determine how a new piece of equipment will affect production rates\"},{\"value\":6,\"description\":\"Identify how changes in tax laws affect locations of manufacturing operations\"}]},\"2.B.4.h\":{\"element_name\":\"Systems Evaluation\",\"recommended_question\":\"Using the examples below, what level best describes the complexity of situations in which you can currently use Systems Evaluation effectively?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Determine why estimates for the time to complete a task are overly optimistic\"},{\"value\":4,\"description\":\"Identify the reasons why a client might be unhappy with a product\"},{\"value\":6,\"description\":\"Evaluate the long-term performance of a new computer system\"}]},\"2.B.5.a\":{\"element_name\":\"Time Management\",\"recommended_question\":\"Using the examples below, what level best describes the complexity of situations in which you can currently use Time Management effectively?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Keep a monthly calendar of appointments\"},{\"value\":4,\"description\":\"Allocate the time of subordinates to projects for the coming week\"},{\"value\":6,\"description\":\"Allocate the time of scientists to multiple research projects\"}]},\"2.B.5.b\":{\"element_name\":\"Management of Financial Resources\",\"recommended_question\":\"Using the examples below, what level best describes the complexity of situations in which you can currently use Management of Financial Resources effectively?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Use available funds to buy office supplies and record the amount of the purchase\"},{\"value\":4,\"description\":\"Prepare and manage a budget for a short-term project\"},{\"value\":6,\"description\":\"Develop, monitor, and adjust annual budgets for a large corporation\"}]},\"2.B.5.c\":{\"element_name\":\"Management of Material Resources\",\"recommended_question\":\"Using the examples below, what level best describes the complexity of situations in which you can currently use Management of Material Resources effectively?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Reserve a room for a management meeting\"},{\"value\":4,\"description\":\"Evaluate an annual uniform service contract for delivery drivers\"},{\"value\":6,\"description\":\"Determine and monitor the computer system needs of a large corporation\"}]},\"2.B.5.d\":{\"element_name\":\"Management of Personnel Resources\",\"recommended_question\":\"Using the examples below, what level best describes the complexity of situations in which you can currently use Management of Personnel Resources effectively?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Encourage a coworker who is having difficulty finishing a project\"},{\"value\":4,\"description\":\"Direct the activities of a road repair crew with minimal disruption of traffic flow\"},{\"value\":6,\"description\":\"Manage recruitment and training programs for a high-performance company\"}]}};\n\n    window.pivotIsTransferableSkillsModule = function(pillar, mod) {\n        if (pillar !== 'Cross-Functional Skills Assessment') return false;\n\n        const pillarStore =\n            window.pivotMasterStore &&\n            window.pivotMasterStore[pillar];\n\n        const questions =\n            pillarStore &&\n            pillarStore[mod];\n\n        const list = Array.isArray(questions)\n            ? questions\n            : (questions && typeof questions === 'object'\n                ? Object.values(questions)\n                : []);\n\n        const currentItems = list.filter(function(question) {\n            const id = String(question && question.id || '').trim();\n            return id && id !== window.PIVOT_TRANSFERABLE_SKILLS_PARENT_ID;\n        });\n\n        return currentItems.length === 25 &&\n            currentItems.every(function(question) {\n                return question &&\n                    Object.prototype.hasOwnProperty.call(\n                        window.PIVOT_TRANSFERABLE_SKILLS_LEVEL_CONFIG,\n                        String(question.id || '').trim()\n                    );\n            });\n    };\n\n    window.pivotGetTransferableSkillsMigrationState = function() {\n        let state = window.safeLocalParse(\n            'pivot_transferable_skills_scale_migration',\n            {}\n        );\n\n        return state &&\n            typeof state === 'object' &&\n            !Array.isArray(state)\n                ? state\n                : {};\n    };\n\n    window.pivotMarkTransferableSkillsModuleMigrated = function(mod) {\n        let state = window.pivotGetTransferableSkillsMigrationState();\n        state[mod] = window.PIVOT_TRANSFERABLE_SKILLS_SCALE_VERSION;\n\n        localStorage.setItem(\n            'pivot_transferable_skills_scale_migration',\n            JSON.stringify(state)\n        );\n    };\n\n    window.pivotGetTransferableSkillLevelConfig = function(questionId) {\n        return window.PIVOT_TRANSFERABLE_SKILLS_LEVEL_CONFIG[\n            String(questionId || '').trim()\n        ] || null;\n    };\n\n    window.pivotGetTransferableSkillScaleData = function(questionId, value) {\n        const cfg = window.pivotGetTransferableSkillLevelConfig(questionId);\n        const numeric = Number(value);\n\n        if (\n            !cfg ||\n            !Number.isFinite(numeric) ||\n            numeric < 0 ||\n            numeric > 7\n        ) return null;\n\n        const anchors = Array.isArray(cfg.anchors)\n            ? cfg.anchors.slice().sort(\n                (a, b) => Number(a.value) - Number(b.value)\n            )\n            : [];\n\n        const exact = anchors.find(\n            anchor => Number(anchor.value) === numeric\n        );\n\n        if (exact) {\n            return {\n                title: 'Level ' + numeric,\n                keywords: [\n                    String(exact.description || '').trim()\n                ].filter(Boolean)\n            };\n        }\n\n        const lower =\n            anchors.filter(\n                anchor => Number(anchor.value) < numeric\n            ).pop() || null;\n\n        const upper =\n            anchors.find(\n                anchor => Number(anchor.value) > numeric\n            ) || null;\n\n        const keywords = [];\n\n        if (lower && upper) {\n            keywords.push(\n                'Between the nearby O*NET reference examples'\n            );\n        } else if (!lower && upper) {\n            keywords.push(\n                'Below the Level ' + upper.value + ' reference example'\n            );\n        } else if (lower && !upper) {\n            keywords.push(\n                'Above the Level ' + lower.value + ' reference example'\n            );\n        }\n\n        if (lower) {\n            keywords.push(\n                'Level ' + lower.value + ': ' + lower.description\n            );\n        }\n\n        if (upper) {\n            keywords.push(\n                'Level ' + upper.value + ': ' + upper.description\n            );\n        }\n\n        return {\n            title: 'Level ' + numeric,\n            keywords: keywords\n        };\n    };\n\n    window.pivotGetTransferableSkillAnchorHtml = function(questionId) {\n        const cfg = window.pivotGetTransferableSkillLevelConfig(questionId);\n\n        if (!cfg || !Array.isArray(cfg.anchors)) return '';\n\n        const esc =\n            typeof window.pivotEscapeHelpHtml === 'function'\n                ? window.pivotEscapeHelpHtml\n                : function(value) {\n                    return String(value == null ? '' : value)\n                        .replace(\/&\/g, '&amp;')\n                        .replace(\/<\/g, '&lt;')\n                        .replace(\/>\/g, '&gt;')\n                        .replace(\/\"\/g, '&quot;')\n                        .replace(\/'\/g, '&#039;');\n                };\n\n        return `\n            <div style=\"margin-top:16px;border:1px solid #dbe3ef;border-radius:14px;padding:14px;background:#ffffff;\">\n                <div style=\"font-size:.72rem;font-weight:850;text-transform:uppercase;letter-spacing:.06em;color:#002FA7;margin-bottom:10px;\">\n                    O*NET reference examples\n                <\/div>\n\n                <div style=\"display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;\">\n                    ${cfg.anchors.map(anchor => `\n                        <div style=\"border:1px solid #e2e8f0;border-radius:10px;padding:10px;background:#f8fafc;\">\n                            <div style=\"font-size:.72rem;font-weight:850;color:#002FA7;margin-bottom:4px;\">\n                                Level ${esc(anchor.value)}\n                            <\/div>\n\n                            <div style=\"font-size:.78rem;line-height:1.4;color:#475569;\">\n                                ${esc(anchor.description)}\n                            <\/div>\n                        <\/div>\n                    `).join('')}\n                <\/div>\n\n                <div style=\"margin-top:10px;font-size:.75rem;line-height:1.4;color:#64748b;\">\n                    Use these official O*NET examples to choose the highest level of task where you can currently use this skill effectively.\n                <\/div>\n            <\/div>\n        `;\n    };\n\n    window.PIVOT_KNOWLEDGE_SCALE_VERSION = '30.3-knowledge-level-v1';\n    window.PIVOT_KNOWLEDGE_LEVEL_CONFIG = {\"2.C.1.a\":{\"element_name\":\"Administration and Management\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle using your knowledge of Administration and Management?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Approve a reimbursement request\"},{\"value\":4,\"description\":\"Monitor progress of a project to ensure timely completion\"},{\"value\":7,\"description\":\"Manage a multimillion-dollar company\"}]},\"2.C.1.b\":{\"element_name\":\"Administrative\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle using your knowledge of Administrative?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Direct phone calls to the appropriate staff member\"},{\"value\":4,\"description\":\"Type 30 words per minute\"},{\"value\":7,\"description\":\"Organize a digital storage system for company forms\"}]},\"2.C.1.c\":{\"element_name\":\"Economics and Accounting\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle using your knowledge of Economics and Accounting?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Answer billing questions from credit card customers\"},{\"value\":4,\"description\":\"Develop financial investment programs for individual clients\"},{\"value\":7,\"description\":\"Keep a major corporation's financial records\"}]},\"2.C.1.d\":{\"element_name\":\"Sales and Marketing\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle using your knowledge of Sales and Marketing?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Sell cakes at a bake sale\"},{\"value\":4,\"description\":\"Introduce clients to a new line of products\"},{\"value\":7,\"description\":\"Develop a marketing plan for a new nationwide high-speed internet system\"}]},\"2.C.1.e\":{\"element_name\":\"Customer and Personal Service\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle using your knowledge of Customer and Personal Service?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Process a customer's dry-cleaning drop off\"},{\"value\":4,\"description\":\"Be responsible for 10 children at daycare\"},{\"value\":7,\"description\":\"Respond to a citizen's request for assistance after a major disaster\"}]},\"2.C.1.f\":{\"element_name\":\"Personnel and Human Resources\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle using your knowledge of Personnel and Human Resources?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Fill out a medical claim form\"},{\"value\":4,\"description\":\"Interview applicants for an administrative position\"},{\"value\":7,\"description\":\"Design a new personnel selection and promotion system for the Army\"}]},\"2.C.10\":{\"element_name\":\"Transportation\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle using your knowledge of Transportation?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Ride a train to work\"},{\"value\":4,\"description\":\"Drive a semi-truck through a busy city\"},{\"value\":7,\"description\":\"Control air traffic at a busy airport\"}]},\"2.C.2.a\":{\"element_name\":\"Production and Processing\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle using your knowledge of Production and Processing?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Put a computer back into its packing materials\"},{\"value\":4,\"description\":\"Supervise an appliance assembly line\"},{\"value\":7,\"description\":\"Manage an international shipping company distribution center\"}]},\"2.C.2.b\":{\"element_name\":\"Food Production\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle using your knowledge of Food Production?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Grow herbs in the kitchen\"},{\"value\":4,\"description\":\"Operate a commercial fishing boat\"},{\"value\":7,\"description\":\"Run a large production farm\"}]},\"2.C.3.a\":{\"element_name\":\"Computers and Electronics\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle using your knowledge of Computers and Electronics?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Operate a media player to watch a training video\"},{\"value\":4,\"description\":\"Use a computer to format a document\"},{\"value\":7,\"description\":\"Create a program to scan a computer for viruses\"}]},\"2.C.3.b\":{\"element_name\":\"Engineering and Technology\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle using your knowledge of Engineering and Technology?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Install a door lock\"},{\"value\":4,\"description\":\"Design a custom office chair\"},{\"value\":7,\"description\":\"Plan for the impact of weather in designing a bridge\"}]},\"2.C.3.c\":{\"element_name\":\"Design\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle using your knowledge of Design?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Draw a straight line 4 3\/16 inches long\"},{\"value\":4,\"description\":\"Design plans for remodeling a kitchen\"},{\"value\":7,\"description\":\"Develop detailed plans for a high-rise office building\"}]},\"2.C.3.d\":{\"element_name\":\"Building and Construction\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle using your knowledge of Building and Construction?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Choose the proper type of wood for adding a deck onto a house\"},{\"value\":4,\"description\":\"Fix a plumbing leak in the ceiling\"},{\"value\":7,\"description\":\"Build a high-rise office tower\"}]},\"2.C.3.e\":{\"element_name\":\"Mechanical\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle using your knowledge of Mechanical?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Replace the filters in a furnace\"},{\"value\":4,\"description\":\"Replace a valve on a steam pipe\"},{\"value\":7,\"description\":\"Overhaul an airplane jet engine\"}]},\"2.C.4.a\":{\"element_name\":\"Mathematics\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle using your knowledge of Mathematics?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Add two numbers\"},{\"value\":4,\"description\":\"Analyze data to determine areas with the highest sales\"},{\"value\":7,\"description\":\"Derive a complex mathematical equation\"}]},\"2.C.4.b\":{\"element_name\":\"Physics\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle using your knowledge of Physics?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Use a crowbar to pry open a box\"},{\"value\":4,\"description\":\"Calculate the speed of a falling object\"},{\"value\":7,\"description\":\"Design a cleaner burning gasoline engine\"}]},\"2.C.4.c\":{\"element_name\":\"Chemistry\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle using your knowledge of Chemistry?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Use a common household bug spray\"},{\"value\":4,\"description\":\"Use the proper concentration of chlorine to purify a water source\"},{\"value\":7,\"description\":\"Develop a safe commercial cleaner\"}]},\"2.C.4.d\":{\"element_name\":\"Biology\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle using your knowledge of Biology?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Feed domestic animals\"},{\"value\":4,\"description\":\"Investigate the effects of pollution on marine plants and animals\"},{\"value\":7,\"description\":\"Isolate and identify a new virus\"}]},\"2.C.4.e\":{\"element_name\":\"Psychology\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle using your knowledge of Psychology?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Monitor several children on a playground\"},{\"value\":4,\"description\":\"Understand the impact of alcohol on human responses\"},{\"value\":7,\"description\":\"Treat a person with a severe mental illness\"}]},\"2.C.4.f\":{\"element_name\":\"Sociology and Anthropology\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle using your knowledge of Sociology and Anthropology?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Identify two cultures in a story as being different\"},{\"value\":4,\"description\":\"Write an article about cultural differences\"},{\"value\":7,\"description\":\"Create a new theory about the development of civilizations\"}]},\"2.C.4.g\":{\"element_name\":\"Geography\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle using your knowledge of Geography?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Know the capital of the United States\"},{\"value\":4,\"description\":\"Find a specific country on a world map\"},{\"value\":7,\"description\":\"Develop a map of the world showing mountains, deserts, and rivers\"}]},\"2.C.5.a\":{\"element_name\":\"Medicine and Dentistry\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle using your knowledge of Medicine and Dentistry?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Use a band-aid\"},{\"value\":4,\"description\":\"Fill a tooth cavity\"},{\"value\":7,\"description\":\"Perform open heart surgery\"}]},\"2.C.5.b\":{\"element_name\":\"Therapy and Counseling\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle using your knowledge of Therapy and Counseling?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Put ice on a sprained ankle\"},{\"value\":4,\"description\":\"Provide job counseling to the unemployed\"},{\"value\":7,\"description\":\"Counsel an abused child\"}]},\"2.C.6\":{\"element_name\":\"Education and Training\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle using your knowledge of Education and Training?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Show someone how to bowl\"},{\"value\":4,\"description\":\"Lead a quality improvement seminar\"},{\"value\":7,\"description\":\"Design a training program for new employees\"}]},\"2.C.7.a\":{\"element_name\":\"English Language\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle using your knowledge of English Language?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Write a thank you note\"},{\"value\":4,\"description\":\"Edit an article for a news website\"},{\"value\":7,\"description\":\"Teach a college English class\"}]},\"2.C.7.b\":{\"element_name\":\"Foreign Language\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle using your knowledge of Foreign Language?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Say \\\"please\\\" and \\\"thank you\\\" in a foreign language\"},{\"value\":4,\"description\":\"Ask directions in a foreign city\"},{\"value\":7,\"description\":\"Write an English language review of a book written in a foreign language\"}]},\"2.C.7.c\":{\"element_name\":\"Fine Arts\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle using your knowledge of Fine Arts?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Attend a popular music concert\"},{\"value\":4,\"description\":\"Play a minor part in a local theater play\"},{\"value\":7,\"description\":\"Design an exhibit for a major art show\"}]},\"2.C.7.d\":{\"element_name\":\"History and Archeology\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle using your knowledge of History and Archeology?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Take a class in US history\"},{\"value\":4,\"description\":\"Teach local history to school children\"},{\"value\":7,\"description\":\"Determine the age of bones for placing them in fossil history\"}]},\"2.C.7.e\":{\"element_name\":\"Philosophy and Theology\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle using your knowledge of Philosophy and Theology?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Watch a TV show on family values\"},{\"value\":4,\"description\":\"Understand another culture's religious practices\"},{\"value\":7,\"description\":\"Compare the teachings of major philosophers\"}]},\"2.C.8.a\":{\"element_name\":\"Public Safety and Security\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle using your knowledge of Public Safety and Security?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Use a seatbelt\"},{\"value\":4,\"description\":\"Inspect a building site for safety violations\"},{\"value\":7,\"description\":\"Command a military operation\"}]},\"2.C.8.b\":{\"element_name\":\"Law and Government\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle using your knowledge of Law and Government?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Describe the length of a U.S. presidential term\"},{\"value\":4,\"description\":\"Prepare documents and title papers for the purchase of a new house\"},{\"value\":7,\"description\":\"Serve as a judge in a federal court\"}]},\"2.C.9.a\":{\"element_name\":\"Telecommunications\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle using your knowledge of Telecommunications?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Send an email\"},{\"value\":4,\"description\":\"Install a wireless internet router\"},{\"value\":7,\"description\":\"Develop a new, world-wide telecommunications network\"}]},\"2.C.9.b\":{\"element_name\":\"Communications and Media\",\"recommended_question\":\"Using the examples below, what level best reflects the complexity of work you can currently handle using your knowledge of Communications and Media?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Write a thank you note\"},{\"value\":4,\"description\":\"Host a music radio show\"},{\"value\":7,\"description\":\"Write a novel\"}]}};\n\n    window.pivotIsKnowledgeModule = function(pillar, mod) {\n        if (pillar !== 'Knowledge Assessment') return false;\n\n        const pillarStore =\n            window.pivotMasterStore &&\n            window.pivotMasterStore[pillar];\n\n        const questions =\n            pillarStore &&\n            pillarStore[mod];\n\n        const list = Array.isArray(questions)\n            ? questions\n            : (questions && typeof questions === 'object'\n                ? Object.values(questions)\n                : []);\n\n        return list.length > 0 &&\n            list.every(function(question) {\n                return question &&\n                    String(question.id || '').trim().startsWith('2.C.');\n            });\n    };\n\n    window.pivotGetKnowledgeMigrationState = function() {\n        let state = window.safeLocalParse(\n            'pivot_knowledge_scale_migration',\n            {}\n        );\n\n        return state &&\n            typeof state === 'object' &&\n            !Array.isArray(state)\n                ? state\n                : {};\n    };\n\n    window.pivotMarkKnowledgeModuleMigrated = function(mod) {\n        let state = window.pivotGetKnowledgeMigrationState();\n        state[mod] = window.PIVOT_KNOWLEDGE_SCALE_VERSION;\n\n        localStorage.setItem(\n            'pivot_knowledge_scale_migration',\n            JSON.stringify(state)\n        );\n    };\n\n    window.pivotGetKnowledgeLevelConfig = function(questionId) {\n        return window.PIVOT_KNOWLEDGE_LEVEL_CONFIG[\n            String(questionId || '').trim()\n        ] || null;\n    };\n\n    window.pivotGetKnowledgeScaleData = function(questionId, value) {\n        const cfg = window.pivotGetKnowledgeLevelConfig(questionId);\n        const numeric = Number(value);\n\n        if (\n            !cfg ||\n            !Number.isFinite(numeric) ||\n            numeric < 0 ||\n            numeric > 7\n        ) return null;\n\n        const anchors = Array.isArray(cfg.anchors)\n            ? cfg.anchors.slice().sort(\n                (a, b) => Number(a.value) - Number(b.value)\n            )\n            : [];\n\n        const exact = anchors.find(\n            anchor => Number(anchor.value) === numeric\n        );\n\n        if (exact) {\n            return {\n                title: 'Level ' + numeric,\n                keywords: [\n                    String(exact.description || '').trim()\n                ].filter(Boolean)\n            };\n        }\n\n        const lower =\n            anchors.filter(\n                anchor => Number(anchor.value) < numeric\n            ).pop() || null;\n\n        const upper =\n            anchors.find(\n                anchor => Number(anchor.value) > numeric\n            ) || null;\n\n        const keywords = [];\n\n        if (lower && upper) {\n            keywords.push(\n                'Between the nearby O*NET reference examples'\n            );\n        } else if (!lower && upper) {\n            keywords.push(\n                'Below the Level ' + upper.value + ' reference example'\n            );\n        } else if (lower && !upper) {\n            keywords.push(\n                'Above the Level ' + lower.value + ' reference example'\n            );\n        }\n\n        if (lower) {\n            keywords.push(\n                'Level ' + lower.value + ': ' + lower.description\n            );\n        }\n\n        if (upper) {\n            keywords.push(\n                'Level ' + upper.value + ': ' + upper.description\n            );\n        }\n\n        return {\n            title: 'Level ' + numeric,\n            keywords: keywords\n        };\n    };\n\n    window.pivotGetKnowledgeAnchorHtml = function(questionId) {\n        const cfg = window.pivotGetKnowledgeLevelConfig(questionId);\n\n        if (!cfg || !Array.isArray(cfg.anchors)) return '';\n\n        const esc =\n            typeof window.pivotEscapeHelpHtml === 'function'\n                ? window.pivotEscapeHelpHtml\n                : function(value) {\n                    return String(value == null ? '' : value)\n                        .replace(\/&\/g, '&amp;')\n                        .replace(\/<\/g, '&lt;')\n                        .replace(\/>\/g, '&gt;')\n                        .replace(\/\"\/g, '&quot;')\n                        .replace(\/'\/g, '&#039;');\n                };\n\n        return `\n            <div style=\"margin-top:16px;border:1px solid #dbe3ef;border-radius:14px;padding:14px;background:#ffffff;\">\n                <div style=\"font-size:.72rem;font-weight:850;text-transform:uppercase;letter-spacing:.06em;color:#002FA7;margin-bottom:10px;\">\n                    O*NET reference examples\n                <\/div>\n\n                <div style=\"display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;\">\n                    ${cfg.anchors.map(anchor => `\n                        <div style=\"border:1px solid #e2e8f0;border-radius:10px;padding:10px;background:#f8fafc;\">\n                            <div style=\"font-size:.72rem;font-weight:850;color:#002FA7;margin-bottom:4px;\">\n                                Level ${esc(anchor.value)}\n                            <\/div>\n\n                            <div style=\"font-size:.78rem;line-height:1.4;color:#475569;\">\n                                ${esc(anchor.description)}\n                            <\/div>\n                        <\/div>\n                    `).join('')}\n                <\/div>\n\n                <div style=\"margin-top:10px;font-size:.75rem;line-height:1.4;color:#64748b;\">\n                    Use these official O*NET examples to choose the highest level of work you could currently handle using this knowledge.\n                <\/div>\n            <\/div>\n        `;\n    };\n\n    window.PIVOT_ABILITY_SCALE_VERSION = '30.3-abilities-level-v1';\n    window.PIVOT_ABILITY_LEVEL_CONFIG = {\"1.A.1.a.1\":{\"element_name\":\"Oral Comprehension\",\"recommended_question\":\"Using the examples below, what level best describes what you can currently do in Oral Comprehension?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Understand a television commercial\"},{\"value\":4,\"description\":\"Understand a coach's oral instructions for a sport\"},{\"value\":6,\"description\":\"Understand a lecture on advanced physics\"}]},\"1.A.1.a.2\":{\"element_name\":\"Written Comprehension\",\"recommended_question\":\"Using the examples below, what level best describes what you can currently do in Written Comprehension?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Understand signs on the highway\"},{\"value\":4,\"description\":\"Understand an apartment lease\"},{\"value\":6,\"description\":\"Understand an instruction book on repairing Artificial Intelligence systems\"}]},\"1.A.1.a.3\":{\"element_name\":\"Oral Expression\",\"recommended_question\":\"Using the examples below, what level best describes what you can currently do in Oral Expression?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Place an order at a restaurant drive-thru\"},{\"value\":4,\"description\":\"Give instructions to a lost motorist\"},{\"value\":6,\"description\":\"Explain advanced principles of genetics to college freshmen\"}]},\"1.A.1.a.4\":{\"element_name\":\"Written Expression\",\"recommended_question\":\"Using the examples below, what level best describes what you can currently do in Written Expression?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Write a note to remind someone to take food out of the freezer\"},{\"value\":4,\"description\":\"Write a job recommendation for a subordinate\"},{\"value\":6,\"description\":\"Write an advanced economics textbook\"}]},\"1.A.1.b.1\":{\"element_name\":\"Fluency of Ideas\",\"recommended_question\":\"Using the examples below, what level best describes what you can currently do in Fluency of Ideas?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Name four different uses for a screwdriver\"},{\"value\":4,\"description\":\"Think of as many ideas as possible for the name of a new company\"},{\"value\":6,\"description\":\"Identify as many strategies as possible for a company acquisition and merger\"}]},\"1.A.1.b.2\":{\"element_name\":\"Originality\",\"recommended_question\":\"Using the examples below, what level best describes what you can currently do in Originality?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Use a credit card to open a locked door\"},{\"value\":4,\"description\":\"Redesign job tasks to be interesting for employees\"},{\"value\":6,\"description\":\"Invent a new type of man-made fiber\"}]},\"1.A.1.b.3\":{\"element_name\":\"Problem Sensitivity\",\"recommended_question\":\"Using the examples below, what level best describes what you can currently do in Problem Sensitivity?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Recognize that an unplugged lamp won't work\"},{\"value\":4,\"description\":\"Notice from a subtle difference in a client's mood that something is bothering them\"},{\"value\":6,\"description\":\"Recognize an illness at an early stage of a disease when there are only a few symptoms\"}]},\"1.A.1.b.4\":{\"element_name\":\"Deductive Reasoning\",\"recommended_question\":\"Using the examples below, what level best describes what you can currently do in Deductive Reasoning?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Know that a stalled car can coast downhill\"},{\"value\":5,\"description\":\"Decide what factors to consider in selecting stocks\"},{\"value\":6,\"description\":\"Design an aircraft wing using principles of aerodynamics\"}]},\"1.A.1.b.5\":{\"element_name\":\"Inductive Reasoning\",\"recommended_question\":\"Using the examples below, what level best describes what you can currently do in Inductive Reasoning?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Decide what to wear based on the weather report\"},{\"value\":4,\"description\":\"Determine the prime suspect based on crime scene evidence\"},{\"value\":6,\"description\":\"Diagnose a disease using results of many different lab tests\"}]},\"1.A.1.b.6\":{\"element_name\":\"Information Ordering\",\"recommended_question\":\"Using the examples below, what level best describes what you can currently do in Information Ordering?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Put things in numerical order\"},{\"value\":2,\"description\":\"Follow the correct steps to make change\"},{\"value\":6,\"description\":\"Assemble a wind turbine\"}]},\"1.A.1.b.7\":{\"element_name\":\"Category Flexibility\",\"recommended_question\":\"Using the examples below, what level best describes what you can currently do in Category Flexibility?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Sort paintbrushes based on length\"},{\"value\":3,\"description\":\"Classify flowers according to size, color, and smell\"},{\"value\":6,\"description\":\"Classify man-made fibers in terms of their characteristics, like strength or cost\"}]},\"1.A.1.c.1\":{\"element_name\":\"Mathematical Reasoning\",\"recommended_question\":\"Using the examples below, what level best describes what you can currently do in Mathematical Reasoning?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Determine how much 20 oranges will cost when they are priced at 5 for 4 dollars\"},{\"value\":4,\"description\":\"Decide how to calculate profits to determine the amounts of yearly bonuses\"},{\"value\":6,\"description\":\"Determine the mathematics required to simulate a space craft landing on the moon\"}]},\"1.A.1.c.2\":{\"element_name\":\"Number Facility\",\"recommended_question\":\"Using the examples below, what level best describes what you can currently do in Number Facility?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Add 2 and 7\"},{\"value\":3,\"description\":\"Calculate a discounted price\"},{\"value\":5,\"description\":\"Compute the interest payment that should be generated from an investment\"}]},\"1.A.1.d.1\":{\"element_name\":\"Memorization\",\"recommended_question\":\"Using the examples below, what level best describes what you can currently do in Memorization?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Remember the number on your bus to be sure you get back on the right one\"},{\"value\":4,\"description\":\"Recite the first names of the five people you just met\"},{\"value\":6,\"description\":\"Recite a 300-word speech after studying it for 15 minutes\"}]},\"1.A.1.e.1\":{\"element_name\":\"Speed of Closure\",\"recommended_question\":\"Using the examples below, what level best describes what you can currently do in Speed of Closure?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":3,\"description\":\"Recognize a song after hearing only the first few notes\"},{\"value\":4,\"description\":\"Make sense of messy handwriting\"},{\"value\":5,\"description\":\"Interpret patterns on weather radar to decide if the weather is changing\"}]},\"1.A.1.e.2\":{\"element_name\":\"Flexibility of Closure\",\"recommended_question\":\"Using the examples below, what level best describes what you can currently do in Flexibility of Closure?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Detect that your phone is ringing while at a concert\"},{\"value\":4,\"description\":\"Look for a golf ball in tall grass\"},{\"value\":6,\"description\":\"Identify camouflaged animals from a moving vehicle while on a safari\"}]},\"1.A.1.e.3\":{\"element_name\":\"Perceptual Speed\",\"recommended_question\":\"Using the examples below, what level best describes what you can currently do in Perceptual Speed?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Sort mail according to ZIP codes with no time pressure\"},{\"value\":4,\"description\":\"Read five pressure indicators in 10 seconds to make sure each is within safe limits\"},{\"value\":6,\"description\":\"Inspect electrical parts for defects as they pass on a fast-moving assembly line\"}]},\"1.A.1.f.1\":{\"element_name\":\"Spatial Orientation\",\"recommended_question\":\"Using the examples below, what level best describes what you can currently do in Spatial Orientation?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Use the floor plan to locate a store in a mall\"},{\"value\":3,\"description\":\"Find your way through a dark room without hitting anything\"},{\"value\":6,\"description\":\"Navigate an ocean voyage using a compass and landmarks\"}]},\"1.A.1.f.2\":{\"element_name\":\"Visualization\",\"recommended_question\":\"Using the examples below, what level best describes what you can currently do in Visualization?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Imagine how to place paper in a printer so that the letterhead comes out on top\"},{\"value\":4,\"description\":\"Follow a diagram to assemble a metal storage cabinet\"},{\"value\":6,\"description\":\"Anticipate future moves in a chess game\"}]},\"1.A.1.g.1\":{\"element_name\":\"Selective Attention\",\"recommended_question\":\"Using the examples below, what level best describes what you can currently do in Selective Attention?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Answer a business call with coworkers talking nearby\"},{\"value\":4,\"description\":\"Watch security monitors for intruders throughout the night shift\"},{\"value\":6,\"description\":\"Study a technical manual while listening to loud construction sounds\"}]},\"1.A.1.g.2\":{\"element_name\":\"Time Sharing\",\"recommended_question\":\"Using the examples below, what level best describes what you can currently do in Time Sharing?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Listen to music while entering numbers into a spreadsheet\"},{\"value\":3,\"description\":\"Watch street signs while driving at 30 miles an hour\"},{\"value\":6,\"description\":\"Monitor radar and radio transmissions to keep track of heavy aircraft traffic\"}]},\"1.A.2.a.1\":{\"element_name\":\"Arm-Hand Steadiness\",\"recommended_question\":\"Using the examples below, what level best describes what you can currently do in Arm-Hand Steadiness?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Light a candle\"},{\"value\":4,\"description\":\"Thread a needle\"},{\"value\":6,\"description\":\"Cut facets in a diamond\"}]},\"1.A.2.a.2\":{\"element_name\":\"Manual Dexterity\",\"recommended_question\":\"Using the examples below, what level best describes what you can currently do in Manual Dexterity?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Screw a light bulb into a light socket\"},{\"value\":4,\"description\":\"Pack oranges in crates as quickly as possible\"},{\"value\":7,\"description\":\"Perform open heart surgery with surgical instruments\"}]},\"1.A.2.a.3\":{\"element_name\":\"Finger Dexterity\",\"recommended_question\":\"Using the examples below, what level best describes what you can currently do in Finger Dexterity?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Put coins in a parking meter\"},{\"value\":4,\"description\":\"Attach small dials to audio equipment on an assembly line\"},{\"value\":6,\"description\":\"Put together the inner workings of a small wrist watch\"}]},\"1.A.2.b.1\":{\"element_name\":\"Control Precision\",\"recommended_question\":\"Using the examples below, what level best describes what you can currently do in Control Precision?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Adjust a room light with a dimmer switch\"},{\"value\":4,\"description\":\"Adjust farm tractor controls\"},{\"value\":6,\"description\":\"Drill a tooth\"}]},\"1.A.2.b.2\":{\"element_name\":\"Multilimb Coordination\",\"recommended_question\":\"Using the examples below, what level best describes what you can currently do in Multilimb Coordination?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Row a boat\"},{\"value\":4,\"description\":\"Operate a forklift truck in a warehouse\"},{\"value\":6,\"description\":\"Play the drum set in a jazz band\"}]},\"1.A.2.b.3\":{\"element_name\":\"Response Orientation\",\"recommended_question\":\"Using the examples below, what level best describes what you can currently do in Response Orientation?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"When a doorbell and phone ring at the same time, quickly select which to answer first\"},{\"value\":4,\"description\":\"Use either the brake or gas pedal when your vehicle is skidding\"},{\"value\":7,\"description\":\"In an out-of-control commercial aircraft, react quickly to restore control\"}]},\"1.A.2.b.4\":{\"element_name\":\"Rate Control\",\"recommended_question\":\"Using the examples below, what level best describes what you can currently do in Rate Control?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Ride a bicycle alongside a jogger\"},{\"value\":4,\"description\":\"Keep up with a car that changes speed\"},{\"value\":5,\"description\":\"Shoot a duck in flight\"}]},\"1.A.2.c.1\":{\"element_name\":\"Reaction Time\",\"recommended_question\":\"Using the examples below, what level best describes what you can currently do in Reaction Time?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Start to slow down the car when a traffic light turns yellow\"},{\"value\":4,\"description\":\"Press a button to stop operation when a warning light goes off\"},{\"value\":6,\"description\":\"Hit the brake when a pedestrian steps in front of your car\"}]},\"1.A.2.c.2\":{\"element_name\":\"Wrist-Finger Speed\",\"recommended_question\":\"Using the examples below, what level best describes what you can currently do in Wrist-Finger Speed?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Use a screwdriver to twist in a screw\"},{\"value\":3,\"description\":\"Carve roast beef in a cafeteria\"},{\"value\":6,\"description\":\"Type 90 words per minute\"}]},\"1.A.2.c.3\":{\"element_name\":\"Speed of Limb Movement\",\"recommended_question\":\"Using the examples below, what level best describes what you can currently do in Speed of Limb Movement?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Saw through a thin piece of wood\"},{\"value\":4,\"description\":\"Swat a fly with a fly swatter\"},{\"value\":6,\"description\":\"Throw punches in a boxing match\"}]},\"1.A.3.a.1\":{\"element_name\":\"Static Strength\",\"recommended_question\":\"Using the examples below, what level best describes what you can currently do in Static Strength?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Push an empty shopping cart\"},{\"value\":4,\"description\":\"Pull a 40-pound sack of fertilizer across the lawn\"},{\"value\":6,\"description\":\"Lift 75-pound bags of cement onto a truck\"}]},\"1.A.3.a.2\":{\"element_name\":\"Explosive Strength\",\"recommended_question\":\"Using the examples below, what level best describes what you can currently do in Explosive Strength?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Hit a nail with a hammer\"},{\"value\":4,\"description\":\"Jump onto a 3-foot high platform\"},{\"value\":7,\"description\":\"Throw a shot-put in a track meet\"}]},\"1.A.3.a.3\":{\"element_name\":\"Dynamic Strength\",\"recommended_question\":\"Using the examples below, what level best describes what you can currently do in Dynamic Strength?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Use pruning shears to trim a bush\"},{\"value\":5,\"description\":\"Climb a 48-foot long ladder\"},{\"value\":6,\"description\":\"Perform a gymnastics routine using the rings\"}]},\"1.A.3.a.4\":{\"element_name\":\"Trunk Strength\",\"recommended_question\":\"Using the examples below, what level best describes what you can currently do in Trunk Strength?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Sit up in an office chair\"},{\"value\":4,\"description\":\"Shovel snow for half an hour\"},{\"value\":6,\"description\":\"Do 100 sit-ups\"}]},\"1.A.3.b.1\":{\"element_name\":\"Stamina\",\"recommended_question\":\"Using the examples below, what level best describes what you can currently do in Stamina?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Walk 1\/4 mile\"},{\"value\":4,\"description\":\"Climb 6 flights of stairs\"},{\"value\":6,\"description\":\"Run 10 miles\"}]},\"1.A.3.c.1\":{\"element_name\":\"Extent Flexibility\",\"recommended_question\":\"Using the examples below, what level best describes what you can currently do in Extent Flexibility?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Reach to adjust the radio in a car\"},{\"value\":4,\"description\":\"Reach for a box on a high warehouse shelf\"},{\"value\":6,\"description\":\"Work under the dashboard of a car\"}]},\"1.A.3.c.2\":{\"element_name\":\"Dynamic Flexibility\",\"recommended_question\":\"Using the examples below, what level best describes what you can currently do in Dynamic Flexibility?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Hand pick a bushel of apples from a tree\"},{\"value\":5,\"description\":\"Perform a dance routine as part of a cheerleading squad\"},{\"value\":6,\"description\":\"Maneuver a kayak through swift rapids\"}]},\"1.A.3.c.3\":{\"element_name\":\"Gross Body Coordination\",\"recommended_question\":\"Using the examples below, what level best describes what you can currently do in Gross Body Coordination?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Get in and out of a truck\"},{\"value\":4,\"description\":\"Swim the length of a pool\"},{\"value\":6,\"description\":\"Perform a ballet dance\"}]},\"1.A.3.c.4\":{\"element_name\":\"Gross Body Equilibrium\",\"recommended_question\":\"Using the examples below, what level best describes what you can currently do in Gross Body Equilibrium?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Stand on a ladder\"},{\"value\":4,\"description\":\"Walk on ice across a pond\"},{\"value\":6,\"description\":\"Walk on narrow beams in high-rise construction\"}]},\"1.A.4.a.1\":{\"element_name\":\"Near Vision\",\"recommended_question\":\"Using the examples below, what level best describes what you can currently do in Near Vision?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Read indicators on the dashboard of a car\"},{\"value\":5,\"description\":\"Read the fine print of a legal document\"},{\"value\":6,\"description\":\"Detect minor defects in a diamond\"}]},\"1.A.4.a.2\":{\"element_name\":\"Far Vision\",\"recommended_question\":\"Using the examples below, what level best describes what you can currently do in Far Vision?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Read a roadside billboard\"},{\"value\":4,\"description\":\"Read the slides on a presentation from across a room\"},{\"value\":7,\"description\":\"Detect differences in ships on the horizon\"}]},\"1.A.4.a.3\":{\"element_name\":\"Visual Color Discrimination\",\"recommended_question\":\"Using the examples below, what level best describes what you can currently do in Visual Color Discrimination?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Separate laundry into colors and whites\"},{\"value\":4,\"description\":\"Trace electrical circuits marked by various colored wires\"},{\"value\":6,\"description\":\"Paint a color portrait of a person\"}]},\"1.A.4.a.4\":{\"element_name\":\"Night Vision\",\"recommended_question\":\"Using the examples below, what level best describes what you can currently do in Night Vision?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Read street signs at dusk (just after sunset)\"},{\"value\":4,\"description\":\"Read a book in a dimly lit setting\"},{\"value\":6,\"description\":\"Find your way through the woods on a moonless night\"}]},\"1.A.4.a.5\":{\"element_name\":\"Peripheral Vision\",\"recommended_question\":\"Using the examples below, what level best describes what you can currently do in Peripheral Vision?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Keep in step while marching in a band\"},{\"value\":4,\"description\":\"Be aware of the location of your teammates while dribbling a basketball\"},{\"value\":6,\"description\":\"Distinguish a teammate from a competitor passing by in a car race\"}]},\"1.A.4.a.6\":{\"element_name\":\"Depth Perception\",\"recommended_question\":\"Using the examples below, what level best describes what you can currently do in Depth Perception?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Merge a car into traffic on a city street\"},{\"value\":4,\"description\":\"Operate a crane to move materials from a truck bed to the ground\"},{\"value\":6,\"description\":\"Throw a long pass to a closely guarded teammate\"}]},\"1.A.4.a.7\":{\"element_name\":\"Glare Sensitivity\",\"recommended_question\":\"Using the examples below, what level best describes what you can currently do in Glare Sensitivity?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Drive on a familiar road on a cloudy day\"},{\"value\":5,\"description\":\"See boats on the horizon when sailing\"},{\"value\":6,\"description\":\"Snow ski in bright sunlight\"}]},\"1.A.4.b.1\":{\"element_name\":\"Hearing Sensitivity\",\"recommended_question\":\"Using the examples below, what level best describes what you can currently do in Hearing Sensitivity?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Notice a doorbell ringing\"},{\"value\":4,\"description\":\"Diagnose what's wrong with a car engine from its sound\"},{\"value\":6,\"description\":\"Tune an orchestra\"}]},\"1.A.4.b.2\":{\"element_name\":\"Auditory Attention\",\"recommended_question\":\"Using the examples below, what level best describes what you can currently do in Auditory Attention?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Listen to a lecture while people nearby are talking\"},{\"value\":4,\"description\":\"Listen for your flight announcement at a busy airport\"},{\"value\":6,\"description\":\"Listen to instructions from a coworker in a noisy saw mill\"}]},\"1.A.4.b.3\":{\"element_name\":\"Sound Localization\",\"recommended_question\":\"Using the examples below, what level best describes what you can currently do in Sound Localization?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Listen to a sound system to determine which speaker is working\"},{\"value\":4,\"description\":\"Find a ringing phone in an unfamiliar apartment\"},{\"value\":6,\"description\":\"Determining the direction of an emergency vehicle from the sound of the siren\"}]},\"1.A.4.b.4\":{\"element_name\":\"Speech Recognition\",\"recommended_question\":\"Using the examples below, what level best describes what you can currently do in Speech Recognition?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Recognize the voice of a coworker\"},{\"value\":4,\"description\":\"Identify a former customer's voice over the phone\"},{\"value\":6,\"description\":\"Understand a speech presented by someone with an unfamiliar accent\"}]},\"1.A.4.b.5\":{\"element_name\":\"Speech Clarity\",\"recommended_question\":\"Using the examples below, what level best describes what you can currently do in Speech Clarity?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":1,\"description\":\"Call numbers in a bingo game\"},{\"value\":4,\"description\":\"Make stadium-wide announcements during a sporting event\"},{\"value\":6,\"description\":\"Give a lecture to a large audience\"}]}};\n\n    window.pivotIsAbilitiesModule = function(pillar, mod) {\n        if (pillar !== 'Knowledge, Skills and Abilities') return false;\n\n        const pillarStore =\n            window.pivotMasterStore &&\n            window.pivotMasterStore[pillar];\n\n        const questions =\n            pillarStore &&\n            pillarStore[mod];\n\n        const list = Array.isArray(questions)\n            ? questions\n            : (questions && typeof questions === 'object'\n                ? Object.values(questions)\n                : []);\n\n        return list.length > 0 &&\n            list.every(function(question) {\n                return question &&\n                    String(question.id || '').trim().startsWith('1.A.');\n            });\n    };\n\n    window.pivotGetAbilityMigrationState = function() {\n        let state = window.safeLocalParse(\n            'pivot_ability_scale_migration',\n            {}\n        );\n\n        return state &&\n            typeof state === 'object' &&\n            !Array.isArray(state)\n                ? state\n                : {};\n    };\n\n    window.pivotMarkAbilityModuleMigrated = function(mod) {\n        let state = window.pivotGetAbilityMigrationState();\n        state[mod] = window.PIVOT_ABILITY_SCALE_VERSION;\n\n        localStorage.setItem(\n            'pivot_ability_scale_migration',\n            JSON.stringify(state)\n        );\n    };\n\n    window.pivotGetAbilityLevelConfig = function(questionId) {\n        return window.PIVOT_ABILITY_LEVEL_CONFIG[\n            String(questionId || '').trim()\n        ] || null;\n    };\n\n    window.pivotGetAbilityScaleData = function(questionId, value) {\n        const cfg = window.pivotGetAbilityLevelConfig(questionId);\n        const numeric = Number(value);\n\n        if (\n            !cfg ||\n            !Number.isFinite(numeric) ||\n            numeric < 0 ||\n            numeric > 7\n        ) return null;\n\n        const anchors = Array.isArray(cfg.anchors)\n            ? cfg.anchors.slice().sort(\n                (a, b) => Number(a.value) - Number(b.value)\n            )\n            : [];\n\n        const exact = anchors.find(\n            anchor => Number(anchor.value) === numeric\n        );\n\n        if (exact) {\n            return {\n                title: 'Level ' + numeric,\n                keywords: [\n                    String(exact.description || '').trim()\n                ].filter(Boolean)\n            };\n        }\n\n        const lower =\n            anchors.filter(\n                anchor => Number(anchor.value) < numeric\n            ).pop() || null;\n\n        const upper =\n            anchors.find(\n                anchor => Number(anchor.value) > numeric\n            ) || null;\n\n        const keywords = [];\n\n        if (lower && upper) {\n            keywords.push(\n                'Between the nearby O*NET reference examples'\n            );\n        } else if (!lower && upper) {\n            keywords.push(\n                'Below the Level ' + upper.value + ' reference example'\n            );\n        } else if (lower && !upper) {\n            keywords.push(\n                'Above the Level ' + lower.value + ' reference example'\n            );\n        }\n\n        if (lower) {\n            keywords.push(\n                'Level ' + lower.value + ': ' + lower.description\n            );\n        }\n\n        if (upper) {\n            keywords.push(\n                'Level ' + upper.value + ': ' + upper.description\n            );\n        }\n\n        return {\n            title: 'Level ' + numeric,\n            keywords: keywords\n        };\n    };\n\n    window.pivotGetAbilityAnchorHtml = function(questionId) {\n        const cfg = window.pivotGetAbilityLevelConfig(questionId);\n\n        if (!cfg || !Array.isArray(cfg.anchors)) return '';\n\n        const esc =\n            typeof window.pivotEscapeHelpHtml === 'function'\n                ? window.pivotEscapeHelpHtml\n                : function(value) {\n                    return String(value == null ? '' : value)\n                        .replace(\/&\/g, '&amp;')\n                        .replace(\/<\/g, '&lt;')\n                        .replace(\/>\/g, '&gt;')\n                        .replace(\/\"\/g, '&quot;')\n                        .replace(\/'\/g, '&#039;');\n                };\n\n        return `\n            <div style=\"margin-top:16px;border:1px solid #dbe3ef;border-radius:14px;padding:14px;background:#ffffff;\">\n                <div style=\"font-size:.72rem;font-weight:850;text-transform:uppercase;letter-spacing:.06em;color:#002FA7;margin-bottom:10px;\">\n                    O*NET reference examples\n                <\/div>\n\n                <div style=\"display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;\">\n                    ${cfg.anchors.map(anchor => `\n                        <div style=\"border:1px solid #e2e8f0;border-radius:10px;padding:10px;background:#f8fafc;\">\n                            <div style=\"font-size:.72rem;font-weight:850;color:#002FA7;margin-bottom:4px;\">\n                                Level ${esc(anchor.value)}\n                            <\/div>\n\n                            <div style=\"font-size:.78rem;line-height:1.4;color:#475569;\">\n                                ${esc(anchor.description)}\n                            <\/div>\n                        <\/div>\n                    `).join('')}\n                <\/div>\n\n                <div style=\"margin-top:10px;font-size:.75rem;line-height:1.4;color:#64748b;\">\n                    Use these official O*NET examples to choose the highest Ability level that best matches what you can currently do.\n                <\/div>\n            <\/div>\n        `;\n    };\n\n    window.PIVOT_BASIC_SKILLS_SCALE_VERSION = '30.3-basic-skills-level-v1';\n    window.PIVOT_BASIC_SKILLS_LEVEL_CONFIG = {\"2.A.1.a\":{\"element_name\":\"Reading Comprehension\",\"recommended_question\":\"Using the examples below, what level best describes what you can currently do in Reading Comprehension?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Read step-by-step instructions for completing a form\"},{\"value\":4,\"description\":\"Understand an email from management describing new personnel policies\"},{\"value\":6,\"description\":\"Read a scientific journal article describing surgical procedures\"}]},\"2.A.1.b\":{\"element_name\":\"Active Listening\",\"recommended_question\":\"Using the examples below, what level best describes what you can currently do in Active Listening?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Take a customer's order\"},{\"value\":4,\"description\":\"Answer inquiries regarding credit references\"},{\"value\":6,\"description\":\"Serve as a judge in a complex legal disagreement\"}]},\"2.A.1.c\":{\"element_name\":\"Writing\",\"recommended_question\":\"Using the examples below, what level best describes what you can currently do in Writing?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Write down a guest's order at a restaurant\"},{\"value\":4,\"description\":\"Write an email to staff outlining new directives\"},{\"value\":6,\"description\":\"Write a novel for publication\"}]},\"2.A.1.d\":{\"element_name\":\"Speaking\",\"recommended_question\":\"Using the examples below, what level best describes what you can currently do in Speaking?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Greet tourists and explain tourist attractions\"},{\"value\":4,\"description\":\"Interview applicants to obtain personal and work history\"},{\"value\":6,\"description\":\"Argue a legal case before the Supreme Court\"}]},\"2.A.1.e\":{\"element_name\":\"Mathematics\",\"recommended_question\":\"Using the examples below, what level best describes what you can currently do in Mathematics?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Count the amount of change to be given to a customer\"},{\"value\":4,\"description\":\"Calculate the square footage of a new home under construction\"},{\"value\":6,\"description\":\"Develop a mathematical model to simulate and resolve an engineering problem\"}]},\"2.A.1.f\":{\"element_name\":\"Science\",\"recommended_question\":\"Using the examples below, what level best describes what you can currently do in Science?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Conduct standard tests to determine soil quality\"},{\"value\":4,\"description\":\"Conduct product tests to ensure safety standards are met\"},{\"value\":6,\"description\":\"Analyze aerodynamic systems to determine the practicality of a design\"}]},\"2.A.2.a\":{\"element_name\":\"Critical Thinking\",\"recommended_question\":\"Using the examples below, what level best describes what you can currently do in Critical Thinking?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Determine whether a subordinate has a good excuse for being late\"},{\"value\":4,\"description\":\"Evaluate customer complaints and determine appropriate responses\"},{\"value\":6,\"description\":\"Write legal brief challenging a federal law\"}]},\"2.A.2.b\":{\"element_name\":\"Active Learning\",\"recommended_question\":\"Using the examples below, what level best describes what you can currently do in Active Learning?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Think about the implications of a news article for job opportunities\"},{\"value\":4,\"description\":\"Determine the impact of new menu changes on a restaurant's purchasing requirements\"},{\"value\":6,\"description\":\"Identify the implications of a new scientific theory for product design\"}]},\"2.A.2.c\":{\"element_name\":\"Learning Strategies\",\"recommended_question\":\"Using the examples below, what level best describes what you can currently do in Learning Strategies?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Learn a different method of completing a task from a coworker\"},{\"value\":4,\"description\":\"Identify an alternative approach to help trainees who are having difficulties\"},{\"value\":6,\"description\":\"Apply principles of educational psychology to develop new teaching methods\"}]},\"2.A.2.d\":{\"element_name\":\"Monitoring\",\"recommended_question\":\"Using the examples below, what level best describes what you can currently do in Monitoring?\",\"scale_min\":0,\"scale_max\":7,\"anchors\":[{\"value\":2,\"description\":\"Proofread and correct a letter\"},{\"value\":4,\"description\":\"Monitor a meeting and revise the agenda to ensure important topics are discussed\"},{\"value\":6,\"description\":\"Review corporate productivity and develop a plan to increase it\"}]}};\n\n    window.pivotIsBasicSkillsModule = function(pillar, mod) {\n        return pillar === 'Basic Skills Assessment';\n    };\n\n    window.pivotGetBasicSkillsMigrationState = function() {\n        let state = window.safeLocalParse('pivot_basic_skills_scale_migration', {});\n        return state && typeof state === 'object' && !Array.isArray(state) ? state : {};\n    };\n\n    window.pivotMarkBasicSkillsModuleMigrated = function(mod) {\n        let state = window.pivotGetBasicSkillsMigrationState();\n        state[mod] = window.PIVOT_BASIC_SKILLS_SCALE_VERSION;\n        localStorage.setItem('pivot_basic_skills_scale_migration', JSON.stringify(state));\n    };\n\n    window.pivotGetBasicSkillsLevelConfig = function(questionId) {\n        return window.PIVOT_BASIC_SKILLS_LEVEL_CONFIG[String(questionId || '').trim()] || null;\n    };\n\n    window.pivotGetBasicSkillsScaleData = function(questionId, value) {\n        const cfg = window.pivotGetBasicSkillsLevelConfig(questionId);\n        const numeric = Number(value);\n        if (!cfg || !Number.isFinite(numeric) || numeric < 0 || numeric > 7) return null;\n\n        const anchors = Array.isArray(cfg.anchors)\n            ? cfg.anchors.slice().sort((a, b) => Number(a.value) - Number(b.value))\n            : [];\n\n        const exact = anchors.find(anchor => Number(anchor.value) === numeric);\n        if (exact) {\n            return {\n                title: 'Level ' + numeric,\n                keywords: [String(exact.description || '').trim()].filter(Boolean)\n            };\n        }\n\n        const lower = anchors.filter(anchor => Number(anchor.value) < numeric).pop() || null;\n        const upper = anchors.find(anchor => Number(anchor.value) > numeric) || null;\n        const keywords = [];\n\n        if (lower && upper) {\n            keywords.push('Between the nearby O*NET reference examples');\n        } else if (!lower && upper) {\n            keywords.push('Below the Level ' + upper.value + ' reference example');\n        } else if (lower && !upper) {\n            keywords.push('Above the Level ' + lower.value + ' reference example');\n        }\n\n        if (lower) keywords.push('Level ' + lower.value + ': ' + lower.description);\n        if (upper) keywords.push('Level ' + upper.value + ': ' + upper.description);\n\n        return {\n            title: 'Level ' + numeric,\n            keywords: keywords\n        };\n    };\n\n    window.pivotGetBasicSkillsAnchorHtml = function(questionId) {\n        const cfg = window.pivotGetBasicSkillsLevelConfig(questionId);\n        if (!cfg || !Array.isArray(cfg.anchors)) return '';\n\n        const esc = typeof window.pivotEscapeHelpHtml === 'function'\n            ? window.pivotEscapeHelpHtml\n            : function(value) {\n                return String(value == null ? '' : value)\n                    .replace(\/&\/g, '&amp;')\n                    .replace(\/<\/g, '&lt;')\n                    .replace(\/>\/g, '&gt;')\n                    .replace(\/\"\/g, '&quot;')\n                    .replace(\/'\/g, '&#039;');\n            };\n\n        return `\n            <div style=\"margin-top:16px;border:1px solid #dbe3ef;border-radius:14px;padding:14px;background:#ffffff;\">\n                <div style=\"font-size:.72rem;font-weight:850;text-transform:uppercase;letter-spacing:.06em;color:#002FA7;margin-bottom:10px;\">\n                    O*NET reference examples\n                <\/div>\n                <div style=\"display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;\">\n                    ${cfg.anchors.map(anchor => `\n                        <div style=\"border:1px solid #e2e8f0;border-radius:10px;padding:10px;background:#f8fafc;\">\n                            <div style=\"font-size:.72rem;font-weight:850;color:#002FA7;margin-bottom:4px;\">Level ${esc(anchor.value)}<\/div>\n                            <div style=\"font-size:.78rem;line-height:1.4;color:#475569;\">${esc(anchor.description)}<\/div>\n                        <\/div>\n                    `).join('')}\n                <\/div>\n                <div style=\"font-size:.74rem;line-height:1.4;color:#64748b;margin-top:10px;\">\n                    Choose the highest level that best matches what you can currently do. Levels between the examples represent performance between those examples.\n                <\/div>\n            <\/div>\n        `;\n    };\n\n    window.PIVOT_CONTEXT_PREFERENCE_VERSION = '30.3-context-preference-v2-explicit-input';\n    window.pivotIsWorkContextPreferenceModule = function(pillar, mod) {\n        return pillar === 'Work Context' && mod === 'Work Context';\n    };\n    window.pivotGetContextMigrationState = function() {\n        let state = window.safeLocalParse('pivot_context_preference_migration', {});\n        return state && typeof state === 'object' && !Array.isArray(state) ? state : {};\n    };\n    window.pivotMarkContextModuleMigrated = function(mod) {\n        let state = window.pivotGetContextMigrationState();\n        state[mod] = window.PIVOT_CONTEXT_PREFERENCE_VERSION;\n        localStorage.setItem('pivot_context_preference_migration', JSON.stringify(state));\n    };\n    window.pivotIsContextNoPreference = function(value) {\n        return String(value == null ? '' : value).trim().toUpperCase() === 'NP';\n    };\n    window.pivotIsAnsweredAssessmentResponse = function(pillar, mod, value) {\n        if (value === undefined || value === null || value === '') return false;\n\n        if (\n            window.pivotIsWorkContextPreferenceModule(pillar, mod) &&\n            window.pivotIsContextNoPreference(value)\n        ) {\n            return true;\n        }\n\n        const numeric = Number(value);\n        if (!Number.isFinite(numeric)) return false;\n\n        if (window.pivotIsBasicSkillsModule(pillar, mod)) {\n            return numeric >= 0 && numeric <= 7;\n        }\n\n        if (window.pivotIsAbilitiesModule(pillar, mod)) {\n            const migrationState =\n                window.pivotGetAbilityMigrationState\n                    ? window.pivotGetAbilityMigrationState()\n                    : {};\n\n            if (\n                migrationState[mod] !==\n                window.PIVOT_ABILITY_SCALE_VERSION\n            ) {\n                return false;\n            }\n\n            return numeric >= 0 && numeric <= 7;\n        }\n\n        if (window.pivotIsKnowledgeModule(pillar, mod)) {\n            const migrationState =\n                window.pivotGetKnowledgeMigrationState\n                    ? window.pivotGetKnowledgeMigrationState()\n                    : {};\n\n            if (\n                migrationState[mod] !==\n                window.PIVOT_KNOWLEDGE_SCALE_VERSION\n            ) {\n                return false;\n            }\n\n            return numeric >= 0 && numeric <= 7;\n        }\n\n        if (window.pivotIsTransferableSkillsModule(pillar, mod)) {\n            const migrationState =\n                window.pivotGetTransferableSkillsMigrationState\n                    ? window.pivotGetTransferableSkillsMigrationState()\n                    : {};\n\n            if (\n                migrationState[mod] !==\n                window.PIVOT_TRANSFERABLE_SKILLS_SCALE_VERSION\n            ) {\n                return false;\n            }\n\n            return numeric >= 0 && numeric <= 7;\n        }\n\n        if (window.pivotIsWorkActivitiesModule(pillar, mod)) {\n            const migrationState =\n                window.pivotGetWorkActivitiesMigrationState\n                    ? window.pivotGetWorkActivitiesMigrationState()\n                    : {};\n\n            if (\n                migrationState[mod] !==\n                window.PIVOT_WORK_ACTIVITIES_SCALE_VERSION\n            ) {\n                return false;\n            }\n\n            return numeric >= 0 && numeric <= 7;\n        }\n\n        return numeric > 0;\n    };\n    window.pivotGetWorkContextPreferenceScores = function() {\n        const root = window.safeLocalParse('pivotScores', {});\n        const pillar = root && root['Work Context'];\n        const scores = pillar && pillar['Work Context'];\n        return scores && typeof scores === 'object' && !Array.isArray(scores) ? scores : {};\n    };\n\n    window.pivotGetContextScaleMap = function(questionId) {\n        const raw = window.pivotContextGradingStore && window.pivotContextGradingStore[questionId];\n        return raw && typeof raw === 'object' ? raw : {};\n    };\n    window.pivotGetContextScaleMax = function(questionId) {\n        const keys = Object.keys(window.pivotGetContextScaleMap(questionId))\n            .map(Number)\n            .filter(v => Number.isFinite(v) && v > 0);\n        return keys.length ? Math.max.apply(null, keys) : 5;\n    };\n    window.pivotGetContextScaleLabel = function(questionId, value) {\n        const map = window.pivotGetContextScaleMap(questionId);\n        return map && map[value] ? String(map[value]).trim() : '';\n    };\n    window.pivotRefreshContextNoPreferenceButton = function(active) {\n        const btn = document.getElementById('pivot-context-no-preference');\n        if (!btn) return;\n        btn.setAttribute('aria-pressed', active ? 'true' : 'false');\n        btn.style.background = active ? '#e8efff' : '#ffffff';\n        btn.style.borderColor = active ? '#002FA7' : '#b9c7df';\n        btn.style.color = '#002FA7';\n        btn.style.boxShadow = active ? '0 0 0 2px rgba(0,47,167,.10)' : 'none';\n        btn.textContent = active ? '\u2713 No preference selected' : 'No preference \u2014 this would not affect my choice';\n    };\n    window.pivotSetContextNoPreference = function() {\n        const state = window.pivotActiveAssessment || {};\n        if (!window.pivotIsWorkContextPreferenceModule(state.pillar, state.mod)) return;\n        const questions = Array.isArray(state.questions) ? state.questions : [];\n        const q = questions[state.currentIndex];\n        if (!q) return;\n        state.scores[q.id] = 'NP';\n        state.scores['_date'] = window.pivotToday();\n        let allScores = window.safeLocalParse('pivotScores', {});\n        if (!allScores[state.pillar]) allScores[state.pillar] = {};\n        allScores[state.pillar][state.mod] = state.scores;\n        window.pivotSaveAll('pivotScores', allScores);\n        window.pivotRefreshContextNoPreferenceButton(true);\n        window.pivotRefreshRatingNumberButtons(null, false);\n        const bigNumber = document.getElementById('slider_current_val');\n        if (bigNumber) bigNumber.innerText = 'NP';\n        const descriptorBoxes = Array.from(document.querySelectorAll('.pivot-active-descriptor'));\n        descriptorBoxes.forEach(function(descriptorBox) {\n            descriptorBox.innerHTML = `\n                <div class=\"descriptor-eyebrow\">Current response<\/div>\n                <h4 class=\"descriptor-title\" style=\"font-size:1.42rem; margin:0 0 12px; color:#0f172a; line-height:1.25;\">No preference<\/h4>\n                <p class=\"descriptor-support\">This working condition would not influence your preference for a role or work situation. PIVOT will leave it out of Context & Environment alignment rather than treating it as a match or mismatch.<\/p>\n            `;\n        });\n        window.pivotDebouncedSync();\n    };\n    window.pivotBuildContextPreferenceWordcloudHtml = function(compact = false) {\n        const master =\n            window.pivotMasterStore &&\n            window.pivotMasterStore['Work Context'];\n\n        const questionsRaw =\n            master && master['Work Context']\n                ? master['Work Context']\n                : [];\n\n        const questions =\n            Array.isArray(questionsRaw)\n                ? questionsRaw\n                : Object.values(questionsRaw || {});\n\n        const scores =\n            window.pivotGetWorkContextPreferenceScores();\n\n        const tagsData = [];\n\n        questions.forEach(function(question) {\n            if (!question || !question.id) return;\n\n            const rawValue = scores[question.id];\n\n            if (\n                !window.pivotIsAnsweredAssessmentResponse(\n                    'Work Context',\n                    'Work Context',\n                    rawValue\n                ) ||\n                window.pivotIsContextNoPreference(rawValue)\n            ) {\n                return;\n            }\n\n            const value = Number(rawValue);\n            const scaleMax =\n                Number(window.pivotGetContextScaleMax(question.id));\n\n            if (\n                !Number.isFinite(value) ||\n                !Number.isFinite(scaleMax) ||\n                scaleMax < 2\n            ) {\n                return;\n            }\n\n            let weight = 0;\n            let tier = '';\n\n            if (value === scaleMax) {\n                weight = 5;\n                tier = 'Highest preference';\n            } else if (value === (scaleMax - 1)) {\n                weight = 4;\n                tier = 'Second-highest preference';\n            } else {\n                return;\n            }\n\n            const label =\n                window.pivotGetContextScaleLabel(\n                    question.id,\n                    value\n                );\n\n            tagsData.push({\n                id: question.id,\n                text: String(\n                    question.title || question.id\n                ).trim(),\n                weight: weight,\n                tier: tier,\n                label: String(label || '').trim()\n            });\n        });\n\n        if (!tagsData.length) {\n            if (compact) {\n                return `\n                    <div style=\"font-size:3.5rem;\">\u2601\ufe0f<\/div>\n                    <div style=\"font-size:.7rem;color:#94a3b8;font-weight:700;text-transform:uppercase;margin-top:5px;text-align:center;\">\n                        Awaiting top preferences\n                    <\/div>\n                `;\n            }\n\n            return `\n                <p style=\"color:#94a3b8;font-style:italic;margin:10px 0;text-align:center;\">\n                    Your highest and second-highest Context &amp; Environment preferences will appear here as you complete the assessment.\n                <\/p>\n            `;\n        }\n\n        \/\/ Match the other dashboard word clouds by mixing the displayed\n        \/\/ terms rather than presenting them as a ranked list.\n        tagsData.sort(function() {\n            return Math.random() - 0.5;\n        });\n\n        const containerClass =\n            compact\n                ? 'pivot-wordcloud-container compact pivot-context-wordcloud'\n                : 'pivot-wordcloud-container pivot-context-wordcloud';\n\n        let cloudHtml = `<div class=\"${containerClass}\">`;\n\n        tagsData.forEach(function(tag) {\n            const rotation =\n                (Math.random() * 8 - 4).toFixed(1);\n\n            const safeText =\n                typeof window.pivotEscapeHelpHtml === 'function'\n                    ? window.pivotEscapeHelpHtml(tag.text)\n                    : tag.text;\n\n            const tooltip =\n                tag.tier +\n                (tag.label ? ': ' + tag.label : '');\n\n            const safeTooltip =\n                typeof window.pivotEscapeHelpHtml === 'function'\n                    ? window.pivotEscapeHelpHtml(tooltip)\n                    : tooltip;\n\n            cloudHtml += `\n                <span\n                    class=\"wc-tag wc-size-${tag.weight} pivot-context-cloud-tag\"\n                    style=\"transform:rotate(${rotation}deg);\"\n                    title=\"${safeTooltip}\"\n                >${safeText}<\/span>\n            `;\n        });\n\n        cloudHtml += `<\/div>`;\n\n        return cloudHtml;\n    };\n\n    window.pivotBuildContextPreferenceSummaryHtml = function(compact = false) {\n        const master =\n            window.pivotMasterStore &&\n            window.pivotMasterStore['Work Context'];\n\n        const questionsRaw =\n            master && master['Work Context']\n                ? master['Work Context']\n                : [];\n\n        const questions =\n            Array.isArray(questionsRaw)\n                ? questionsRaw\n                : Object.values(questionsRaw || {});\n\n        const scores =\n            window.pivotGetWorkContextPreferenceScores();\n\n        let answered = 0;\n        let noPref = 0;\n        let highestCount = 0;\n        let secondHighestCount = 0;\n\n        questions.forEach(function(question) {\n            if (!question || !question.id) return;\n\n            const rawValue = scores[question.id];\n\n            if (\n                !window.pivotIsAnsweredAssessmentResponse(\n                    'Work Context',\n                    'Work Context',\n                    rawValue\n                )\n            ) {\n                return;\n            }\n\n            answered++;\n\n            if (window.pivotIsContextNoPreference(rawValue)) {\n                noPref++;\n                return;\n            }\n\n            const value = Number(rawValue);\n            const scaleMax =\n                Number(window.pivotGetContextScaleMax(question.id));\n\n            if (\n                !Number.isFinite(value) ||\n                !Number.isFinite(scaleMax)\n            ) {\n                return;\n            }\n\n            if (value === scaleMax) {\n                highestCount++;\n            } else if (value === (scaleMax - 1)) {\n                secondHighestCount++;\n            }\n        });\n\n        const specified =\n            Math.max(0, answered - noPref);\n\n        const cloud =\n            window.pivotBuildContextPreferenceWordcloudHtml(\n                compact\n            );\n\n        if (compact) {\n            return `\n                <div style=\"width:100%;height:100%;display:flex;align-items:center;justify-content:center;\">\n                    ${cloud}\n                <\/div>\n            `;\n        }\n\n        return `\n            <div style=\"text-align:center;\">\n                <div style=\"display:flex;justify-content:center;gap:12px;flex-wrap:wrap;margin:4px 0 14px;\">\n                    <span class=\"pivot-badge\">${answered}\/${questions.length || 57} answered<\/span>\n                    <span class=\"pivot-badge\">${specified} specified preferences<\/span>\n                    <span class=\"pivot-badge\">${noPref} no preference<\/span>\n                <\/div>\n\n                <div style=\"min-height:180px;display:flex;align-items:center;justify-content:center;\">\n                    ${cloud}\n                <\/div>\n\n                <p style=\"color:#64748b;font-size:.8rem;line-height:1.45;margin:12px 0 0;\">\n                    The largest orange terms are your highest selected preferences. The green terms are your second-highest selected preferences. Lower selections and \u201cNo preference\u201d responses are intentionally left out of the cloud.\n                <\/p>\n            <\/div>\n        `;\n    };\n\n    window.pivotAIJobData = {};\n    window.pivotCareerInsightsLoading = {};\n    window.pivotCurrentJobView = '';\n\n    window.pivotBuildCareerRegionOptions = function(aiData) {\n        if (!aiData || typeof aiData !== 'object') return '';\n\n        let options = '';\n        if (aiData['Global Summary']) {\n            options += `<option value=\"Global Summary\">\ud83c\udf0d Global overview<\/option>`;\n        }\n\n        const continents = ['Europe', 'North America', 'Asia', 'Oceania', 'South America', 'Africa', 'Middle East'];\n        const locations = Object.keys(aiData)\n            .filter(key => key !== 'Global Summary')\n            .sort((a, b) => {\n                const aContinent = continents.includes(a);\n                const bContinent = continents.includes(b);\n                if (aContinent && !bContinent) return -1;\n                if (!aContinent && bContinent) return 1;\n                return a.localeCompare(b);\n            });\n\n        locations.forEach(loc => {\n            const icon = continents.includes(loc) ? '\ud83c\udf10' : '\ud83d\udccd';\n            const safeValue = String(loc).replace(\/\"\/g, '&quot;');\n            options += `<option value=\"${safeValue}\">${icon} ${loc}<\/option>`;\n        });\n\n        return options;\n    };\n\n    window.pivotApplyCareerInsights = function(jobName, aiData) {\n        if (window.pivotCurrentJobView !== jobName) return;\n\n        const select = document.getElementById('pivot-career-region-select');\n        const status = document.getElementById('pivot-career-insight-status');\n\n        if (!select) return;\n\n        const optionsHtml = window.pivotBuildCareerRegionOptions(aiData);\n\n        if (!optionsHtml) {\n            select.innerHTML = '<option value=\"\">Information unavailable<\/option>';\n            select.disabled = true;\n            if (status) status.textContent = 'Career information is not available for this occupation yet.';\n            return;\n        }\n\n        select.innerHTML = optionsHtml;\n        select.disabled = false;\n\n        const defaultLoc = aiData['Global Summary']\n            ? 'Global Summary'\n            : Object.keys(aiData)[0];\n\n        select.value = defaultLoc;\n        if (status) status.textContent = '';\n        window.pivotChangeJobRegion(defaultLoc);\n    };\n\n    window.pivotLoadCareerInsights = function(jobName) {\n        const safeKey = window.getSafeJobKey(jobName);\n\n        if (!safeKey) {\n            return Promise.reject(new Error('Invalid career key'));\n        }\n\n        if (\n            window.pivotAIJobData[safeKey] &&\n            Object.keys(window.pivotAIJobData[safeKey]).length > 0\n        ) {\n            window.pivotApplyCareerInsights(\n                jobName,\n                window.pivotAIJobData[safeKey]\n            );\n            return Promise.resolve(window.pivotAIJobData[safeKey]);\n        }\n\n        if (window.pivotCareerInsightsLoading[safeKey]) {\n            return window.pivotCareerInsightsLoading[safeKey];\n        }\n\n        const api = window.PivotCareerInsightsAPI || null;\n\n        if (!api || !api.ajaxUrl || !api.nonce) {\n            return Promise.reject(new Error('Career insights API is unavailable'));\n        }\n\n        const params = new URLSearchParams();\n        params.set('action', 'pivot_fetch_career_insights');\n        params.set('nonce', api.nonce);\n        params.set('job', safeKey);\n\n        const request = fetch(api.ajaxUrl, {\n            method: 'POST',\n            credentials: 'same-origin',\n            cache: 'no-store',\n            headers: {\n                'Content-Type': 'application\/x-www-form-urlencoded; charset=UTF-8'\n            },\n            body: params.toString()\n        })\n        .then(response => {\n            if (!response.ok) {\n                throw new Error('Career insights request failed');\n            }\n            return response.json();\n        })\n        .then(payload => {\n            if (\n                !payload ||\n                payload.success !== true ||\n                !payload.data ||\n                !payload.data.locations ||\n                typeof payload.data.locations !== 'object'\n            ) {\n                throw new Error('Invalid career insights payload');\n            }\n\n            window.pivotAIJobData[safeKey] = payload.data.locations;\n            window.pivotApplyCareerInsights(jobName, payload.data.locations);\n\n            return payload.data.locations;\n        })\n        .catch(error => {\n            console.error('[PIVOT] Career insights load error:', error);\n\n            if (window.pivotCurrentJobView === jobName) {\n                const select = document.getElementById('pivot-career-region-select');\n                const status = document.getElementById('pivot-career-insight-status');\n\n                if (select) {\n                    select.innerHTML = '<option value=\"\">Information unavailable<\/option>';\n                    select.disabled = true;\n                }\n\n                ['fit', 'future', 'reward', 'reqs'].forEach(tab => {\n                    const el = document.getElementById('job-content-' + tab);\n                    if (el) {\n                        el.textContent = 'Career information could not be loaded. Please try again.';\n                    }\n                });\n\n                if (status) {\n                    status.textContent = 'Career information could not be loaded.';\n                }\n            }\n\n            throw error;\n        })\n        .finally(() => {\n            delete window.pivotCareerInsightsLoading[safeKey];\n        });\n\n        window.pivotCareerInsightsLoading[safeKey] = request;\n        return request;\n    };\n    window.pivotActiveActionContext = {}; \n\n    window.pivotSaveAll = function(key, dataObject) { localStorage.setItem(key, JSON.stringify(dataObject)); };\n\n    if (typeof window.pivotUserStatus === 'undefined') { window.pivotUserStatus = { tier: 'guest' }; }\n\n    \/\/ PIVOT v2.16.4 \u2014 Admin Access Bridge\n    \/\/ WordPress supplies window.pivotWPAdminStatus separately on the frontend.\n    \/\/ Honour that server-generated administrator flag before membership-tier fallback.\n    window.pivotGetUserTier = function() {\n        \/\/ PIVOT v2.16.10 \u2014 authoritative early access state.\n        \/\/ The staging_wp_head bridge publishes this before Elementor\/shortcodes run,\n        \/\/ and legacy shortcode output cannot overwrite this namespaced object.\n        if (\n            window.PIVOT_EARLY_ACCESS_STATE &&\n            window.PIVOT_EARLY_ACCESS_STATE.tier\n        ) {\n            return String(window.PIVOT_EARLY_ACCESS_STATE.tier).toLowerCase();\n        }\n\n        \/\/ Backward-compatible fallbacks.\n        if (window.pivotWPAdminStatus === true) return 'administrator';\n\n        return (window.pivotUserStatus && window.pivotUserStatus.tier)\n            ? window.pivotUserStatus.tier\n            : 'guest';\n    };\n\n    window.PIVOT_PREMIUM_URL = new URL('premium-upgrade\/', window.pivotGetSiteBaseUrl()).href;\n\n    window.pivotIsPremiumUser = function() {\n        const tier = String(window.pivotGetUserTier ? window.pivotGetUserTier() : 'guest').toLowerCase();\n        return ['premium', 'corporate', 'admin', 'administrator'].includes(tier);\n    };\n\n    \/\/ PIVOT v2.16.12 \u2014 authoritative render-time Premium resolver.\n    \/\/ Assessment\/resource rendering must not depend solely on mutable legacy\n    \/\/ globals that can be rewritten later by old shortcode output.\n    window.pivotHasAuthoritativePremiumAccess = function() {\n        const state = window.PIVOT_EARLY_ACCESS_STATE;\n\n        if (state && state.tier) {\n            const tier = String(state.tier).trim().toLowerCase();\n            if (['premium', 'corporate', 'admin', 'administrator'].includes(tier)) {\n                return true;\n            }\n\n            \/\/ If the authoritative bridge explicitly identifies a Free\/Guest user,\n            \/\/ honour that result rather than allowing a stale legacy global to elevate it.\n            if (['free', 'guest'].includes(tier)) {\n                return false;\n            }\n        }\n\n        \/\/ Backward-compatible fallback for pages where the early bridge is absent.\n        return (typeof window.pivotIsPremiumUser === 'function')\n            ? window.pivotIsPremiumUser()\n            : false;\n    };\n\n    window.pivotIsPremiumContent = function(item) {\n        if (!item || typeof item !== 'object') return false;\n        const tier = String(item.tier || item.access || item.membership || '').toLowerCase();\n        return tier === 'premium' || tier.includes('premium') || item.premium === true || item.isPremium === true;\n    };\n\n    window.pivotGoPremium = function() {\n        window.location.assign(window.PIVOT_PREMIUM_URL);\n    };\n\n   \/\/ =========================================================\n    \/\/ PIVOT HELP v1\n    \/\/ One reusable help engine for dashboard and assessment \"?\" buttons.\n    \/\/ =========================================================\n\n    window.pivotHelpDictionary = {\n\n        'development_snapshot': {\n            eyebrow: 'Your current development picture',\n            intro: 'This snapshot shows how many capability areas you have assessed and how your current self-ratings are spread across the 0\u20137 capability scale.',\n            sections: [\n                {\n                    title: 'What the large number means',\n                    text: 'It is the number of capability areas you have assessed. It is a count, not a grade, percentage or overall performance score.'\n                },\n                {\n                    title: 'What is included',\n                    text: 'The snapshot uses the five O*NET-aligned capability groups that share the 0\u20137 Level scale: Essential Skills (O*NET Basic Skills), Abilities, Knowledge, Transferable Skills and Work Activities. Interests, Context & Environment, Natural Approach and values are shown separately.'\n                },\n                {\n                    title: 'How to read the three ranges',\n                    text: 'PIVOT groups your current self-ratings into 0\u20132 Developing, 3\u20134 Established and 5\u20137 Higher level. These are broad descriptive ranges to help you read your profile. They are not pass or fail bands.'\n                }\n            ],\n            tip: 'The most useful development measure is change over time. A later check-in can compare the same capability areas on the same scale to show where your self-assessed capability has changed.'\n        },\n\n        'action_plan': {\n            eyebrow: 'Turn insight into action',\n            intro: 'Your Self-Development Journal is where you can plan development actions, record what you complete and reflect on what you learn.',\n            sections: [\n                {\n                    title: 'Plan an action',\n                    text: 'Add a development action when you identify something you want to strengthen, explore, practise or understand better.'\n                },\n                {\n                    title: 'Keep it practical',\n                    text: 'Describe what you will actually do. When you finish, mark the action as completed and add a short reflection if it would be useful.'\n                },\n                {\n                    title: 'Why it helps',\n                    text: 'PIVOT is designed for self-directed development, not just self-assessment. Your journal helps you turn what you learn about yourself into useful next steps.'\n                }\n            ],\n            tip: 'Choose actions that are realistic for you. A small action you complete can be more useful than a large plan you never start.'\n        },\n\n        'career_engine': {\n            eyebrow: 'Career exploration',\n            intro: 'The Career Explorer uses your PIVOT self-assessments to show how your current profile compares with different occupations.',\n            sections: [\n                {\n                    title: 'What Career Alignment means',\n                    text: 'Career Alignment compares four areas: Capability, Context & Environment, Career Interests and Natural Approach. Each area contributes 25% when enough relevant answers are available in all four areas.'\n                },\n                {\n                    title: 'When no overall percentage is shown',\n                    text: 'Career Alignment stays hidden until you have answered enough relevant questions in all four areas. This helps prevent an incomplete profile from producing a misleading overall percentage.'\n                },\n                {\n                    title: 'What I Value Most',\n                    text: 'Your values remain important guidance, but they are not included in the Career Alignment percentage because PIVOT does not currently have a suitable occupation-side O*NET benchmark for them.'\n                },\n                {\n                    title: 'How to use the results',\n                    text: 'Use Career Alignment as a starting point for exploration, not a decision about what you should do. Your circumstances, qualifications, opportunities, goals and personal priorities also matter.'\n                }\n            ],\n            tip: 'A lower percentage does not mean you cannot pursue a career. It shows where your current self-assessment differs from the occupation data and may give you useful questions to explore.'\n        },\n\n        'growth_hub': {\n            eyebrow: 'Keep developing',\n            intro: 'The PIVOT Growth Hub brings together courses, guides, articles and tools to support your next development step.',\n            sections: [\n                {\n                    title: 'Find what you need',\n                    text: 'Choose something that connects with what you want to learn, practise, improve or understand better.'\n                },\n                {\n                    title: 'Choose what is useful now',\n                    text: 'You do not need to work through everything. Focus on resources that fit your current priorities.'\n                },\n                {\n                    title: 'Use what you learn',\n                    text: 'If a resource gives you a useful idea, you can add a development action or reflection to your Self-Development Journal.'\n                }\n            ],\n            tip: 'One useful resource that you act on can be more valuable than a long list of resources you never use.'\n        },\n\n        'milestones': {\n            eyebrow: 'Your progress',\n            intro: 'PIVOT Milestones recognise activity and progress as you use the platform and continue your self-development.',\n            sections: [\n                {\n                    title: 'Earned',\n                    text: 'This view shows milestones you have already achieved.'\n                },\n                {\n                    title: 'Roadmap',\n                    text: 'This view shows other milestones that are available and gives you a clearer picture of what you can work towards next.'\n                },\n                {\n                    title: 'Why milestones exist',\n                    text: 'They are designed to make progress visible and encourage consistent development activity. They are not a judgement of your ability or professional value.'\n                }\n            ],\n            tip: 'Use milestones as encouragement, not as the goal itself. The real value comes from the learning and development behind them.'\n        },\n\n        '21st Century Skills': {\n            eyebrow: 'Self-assessment',\n            intro: 'This section explores transferable skills that can help you perform, learn and adapt across many different jobs, industries and life situations.',\n            sections: [\n                {\n                    title: 'What you will assess',\n                    text: 'You will consider capabilities such as working with information, solving problems, communicating, collaborating, adapting and handling modern workplace demands.'\n                },\n                {\n                    title: 'How to answer',\n                    text: 'Rate your current capability as realistically as you can. Think about what you can do consistently now, not what you would like to be able to do in the future.'\n                },\n                {\n                    title: 'What your results are for',\n                    text: 'Your results help you recognise current strengths and identify skills you may want to develop further.'\n                }\n            ],\n            tip: 'There is no ideal score and this is not a test against other people. Accurate self-reflection makes the results more useful.'\n        },\n\n        'Employability Skills': {\n            eyebrow: 'Self-assessment',\n            intro: 'This section looks at practical capabilities and behaviours that can support your effectiveness when finding work, entering a role and contributing successfully at work.',\n            sections: [\n                {\n                    title: 'What you will assess',\n                    text: 'The questions focus on broadly useful employability capabilities rather than the specialist technical requirements of one particular occupation.'\n                },\n                {\n                    title: 'How to answer',\n                    text: 'Think about your current behaviour and capability across real situations. Choose the level that best represents what you can usually demonstrate now.'\n                },\n                {\n                    title: 'How to use the result',\n                    text: 'Use your results to identify employability strengths you can evidence and areas where additional practice, experience or learning could help.'\n                }\n            ],\n            tip: 'When you give yourself a strong rating, think of a real example that supports it. That evidence can also help when applying for jobs or preparing for interviews.'\n        },\n\n        'Knowledge, Skills and Abilities': {\n            eyebrow: 'Abilities',\n            intro: 'This assessment covers 52 Abilities. You rate your current level on the same 0\u20137 O*NET scale used for occupation profiles.',\n            sections: [\n                {\n                    title: 'What you are rating',\n                    text: 'For each Ability, choose the highest level that best matches what you can currently do.'\n                },\n                {\n                    title: 'Use the reference examples',\n                    text: 'Each Ability includes three official O*NET examples. The example levels differ between Abilities, so use the examples shown for that question.'\n                },\n                {\n                    title: 'How Career Alignment uses it',\n                    text: 'For Career Alignment, PIVOT compares your 0\u20137 Ability Level with the level recorded for the occupation. O*NET Importance gives more weight to Abilities that matter more for that occupation. A level above the occupation requirement is not penalised.'\n                }\n            ],\n            tip: 'Rate what you can do now, not your potential. A realistic rating gives you a more useful starting point for development.'\n        },\n\n        'Knowledge Assessment': {\n            eyebrow: 'Knowledge',\n            intro: 'This assessment covers 33 Knowledge areas. You rate the highest level of work you could currently handle using each area of knowledge.',\n            sections: [\n                {\n                    title: 'What you are rating',\n                    text: 'For each Knowledge area, choose the highest level of work you could currently handle using that knowledge.'\n                },\n                {\n                    title: 'Use the O*NET examples',\n                    text: 'Each Knowledge question includes official O*NET examples at Levels 1, 4 and 7. Use them to judge the highest level of work you could currently support with your knowledge.'\n                },\n                {\n                    title: 'How Career Alignment uses it',\n                    text: 'For Career Alignment, PIVOT compares your 0\u20137 Knowledge Level with the level recorded for the occupation. O*NET Importance gives more weight to Knowledge areas that matter more for that occupation. A level above the occupation requirement is not penalised.'\n                }\n            ],\n            tip: 'Rate the knowledge you can use now, not how interested you are in the subject, your qualifications alone, or the level you hope to reach later.'\n        },\n\n        'Generalized Work Activities': {\n            eyebrow: 'Work Activities',\n            intro: 'This assessment covers 41 Work Activities. You rate the highest level of each activity that you can currently carry out.',\n            sections: [\n                {\n                    title: 'What you are rating',\n                    text: 'For each Work Activity, choose the highest level of the activity that you can currently carry out reliably.'\n                },\n                {\n                    title: 'Use the O*NET examples',\n                    text: 'Each Work Activity includes official O*NET examples at Levels 1, 4 and 7. Use them to judge the highest level you can currently carry out in practice.'\n                },\n                {\n                    title: 'How Career Alignment uses it',\n                    text: 'For Career Alignment, PIVOT compares your 0\u20137 Work Activity Level with the level recorded for the occupation. O*NET Importance gives more weight to activities that matter more for that occupation. A level above the occupation requirement is not penalised.'\n                }\n            ],\n            tip: 'Rate what you can currently do in practice. Your evidence can come from work, education, projects, volunteering or other responsibilities.'\n        },\n\n        'Cross-Functional Skills Assessment': {\n            eyebrow: 'Transferable Skills',\n            intro: 'This assessment covers 25 Transferable Skills. You rate the highest level of task in which you can currently use each skill effectively.',\n            sections: [\n                {\n                    title: 'What you are rating',\n                    text: 'For each skill, choose the highest level of task in which you can currently use the skill effectively.'\n                },\n                {\n                    title: 'Use the O*NET examples',\n                    text: 'Each Transferable Skill includes official O*NET examples at Levels 2, 4 and 6. Use them to judge the highest level you can currently demonstrate in practice.'\n                },\n                {\n                    title: 'How Career Alignment uses it',\n                    text: 'For Career Alignment, PIVOT compares your 0\u20137 Transferable Skill Level with the level recorded for the occupation. O*NET Importance gives more weight to skills that matter more for that occupation. A level above the occupation requirement is not penalised.'\n                }\n            ],\n            tip: 'Rate the skill you can demonstrate now. Evidence can come from work, study, projects, volunteering or other practical experience.'\n        },\n\n        'Basic Skills Assessment': {\n            eyebrow: 'Essential Skills',\n            intro: 'This assessment covers 10 O*NET Basic Skills, shown in PIVOT as Essential Skills. They support learning, communication, understanding information and many kinds of work.',\n            sections: [\n                {\n                    title: 'What you are rating',\n                    text: 'For each Essential Skill, choose the highest level that best matches what you can currently do.'\n                },\n                {\n                    title: 'How to answer',\n                    text: 'Use the official O*NET examples shown with each question. Choose the level that best represents what you can currently do in normal real-world situations.'\n                },\n                {\n                    title: 'How Career Alignment uses it',\n                    text: 'PIVOT compares your 0\u20137 Essential Skill Level with the level recorded for an occupation. O*NET Importance gives more weight to skills that matter more for that occupation.'\n                }\n            ],\n            tip: 'Level 0 is a valid answer. It means your current level is below the first reference example shown; it is not a failure or missing response.'\n        },\n\n        'Work Preferences': {\n            eyebrow: 'What matters to you',\n            intro: 'What I Value Most helps you identify the features and outcomes of work that are most important to you personally.',\n            sections: [\n                {\n                    title: 'What you are rating',\n                    text: 'Rate how important each factor would be in work that feels satisfying and worthwhile to you.'\n                },\n                {\n                    title: 'How to answer',\n                    text: 'Think about your own priorities rather than what you believe an employer, colleague or other person would want you to choose.'\n                },\n                {\n                    title: 'How the result helps',\n                    text: 'Your pattern of preferences can help you compare opportunities and understand why some roles or working environments may feel more suitable than others.'\n                }\n            ],\n            tip: 'There are no correct preferences. The value comes from identifying what genuinely matters to you.'\n        },\n\n        'Work Context': {\n            eyebrow: 'Your preferred work environment',\n            intro: 'My Context & Environment asks about the working conditions and situations you would prefer or be comfortable with. The answer options come from O*NET Work Context data.',\n            sections: [\n                {\n                    title: 'What you are choosing',\n                    text: 'Choose the option that best matches what you would prefer or be comfortable with for each working condition. The options change between questions because different conditions are measured in different ways.'\n                },\n                {\n                    title: 'How to answer',\n                    text: 'Answer for the kind of work you would be comfortable doing, not what you think an employer expects. If a factor would not influence your choice, select No preference.'\n                },\n                {\n                    title: 'How the result helps',\n                    text: 'PIVOT can compare your preferences with the working conditions reported for different occupations. No preference answers are left out rather than treated as a match or mismatch.'\n                }\n            ],\n            tip: 'These are preference categories, not high-or-low scores. Always read the option wording for the individual question before choosing.'\n        },\n\n        'Work Requirement and Style': {\n            eyebrow: 'Your natural approach',\n            intro: 'My Natural Approach explores patterns in how you usually approach work, people, decisions, change and pressure. It is based on O*NET Work Styles.',\n            sections: [\n                {\n                    title: 'What you are rating',\n                    text: 'Rate how well each statement describes the way you typically behave or respond at work, in study, projects or other purposeful responsibilities.'\n                },\n                {\n                    title: 'How to answer',\n                    text: 'Answer from your usual behaviour rather than the person you would like to be or the response that sounds most impressive. Think across several situations, not one exceptional example.'\n                },\n                {\n                    title: 'How the result helps',\n                    text: 'Your pattern can be compared with occupation data as one of the four parts of Career Alignment.'\n                }\n            ],\n            tip: 'There is no universally best work style. A useful profile is an accurate description of your usual tendencies.'\n        },\n\n        'certificates': {\n            eyebrow: 'Evidence of learning',\n            intro: 'This section keeps your PIVOT certificates and relevant external certificates or awards together as evidence of your continued learning and achievement.',\n            sections: [\n                {\n                    title: 'Official PIVOT certificates',\n                    text: 'Certificates generated through eligible PIVOT learning appear here automatically.'\n                },\n                {\n                    title: 'External certificates and awards',\n                    text: 'You can also record relevant achievements from other learning providers or organisations so that your wider development is represented.'\n                },\n                {\n                    title: 'Why keep them here',\n                    text: 'Bringing evidence together makes it easier to review your development and use relevant achievements when presenting your professional profile.'\n                }\n            ],\n            tip: 'Include achievements that add useful evidence to your development story rather than treating the section as a list of everything you have ever completed.'\n        },\n\n        'references': {\n            eyebrow: 'Professional evidence',\n            intro: 'My References gives you a place to keep details for people who can provide a professional or character reference.',\n            sections: [\n                {\n                    title: 'What to add',\n                    text: 'Record people who are appropriate to confirm your work, contribution, character or experience when a future application or opportunity requires it.'\n                },\n                {\n                    title: 'Before using a reference',\n                    text: 'Make sure the person is happy to provide a reference for you and that their contact information is current.'\n                },\n                {\n                    title: 'Privacy',\n                    text: 'Only add information that is appropriate to store and use for this purpose.'\n                }\n            ],\n            tip: 'Choose people who can provide relevant evidence for the type of opportunity you are pursuing.'\n        },\n\n        'access_library': {\n            eyebrow: 'Your saved resources',\n            intro: 'My Personal Library gives you a convenient place to return to PIVOT resources, modules and learning items that are available to your account.',\n            sections: [\n                {\n                    title: 'What you will find here',\n                    text: 'Items available to your account can be brought together here so you do not have to search for them again.'\n                },\n                {\n                    title: 'How to use it',\n                    text: 'Return to useful resources when you want to continue learning, revisit an idea or connect a resource with a development action.'\n                }\n            ],\n            tip: 'Your library is most useful when it becomes a working collection of resources you actually return to and use.'\n        }\n    };\n\n\n    window.pivotHelpAliases = {\n        'What I Value Most': 'Work Preferences',\n        'My Context & Environment': 'Work Context',\n        [['My','Perfect','Setup'].join(' ')]: 'Work Context', \/\/ legacy compatibility alias\n        'My Natural Approach': 'Work Requirement and Style'\n    };\n\n\n    window.pivotEscapeHelpHtml = function(value) {\n        return String(value == null ? '' : value).replace(\/[&<>\"']\/g, function(character) {\n            const replacements = {\n                '&': '&amp;',\n                '<': '&lt;',\n                '>': '&gt;',\n                '\"': '&quot;',\n                \"'\": '&#039;'\n            };\n            return replacements[character];\n        });\n    };\n\n\n    window.pivotGetHelpContent = function(keyOrContent) {\n\n        if (\n            keyOrContent &&\n            typeof keyOrContent === 'object' &&\n            !Array.isArray(keyOrContent)\n        ) {\n            return keyOrContent;\n        }\n\n        let key = String(keyOrContent == null ? '' : keyOrContent).trim();\n        let resolvedKey = window.pivotHelpAliases[key] || key;\n\n        if (window.pivotHelpDictionary[resolvedKey]) {\n            return window.pivotHelpDictionary[resolvedKey];\n        }\n\n        \/*\n         * Backwards compatibility:\n         * if an older call passes actual explanatory text instead of a key,\n         * use the text rather than looking it up a second time.\n         *\/\n        if (key.length > 35 || \/[.!?]\\s\/.test(key)) {\n            return {\n                eyebrow: 'PIVOT help',\n                intro: key,\n                sections: []\n            };\n        }\n\n        return {\n            eyebrow: 'PIVOT help',\n            intro: 'This section contributes to your wider PIVOT profile and is designed to help you understand yourself, your current development and your next steps more clearly.',\n            sections: [\n                {\n                    title: 'What to do',\n                    text: 'Read the information shown in the section and respond as realistically as you can. Where you are rating yourself, focus on your current position rather than the level you hope to reach later.'\n                },\n                {\n                    title: 'Why it matters',\n                    text: 'Your responses are most useful when they give you an accurate starting point for reflection, career exploration and self-development.'\n                }\n            ],\n            tip: 'There is no advantage in choosing a higher answer simply because it sounds better. Useful development starts with an accurate picture.'\n        };\n    };\n\n\n    \/*\n     * Compatibility helper retained because other PIVOT code may already call it.\n     *\/\n    window.pivotGetInfoText = function(key) {\n        let item = window.pivotGetHelpContent(key);\n        return item && item.intro ? item.intro : '';\n    };\n\n\n    window.pivotBuildHelpHtml = function(content) {\n\n        let item = window.pivotGetHelpContent(content);\n        let sections = Array.isArray(item.sections) ? item.sections : [];\n\n        let sectionsHtml = '';\n\n        if (sections.length) {\n            sectionsHtml = `\n                <div class=\"pivot-help-sections\">\n                    ${sections.map(function(section) {\n                        return `\n                            <div class=\"pivot-help-section\">\n                                <span class=\"pivot-help-section-title\">\n                                    ${window.pivotEscapeHelpHtml(section.title || '')}\n                                <\/span>\n                                <p class=\"pivot-help-section-text\">\n                                    ${window.pivotEscapeHelpHtml(section.text || '')}\n                                <\/p>\n                            <\/div>\n                        `;\n                    }).join('')}\n                <\/div>\n            `;\n        }\n\n        let tipHtml = item.tip\n            ? `\n                <div class=\"pivot-help-tip\">\n                    <strong>Good to know:<\/strong>\n                    ${window.pivotEscapeHelpHtml(item.tip)}\n                <\/div>\n            `\n            : '';\n\n        return `\n            <div class=\"pivot-help-eyebrow\">\n                ${window.pivotEscapeHelpHtml(item.eyebrow || 'PIVOT help')}\n            <\/div>\n\n            <p class=\"pivot-help-intro\">\n                ${window.pivotEscapeHelpHtml(item.intro || '')}\n            <\/p>\n\n            ${sectionsHtml}\n            ${tipHtml}\n        `;\n    };\n\n\n    window.pivotCloseInfoModal = function() {\n\n        let modal = document.getElementById('pivot-info-modal');\n        let overlay = document.getElementById('pivot-info-overlay');\n\n        if (!modal || !overlay) {\n            return;\n        }\n\n        overlay.style.opacity = '0';\n\n        let dialog = overlay.querySelector('.pivot-help-dialog');\n\n        if (dialog) {\n            dialog.style.transform = 'translateY(18px)';\n        }\n\n        setTimeout(function() {\n            modal.style.display = 'none';\n\n            if (\n                window.pivotHelpPreviousFocus &&\n                typeof window.pivotHelpPreviousFocus.focus === 'function'\n            ) {\n                window.pivotHelpPreviousFocus.focus();\n            }\n        }, 220);\n    };\n\n\n    window.pivotShowInfoModal = function(boxLabel, helpKeyOrContent) {\n\n        let content = window.pivotGetHelpContent(helpKeyOrContent);\n        let modal = document.getElementById('pivot-info-modal');\n\n        window.pivotHelpPreviousFocus = document.activeElement;\n\n        if (!modal) {\n            modal = document.createElement('div');\n            modal.id = 'pivot-info-modal';\n            document.body.appendChild(modal);\n        }\n\n        let titleId = 'pivot-help-title';\n\n        modal.innerHTML = `\n            <div\n                id=\"pivot-info-overlay\"\n                style=\"\n                    position:fixed;\n                    inset:0;\n                    background:rgba(15,23,42,0.72);\n                    backdrop-filter:blur(5px);\n                    -webkit-backdrop-filter:blur(5px);\n                    z-index:999999;\n                    display:flex;\n                    align-items:center;\n                    justify-content:center;\n                    padding:20px;\n                    opacity:0;\n                    transition:opacity 0.22s ease;\n                \"\n                onclick=\"if (event.target === this) window.pivotCloseInfoModal();\"\n            >\n                <div\n                    class=\"pivot-help-dialog\"\n                    role=\"dialog\"\n                    aria-modal=\"true\"\n                    aria-labelledby=\"${titleId}\"\n                    onclick=\"event.stopPropagation();\"\n                >\n                    <button\n                        type=\"button\"\n                        class=\"pivot-help-close\"\n                        aria-label=\"Close help\"\n                        title=\"Close\"\n                        onclick=\"window.pivotCloseInfoModal();\"\n                    >\n                        &times;\n                    <\/button>\n\n                    <h3 id=\"${titleId}\">\n                        ${window.pivotEscapeHelpHtml(boxLabel || 'PIVOT Help')}\n                    <\/h3>\n\n                    ${window.pivotBuildHelpHtml(content)}\n                <\/div>\n            <\/div>\n        `;\n\n        modal.style.display = 'block';\n\n        setTimeout(function() {\n\n            let overlay = document.getElementById('pivot-info-overlay');\n\n            if (!overlay) {\n                return;\n            }\n\n            overlay.style.opacity = '1';\n\n            let dialog = overlay.querySelector('.pivot-help-dialog');\n\n            if (dialog) {\n                dialog.style.transform = 'translateY(0)';\n            }\n\n            let closeButton = overlay.querySelector('.pivot-help-close');\n\n            if (closeButton) {\n                closeButton.focus();\n            }\n\n        }, 10);\n    };\n\n\n    window.pivotShowPillarHelp = function(pillarEncoded) {\n\n        let pillar = '';\n\n        try {\n            pillar = decodeURIComponent(pillarEncoded || '');\n        } catch (error) {\n            pillar = String(pillarEncoded || '');\n        }\n\n        let displayTitle = pillar;\n\n        if (pillar === 'Work Preferences') {\n            displayTitle = 'What I Value Most';\n        }\n\n        if (pillar === 'Work Context') {\n            displayTitle = 'My Context & Environment';\n        }\n\n        if (pillar === 'Work Requirement and Style') {\n            displayTitle = 'My Natural Approach';\n        }\n\n        window.pivotShowInfoModal(\n            displayTitle + ' assessment',\n            pillar\n        );\n    };\n\n\n    \/\/ =========================================================\n    \/\/ PIVOT HELP v2 \u2014 UNIVERSAL ASSESSMENT QUESTION HELP\n    \/\/\n    \/\/ Every assessment question receives contextual help generated\n    \/\/ from its live title, description, question wording, pillar and\n    \/\/ scale. No individual question has to be manually wired up.\n    \/\/ =========================================================\n\n    window.pivotQuestionHelpProfiles = {\n\n        'Knowledge Assessment': {\n            eyebrow: 'Knowledge rating',\n            intro: function(title) {\n                return 'This question asks for the highest level of work you could currently handle using your knowledge of ' + title + '.';\n            },\n            consider: 'Use the official O*NET examples shown with the question. Think about knowledge you can currently understand and apply in work, study, projects or other practical situations.',\n            scale: 'Use the 0\u20137 O*NET Knowledge Level scale. Higher levels represent more demanding work. Choose the highest level that realistically matches the work you could currently handle using this knowledge.',\n            tip: 'Rate current usable knowledge, not interest, potential, qualifications alone or how important the subject seems.'\n        },\n\n        '21st Century Skills': {\n            eyebrow: 'Transferable capability',\n            intro: function(title) {\n                return 'This question asks you to reflect on your current capability in ' + title + ', a skill that can be useful across many different roles and situations.';\n            },\n            consider: 'Think about how consistently you can demonstrate this capability in real situations. Use evidence from work, education, projects, volunteering, community activity or everyday responsibilities.',\n            scale: 'Use the 1\u201310 scale to choose the description that most closely represents what you can currently do. Higher ratings should reflect stronger, more consistent and more independent capability.',\n            tip: 'A useful rating is an accurate rating. There is no benefit in choosing a higher number simply because it sounds better.'\n        },\n\n        'Employability Skills': {\n            eyebrow: 'Employability capability',\n            intro: function(title) {\n                return 'This question asks you to consider how effectively you can currently demonstrate ' + title + ' in situations connected with work, study or preparing for employment.';\n            },\n            consider: 'Think about real examples where you have used this capability. Consider both formal work experience and evidence from education, projects, volunteering or other responsibilities.',\n            scale: 'Use the 1\u201310 scale to rate your current level. Choose the description that best matches what you can usually show now rather than your potential.',\n            tip: 'If you choose a strong rating, try to think of a real example that supports it. That evidence may also be useful in applications and interviews.'\n        },\n\n        'Generalized Work Activities': {\n            eyebrow: 'Work Activity rating',\n            intro: function(title) {\n                return 'This question asks for the highest level of ' + title + ' that you can currently carry out.';\n            },\n            consider: 'Use the official O*NET examples shown with the question. Think about what you can currently carry out in work, education, projects, volunteering or other practical situations.',\n            scale: 'Use the 0\u20137 O*NET Work Activity Level scale. Higher levels represent more demanding versions of the activity. Choose the highest level that realistically matches what you can currently do.',\n            tip: 'Rate demonstrated current capability, not potential, familiarity with the activity or how important you think it is.'\n        },\n\n        'Cross-Functional Skills Assessment': {\n            eyebrow: 'Transferable Skill rating',\n            intro: function(title) {\n                return 'This question asks for the highest level of task in which you can currently use ' + title + ' effectively.';\n            },\n            consider: 'Use the official O*NET examples shown with the question. Think about what you can currently demonstrate in work, learning, projects or other practical situations.',\n            scale: 'Use the 0\u20137 O*NET Transferable Skill Level scale. Higher levels represent more demanding tasks or situations. Choose the highest level that realistically matches where you can currently use the skill effectively.',\n            tip: 'Rate demonstrated current skill, not potential, familiarity with the term or how important the skill seems.'\n        },\n\n        'Basic Skills Assessment': {\n            eyebrow: 'Essential Skill rating',\n            intro: function(title) {\n                return 'This question asks for the highest level that best matches what you can currently do in ' + title + '.';\n            },\n            consider: 'Use the official O*NET examples shown with the question. Think about what you can currently do in normal real-world situations, including learning, communication and work tasks.',\n            scale: 'Use the 0\u20137 O*NET Level scale. Choose the highest level that best matches what you can currently do. Level 0 is a valid answer when your current level is below the first example shown.',\n            tip: 'A lower rating is useful information. Level 0 is a real answer, not an unanswered question.'\n        },\n\n        'Work Preferences': {\n            eyebrow: 'What matters to you',\n            intro: function(title) {\n                return 'This question asks how important ' + title + ' is to you when thinking about work that feels satisfying and worthwhile.';\n            },\n            consider: 'Think about your own priorities, motivations and preferences. Answer for yourself rather than choosing what you think an employer, colleague or other person would prefer.',\n            scale: 'Use the 1\u20135 importance scale. A lower number means this factor matters less to you; a higher number means it is particularly important to you.',\n            tip: 'There is no correct preference. The value comes from identifying what genuinely matters to you.'\n        },\n\n        'Work Context': {\n            eyebrow: 'Context & Environment',\n            intro: function(title) {\n                return 'This question asks what you would prefer or be comfortable with for ' + title + '.';\n            },\n            consider: 'Read what the working condition means, then choose the option that best matches your own preference. Do not rate whether the condition is generally good, bad or important.',\n            scale: 'Use the options shown for this question. Some questions have five options and some have three. Choose No preference if this working condition would not influence your preference for a role or work situation.',\n            tip: 'No preference is a valid answer. PIVOT leaves it out of Context & Environment alignment rather than treating it as a match or mismatch.'\n        },\n\n        'Work Requirement and Style': {\n            eyebrow: 'Natural Approach',\n            intro: function(title) {\n                return 'This question asks how well ' + title + ' describes the way you typically approach work.';\n            },\n            consider: 'Think about your usual behaviour across real situations. Answer from what you normally do, not what sounds ideal, desirable or professionally impressive.',\n            scale: 'Use the 1\u20135 scale: 1 means very unlike you, 3 means it depends on the situation, and 5 means very like you.',\n            tip: 'This is about your usual approach, not ability or personal worth. Different roles suit different patterns, so accuracy matters more than choosing a high number.'\n        }\n    };\n\n\n    window.pivotGetQuestionHelpProfile = function(context) {\n\n        context = context || {};\n\n        let pillar = String(context.pillar || '').trim();\n        let module = String(context.module || '').trim();\n\n        if (window.pivotIsCareerInterestModule(pillar, module)) {\n            return {\n                eyebrow: 'Career interest',\n                intro: function(title) {\n                    return 'This question asks how interested you would be in work involving ' + title + '.';\n                },\n                consider: 'Answer for yourself. Think about whether you would enjoy or be drawn to this kind of work, regardless of whether you already have the skills, qualifications or experience to do it.',\n                scale: 'Use the 1\u20137 interest scale. Lower ratings mean the activity is unappealing to you, 4 is neutral, and higher ratings mean you would be increasingly interested in doing this kind of work.',\n                tip: 'Interest is different from ability and importance. Rate how appealing the work itself feels, not whether you think it is useful, prestigious or realistic for you right now.'\n            };\n        }\n\n        if (window.pivotQuestionHelpProfiles[pillar]) {\n            return window.pivotQuestionHelpProfiles[pillar];\n        }\n\n        return {\n            eyebrow: 'Assessment question',\n            intro: function(title) {\n                return 'This question asks you to make a realistic judgement about your current position in ' + title + '.';\n            },\n            consider: 'Think about your current knowledge, experience and ability in real situations. Use evidence from work, education, projects, volunteering, independent learning or everyday responsibilities.',\n            scale: Number(context.maxScale || 10) === 5\n                ? 'Use the 1\u20135 scale and choose the level that most closely reflects your own current priorities or preferences.'\n                : 'Use the 1\u201310 scale and choose the description that most closely represents what you can currently understand, apply or show.',\n            tip: 'Rate where you are now rather than the level you hope to reach later.'\n        };\n    };\n\n\n    window.pivotBuildQuestionHelpContent = function(context) {\n\n        context = context || {};\n\n        let title = String(\n            context.title ||\n            context.question ||\n            'this area'\n        ).trim();\n\n        let description = String(context.description || '').trim();\n        let questionText = String(context.question || '').trim();\n        let pillar = String(context.pillar || '').trim();\n        let profile = window.pivotGetQuestionHelpProfile(context);\n\n        let sections = [];\n\n        sections.push({\n            title: 'What this means',\n            text: description\n                ? description\n                : (\n                    'This question focuses on ' +\n                    title +\n                    (pillar ? ' within the ' + pillar + ' assessment.' : '.')\n                )\n        });\n\n        if (\n            questionText &&\n            questionText.toLowerCase() !== title.toLowerCase() &&\n            (!description ||\n                questionText.toLowerCase() !== description.toLowerCase())\n        ) {\n            sections.push({\n                title: 'The question',\n                text: questionText\n            });\n        }\n\n        sections.push({\n            title: 'Think about',\n            text: profile.consider\n        });\n\n        sections.push({\n            title: 'Choosing your rating',\n            text: profile.scale\n        });\n\n        return {\n            eyebrow: profile.eyebrow || 'Assessment question',\n            intro: typeof profile.intro === 'function'\n                ? profile.intro(title)\n                : String(profile.intro || ''),\n            sections: sections,\n            tip: profile.tip || ''\n        };\n    };\n\n\n    \/*\n     * If a legacy\/alternate renderer is ever used, capture whatever\n     * question title and description are currently visible on screen.\n     *\/\n    window.pivotSyncQuestionHelpContextFromDom = function() {\n\n        let anchor = document.getElementById('assessment-content-anchor');\n\n        if (!anchor) {\n            return window.pivotCurrentQuestionHelp || {};\n        }\n\n        let heading = anchor.querySelector('.question-grid h2');\n        let descriptionNode = heading\n            ? heading.parentElement.querySelector('p')\n            : null;\n\n        let domTitle = '';\n\n        if (heading) {\n            let clone = heading.cloneNode(true);\n\n            clone.querySelectorAll('.info-icon').forEach(function(icon) {\n                icon.remove();\n            });\n\n            domTitle = clone.textContent.replace(\/\\s+\/g, ' ').trim();\n        }\n\n        let context = window.pivotCurrentQuestionHelp || {};\n\n        if (!context.title && domTitle) {\n            context.title = domTitle;\n        }\n\n        if (!context.description && descriptionNode) {\n            context.description = descriptionNode.textContent\n                .replace(\/\\s+\/g, ' ')\n                .trim();\n        }\n\n        let state = window.pivotActiveAssessment || {};\n\n        if (!context.pillar && state.pillar) {\n            context.pillar = state.pillar;\n        }\n\n        if (!context.module && state.mod) {\n            context.module = state.mod;\n        }\n\n        window.pivotCurrentQuestionHelp = context;\n\n        return context;\n    };\n\n\n    window.pivotShowQuestionHelp = function() {\n\n        let context = window.pivotSyncQuestionHelpContextFromDom();\n\n        let title = String(\n            context.title ||\n            context.question ||\n            'Assessment Question'\n        ).trim();\n\n        window.pivotShowInfoModal(\n            title,\n            window.pivotBuildQuestionHelpContent(context)\n        );\n    };\n\n\n    \/*\n     * Defensive guard:\n     * every rendered assessment question is guaranteed to have the\n     * current HELP v2 trigger, even if an older renderer creates it.\n     *\/\n    window.pivotEnsureQuestionHelpTrigger = function() {\n\n        let anchor = document.getElementById('assessment-content-anchor');\n\n        if (!anchor || anchor.style.display === 'none') {\n            return;\n        }\n\n        let heading = anchor.querySelector('.question-grid h2');\n\n        if (!heading) {\n            return;\n        }\n\n        let trigger = heading.querySelector('.info-icon');\n\n        if (!trigger) {\n            trigger = document.createElement('span');\n            trigger.className = 'info-icon';\n            trigger.textContent = '?';\n            heading.appendChild(document.createTextNode(' '));\n            heading.appendChild(trigger);\n        }\n\n        trigger.setAttribute('data-pivot-question-help', 'v2');\n        trigger.setAttribute('title', 'Help me understand this question');\n        trigger.setAttribute('aria-label', 'Help me understand this question');\n        trigger.setAttribute('role', 'button');\n        trigger.setAttribute('tabindex', '0');\n\n        \/*\n         * Remove any previous inline handler and install HELP v2.\n         *\/\n        trigger.removeAttribute('onclick');\n\n        trigger.onclick = function(event) {\n            event.stopPropagation();\n            window.pivotShowQuestionHelp();\n        };\n\n        trigger.onkeydown = function(event) {\n            if (event.key === 'Enter' || event.key === ' ') {\n                event.preventDefault();\n                event.stopPropagation();\n                window.pivotShowQuestionHelp();\n            }\n        };\n\n        window.pivotSyncQuestionHelpContextFromDom();\n    };\n\n\n    \/*\n     * Audit the entire loaded assessment database.\n     * Dynamic help covers every titled question automatically.\n     * This report identifies source rows that are missing useful\n     * title\/description\/question information.\n     *\/\n    window.pivotAuditAssessmentHelp = function(options) {\n\n        options = options || {};\n\n        let store = window.pivotMasterStore || {};\n        let issues = [];\n        let totalQuestions = 0;\n        let coveredQuestions = 0;\n\n        Object.keys(store).forEach(function(pillar) {\n\n            let modules = store[pillar];\n\n            if (!modules || typeof modules !== 'object') {\n                return;\n            }\n\n            Object.keys(modules).forEach(function(moduleName) {\n\n                let questions = modules[moduleName];\n\n                if (!Array.isArray(questions)) {\n                    questions = Object.values(questions || {});\n                }\n\n                questions.forEach(function(question, index) {\n\n                    if (!question || typeof question !== 'object') {\n                        issues.push({\n                            pillar: pillar,\n                            module: moduleName,\n                            question: index + 1,\n                            issue: 'Invalid question record'\n                        });\n                        return;\n                    }\n\n                    totalQuestions++;\n\n                    let title = String(question.title || '').trim();\n                    let description = String(\n                        question.description || ''\n                    ).trim();\n\n                    let questionText = String(\n                        question.question || ''\n                    ).trim();\n\n                    if (title) {\n                        coveredQuestions++;\n                    }\n\n                    if (!title) {\n                        issues.push({\n                            pillar: pillar,\n                            module: moduleName,\n                            question: index + 1,\n                            issue: 'Missing title'\n                        });\n                    }\n\n                    if (!description) {\n                        issues.push({\n                            pillar: pillar,\n                            module: moduleName,\n                            question: title || (index + 1),\n                            issue: 'Missing description'\n                        });\n                    }\n\n                    if (!questionText) {\n                        issues.push({\n                            pillar: pillar,\n                            module: moduleName,\n                            question: title || (index + 1),\n                            issue: 'No separate Question Text supplied'\n                        });\n                    }\n                });\n            });\n        });\n\n        let coveragePercent = totalQuestions\n            ? Math.round(\n                (coveredQuestions \/ totalQuestions) * 1000\n            ) \/ 10\n            : 0;\n\n        let report = {\n            totalQuestions: totalQuestions,\n            questionsWithDynamicHelp: coveredQuestions,\n            dynamicHelpCoveragePercent: coveragePercent,\n            sourceDataIssues: issues\n        };\n\n        if (options.log !== false && window.console) {\n\n            console.group('PIVOT Assessment Help Audit \u2014 v2');\n\n            console.log('Assessment questions:', totalQuestions);\n\n            console.log(\n                'Questions covered by dynamic help:',\n                coveredQuestions +\n                ' (' +\n                coveragePercent +\n                '%)'\n            );\n\n            if (issues.length) {\n                console.warn(\n                    'Source-data items to review:',\n                    issues.length\n                );\n\n                if (console.table) {\n                    console.table(issues);\n                } else {\n                    console.log(issues);\n                }\n            } else {\n                console.log(\n                    'All loaded questions contain title, description and question text.'\n                );\n            }\n\n            console.groupEnd();\n        }\n\n        return report;\n    };\n\n\n    window.pivotInstallQuestionHelpGuard = function() {\n\n        let anchor = document.getElementById(\n            'assessment-content-anchor'\n        );\n\n        if (!anchor) {\n            return;\n        }\n\n        window.pivotEnsureQuestionHelpTrigger();\n\n        if (\n            window.pivotQuestionHelpObserver ||\n            !('MutationObserver' in window)\n        ) {\n            return;\n        }\n\n        window.pivotQuestionHelpObserver =\n            new MutationObserver(function() {\n                window.pivotEnsureQuestionHelpTrigger();\n            });\n\n        window.pivotQuestionHelpObserver.observe(\n            anchor,\n            {\n                childList: true,\n                subtree: true\n            }\n        );\n    };\n\n\n    setTimeout(function() {\n        window.pivotInstallQuestionHelpGuard();\n    }, 50);\n\n\n    if (!window.pivotHelpKeyboardBound) {\n        window.pivotHelpKeyboardBound = true;\n\n        document.addEventListener('keydown', function(event) {\n            if (event.key === 'Escape') {\n                let modal = document.getElementById('pivot-info-modal');\n\n                if (modal && modal.style.display !== 'none') {\n                    window.pivotCloseInfoModal();\n                }\n            }\n        });\n    };\n\n\n    window.pivotShowUpgradeModal = function() {\n        window.pivotGoPremium();\n    };\n\n    window.pivotBuildModals = function() {\n        \/\/ 1. Build the Complete\/Reflection Modal\n        if (!document.getElementById('pivot-complete-modal')) {\n            let completeModal = document.createElement('div'); \n            completeModal.id = 'pivot-complete-modal'; \n            completeModal.className = 'pivot-modal-overlay';\n            completeModal.innerHTML = `\n                <div class=\"pivot-modal-box\">\n                    <div style=\"font-size:3rem; margin-bottom:10px; text-align:center;\">\u2713<\/div>\n                    <h2 style=\"color:#16a34a; font-size:1.6rem; font-weight:900; margin:0 0 10px 0; text-align:center;\">Development action completed<\/h2>\n                    <h4 style=\"margin:0 0 5px 0; color:#0f172a; font-size:0.95rem;\">What did you learn?<\/h4>\n                    <textarea id=\"action_reflection_input\" class=\"modal-input\" rows=\"5\" placeholder=\"What did you learn or find useful? Did anything change for you? What, if anything, would you like to do next?\"><\/textarea>\n                    <div class=\"pivot-voice-note\" data-voice-context=\"reflection\">\n                        <div class=\"pivot-voice-note-head\">\n                            <span class=\"pivot-voice-note-label\">Type or speak your reflection<\/span>\n                            <button type=\"button\" id=\"pivot-voice-reflection-btn\" class=\"pivot-voice-btn\" onclick=\"window.pivotToggleVoiceRecording('reflection')\">\ud83c\udf99 Record reflection<\/button>\n                        <\/div>\n                        <div id=\"pivot-voice-reflection-status\" class=\"pivot-voice-status\" role=\"status\" aria-live=\"polite\">Ready to record, or type in the box above.<\/div>\n                        <p class=\"pivot-voice-help\">You might talk about what happened, what you learned, what changed, and what you will do next.<\/p>\n                        <p class=\"pivot-voice-privacy\">Your recording is sent for transcription. PIVOT does not save the audio file after transcription. Review or edit the text before saving.<\/p>\n                    <\/div>\n                    <p style=\"margin:8px 0 0; color:#64748b; font-size:0.82rem; line-height:1.4;\">Reflection is optional. Add a note if it will help you remember what you learned or what you want to do next.<\/p>\n                    <div style=\"display:flex; justify-content:flex-end; gap:15px; margin-top:25px;\">\n                        <button class=\"pivot-btn-secondary\" onclick=\"window.pivotCloseVoiceCompleteModal()\">Cancel<\/button>\n                        <button class=\"pivot-btn-success\" onclick=\"window.pivotFinalizeAction()\">Save as completed \u2713<\/button>\n                    <\/div>\n                <\/div>`;\n            document.body.appendChild(completeModal);\n        }\n\n        \/\/ 2. Build the Plan New Action Modal \n        if (!document.getElementById('pivot-action-modal')) {\n            let actionModal = document.createElement('div'); \n            actionModal.id = 'pivot-action-modal'; \n            actionModal.className = 'pivot-modal-overlay';\n            actionModal.innerHTML = `\n                <div class=\"pivot-modal-box\">\n                    <h2 style=\"color:#002FA7; font-size:1.6rem; font-weight:900; margin:0 0 10px 0; text-align:center;\">Plan a development action<\/h2>\n                    <h4 style=\"margin:0 0 5px 0; color:#0f172a; font-size:0.95rem;\">What will you do?<\/h4>\n                    <textarea id=\"action_details_input\" class=\"modal-input\" rows=\"3\" placeholder=\"Describe one clear action you will take.\"><\/textarea>\n                    <div class=\"pivot-voice-note\" data-voice-context=\"action\">\n                        <div class=\"pivot-voice-note-head\">\n                            <span class=\"pivot-voice-note-label\">Type or speak your development action<\/span>\n                            <button type=\"button\" id=\"pivot-voice-action-btn\" class=\"pivot-voice-btn\" onclick=\"window.pivotToggleVoiceRecording('action')\">\ud83c\udf99 Record voice note<\/button>\n                        <\/div>\n                        <div id=\"pivot-voice-action-status\" class=\"pivot-voice-status\" role=\"status\" aria-live=\"polite\">Ready to record, or type in the box above.<\/div>\n                        <p class=\"pivot-voice-privacy\">Your recording is sent for transcription. PIVOT does not save the audio file after transcription. Review or edit the text before saving.<\/p>\n                    <\/div>\n                    <div style=\"display:flex; justify-content:flex-end; gap:15px; margin-top:25px;\">\n                        <button class=\"pivot-btn-secondary\" onclick=\"window.pivotCloseVoiceActionModal()\">Cancel<\/button>\n                        <button class=\"pivot-btn-accent\" onclick=\"window.pivotCommitNewAction()\">Save Action<\/button>\n                    <\/div>\n                <\/div>`;\n            document.body.appendChild(actionModal);\n        }\n\n        \/\/ 3. View \/ edit an existing development action.\n        if (!document.getElementById('pivot-action-editor-modal')) {\n            let editorModal = document.createElement('div');\n            editorModal.id = 'pivot-action-editor-modal';\n            editorModal.className = 'pivot-modal-overlay';\n            editorModal.innerHTML = `\n                <div class=\"pivot-modal-box pivot-review-modal-box\">\n                    <div class=\"pivot-review-modal-head\">\n                        <div>\n                            <div class=\"pivot-review-eyebrow\">Self-Development Journal<\/div>\n                            <h2 id=\"pivot-action-editor-heading\">Review development action<\/h2>\n                        <\/div>\n                        <button type=\"button\" class=\"pivot-review-close\" aria-label=\"Close\" onclick=\"window.pivotCloseActionEditor()\">&times;<\/button>\n                    <\/div>\n                    <div id=\"pivot-action-editor-meta\" class=\"pivot-review-meta\"><\/div>\n                    <label class=\"pivot-review-label\" for=\"pivot-action-editor-text\">Development action<\/label>\n                    <textarea id=\"pivot-action-editor-text\" class=\"modal-input\" rows=\"4\"><\/textarea>\n                    <label class=\"pivot-review-label\" for=\"pivot-action-editor-reflection\">Reflection \/ notes<\/label>\n                    <textarea id=\"pivot-action-editor-reflection\" class=\"modal-input\" rows=\"5\" placeholder=\"Add or update a reflection, useful note or next step.\"><\/textarea>\n                    <div id=\"pivot-action-editor-system-note\" class=\"pivot-review-note\" style=\"display:none;\"><\/div>\n                    <div class=\"pivot-review-actions\">\n                        <button type=\"button\" class=\"pivot-btn-secondary\" onclick=\"window.pivotCloseActionEditor()\">Close<\/button>\n                        <button type=\"button\" class=\"pivot-btn-accent\" onclick=\"window.pivotSaveActionEdits()\">Save changes<\/button>\n                    <\/div>\n                <\/div>`;\n            document.body.appendChild(editorModal);\n        }\n\n        \/\/ 4. Filtered planned\/completed action browser.\n        if (!document.getElementById('pivot-action-manager-modal')) {\n            let managerModal = document.createElement('div');\n            managerModal.id = 'pivot-action-manager-modal';\n            managerModal.className = 'pivot-modal-overlay';\n            managerModal.innerHTML = `\n                <div class=\"pivot-modal-box pivot-review-modal-box pivot-list-modal-box\">\n                    <div class=\"pivot-review-modal-head\">\n                        <div>\n                            <div class=\"pivot-review-eyebrow\">Development activity<\/div>\n                            <h2 id=\"pivot-action-manager-heading\">Development actions<\/h2>\n                            <p id=\"pivot-action-manager-summary\" class=\"pivot-review-subtitle\"><\/p>\n                        <\/div>\n                        <button type=\"button\" class=\"pivot-review-close\" aria-label=\"Close\" onclick=\"window.pivotCloseActionManager()\">&times;<\/button>\n                    <\/div>\n                    <div id=\"pivot-action-manager-list\" class=\"pivot-review-list\"><\/div>\n                <\/div>`;\n            document.body.appendChild(managerModal);\n        }\n\n        \/\/ 5. Capability band browser: Developing \/ Established \/ Higher level.\n        if (!document.getElementById('pivot-capability-review-modal')) {\n            let capabilityModal = document.createElement('div');\n            capabilityModal.id = 'pivot-capability-review-modal';\n            capabilityModal.className = 'pivot-modal-overlay';\n            capabilityModal.innerHTML = `\n                <div class=\"pivot-modal-box pivot-review-modal-box pivot-list-modal-box\">\n                    <div class=\"pivot-review-modal-head\">\n                        <div>\n                            <div class=\"pivot-review-eyebrow\">Current capability profile<\/div>\n                            <h2 id=\"pivot-capability-review-heading\">Review capability areas<\/h2>\n                            <p id=\"pivot-capability-review-summary\" class=\"pivot-review-subtitle\"><\/p>\n                        <\/div>\n                        <button type=\"button\" class=\"pivot-review-close\" aria-label=\"Close\" onclick=\"window.pivotCloseCapabilityReview()\">&times;<\/button>\n                    <\/div>\n                    <div id=\"pivot-capability-review-list\" class=\"pivot-review-list\"><\/div>\n                <\/div>`;\n            document.body.appendChild(capabilityModal);\n        }\n    };\n\n\n    window.pivotCloseActionEditor = function() {\n        const modal = document.getElementById('pivot-action-editor-modal');\n        if (modal) modal.classList.remove('active');\n    };\n\n    window.pivotCloseActionManager = function() {\n        const modal = document.getElementById('pivot-action-manager-modal');\n        if (modal) modal.classList.remove('active');\n    };\n\n    window.pivotCloseCapabilityReview = function() {\n        const modal = document.getElementById('pivot-capability-review-modal');\n        if (modal) modal.classList.remove('active');\n    };\n\n    window.pivotGetActionContextLabel = function(action) {\n        if (!action || typeof action !== 'object') return 'General development';\n        if (action.careerTag) return 'Career: ' + action.careerTag;\n        if (action.pillarTag && action.pillarTag !== 'Growth Hub') return 'Area: ' + action.pillarTag;\n        if (action.pillarTag === 'Growth Hub') return 'Growth Hub';\n        return 'General development';\n    };\n\n    window.pivotOpenActionEditor = function(actionIndex) {\n        window.pivotBuildModals();\n        window.pivotCloseActionManager();\n\n        const actions = window.safeLocalParse('pivotDevActions', []);\n        const idx = Number(actionIndex);\n        const action = Array.isArray(actions) ? actions[idx] : null;\n\n        if (!action) {\n            alert('This development action could not be found. Please refresh the page and try again.');\n            return;\n        }\n\n        window.pivotActiveActionEditIndex = idx;\n\n        const heading = document.getElementById('pivot-action-editor-heading');\n        const meta = document.getElementById('pivot-action-editor-meta');\n        const textInput = document.getElementById('pivot-action-editor-text');\n        const reflectionInput = document.getElementById('pivot-action-editor-reflection');\n        const systemNote = document.getElementById('pivot-action-editor-system-note');\n\n        const isResourceAccess = action.type === 'Resource Access';\n        const typeLabel = isResourceAccess ? 'Learning resource' : (action.type || 'Development action');\n        const statusLabel = action.status === 'completed' ? 'Completed' : 'Planned';\n        const dateLabel = action.status === 'completed'\n            ? (action.dateCompleted || action.dateAdded || '')\n            : (action.dateAdded || '');\n\n        if (heading) heading.textContent = statusLabel + ' development action';\n        if (meta) {\n            const voiceMeta = [];\n            if (action.entryMethod === 'voice-transcribed' && action.voiceRecordedDate) {\n                voiceMeta.push('Action voice note \u00b7 ' + action.voiceRecordedDate);\n            }\n            if (action.reflectionEntryMethod === 'voice-transcribed' && action.reflectionVoiceRecordedDate) {\n                voiceMeta.push('Reflection voice note \u00b7 ' + action.reflectionVoiceRecordedDate);\n            }\n            meta.innerHTML = `\n                <span>${window.pivotEscapeHelpHtml(typeLabel)}<\/span>\n                <span>${window.pivotEscapeHelpHtml(window.pivotGetActionContextLabel(action))}<\/span>\n                <span>${window.pivotEscapeHelpHtml(statusLabel + (dateLabel ? ' \u00b7 ' + dateLabel : ''))}<\/span>\n                ${voiceMeta.map(function(item) { return '<span>' + window.pivotEscapeHelpHtml(item) + '<\/span>'; }).join('')}\n            `;\n        }\n\n        if (textInput) {\n            textInput.value = action.text || '';\n            textInput.readOnly = isResourceAccess;\n            textInput.classList.toggle('is-readonly', isResourceAccess);\n        }\n\n        if (reflectionInput) {\n            reflectionInput.value = action.reflection || '';\n        }\n\n        if (systemNote) {\n            systemNote.style.display = isResourceAccess ? 'block' : 'none';\n            systemNote.textContent = isResourceAccess\n                ? 'This entry was created automatically when the resource was opened. Its activity title is kept as part of the record, but you can add or update your reflection.'\n                : '';\n        }\n\n        const modal = document.getElementById('pivot-action-editor-modal');\n        if (modal) modal.classList.add('active');\n    };\n\n    window.pivotSaveActionEdits = function() {\n        const actions = window.safeLocalParse('pivotDevActions', []);\n        const idx = Number(window.pivotActiveActionEditIndex);\n        const action = Array.isArray(actions) ? actions[idx] : null;\n\n        if (!action) return;\n\n        const textInput = document.getElementById('pivot-action-editor-text');\n        const reflectionInput = document.getElementById('pivot-action-editor-reflection');\n        const isResourceAccess = action.type === 'Resource Access';\n\n        const nextText = textInput ? textInput.value.trim() : '';\n        const nextReflection = reflectionInput ? reflectionInput.value.trim() : '';\n\n        if (!isResourceAccess && !nextText) {\n            alert('Please keep a clear description for this development action.');\n            return;\n        }\n\n        if (!isResourceAccess) action.text = nextText;\n        action.reflection = nextReflection;\n        action.lastEdited = window.pivotToday();\n\n        window.pivotSaveAll('pivotDevActions', actions);\n        window.pivotDebouncedSync();\n        window.pivotCloseActionEditor();\n        window.pivotCloseActionManager();\n\n        if (typeof window.renderDashboard === 'function') {\n            window.renderDashboard();\n        }\n\n        window.pivotShowToast('save');\n    };\n\n    window.pivotOpenActionManager = function(status) {\n        window.pivotBuildModals();\n\n        const normalizedStatus = status === 'completed' ? 'completed' : 'planned';\n        const actions = window.safeLocalParse('pivotDevActions', []);\n        const matches = [];\n\n        (Array.isArray(actions) ? actions : []).forEach(function(action, index) {\n            if (action && action.status === normalizedStatus) {\n                matches.push({ action: action, index: index });\n            }\n        });\n\n        const heading = document.getElementById('pivot-action-manager-heading');\n        const summary = document.getElementById('pivot-action-manager-summary');\n        const list = document.getElementById('pivot-action-manager-list');\n\n        if (heading) {\n            heading.textContent = normalizedStatus === 'completed'\n                ? 'Completed actions'\n                : 'Planned actions';\n        }\n\n        if (summary) {\n            summary.textContent = matches.length\n                ? `${matches.length} ${matches.length === 1 ? 'action' : 'actions'} \u2014 tap any item to view or amend it.`\n                : (normalizedStatus === 'completed'\n                    ? 'Completed actions will appear here.'\n                    : 'You do not have any planned actions yet.');\n        }\n\n        if (list) {\n            if (!matches.length) {\n                list.innerHTML = `\n                    <div class=\"pivot-review-empty\">\n                        ${normalizedStatus === 'completed'\n                            ? 'No completed actions yet.'\n                            : 'No planned actions yet.'}\n                    <\/div>`;\n            } else {\n                list.innerHTML = matches.map(function(entry) {\n                    const action = entry.action;\n                    const idx = entry.index;\n                    const typeLabel = action.type === 'Resource Access'\n                        ? 'Learning resource'\n                        : (action.type && action.type !== 'General Task' ? action.type : 'Development action');\n                    const contextLabel = window.pivotGetActionContextLabel(action);\n                    const dateLabel = normalizedStatus === 'completed'\n                        ? (action.dateCompleted || action.dateAdded || '')\n                        : (action.dateAdded || '');\n                    const reflection = action.reflection\n                        ? `<div class=\"pivot-review-item-note\"><strong>Reflection:<\/strong> ${window.pivotEscapeHelpHtml(action.reflection)}<\/div>`\n                        : '';\n\n                    return `\n                        <div class=\"pivot-review-item pivot-action-review-item\"\n                             role=\"button\"\n                             tabindex=\"0\"\n                             onclick=\"window.pivotOpenActionEditor(${idx})\"\n                             onkeydown=\"if(event.key==='Enter'||event.key===' '){event.preventDefault();window.pivotOpenActionEditor(${idx});}\">\n                            <div class=\"pivot-review-item-top\">\n                                <span class=\"pivot-review-chip\">${window.pivotEscapeHelpHtml(typeLabel)}<\/span>\n                                <span class=\"pivot-review-score\">${window.pivotEscapeHelpHtml(normalizedStatus === 'completed' ? 'Completed' : 'Planned')}<\/span>\n                            <\/div>\n                            <h3>${window.pivotEscapeHelpHtml(action.text || 'Development action')}<\/h3>\n                            <div class=\"pivot-review-item-meta\">${window.pivotEscapeHelpHtml(contextLabel)}${dateLabel ? ' \u00b7 ' + window.pivotEscapeHelpHtml(dateLabel) : ''}<\/div>\n                            ${reflection}\n                            <div class=\"pivot-review-item-actions\">\n                                <span>View \/ edit \u2192<\/span>\n                                ${normalizedStatus === 'planned'\n                                    ? `<button type=\"button\" class=\"pivot-btn-success\" onclick=\"event.stopPropagation(); window.pivotOpenCompleteModal(${idx}, 'general', 'General%20Profile')\">Mark complete<\/button>`\n                                    : ''}\n                            <\/div>\n                        <\/div>`;\n                }).join('');\n            }\n        }\n\n        window.pivotActiveActionManagerStatus = normalizedStatus;\n        const modal = document.getElementById('pivot-action-manager-modal');\n        if (modal) {\n            modal.classList.add('active');\n            modal.scrollTop = 0;\n            const box = modal.querySelector('.pivot-modal-box');\n            if (box) box.scrollTop = 0;\n        }\n    };\n\n    window.pivotGetCapabilityGroupInfo = function(questionId) {\n        const id = String(questionId || '').trim();\n        const groups = [\n            { config: window.PIVOT_BASIC_SKILLS_LEVEL_CONFIG, label: 'Essential Skills' },\n            { config: window.PIVOT_ABILITY_LEVEL_CONFIG, label: 'Abilities' },\n            { config: window.PIVOT_KNOWLEDGE_LEVEL_CONFIG, label: 'Knowledge' },\n            { config: window.PIVOT_TRANSFERABLE_SKILLS_LEVEL_CONFIG, label: 'Transferable Skills' },\n            { config: window.PIVOT_WORK_ACTIVITIES_LEVEL_CONFIG, label: 'Work Activities' }\n        ];\n\n        for (const group of groups) {\n            if (group.config && group.config[id]) {\n                return {\n                    label: group.label,\n                    name: group.config[id].element_name || id\n                };\n            }\n        }\n\n        return { label: 'Capability', name: id };\n    };\n\n    window.pivotFindAssessmentLocationByQuestionId = function(questionId) {\n        let id = String(questionId || '').trim();\n        try { id = decodeURIComponent(id); } catch (e) {}\n        const master = window.pivotMasterStore || {};\n\n        for (const pillar of Object.keys(master)) {\n            const modules = master[pillar];\n            if (!modules || typeof modules !== 'object') continue;\n\n            for (const mod of Object.keys(modules)) {\n                let questions = modules[mod] || [];\n                if (!Array.isArray(questions)) questions = Object.values(questions);\n\n                const index = questions.findIndex(function(question) {\n                    return question && String(question.id || '').trim() === id;\n                });\n\n                if (index >= 0) {\n                    return {\n                        pillar: pillar,\n                        mod: mod,\n                        index: index\n                    };\n                }\n            }\n        }\n\n        return null;\n    };\n\n    window.pivotReviewCapabilityQuestion = function(questionId) {\n        const location = window.pivotFindAssessmentLocationByQuestionId(questionId);\n\n        if (!location) {\n            alert('PIVOT could not locate this assessment question. Please open the relevant self-assessment from the dashboard.');\n            return;\n        }\n\n        window.pivotCloseCapabilityReview();\n        window.pivotLoadAssessment(\n            encodeURIComponent(location.pillar),\n            encodeURIComponent(location.mod)\n        );\n\n        window.requestAnimationFrame(function() {\n            window.pivotGoToAssessmentQuestion(location.index);\n        });\n    };\n\n    window.pivotOpenCapabilityBand = function(band) {\n        window.pivotBuildModals();\n\n        const bandConfig = {\n            developing: {\n                title: 'Developing',\n                range: '0\u20132',\n                min: 0,\n                max: 2,\n                explanation: 'Capability areas you currently rate from 0 to 2.'\n            },\n            established: {\n                title: 'Established',\n                range: '3\u20134',\n                min: 3,\n                max: 4,\n                explanation: 'Capability areas you currently rate from 3 to 4.'\n            },\n            higher: {\n                title: 'Higher level',\n                range: '5\u20137',\n                min: 5,\n                max: 7,\n                explanation: 'Capability areas you currently rate from 5 to 7.'\n            }\n        };\n\n        const config = bandConfig[band] || bandConfig.developing;\n        const scores = typeof window.getFlattenedUserScores === 'function'\n            ? window.getFlattenedUserScores()\n            : {};\n\n        const capabilityIds = [\n            ...new Set(\n                [\n                    window.PIVOT_BASIC_SKILLS_LEVEL_CONFIG,\n                    window.PIVOT_ABILITY_LEVEL_CONFIG,\n                    window.PIVOT_KNOWLEDGE_LEVEL_CONFIG,\n                    window.PIVOT_TRANSFERABLE_SKILLS_LEVEL_CONFIG,\n                    window.PIVOT_WORK_ACTIVITIES_LEVEL_CONFIG\n                ].flatMap(function(group) {\n                    return Object.keys(group || {});\n                })\n            )\n        ];\n\n        const items = capabilityIds\n            .map(function(id) {\n                const score = Number(scores[id]);\n                if (!Number.isFinite(score) || score < config.min || score > config.max) return null;\n\n                const info = window.pivotGetCapabilityGroupInfo(id);\n\n                return {\n                    id: id,\n                    score: score,\n                    label: info.label,\n                    name: info.name\n                };\n            })\n            .filter(Boolean)\n            .sort(function(a, b) {\n                if (a.label !== b.label) return a.label.localeCompare(b.label);\n                if (a.score !== b.score) return a.score - b.score;\n                return a.name.localeCompare(b.name);\n            });\n\n        const heading = document.getElementById('pivot-capability-review-heading');\n        const summary = document.getElementById('pivot-capability-review-summary');\n        const list = document.getElementById('pivot-capability-review-list');\n\n        if (heading) heading.textContent = `${config.title} capability areas \u00b7 ${config.range}`;\n        if (summary) {\n            summary.textContent = items.length\n                ? `${items.length} ${items.length === 1 ? 'area' : 'areas'}. ${config.explanation} Tap an area to review or update the original self-assessment.`\n                : `No capability areas are currently in the ${config.title.toLowerCase()} range.`;\n        }\n\n        if (list) {\n            list.innerHTML = items.length\n                ? items.map(function(item) {\n                    return `\n                        <button type=\"button\"\n                                class=\"pivot-review-item pivot-capability-review-item\"\n                                onclick=\"window.pivotReviewCapabilityQuestion('${encodeURIComponent(item.id)}')\">\n                            <div class=\"pivot-review-item-top\">\n                                <span class=\"pivot-review-chip\">${window.pivotEscapeHelpHtml(item.label)}<\/span>\n                                <span class=\"pivot-review-score\">${item.score} \/ 7<\/span>\n                            <\/div>\n                            <h3>${window.pivotEscapeHelpHtml(item.name)}<\/h3>\n                            <div class=\"pivot-review-item-meta\">Current self-rating \u00b7 ${window.pivotEscapeHelpHtml(config.title)}<\/div>\n                            <div class=\"pivot-review-item-link\">Review \/ update \u2192<\/div>\n                        <\/button>`;\n                }).join('')\n                : `<div class=\"pivot-review-empty\">Nothing to review in this range yet.<\/div>`;\n        }\n\n        const modal = document.getElementById('pivot-capability-review-modal');\n        if (modal) {\n            modal.classList.add('active');\n            modal.scrollTop = 0;\n            const box = modal.querySelector('.pivot-modal-box');\n            if (box) box.scrollTop = 0;\n        }\n    };\n\n    \/* =========================================================\n       PIVOT VOICE NOTES \u2014 DEVELOPMENT ACTIONS PILOT\n       Browser recording -> server transcription -> editable text.\n       Audio blobs remain in memory only and are released after the request.\n       ========================================================= *\/\n    window.PIVOT_VOICE_MAX_SECONDS = 180;\n    window.pivotVoiceState = window.pivotVoiceState || {};\n\n    window.pivotVoiceGetConfig = function(context) {\n        const isReflection = context === 'reflection';\n        const isGlobalAction = context === 'global-action';\n        return {\n            context: isReflection ? 'reflection' : (isGlobalAction ? 'global-action' : 'action'),\n            textareaId: isReflection\n                ? 'action_reflection_input'\n                : (isGlobalAction ? '' : 'action_details_input'),\n            buttonId: isReflection\n                ? 'pivot-voice-reflection-btn'\n                : (isGlobalAction ? 'pivot-voice-global-action-btn' : 'pivot-voice-action-btn'),\n            statusId: isReflection\n                ? 'pivot-voice-reflection-status'\n                : (isGlobalAction ? 'pivot-voice-global-action-status' : 'pivot-voice-action-status'),\n            idleLabel: isReflection\n                ? '\ud83c\udf99 Record reflection'\n                : (isGlobalAction ? '\ud83c\udf99 Record this action' : '\ud83c\udf99 Record voice note'),\n            anotherLabel: isReflection\n                ? '\ud83c\udf99 Record another reflection'\n                : (isGlobalAction ? '\ud83c\udf99 Record another note' : '\ud83c\udf99 Record another note')\n        };\n    };\n\n    window.pivotVoiceGetState = function(context) {\n        const cfg = window.pivotVoiceGetConfig(context);\n        if (!window.pivotVoiceState[cfg.context]) {\n            window.pivotVoiceState[cfg.context] = {\n                mediaRecorder: null,\n                stream: null,\n                chunks: [],\n                timer: null,\n                startedAtMs: 0,\n                recordedAt: '',\n                recordedDate: '',\n                usedVoice: false,\n                recording: false,\n                transcribing: false,\n                hasTranscript: false,\n                cancelled: true\n            };\n        }\n        return window.pivotVoiceState[cfg.context];\n    };\n\n    window.pivotVoiceSetStatus = function(context, message, stateName) {\n        const cfg = window.pivotVoiceGetConfig(context);\n        const el = document.getElementById(cfg.statusId);\n        if (!el) return;\n        el.textContent = message || '';\n        el.dataset.state = stateName || 'idle';\n    };\n\n    window.pivotVoiceSetButton = function(context, options) {\n        const cfg = window.pivotVoiceGetConfig(context);\n        const btn = document.getElementById(cfg.buttonId);\n        if (!btn) return;\n        const opts = options || {};\n        btn.textContent = opts.label || cfg.idleLabel;\n        btn.disabled = !!opts.disabled;\n        btn.classList.toggle('is-recording', !!opts.recording);\n    };\n\n    window.pivotVoiceFormatTimer = function(totalSeconds) {\n        const seconds = Math.max(0, Number(totalSeconds) || 0);\n        const mins = Math.floor(seconds \/ 60);\n        const secs = seconds % 60;\n        return String(mins).padStart(2, '0') + ':' + String(secs).padStart(2, '0');\n    };\n\n    window.pivotVoiceChooseMimeType = function() {\n        if (!window.MediaRecorder || typeof window.MediaRecorder.isTypeSupported !== 'function') return '';\n        const preferred = [\n            'audio\/webm;codecs=opus',\n            'audio\/webm',\n            'audio\/mp4',\n            'audio\/ogg;codecs=opus'\n        ];\n        for (const type of preferred) {\n            if (window.MediaRecorder.isTypeSupported(type)) return type;\n        }\n        return '';\n    };\n\n    window.pivotVoiceExtensionForMime = function(mimeType) {\n        const type = String(mimeType || '').toLowerCase();\n        if (type.includes('mp4')) return 'mp4';\n        if (type.includes('ogg')) return 'ogg';\n        if (type.includes('wav')) return 'wav';\n        if (type.includes('mpeg') || type.includes('mp3')) return 'mp3';\n        return 'webm';\n    };\n\n    window.pivotVoiceReleaseStream = function(state) {\n        if (!state) return;\n        if (state.timer) {\n            clearInterval(state.timer);\n            state.timer = null;\n        }\n        if (state.stream && typeof state.stream.getTracks === 'function') {\n            state.stream.getTracks().forEach(function(track) {\n                try { track.stop(); } catch (e) {}\n            });\n        }\n        state.stream = null;\n    };\n\n    window.pivotResetVoiceContext = function(context, clearMetadata) {\n        const cfg = window.pivotVoiceGetConfig(context);\n        const state = window.pivotVoiceGetState(context);\n\n        \/\/ Mark any in-flight stop\/transcription as discarded before stopping the recorder.\n        state.cancelled = true;\n\n        if (state.mediaRecorder && state.recording && state.mediaRecorder.state !== 'inactive') {\n            try { state.mediaRecorder.stop(); } catch (e) {}\n        }\n        window.pivotVoiceReleaseStream(state);\n\n        state.mediaRecorder = null;\n        state.chunks = [];\n        state.startedAtMs = 0;\n        state.recording = false;\n        state.transcribing = false;\n        state.hasTranscript = false;\n\n        if (clearMetadata !== false) {\n            state.recordedAt = '';\n            state.recordedDate = '';\n            state.usedVoice = false;\n        }\n\n        window.pivotVoiceSetButton(cfg.context, { label: cfg.idleLabel, disabled: false, recording: false });\n        window.pivotVoiceSetStatus(cfg.context, 'Ready to record, or type in the box above.', 'idle');\n    };\n\n    window.pivotCloseVoiceActionModal = function() {\n        window.pivotResetVoiceContext('action', true);\n        const modal = document.getElementById('pivot-action-modal');\n        if (modal) modal.classList.remove('active');\n    };\n\n    window.pivotCloseVoiceCompleteModal = function() {\n        window.pivotResetVoiceContext('reflection', true);\n        const modal = document.getElementById('pivot-complete-modal');\n        if (modal) modal.classList.remove('active');\n    };\n\n    window.pivotToggleVoiceRecording = async function(context) {\n        const cfg = window.pivotVoiceGetConfig(context);\n        const state = window.pivotVoiceGetState(cfg.context);\n\n        if (state.transcribing) return;\n\n        if (state.recording && state.mediaRecorder) {\n            try {\n                if (state.mediaRecorder.state !== 'inactive') state.mediaRecorder.stop();\n            } catch (error) {\n                console.error('[PIVOT Voice] Could not stop recording:', error);\n                window.pivotVoiceReleaseStream(state);\n                state.recording = false;\n                window.pivotVoiceSetButton(cfg.context, { label: cfg.idleLabel });\n                window.pivotVoiceSetStatus(cfg.context, 'Recording stopped. You can still type your note.', 'error');\n            }\n            return;\n        }\n\n        if (!navigator.mediaDevices || typeof navigator.mediaDevices.getUserMedia !== 'function' || !window.MediaRecorder) {\n            window.pivotVoiceSetStatus(cfg.context, 'Voice recording is not supported in this browser. You can still type your note.', 'error');\n            return;\n        }\n\n        if (!window.PivotVoiceAPI || !window.PivotVoiceAPI.ajaxUrl || !window.PivotVoiceAPI.nonce) {\n            window.pivotVoiceSetStatus(cfg.context, 'Voice transcription is not available yet. You can still type your note.', 'error');\n            return;\n        }\n\n        try {\n            window.pivotVoiceReleaseStream(state);\n            state.cancelled = false;\n            state.chunks = [];\n            state.stream = await navigator.mediaDevices.getUserMedia({\n                audio: {\n                    echoCancellation: true,\n                    noiseSuppression: true,\n                    autoGainControl: true\n                }\n            });\n\n            const chosenMime = window.pivotVoiceChooseMimeType();\n            const recorderOptions = chosenMime ? { mimeType: chosenMime } : undefined;\n            state.mediaRecorder = recorderOptions\n                ? new MediaRecorder(state.stream, recorderOptions)\n                : new MediaRecorder(state.stream);\n\n            state.mediaRecorder.addEventListener('dataavailable', function(event) {\n                if (event.data && event.data.size > 0) state.chunks.push(event.data);\n            });\n\n            state.mediaRecorder.addEventListener('stop', function() {\n                window.pivotVoiceHandleStop(cfg.context).catch(function(error) {\n                    console.error('[PIVOT Voice] Stop\/transcription error:', error);\n                    state.transcribing = false;\n                    state.recording = false;\n                    window.pivotVoiceReleaseStream(state);\n                    window.pivotVoiceSetButton(cfg.context, { label: cfg.idleLabel });\n                    const safeMessage = error && error.message\n                        ? String(error.message)\n                        : 'We could not transcribe that recording. You can try again or type your note.';\n                    window.pivotVoiceSetStatus(cfg.context, safeMessage, 'error');\n                });\n            }, { once: true });\n\n            state.startedAtMs = Date.now();\n            state.recording = true;\n            state.transcribing = false;\n            state.mediaRecorder.start(500);\n\n            window.pivotVoiceSetButton(cfg.context, { label: '\u25a0 Stop recording', recording: true });\n            window.pivotVoiceSetStatus(cfg.context, 'Recording \u00b7 00:00', 'recording');\n\n            state.timer = setInterval(function() {\n                if (!state.recording) return;\n                const elapsed = Math.floor((Date.now() - state.startedAtMs) \/ 1000);\n                window.pivotVoiceSetStatus(cfg.context, 'Recording \u00b7 ' + window.pivotVoiceFormatTimer(elapsed), 'recording');\n\n                if (elapsed >= window.PIVOT_VOICE_MAX_SECONDS) {\n                    try {\n                        if (state.mediaRecorder && state.mediaRecorder.state !== 'inactive') state.mediaRecorder.stop();\n                    } catch (e) {}\n                }\n            }, 500);\n        } catch (error) {\n            console.error('[PIVOT Voice] Microphone access error:', error);\n            window.pivotVoiceReleaseStream(state);\n            state.recording = false;\n            state.transcribing = false;\n            window.pivotVoiceSetButton(cfg.context, { label: cfg.idleLabel });\n\n            const denied = error && (error.name === 'NotAllowedError' || error.name === 'SecurityError');\n            window.pivotVoiceSetStatus(\n                cfg.context,\n                denied\n                    ? 'Microphone access was not allowed. You can enable it in your browser settings or type your note instead.'\n                    : 'The microphone could not be started. You can still type your note.',\n                'error'\n            );\n        }\n    };\n\n    window.pivotVoiceHandleStop = async function(context) {\n        const cfg = window.pivotVoiceGetConfig(context);\n        const state = window.pivotVoiceGetState(cfg.context);\n\n        state.recording = false;\n        if (state.timer) {\n            clearInterval(state.timer);\n            state.timer = null;\n        }\n\n        const recorder = state.mediaRecorder;\n        const mimeType = (recorder && recorder.mimeType) || (state.chunks[0] && state.chunks[0].type) || 'audio\/webm';\n        const chunks = state.chunks.slice();\n        state.chunks = [];\n        state.mediaRecorder = null;\n        window.pivotVoiceReleaseStream(state);\n\n        if (state.cancelled) {\n            window.pivotVoiceSetButton(cfg.context, { label: cfg.idleLabel });\n            return;\n        }\n\n        if (!chunks.length) {\n            window.pivotVoiceSetButton(cfg.context, { label: cfg.idleLabel });\n            window.pivotVoiceSetStatus(cfg.context, 'No audio was captured. Please try again or type your note.', 'error');\n            return;\n        }\n\n        const blob = new Blob(chunks, { type: mimeType });\n        if (!blob.size) {\n            window.pivotVoiceSetButton(cfg.context, { label: cfg.idleLabel });\n            window.pivotVoiceSetStatus(cfg.context, 'No audio was captured. Please try again or type your note.', 'error');\n            return;\n        }\n\n        const now = new Date();\n        state.recordedAt = now.toISOString();\n        state.recordedDate = window.pivotFormatMemberDate(now);\n        state.transcribing = true;\n\n        window.pivotVoiceSetButton(cfg.context, { label: 'Transcribing\u2026', disabled: true });\n        window.pivotVoiceSetStatus(cfg.context, 'Transcribing your voice note\u2026', 'working');\n\n        try {\n            const formData = new FormData();\n            formData.append('action', 'pivot_transcribe_voice_note');\n            formData.append('nonce', window.PivotVoiceAPI.nonce);\n            const apiContext = cfg.context === 'global-action' ? 'action' : cfg.context;\n            formData.append('context', apiContext);\n            formData.append(\n                'audio',\n                blob,\n                'pivot-' + cfg.context + '-' + Date.now() + '.' + window.pivotVoiceExtensionForMime(mimeType)\n            );\n\n            const response = await fetch(window.PivotVoiceAPI.ajaxUrl, {\n                method: 'POST',\n                credentials: 'same-origin',\n                cache: 'no-store',\n                body: formData\n            });\n\n            let payload = null;\n            try { payload = await response.json(); } catch (e) {}\n\n            if (state.cancelled) {\n                state.transcribing = false;\n                return;\n            }\n\n            if (!response.ok || !payload || payload.success !== true || !payload.data || !payload.data.text) {\n                const message = payload && payload.data && payload.data.message\n                    ? String(payload.data.message)\n                    : 'Transcription could not be completed.';\n                throw new Error(message);\n            }\n\n            const transcript = String(payload.data.text || '').trim();\n            if (!transcript) throw new Error('The recording did not contain any transcribable speech.');\n\n            const textarea = (\n                cfg.context === 'global-action' &&\n                window.pivotGlobalActionVoiceTarget &&\n                window.pivotGlobalActionVoiceTarget.isConnected\n            )\n                ? window.pivotGlobalActionVoiceTarget\n                : document.getElementById(cfg.textareaId);\n\n            if (textarea) {\n                const existing = String(textarea.value || '').trim();\n                textarea.value = existing ? (existing + '\\n\\n' + transcript) : transcript;\n                textarea.dispatchEvent(new Event('input', { bubbles: true }));\n                textarea.focus({ preventScroll: true });\n            }\n\n            state.usedVoice = true;\n            state.hasTranscript = true;\n            state.transcribing = false;\n            window.pivotVoiceSetButton(cfg.context, { label: cfg.anotherLabel });\n            window.pivotVoiceSetStatus(cfg.context, 'Transcription ready \u2014 review or edit the text before saving.', 'success');\n        } catch (error) {\n            if (state.cancelled) {\n                state.transcribing = false;\n                return;\n            }\n            console.error('[PIVOT Voice] Transcription request failed:', error);\n            state.transcribing = false;\n            state.usedVoice = false;\n            state.hasTranscript = false;\n            state.recordedAt = '';\n            state.recordedDate = '';\n            window.pivotVoiceSetButton(cfg.context, { label: cfg.idleLabel });\n            const safeMessage = error && error.message\n                ? String(error.message)\n                : 'We could not transcribe that recording. You can try again or type your note.';\n            window.pivotVoiceSetStatus(cfg.context, safeMessage, 'error');\n        }\n    };\n\n    \/* =========================================================\n       FLOATING + ACTION MODAL VOICE BRIDGE\n       The site's global + button is supplied outside this Dashboard snippet.\n       This bridge discovers that advanced modal when it opens, adds the same\n       voice-to-text control to its Step 3 textarea, and lets the modal's\n       existing Log Action workflow continue unchanged.\n       ========================================================= *\/\n    window.pivotNormalizeUiText = function(value) {\n        return String(value || '').replace(\/\\s+\/g, ' ').trim().toLowerCase();\n    };\n\n    window.pivotFindGlobalActionModal = function() {\n        const headings = Array.from(document.querySelectorAll('h1,h2,h3,h4,[role=\"heading\"]'));\n        for (const heading of headings) {\n            const headingText = window.pivotNormalizeUiText(heading.textContent);\n            if (!headingText.includes('add new self-development action')) continue;\n\n            let node = heading;\n            for (let depth = 0; depth < 10 && node; depth++, node = node.parentElement) {\n                const nodeText = window.pivotNormalizeUiText(node.innerText || node.textContent);\n                if (node.querySelector && node.querySelector('textarea') && nodeText.includes('log action')) {\n                    return node;\n                }\n            }\n        }\n        return null;\n    };\n\n    window.pivotFindGlobalActionTextarea = function(modal) {\n        if (!modal) return null;\n        const headings = Array.from(modal.querySelectorAll('h2,h3,h4,strong,label,div,p'));\n        for (const heading of headings) {\n            const text = window.pivotNormalizeUiText(heading.textContent);\n            if (!text.includes('step 3') || !text.includes('self-development action')) continue;\n\n            let node = heading;\n            for (let depth = 0; depth < 6 && node && node !== modal.parentElement; depth++, node = node.parentElement) {\n                const textarea = node.querySelector && node.querySelector('textarea');\n                if (textarea) return textarea;\n                if (node === modal) break;\n            }\n        }\n\n        const textareas = Array.from(modal.querySelectorAll('textarea'));\n        return textareas.length ? textareas[textareas.length - 1] : null;\n    };\n\n    window.pivotAttachGlobalActionVoiceMetadata = function(beforeIds, transcript, recordedAt, recordedDate) {\n        if (!recordedAt) return false;\n        const actions = window.safeLocalParse('pivotDevActions', []);\n        if (!Array.isArray(actions) || !actions.length) return false;\n\n        const oldIds = new Set(Array.isArray(beforeIds) ? beforeIds.map(String) : []);\n        let candidates = actions\n            .map(function(action, index) { return { action: action, index: index }; })\n            .filter(function(entry) {\n                return entry.action && !oldIds.has(String(entry.action.id));\n            });\n\n        if (!candidates.length) return false;\n\n        const spoken = String(transcript || '').trim().toLowerCase();\n        let chosen = candidates.find(function(entry) {\n            const actionText = String(entry.action.text || '').trim().toLowerCase();\n            return spoken && actionText && (actionText.includes(spoken.slice(0, 80)) || spoken.includes(actionText.slice(0, 80)));\n        });\n\n        if (!chosen) chosen = candidates[candidates.length - 1];\n        if (!chosen || !chosen.action) return false;\n\n        chosen.action.entryMethod = 'voice-transcribed';\n        chosen.action.voiceRecordedAt = recordedAt;\n        chosen.action.voiceRecordedDate = recordedDate || window.pivotFormatMemberDate(recordedAt);\n        window.pivotSaveAll('pivotDevActions', actions);\n        window.pivotDebouncedSync();\n        return true;\n    };\n\n    window.pivotPrepareGlobalActionVoiceSave = function(textarea) {\n        const state = window.pivotVoiceGetState('global-action');\n        if (!state.usedVoice || !state.recordedAt) return;\n\n        const actionsBefore = window.safeLocalParse('pivotDevActions', []);\n        const beforeIds = Array.isArray(actionsBefore)\n            ? actionsBefore.filter(Boolean).map(function(action) { return action.id; })\n            : [];\n        const transcript = textarea ? String(textarea.value || '') : '';\n        const recordedAt = state.recordedAt;\n        const recordedDate = state.recordedDate;\n\n        let attempts = 0;\n        const attachWhenSaved = function() {\n            attempts++;\n            if (window.pivotAttachGlobalActionVoiceMetadata(beforeIds, transcript, recordedAt, recordedDate)) {\n                window.pivotResetVoiceContext('global-action', true);\n                return;\n            }\n            if (attempts < 6) setTimeout(attachWhenSaved, 450);\n        };\n        setTimeout(attachWhenSaved, 250);\n    };\n\n    window.pivotInstallGlobalActionVoiceBridge = function() {\n        const modal = window.pivotFindGlobalActionModal();\n        if (!modal) return false;\n\n        const textarea = window.pivotFindGlobalActionTextarea(modal);\n        if (!textarea) return false;\n\n        \/*\n         * v2.16.60 SAVE COMPATIBILITY:\n         * Keep the floating modal's native textarea ID untouched.\n         * Its existing LOG ACTION handler depends on that original ID.\n         * Voice and auto-grow use a direct reference\/data attribute instead.\n         *\/\n        if (\n            window.pivotGlobalActionVoiceTarget &&\n            window.pivotGlobalActionVoiceTarget !== textarea &&\n            window.pivotGlobalActionVoiceTarget.dataset\n        ) {\n            delete window.pivotGlobalActionVoiceTarget.dataset.pivotGlobalActionVoiceTarget;\n        }\n\n        window.pivotGlobalActionVoiceTarget = textarea;\n        textarea.dataset.pivotGlobalActionVoiceTarget = '1';\n\n        let voiceBox = modal.querySelector('[data-pivot-global-action-voice=\"1\"]');\n        if (!voiceBox) {\n            voiceBox = document.createElement('div');\n            voiceBox.className = 'pivot-voice-note pivot-global-action-voice-note';\n            voiceBox.setAttribute('data-pivot-global-action-voice', '1');\n            voiceBox.innerHTML = `\n                <div class=\"pivot-voice-note-head\">\n                    <span class=\"pivot-voice-note-label\">Type or speak your development action<\/span>\n                    <button type=\"button\" id=\"pivot-voice-global-action-btn\" class=\"pivot-voice-btn\">\ud83c\udf99 Record this action<\/button>\n                <\/div>\n                <div id=\"pivot-voice-global-action-status\" class=\"pivot-voice-status\" role=\"status\" aria-live=\"polite\">Ready to record, or type in the box above.<\/div>\n                <p class=\"pivot-voice-help\">Speak naturally. Your words will be converted to editable text in the action box above.<\/p>\n                <p class=\"pivot-voice-privacy\">Your recording is sent for transcription. PIVOT does not save the audio file after transcription. Review or edit the text before logging the action.<\/p>`;\n            textarea.insertAdjacentElement('afterend', voiceBox);\n        }\n\n        const voiceButton = voiceBox.querySelector('#pivot-voice-global-action-btn');\n        if (voiceButton && !voiceButton.dataset.pivotVoiceBound) {\n            voiceButton.dataset.pivotVoiceBound = '1';\n            voiceButton.addEventListener('click', function(event) {\n                event.preventDefault();\n                event.stopPropagation();\n                window.pivotGlobalActionVoiceTarget = textarea;\n                textarea.dataset.pivotGlobalActionVoiceTarget = '1';\n                window.pivotToggleVoiceRecording('global-action');\n            });\n        }\n\n        Array.from(modal.querySelectorAll('button,input[type=\"button\"],input[type=\"submit\"],a')).forEach(function(control) {\n            if (control.dataset.pivotGlobalVoiceLifecycleBound) return;\n            const label = window.pivotNormalizeUiText(control.innerText || control.value || control.getAttribute('aria-label'));\n            if (!label) return;\n\n            if (label.includes('log action')) {\n                control.dataset.pivotGlobalVoiceLifecycleBound = '1';\n                control.addEventListener('click', function() {\n                    window.pivotPrepareGlobalActionVoiceSave(textarea);\n                }, true);\n            } else if (label === 'cancel' || label === 'close' || label === '\u00d7' || label === 'x') {\n                control.dataset.pivotGlobalVoiceLifecycleBound = '1';\n                control.addEventListener('click', function() {\n                    window.pivotResetVoiceContext('global-action', true);\n\n                    if (window.pivotGlobalActionVoiceTarget === textarea) {\n                        window.pivotGlobalActionVoiceTarget = null;\n                    }\n                }, true);\n            }\n        });\n\n        if (!voiceBox.dataset.pivotVoiceInitialised) {\n            voiceBox.dataset.pivotVoiceInitialised = '1';\n            window.pivotResetVoiceContext('global-action', true);\n        }\n        return true;\n    };\n\n    window.pivotStartGlobalActionVoiceObserver = function() {\n        if (window.pivotGlobalActionVoiceObserverStarted) return;\n        window.pivotGlobalActionVoiceObserverStarted = true;\n\n        const run = function() {\n            try { window.pivotInstallGlobalActionVoiceBridge(); } catch (error) {\n                console.error('[PIVOT Voice] Global action bridge error:', error);\n            }\n        };\n\n        run();\n        const observer = new MutationObserver(function() { run(); });\n        observer.observe(document.documentElement, {\n            childList: true,\n            subtree: true,\n            attributes: true,\n            attributeFilter: ['class', 'style', 'aria-hidden']\n        });\n        window.pivotGlobalActionVoiceObserver = observer;\n    };\n\n    if (document.readyState === 'loading') {\n        document.addEventListener('DOMContentLoaded', window.pivotStartGlobalActionVoiceObserver, { once: true });\n    } else {\n        window.pivotStartGlobalActionVoiceObserver();\n    }\n\n    window.pivotOpenActionModal = function(level, pillar, mod, questionId, careerTitle) {\n        window.pivotBuildModals();\n        window.pivotActiveActionContext = { level: level, pillar: pillar, mod: mod, questionId: questionId, careerTitle: careerTitle, selectedType: 'General Task' };\n        document.getElementById('action_details_input').value = '';\n        window.pivotResetVoiceContext('action', true);\n        document.getElementById('pivot-action-modal').classList.add('active');\n    };\n\n    window.pivotCommitNewAction = function() {\n        let details = document.getElementById('action_details_input').value.trim();\n        if (!details) return alert(\"Please describe the action you want to take.\");\n        let ctx = window.pivotActiveActionContext;\n        let actions = window.safeLocalParse('pivotDevActions', []);\n        let voiceState = window.pivotVoiceGetState('action');\n        let nextAction = { id: Date.now(), text: details, type: ctx.selectedType, resources: '', status: 'planned', contextLevel: ctx.level, pillarTag: ctx.level === 'career' ? '' : decodeURIComponent(ctx.pillar), careerTag: ctx.level === 'career' ? decodeURIComponent(ctx.careerTitle) : '', dateAdded: window.pivotToday(), dateCompleted: null, reflection: \"\" };\n\n        if (voiceState.usedVoice && voiceState.recordedAt) {\n            nextAction.entryMethod = 'voice-transcribed';\n            nextAction.voiceRecordedAt = voiceState.recordedAt;\n            nextAction.voiceRecordedDate = voiceState.recordedDate || window.pivotFormatMemberDate(voiceState.recordedAt);\n        }\n\n        actions.push(nextAction);\n        window.pivotSaveAll('pivotDevActions', actions);\n        window.pivotResetVoiceContext('action', true);\n        document.getElementById('pivot-action-modal').classList.remove('active');\n        \n        window.pivotDebouncedSync(); \n        if (typeof window.renderDashboard === 'function') window.renderDashboard();\n    };\n\n    window.pivotOpenCompleteModal = function(idx, level, identifierEnc) {\n        window.pivotBuildModals();\n        if (typeof window.pivotCloseActionManager === 'function') {\n            window.pivotCloseActionManager();\n        }\n        window.pivotActiveActionContext.completeIdx = idx;\n        window.pivotActiveActionContext.returnLevel = level;\n        window.pivotActiveActionContext.returnId = identifierEnc;\n        document.getElementById('action_reflection_input').value = '';\n        window.pivotResetVoiceContext('reflection', true);\n        document.getElementById('pivot-complete-modal').classList.add('active');\n    };\n\n    window.pivotFinalizeAction = function() {\n        let idx = window.pivotActiveActionContext.completeIdx;\n        let actions = window.safeLocalParse('pivotDevActions', []);\n        let reflectionText = document.getElementById('action_reflection_input').value.trim();\n        let reflectionVoiceState = window.pivotVoiceGetState('reflection');\n        \n        if (actions[idx]) { \n            actions[idx].status = 'completed'; \n            actions[idx].dateCompleted = window.pivotToday();\n            actions[idx].reflection = reflectionText;\n\n            if (reflectionVoiceState.usedVoice && reflectionVoiceState.recordedAt && reflectionText) {\n                actions[idx].reflectionEntryMethod = 'voice-transcribed';\n                actions[idx].reflectionVoiceRecordedAt = reflectionVoiceState.recordedAt;\n                actions[idx].reflectionVoiceRecordedDate = reflectionVoiceState.recordedDate || window.pivotFormatMemberDate(reflectionVoiceState.recordedAt);\n            }\n\n            window.pivotSaveAll('pivotDevActions', actions); \n        }\n        window.pivotResetVoiceContext('reflection', true);\n        document.getElementById('pivot-complete-modal').classList.remove('active');\n        \n        window.pivotDebouncedSync(); \n\n        \/\/ --- THE REFLECTION BONUS LOGIC ---\n        if (reflectionText.length >= 10) {\n            const ajaxUrl = window.pivotGetAjaxUrl();\n            const params = new URLSearchParams();\n            params.append('action', 'pivot_award_reflection_credits');\n            window.pivotAppendSecureNonce(params);\n            \n            fetch(ajaxUrl, {\n                method: 'POST',\n                credentials: 'same-origin',\n                cache: 'no-store',\n                body: params,\n                headers: { 'Content-Type': 'application\/x-www-form-urlencoded' }\n            })\n            .then(response => response.json())\n            .then(data => {\n                if(data.success) {\n                    let rewardAmount = data.data.points;\n                    setTimeout(() => {\n                        window.pivotShowToast('gamification', rewardAmount, \"Action completed and reflection saved\");\n                        let walletBtn = document.getElementById('pivot-floating-wallet-btn');\n                        let walletTextWrap = document.getElementById('pivot-dynamic-wallet-text');\n                        \n                        if (walletBtn && walletTextWrap && walletTextWrap.childNodes.length > 0) {\n                            let balanceTextNode = walletTextWrap.childNodes[0];\n                            let currentTotalStr = balanceTextNode.nodeValue.replace(\/[^0-9]\/g, '');\n                            if (currentTotalStr) {\n                                let newBalance = parseInt(currentTotalStr) + rewardAmount;\n                                walletBtn.style.transition = 'all 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275)';\n                                walletBtn.style.transform = 'scale(1.15) translateY(-5px)';\n                                walletBtn.style.boxShadow = '0 10px 25px rgba(212, 175, 55, 0.8)';\n                                balanceTextNode.nodeValue = newBalance.toLocaleString() + \" \";\n                                setTimeout(() => { walletBtn.style.transform = 'none'; walletBtn.style.boxShadow = ''; }, 400);\n                            }\n                        }\n                    }, 500);\n                }\n            }).catch(err => console.error('Reflection Reward Error:', err));\n        } else {\n             window.pivotShowToast('complete', 0, \"Action Completed!\");\n        }\n        if (typeof window.renderDashboard === 'function') window.renderDashboard();\n    };\n\n    \/\/ =========================================================\n    \/\/ PIVOT v2.16.65 \u2014 LEGACY DASHBOARD CREDIT REDEMPTION RETIRED\n    \/\/ =========================================================\n    \/\/ The previous Dashboard code trusted browser-local dates, localStorage,\n    \/\/ DOM wallet text and a browser-selected deduction amount. That path is\n    \/\/ not transaction-safe and is intentionally fail-closed here.\n    \/\/\n    \/\/ Credit earning remains server-authoritative through the existing reward\n    \/\/ endpoints. Any future Credit redemption must be confirmed by a dedicated\n    \/\/ server transaction\/gateway before access is granted.\n    window.DAILY_CREDIT_CAP = 500; \/\/ display\/backward-compatibility constant only.\n\n    window.pivotGetDailySpend = function() {\n        return {\n            date: window.pivotToday(),\n            amount: null,\n            authoritative: false,\n            source: 'server-required'\n        };\n    };\n\n    window.pivotAttemptPurchase = function(itemName, cost, successCallback) {\n        const numericCost = Number(cost);\n        const cleanName = String(itemName || '').trim();\n\n        \/\/ Free actions do not require a Credit transaction.\n        if (numericCost === 0 || cleanName === 'Premium Upgrade') {\n            if (typeof successCallback === 'function') successCallback();\n            return true;\n        }\n\n        console.warn(\n            'PIVOT blocked a legacy browser-authorised Credit purchase.',\n            { item: cleanName, requestedCost: numericCost }\n        );\n\n        if (typeof window.pivotShowToast === 'function') {\n            window.pivotShowToast(\n                'attention',\n                0,\n                'For security, PIVOT Credit redemption must be confirmed by the server before access is granted.'\n            );\n        }\n\n        return false;\n    };\n\n    window.getFlattenedUserScores = function(prefixFilter = null) {\n        let userScores = window.safeLocalParse('pivotScores', {});\n        let flattened = {};\n\n        for (let pillar in userScores) {\n            if (!userScores[pillar] || typeof userScores[pillar] !== 'object') continue;\n\n            for (let mod in userScores[pillar]) {\n                if (!userScores[pillar][mod] || typeof userScores[pillar][mod] !== 'object') continue;\n\n                if (\n                    window.pivotIsAbilitiesModule &&\n                    window.pivotIsAbilitiesModule(pillar, mod)\n                ) {\n                    const migrationState =\n                        window.pivotGetAbilityMigrationState\n                            ? window.pivotGetAbilityMigrationState()\n                            : {};\n\n                    if (\n                        migrationState[mod] !==\n                        window.PIVOT_ABILITY_SCALE_VERSION\n                    ) {\n                        continue;\n                    }\n                }\n\n                if (\n                    window.pivotIsKnowledgeModule &&\n                    window.pivotIsKnowledgeModule(pillar, mod)\n                ) {\n                    const migrationState =\n                        window.pivotGetKnowledgeMigrationState\n                            ? window.pivotGetKnowledgeMigrationState()\n                            : {};\n\n                    if (\n                        migrationState[mod] !==\n                        window.PIVOT_KNOWLEDGE_SCALE_VERSION\n                    ) {\n                        continue;\n                    }\n                }\n\n                if (\n                    window.pivotIsTransferableSkillsModule &&\n                    window.pivotIsTransferableSkillsModule(pillar, mod)\n                ) {\n                    const migrationState =\n                        window.pivotGetTransferableSkillsMigrationState\n                            ? window.pivotGetTransferableSkillsMigrationState()\n                            : {};\n\n                    if (\n                        migrationState[mod] !==\n                        window.PIVOT_TRANSFERABLE_SKILLS_SCALE_VERSION\n                    ) {\n                        continue;\n                    }\n                }\n\n                if (\n                    window.pivotIsWorkActivitiesModule &&\n                    window.pivotIsWorkActivitiesModule(pillar, mod)\n                ) {\n                    const migrationState =\n                        window.pivotGetWorkActivitiesMigrationState\n                            ? window.pivotGetWorkActivitiesMigrationState()\n                            : {};\n\n                    if (\n                        migrationState[mod] !==\n                        window.PIVOT_WORK_ACTIVITIES_SCALE_VERSION\n                    ) {\n                        continue;\n                    }\n                }\n\n                for (let qId in userScores[pillar][mod]) {\n                    if (qId === '_date') continue;\n\n                    let idTrim = String(qId).trim();\n                    let parsedScore = parseFloat(userScores[pillar][mod][qId]);\n\n                    \/\/ P0.3 integrity: only real numeric answers enter the career matcher.\n                    if (!idTrim || !Number.isFinite(parsedScore)) continue;\n                    if (!prefixFilter || idTrim.startsWith(prefixFilter)) {\n                        flattened[idTrim] = parsedScore;\n                    }\n                }\n            }\n        }\n\n        return flattened;\n    };\n\n    window.pivotCalculateCareerInterestAlignment = function(jobName, allScores = null, assessableIds = null) {\n        const scores = allScores || window.getFlattenedUserScores();\n        const ids = assessableIds || window.pivotGetAssessableCareerIndicatorIds(scores);\n        const occupation = (window.pivotCareerInterestsMatrix || {})[jobName] || {};\n        const specificNames = window.PIVOT_SPECIFIC_INTEREST_NAMES || {};\n        const riasecNames = window.PIVOT_RIASEC_NAMES || {};\n\n        const detailedItems = Object.entries(occupation.specific || {})\n            .map(([id, ratings]) => ({\n                id: String(id || '').trim(),\n                name: specificNames[id] || id,\n                occupationOI: Number(ratings && ratings.oi),\n                ds: Number(ratings && ratings.ds)\n            }))\n            .filter(item =>\n                item.id.startsWith('1.B.3.') &&\n                Number.isFinite(item.occupationOI) &&\n                item.occupationOI >= 1 &&\n                item.occupationOI <= 7\n            );\n\n        const broadItems = Object.entries(occupation.riasec || {})\n            .map(([id, value]) => ({\n                id: String(id || '').trim(),\n                name: riasecNames[id] || id,\n                occupationOI: Number(value)\n            }))\n            .filter(item =>\n                item.id.startsWith('1.B.1.') &&\n                Number.isFinite(item.occupationOI) &&\n                item.occupationOI >= 1 &&\n                item.occupationOI <= 7\n            );\n\n        const scoreItems = function(items) {\n            let answered = 0;\n            let matchSum = 0;\n            const itemResults = [];\n\n            items.forEach(item => {\n                if (ids && typeof ids.has === 'function' && !ids.has(item.id)) return;\n\n                const userScore = Number(scores[item.id]);\n                if (!Number.isFinite(userScore) || userScore < 1 || userScore > 7) return;\n\n                answered++;\n\n                \/\/ User and occupation are on the same O*NET-aligned 1\u20137 OI scale.\n                \/\/ Exact profile alignment = 100%; maximum possible separation\n                \/\/ of six scale points = 0%.\n                const distance = Math.abs(item.occupationOI - userScore);\n                const itemPercent = Math.max(\n                    0,\n                    Math.min(100, 100 - ((distance \/ 6) * 100))\n                );\n\n                matchSum += itemPercent;\n\n                itemResults.push({\n                    id: item.id,\n                    name: item.name,\n                    userScore,\n                    occupationOI: item.occupationOI,\n                    ds: Number.isFinite(item.ds) ? item.ds : 0,\n                    itemPercent: Math.round(itemPercent)\n                });\n            });\n\n            return {\n                answered,\n                percent: answered > 0 ? Math.round(matchSum \/ answered) : null,\n                itemResults\n            };\n        };\n\n        const detailed = scoreItems(detailedItems);\n        const broad = scoreItems(broadItems);\n\n        \/\/ Use the detailed 41-area profile wherever O*NET supplies it.\n        \/\/ RIASEC is a fallback for the 32 occupations without detailed data,\n        \/\/ and remains available as an explanatory broad profile elsewhere.\n        const hasDetailedOccupationData = detailedItems.length > 0;\n        const mode = hasDetailedOccupationData\n            ? 'specific-interest-areas'\n            : 'riasec-fallback';\n\n        const active = hasDetailedOccupationData ? detailed : broad;\n        const relevant = hasDetailedOccupationData\n            ? detailedItems.length\n            : broadItems.length;\n\n        const minimumAnswered = hasDetailedOccupationData\n            ? Math.min(relevant, Math.max(10, Math.ceil(relevant * 0.5)))\n            : Math.min(relevant, Math.max(4, Math.ceil(relevant * 0.5)));\n\n        const distinctiveSpecificInterests = detailedItems\n            .filter(item =>\n                Number.isFinite(item.ds) &&\n                item.ds >= 1 &&\n                item.ds <= 8\n            )\n            .sort((a, b) => a.ds - b.ds)\n            .map(item => ({\n                id: item.id,\n                name: item.name,\n                occupationOI: item.occupationOI,\n                ds: item.ds\n            }))\n            .slice(0, 8);\n\n        \/\/ v2.16.23 evidence guard:\n        \/\/ A partial 41-area profile cannot become evidence-qualified merely\n        \/\/ because an arbitrary first half of the assessment was completed.\n        \/\/ For occupations with detailed Specific Interest data, require:\n        \/\/   1) at least 50% of the 41 areas (21\/41), AND\n        \/\/   2) every available top-three O*NET DS-ranked interest answered.\n        \/\/\n        \/\/ DS is NOT used as a score weight. It is used only to ensure that the\n        \/\/ occupation's most salient displayed interests are represented before\n        \/\/ a partial profile is called sufficient.\n        const requiredDistinctiveInterests = hasDetailedOccupationData\n            ? distinctiveSpecificInterests.filter(item => item.ds >= 1 && item.ds <= 3)\n            : [];\n\n        const requiredDistinctiveAnswered = requiredDistinctiveInterests.filter(item => {\n            const userScore = Number(scores[item.id]);\n            return Number.isFinite(userScore) && userScore >= 1 && userScore <= 7;\n        }).length;\n\n        const distinctiveEvidenceEnough = !hasDetailedOccupationData ||\n            requiredDistinctiveInterests.length === 0 ||\n            requiredDistinctiveAnswered === requiredDistinctiveInterests.length;\n\n        const coverageEvidenceEnough =\n            relevant > 0 &&\n            active.answered >= minimumAnswered &&\n            active.percent !== null;\n\n        const evidenceEnough =\n            coverageEvidenceEnough &&\n            distinctiveEvidenceEnough;\n\n        const riasecProfile = broadItems\n            .slice()\n            .sort((a, b) => b.occupationOI - a.occupationOI)\n            .map(item => ({\n                id: item.id,\n                name: item.name,\n                occupationOI: item.occupationOI\n            }));\n\n        const highPointCodeNames = {\n            1: 'Realistic',\n            2: 'Investigative',\n            3: 'Artistic',\n            4: 'Social',\n            5: 'Enterprising',\n            6: 'Conventional'\n        };\n\n        const officialHighPoints = (occupation.highPointValues || [])\n            .map(item => ({\n                fieldId: item.id,\n                code: Number(item.value),\n                name: highPointCodeNames[Number(item.value)] || null\n            }))\n            .filter(item => Number.isFinite(item.code) && item.code >= 1 && item.code <= 6);\n\n        return {\n            percent: active.percent,\n            answered: active.answered,\n            relevant,\n            minimumAnswered,\n            evidenceEnough,\n            coverageEvidenceEnough,\n            distinctiveEvidenceEnough,\n            requiredDistinctiveCount: requiredDistinctiveInterests.length,\n            requiredDistinctiveAnswered,\n            requiredDistinctiveInterests,\n            mode,\n\n            detailedPercent: detailed.percent,\n            detailedAnswered: detailed.answered,\n            detailedRelevant: detailedItems.length,\n\n            riasecPercent: broad.percent,\n            riasecAnswered: broad.answered,\n            riasecRelevant: broadItems.length,\n\n            model: hasDetailedOccupationData\n                ? 'specific-interest-1-to-7-OI-distance'\n                : 'riasec-1-to-7-OI-distance-fallback',\n\n            occupationSource: 'O*NET 30.3 Career Interests',\n            storageModel: 'memory-only-runtime-matrix',\n            distinctivenessUse: 'DS-and-IH-explanation-only-not-score-weight',\n\n            itemResults: active.itemResults,\n            detailedItemResults: detailed.itemResults,\n            riasecItemResults: broad.itemResults,\n            distinctiveSpecificInterests,\n            riasecProfile,\n            officialHighPoints\n        };\n    };\n\n    window.pivotCalculateWorkStylePerformanceAlignment = function(jobName, allScores = null, assessableIds = null) {\n        const scores = allScores || window.getFlattenedUserScores();\n        const ids = assessableIds || window.pivotGetAssessableCareerIndicatorIds(scores);\n        const occupation = (window.pivotWorkStylesMatrix || {})[jobName] || {};\n        const names = window.PIVOT_WORK_STYLE_NAMES || {};\n\n        let weightedMatchSum = 0;\n        let weightSum = 0;\n        let answered = 0;\n        let relevant = 0;\n        let positiveImpact = 0;\n        let negativeImpact = 0;\n        const itemResults = [];\n\n        Object.entries(occupation).forEach(([elementId, ratings]) => {\n            const id = String(elementId || '').trim();\n            if (!id.startsWith('1.D')) return;\n            if (ids && typeof ids.has === 'function' && !ids.has(id)) return;\n\n            const wi = Number(ratings && ratings.wi);\n            const dr = Number(ratings && ratings.dr);\n            if (!Number.isFinite(wi) || wi < -3 || wi > 3) return;\n\n            \/\/ WI=0 carries no performance direction or weight, so it is not\n            \/\/ treated as occupation-relevant evidence for alignment.\n            const weight = Math.abs(wi);\n            if (weight <= 0) return;\n\n            relevant++;\n\n            const userScore = Number(scores[id]);\n            if (!Number.isFinite(userScore) || userScore < 1 || userScore > 5) return;\n\n            answered++;\n\n            \/\/ User Work Style tendency: 1=very unlike me ... 5=very like me.\n            \/\/ Convert to 0..1. Positive WI means more of the tendency is\n            \/\/ beneficial; negative WI means less of the tendency is beneficial.\n            const tendency = (userScore - 1) \/ 4;\n            const directionalFit = wi > 0 ? tendency : (1 - tendency);\n            const itemPercent = Math.max(0, Math.min(100, directionalFit * 100));\n\n            weightedMatchSum += itemPercent * weight;\n            weightSum += weight;\n\n            if (wi > 0) positiveImpact++;\n            if (wi < 0) negativeImpact++;\n\n            itemResults.push({\n                id,\n                name: names[id] || id,\n                userScore,\n                wi,\n                dr: Number.isFinite(dr) ? dr : 0,\n                weight,\n                itemPercent: Math.round(itemPercent)\n            });\n        });\n\n        const percent = weightSum > 0\n            ? Math.round(weightedMatchSum \/ weightSum)\n            : null;\n\n        \/\/ Conservative pilot evidence threshold: at least half of the\n        \/\/ occupation-relevant Work Style indicators, with a floor of six.\n        const minimumAnswered = relevant > 0\n            ? Math.min(relevant, Math.max(6, Math.ceil(relevant * 0.5)))\n            : 0;\n\n        const evidenceEnough =\n            relevant > 0 &&\n            answered >= minimumAnswered &&\n            percent !== null;\n\n        const distinctiveStyles = Object.entries(occupation)\n            .map(([id, ratings]) => ({\n                id,\n                name: names[id] || id,\n                wi: Number(ratings && ratings.wi),\n                dr: Number(ratings && ratings.dr)\n            }))\n            .filter(item =>\n                Number.isFinite(item.wi) &&\n                item.wi > 0 &&\n                Number.isFinite(item.dr) &&\n                item.dr >= 1 &&\n                item.dr <= 10\n            )\n            .sort((a, b) => a.dr - b.dr)\n            .slice(0, 10);\n\n        return {\n            percent,\n            answered,\n            relevant,\n            minimumAnswered,\n            evidenceEnough,\n            positiveImpact,\n            negativeImpact,\n            model: 'directional-tendency-weighted-by-absolute-WI',\n            occupationSource: 'O*NET 30.3 Work Styles',\n            storageModel: 'memory-only-runtime-matrix',\n            distinctivenessUse: 'explanation-only-not-score-weight',\n            distinctiveStyles,\n            itemResults\n        };\n    };\n\n    window.pivotGetAssessableCareerIndicatorIds = function(allScores = {}) {\n        let ids = new Set();\n        let masterStore = window.pivotMasterStore || window.safeLocalParse('sys_master_store', {});\n\n        function collect(node) {\n            if (!node) return;\n\n            if (Array.isArray(node)) {\n                node.forEach(item => {\n                    if (item && item.id) ids.add(String(item.id).trim());\n                });\n                return;\n            }\n\n            if (typeof node === 'object') {\n                Object.values(node).forEach(collect);\n            }\n        }\n\n        collect(masterStore);\n\n        \/\/ Preserve any valid historical answers even if a cached assessment definition\n        \/\/ has since moved or been renamed.\n        Object.keys(allScores || {}).forEach(id => {\n            if (id) ids.add(String(id).trim());\n        });\n\n        return ids;\n    };\n\n    \/\/ FINAL FOUR-DIMENSION CAREER ALIGNMENT\n    \/\/ Overall Career Alignment is an equal-weight blend of four independently\n    \/\/ validated dimensions:\n    \/\/   1) Capability\n    \/\/   2) Context & Environment\n    \/\/   3) Career Interests\n    \/\/   4) Natural Approach \/ Work Styles\n    \/\/\n    \/\/ The headline score is withheld unless every dimension has sufficient\n    \/\/ evidence. \"What I Value Most\" remains guidance-only because PIVOT does\n    \/\/ not have a defensible current occupation-side benchmark for that construct.\n    window.PIVOT_CAREER_ENGINE_VERSION = '2.16.38-development-snapshot-final-polish';\n\n    window.calculateTwoTierCareerMatches = function(filterKeyword = '') {\n        let allScores = window.getFlattenedUserScores();\n        let assessableIds = window.pivotGetAssessableCareerIndicatorIds(allScores);\n        let matchResults = [];\n\n        const CAPABILITY_PREFIXES = ['1.A', '2.', '3.', '4.A'];\n\n        \/\/ P0.3B pilot: only Work Context has validated occupation-side\n        \/\/ personal-fit data at this stage. Other preference constructs are\n        \/\/ deliberately excluded until their own occupation mapping is validated.\n        const PREFERENCE_PREFIXES = ['4.C'];\n\n        \/\/ Work Schedules (4.C.3.d.4) is a nominal three-category item\n        \/\/ (regular \/ irregular \/ seasonal). A numeric-distance score would imply\n        \/\/ an ordering that is not defensible, so it is excluded from this pilot.\n        \/\/ Duration of Typical Work Week (4.C.3.d.8) remains comparable because\n        \/\/ its categories are ordinal.\n        const NON_ORDINAL_CONTEXT_IDS = new Set(['4.C.3.d.4']);\n\n        const rawContextScores = window.pivotGetWorkContextPreferenceScores\n            ? window.pivotGetWorkContextPreferenceScores()\n            : {};\n\n        const abilitiesMatrix = window.pivotAbilitiesMatrix || {};\n        const knowledgeMatrix = window.pivotKnowledgeMatrix || {};\n        const transferableSkillsMatrix = window.pivotTransferableSkillsMatrix || {};\n        const workActivitiesMatrix = window.pivotWorkActivitiesMatrix || {};\n        const workContextMatrix = window.pivotWorkContextMatrix || {};\n        const workStylesMatrix = window.pivotWorkStylesMatrix || {};\n        const careerInterestsMatrix = window.pivotCareerInterestsMatrix || {};\n\n        const startsWithAny = (id, prefixes) => prefixes.some(prefix => String(id || '').startsWith(prefix));\n\n        const uniqueById = (elements) => {\n            let seen = new Set();\n            return (elements || []).filter(elem => {\n                if (!elem || !elem.id) return false;\n                let id = String(elem.id).trim();\n                if (!id || seen.has(id)) return false;\n                seen.add(id);\n                return true;\n            });\n        };\n\n        for (let jobName in window.pivotJobProfiles) {\n            if (filterKeyword && !jobName.toLowerCase().includes(filterKeyword.toLowerCase())) continue;\n\n            let essentialElements = uniqueById(window.pivotJobProfiles[jobName]);\n            if (essentialElements.length === 0) continue;\n\n            \/\/ Only indicators that PIVOT can actually assess count towards coverage.\n            const basicSkillsPilotIds = new Set(\n                Object.keys(\n                    window.PIVOT_BASIC_SKILLS_LEVEL_CONFIG || {}\n                )\n            );\n\n            const abilityLevelPilotIds = new Set(\n                Object.keys(\n                    window.PIVOT_ABILITY_LEVEL_CONFIG || {}\n                )\n            );\n\n            const knowledgeLevelPilotIds = new Set(\n                Object.keys(\n                    window.PIVOT_KNOWLEDGE_LEVEL_CONFIG || {}\n                )\n            );\n\n            const transferableSkillsLevelPilotIds = new Set(\n                Object.keys(\n                    window.PIVOT_TRANSFERABLE_SKILLS_LEVEL_CONFIG || {}\n                )\n            );\n\n            const workActivitiesLevelPilotIds = new Set(\n                Object.keys(\n                    window.PIVOT_WORK_ACTIVITIES_LEVEL_CONFIG || {}\n                )\n            );\n\n            \/\/ Essential Skills remain in the small persistent occupation profile.\n            let assessableElements = essentialElements.filter(elem => {\n                const id = String(elem.id || '').trim();\n                return assessableIds.has(id);\n            });\n\n            \/\/ O*NET 30.3 Abilities are read from the compact memory-only matrix.\n            \/\/ Keep the established conservative IM>=3 relevance gate.\n            const abilityForJob =\n                abilitiesMatrix[jobName] || {};\n\n            const abilityElements =\n                Object.entries(abilityForJob)\n                    .map(([id, ratings]) => {\n                        const config =\n                            window.pivotGetAbilityLevelConfig &&\n                            window.pivotGetAbilityLevelConfig(id);\n\n                        return {\n                            id: String(id || '').trim(),\n                            name: config\n                                ? config.element_name\n                                : String(id || '').trim(),\n                            requiredValue:\n                                Number(ratings && ratings.im),\n                            importance:\n                                Number(ratings && ratings.im),\n                            level:\n                                Number(ratings && ratings.lv),\n                            source: 'abilities-runtime'\n                        };\n                    })\n                    .filter(elem =>\n                        assessableIds.has(elem.id) &&\n                        abilityLevelPilotIds.has(elem.id) &&\n                        Number.isFinite(elem.importance) &&\n                        elem.importance >= 3.0 &&\n                        Number.isFinite(elem.level)\n                    );\n\n            \/\/ O*NET 30.3 Knowledge uses the same Level\/Importance framework.\n            \/\/ IM>=3 retains the same conservative relevance rule used for Abilities.\n            const knowledgeForJob =\n                knowledgeMatrix[jobName] || {};\n\n            const knowledgeElements =\n                Object.entries(knowledgeForJob)\n                    .map(([id, ratings]) => {\n                        const config =\n                            window.pivotGetKnowledgeLevelConfig &&\n                            window.pivotGetKnowledgeLevelConfig(id);\n\n                        return {\n                            id: String(id || '').trim(),\n                            name: config\n                                ? config.element_name\n                                : String(id || '').trim(),\n                            requiredValue:\n                                Number(ratings && ratings.im),\n                            importance:\n                                Number(ratings && ratings.im),\n                            level:\n                                Number(ratings && ratings.lv),\n                            source: 'knowledge-runtime'\n                        };\n                    })\n                    .filter(elem =>\n                        assessableIds.has(elem.id) &&\n                        knowledgeLevelPilotIds.has(elem.id) &&\n                        Number.isFinite(elem.importance) &&\n                        elem.importance >= 3.0 &&\n                        Number.isFinite(elem.level)\n                    );\n\n            \/\/ O*NET 30.3 Transferable Skills use occupation Level as the\n            \/\/ direct requirement target and Importance as the weight.\n            const transferableForJob =\n                transferableSkillsMatrix[jobName] || {};\n\n            const transferableSkillElements =\n                Object.entries(transferableForJob)\n                    .map(([id, ratings]) => {\n                        const config =\n                            window.pivotGetTransferableSkillLevelConfig &&\n                            window.pivotGetTransferableSkillLevelConfig(id);\n\n                        return {\n                            id: String(id || '').trim(),\n                            name: config\n                                ? config.element_name\n                                : String(id || '').trim(),\n                            requiredValue:\n                                Number(ratings && ratings.im),\n                            importance:\n                                Number(ratings && ratings.im),\n                            level:\n                                Number(ratings && ratings.lv),\n                            source: 'transferable-skills-runtime'\n                        };\n                    })\n                    .filter(elem =>\n                        assessableIds.has(elem.id) &&\n                        transferableSkillsLevelPilotIds.has(elem.id) &&\n                        Number.isFinite(elem.importance) &&\n                        elem.importance >= 3.0 &&\n                        Number.isFinite(elem.level)\n                    );\n\n            \/\/ O*NET 30.3 Work Activities use the occupation's Activity Level\n            \/\/ as the direct target and Activity Importance as the weight.\n            const workActivitiesForJob =\n                workActivitiesMatrix[jobName] || {};\n\n            const workActivityElements =\n                Object.entries(workActivitiesForJob)\n                    .map(([id, ratings]) => {\n                        const config =\n                            window.pivotGetWorkActivityLevelConfig &&\n                            window.pivotGetWorkActivityLevelConfig(id);\n\n                        return {\n                            id: String(id || '').trim(),\n                            name: config\n                                ? config.element_name\n                                : String(id || '').trim(),\n                            requiredValue:\n                                Number(ratings && ratings.im),\n                            importance:\n                                Number(ratings && ratings.im),\n                            level:\n                                Number(ratings && ratings.lv),\n                            source: 'work-activities-runtime'\n                        };\n                    })\n                    .filter(elem =>\n                        assessableIds.has(elem.id) &&\n                        workActivitiesLevelPilotIds.has(elem.id) &&\n                        Number.isFinite(elem.importance) &&\n                        elem.importance >= 3.0 &&\n                        Number.isFinite(elem.level)\n                    );\n\n            let capElements = [\n                ...assessableElements\n                    .filter(e =>\n                        startsWithAny(\n                            e.id,\n                            CAPABILITY_PREFIXES\n                        )\n                    )\n                    .filter(e => {\n                        const id =\n                            String(e.id || '').trim();\n\n                        if (\n                            abilityLevelPilotIds.has(id) ||\n                            knowledgeLevelPilotIds.has(id) ||\n                            transferableSkillsLevelPilotIds.has(id) ||\n                            workActivitiesLevelPilotIds.has(id)\n                        ) {\n                            return false;\n                        }\n\n                        return !basicSkillsPilotIds.has(id) ||\n                            Number.isFinite(Number(e.level));\n                    }),\n                ...abilityElements,\n                ...knowledgeElements,\n                ...transferableSkillElements,\n                ...workActivityElements\n            ];\n\n            capElements = uniqueById(capElements);\n\n            \/\/ Work Context evidence is read from the compact memory-only matrix.\n            const workContextForJob = workContextMatrix[jobName] || {};\n            let prefElements = Object.entries(workContextForJob)\n                .map(([id, value]) => ({\n                    id: String(id).trim(),\n                    name: 'Work Context',\n                    requiredValue: Number(value),\n                    contextValue: Number(value),\n                    source: 'work-context-runtime'\n                }))\n                .filter(e => assessableIds.has(e.id))\n                .filter(e => startsWithAny(e.id, PREFERENCE_PREFIXES))\n                .filter(e => !NON_ORDINAL_CONTEXT_IDS.has(String(e.id || '').trim()))\n                .filter(e => Number.isFinite(e.contextValue));\n\n            if (assessableElements.length === 0 && prefElements.length === 0) {\n                matchResults.push({\n                    title: jobName,\n                    capabilityPercent: null,\n                    preferencePercent: null,\n                    combinedPercent: null,\n                    strengths: [],\n                    gaps: [],\n                    answeredRelevant: 0,\n                    totalRelevant: 0,\n                    coveragePercent: 0,\n                    legacyIndicatorCoveragePercent: 0,\n                    hasSufficientEvidence: false,\n                    evidenceDimensionCount: 0,\n                    evidenceDimensionTotal: 4,\n                    capabilityEvidenceEnough: false,\n                    preferenceEvidenceEnough: false,\n                    careerInterestEvidenceEnoughCalculated: false,\n                    workStyleEvidenceEnoughCalculated: false,\n                    hasPersonalFitMapping: false,\n                    capabilityCoveragePercent: 0,\n                    workContextCoveragePercent: 0,\n                    careerInterestCoveragePercent: 0,\n                    naturalApproachCoveragePercent: 0,\n                    careerAlignmentModel: 'equal-four-dimension-v1',\n                    careerAlignmentDimensionCount: 4,\n                    careerAlignmentWeights: {\n                        capability: 0.25,\n                        contextEnvironment: 0.25,\n                        careerInterests: 0.25,\n                        naturalApproach: 0.25\n                    },\n                    valuesIncludedInCareerAlignment: false,\n                    capabilityAnswered: 0,\n                    capabilityTotal: 0,\n                    preferenceAnswered: 0,\n                    preferenceTotal: 0,\n                    workContextRelevant: 0,\n                    workContextModel: 'item-scale-mean-alignment',\n                    workContextOccupationSource: 'O*NET 30.3 Work Context',\n                    workContextStorageModel: 'memory-only-runtime-matrix',\n                    naturalApproachPercent: null,\n                    workStyleAnswered: 0,\n                    workStyleRelevant: 0,\n                    workStyleMinimumAnswered: 0,\n                    workStyleEvidenceEnoughCalculated: false,\n                    workStyleModel: 'directional-tendency-weighted-by-absolute-WI',\n                    workStyleOccupationSource: 'O*NET 30.3 Work Styles',\n                    workStyleStorageModel: 'memory-only-runtime-matrix',\n                    workStyleDistinctivenessUse: 'explanation-only-not-score-weight',\n                    workStyleDistinctiveStyles: [],\n                    careerInterestPercent: null,\n                    careerInterestAnswered: 0,\n                    careerInterestRelevant: 0,\n                    careerInterestMinimumAnswered: 0,\n                    careerInterestEvidenceEnoughCalculated: false,\n                    careerInterestCoverageEvidenceEnough: false,\n                    careerInterestDistinctiveEvidenceEnough: false,\n                    careerInterestRequiredDistinctiveCount: 0,\n                    careerInterestRequiredDistinctiveAnswered: 0,\n                    careerInterestRequiredDistinctive: [],\n                    careerInterestMode: null,\n                    careerInterestModel: null,\n                    careerInterestOccupationSource: 'O*NET 30.3 Career Interests',\n                    careerInterestStorageModel: 'memory-only-runtime-matrix',\n                    careerInterestDistinctivenessUse: 'DS-and-IH-explanation-only-not-score-weight',\n                    careerInterestDetailedPercent: null,\n                    careerInterestDetailedAnswered: 0,\n                    careerInterestDetailedRelevant: 0,\n                    careerInterestRIASECPercent: null,\n                    careerInterestRIASECAnswered: 0,\n                    careerInterestRIASECRelevant: 0,\n                    careerInterestDistinctiveSpecific: [],\n                    careerInterestRIASECProfile: [],\n                    careerInterestOfficialHighPoints: [],\n                    abilityLevelAnswered: 0,\n                    abilityLevelRelevant: 0,\n                    abilitiesOccupationSource: 'O*NET 30.3 Abilities',\n                    abilitiesStorageModel: 'memory-only-runtime-matrix',\n                    knowledgeLevelAnswered: 0,\n                    knowledgeLevelRelevant: 0,\n                    knowledgeOccupationSource: 'O*NET 30.3 Knowledge',\n                    knowledgeStorageModel: 'memory-only-runtime-matrix',\n                    transferableSkillsLevelAnswered: 0,\n                    transferableSkillsLevelRelevant: 0,\n                    transferableSkillsOccupationSource: 'O*NET 30.3 Transferable Skills',\n                    transferableSkillsStorageModel: 'memory-only-runtime-matrix',\n                    workActivitiesLevelAnswered: 0,\n                    workActivitiesLevelRelevant: 0,\n                    workActivitiesOccupationSource: 'O*NET 30.3 Work Activities',\n                    workActivitiesStorageModel: 'memory-only-runtime-matrix'\n                });\n                continue;\n            }\n\n            \/\/ Retain the historical fallback only for careers whose assessable profile\n            \/\/ contains no recognised capability prefix. No synthetic score is added.\n            if (capElements.length === 0 && assessableElements.length > 0) {\n                capElements = assessableElements.filter(\n                    e => !startsWithAny(e.id, PREFERENCE_PREFIXES)\n                );\n            }\n\n            let capMatchSum = 0;\n            let capWeightCount = 0;\n            let capAnswered = 0;\n            let strengths = [];\n            let gaps = [];\n\n            capElements.forEach(elem => {\n                const elementId = String(elem.id || '').trim();\n                const userScore = allScores[elementId];\n\n                \/\/ P0.3 integrity: unanswered indicators are ignored, never defaulted.\n                if (!Number.isFinite(userScore)) return;\n\n                const isBasicSkillsLevelPilot =\n                    basicSkillsPilotIds.has(elementId);\n\n                const isAbilityLevelPilot =\n                    abilityLevelPilotIds.has(elementId);\n\n                const isKnowledgeLevelPilot =\n                    knowledgeLevelPilotIds.has(elementId);\n\n                const isTransferableSkillsLevelPilot =\n                    transferableSkillsLevelPilotIds.has(elementId);\n\n                const isWorkActivitiesLevelPilot =\n                    workActivitiesLevelPilotIds.has(elementId);\n\n                if (\n                    isBasicSkillsLevelPilot ||\n                    isAbilityLevelPilot ||\n                    isKnowledgeLevelPilot ||\n                    isTransferableSkillsLevelPilot ||\n                    isWorkActivitiesLevelPilot\n                ) {\n                    if (userScore < 0 || userScore > 7) return;\n\n                    const occupationLevel = Number(elem.level);\n                    const importance = Number(\n                        Number.isFinite(Number(elem.importance))\n                            ? elem.importance\n                            : elem.requiredValue\n                    );\n\n                    \/\/ A Level response is comparable only when the occupation\n                    \/\/ has an official O*NET LV value for the same Element ID.\n                    if (!Number.isFinite(occupationLevel) || occupationLevel < 0) return;\n\n                    capAnswered++;\n\n                    let matchPct = 100;\n                    if (occupationLevel > 0 && userScore < occupationLevel) {\n                        matchPct = Math.max(\n                            0,\n                            Math.min(100, (userScore \/ occupationLevel) * 100)\n                        );\n                    }\n\n                    \/\/ Do not penalise capability above the occupation requirement.\n                    \/\/ O*NET Importance is used directly as the relative weight.\n                    const weight = Number.isFinite(importance)\n                        ? Math.max(1, Math.min(5, importance))\n                        : 1;\n\n                    capMatchSum += matchPct * weight;\n                    capWeightCount += weight;\n\n                    const shortfall = occupationLevel - userScore;\n                    if (\n                        elem.name &&\n                        userScore >= occupationLevel &&\n                        occupationLevel >= 3.5 &&\n                        importance >= 3.5\n                    ) {\n                        strengths.push(elem.name);\n                    } else if (\n                        elem.name &&\n                        shortfall >= 1 &&\n                        importance >= 3.5\n                    ) {\n                        gaps.push(elem.name);\n                    }\n\n                    return;\n                }\n\n                \/\/ Legacy capability model retained temporarily for capability\n                \/\/ assessments that have not yet been migrated to O*NET Level.\n                let targetScore = (Number(elem.requiredValue) \/ 5) * 10;\n                if (!Number.isFinite(targetScore) || targetScore <= 0) return;\n                if (targetScore > 10) targetScore = 10;\n\n                capAnswered++;\n\n                let matchPct;\n                if (userScore >= targetScore) {\n                    matchPct = 100;\n                    if (userScore >= 7 && elem.name) strengths.push(elem.name);\n                } else {\n                    matchPct = Math.max(0, Math.min(100, (userScore \/ targetScore) * 100));\n                    if (userScore <= 5 && targetScore >= 6 && elem.name) gaps.push(elem.name);\n                }\n\n                let weight = Number(elem.requiredValue) >= 4.0 ? 2 : 1;\n                capMatchSum += matchPct * weight;\n                capWeightCount += weight;\n            });\n\n            let capabilityPercent = capWeightCount > 0\n                ? Math.round(capMatchSum \/ capWeightCount)\n                : null;\n\n            let prefMatchSum = 0;\n            let prefWeightCount = 0;\n            let prefAnswered = 0;          \/\/ specified numeric preferences used in scoring\n            let prefResolved = 0;          \/\/ numeric preference OR explicit NP\n            let prefNoPreference = 0;      \/\/ explicit NP, intentionally excluded from fit score\n            let prefInvalid = 0;\n\n            prefElements.forEach(elem => {\n                const elementId = String(elem.id || '').trim();\n                const rawUserValue = rawContextScores[elementId];\n\n                \/\/ \"No preference\" is a real completed response, but by design it\n                \/\/ contributes neither a match nor a mismatch.\n                if (window.pivotIsContextNoPreference && window.pivotIsContextNoPreference(rawUserValue)) {\n                    prefResolved++;\n                    prefNoPreference++;\n                    return;\n                }\n\n                const userScore = Number(rawUserValue);\n                if (!Number.isFinite(userScore)) return;\n\n                const occupationValue = Number(\n                    Number.isFinite(Number(elem.contextValue))\n                        ? elem.contextValue\n                        : elem.requiredValue\n                );\n\n                const scaleMax = window.pivotGetContextScaleMax\n                    ? Number(window.pivotGetContextScaleMax(elementId))\n                    : 5;\n\n                if (\n                    !Number.isFinite(occupationValue) ||\n                    !Number.isFinite(scaleMax) ||\n                    scaleMax <= 1 ||\n                    userScore < 1 ||\n                    userScore > scaleMax ||\n                    occupationValue < 1 ||\n                    occupationValue > scaleMax\n                ) {\n                    prefInvalid++;\n                    return;\n                }\n\n                prefResolved++;\n                prefAnswered++;\n\n                \/\/ Category-scale-aware mean alignment:\n                \/\/ user and occupation values are on the SAME O*NET item-specific\n                \/\/ category scale. Exact alignment = 100%; maximum possible\n                \/\/ separation on that scale = 0%.\n                const distance = Math.abs(occupationValue - userScore);\n                const matchPct = Math.max(\n                    0,\n                    Math.min(100, 100 - ((distance \/ (scaleMax - 1)) * 100))\n                );\n\n                prefMatchSum += matchPct;\n                prefWeightCount += 1;\n            });\n\n            let preferencePercent = prefWeightCount > 0\n                ? Math.round(prefMatchSum \/ prefWeightCount)\n                : null;\n\n            \/\/ Coverage is based only on career indicators PIVOT has an assessment for.\n            let relevantIds = new Set([\n                ...capElements.map(e => String(e.id).trim()),\n                ...prefElements.map(e => String(e.id).trim())\n            ]);\n\n            let totalRelevant = relevantIds.size;\n            let answeredRelevant = [...relevantIds].filter(id => {\n                if (String(id).startsWith('4.C')) {\n                    const rawValue = rawContextScores[id];\n\n                    if (\n                        window.pivotIsContextNoPreference &&\n                        window.pivotIsContextNoPreference(rawValue)\n                    ) {\n                        return true;\n                    }\n\n                    const numeric = Number(rawValue);\n                    return Number.isFinite(numeric) && numeric > 0;\n                }\n\n                return Number.isFinite(allScores[id]);\n            }).length;\n\n            let legacyIndicatorCoveragePercent = totalRelevant > 0\n                ? Math.round((answeredRelevant \/ totalRelevant) * 100)\n                : 0;\n\n            \/\/ Transparent evidence rule:\n            \/\/ - at least half of the relevant assessable profile;\n            \/\/ - at least six answers overall (or all indicators if fewer than six exist);\n            \/\/ - at least half of capability indicators, minimum three where possible;\n            \/\/ - at least half of preference indicators, minimum two where possible.\n            let minimumAnswered = totalRelevant > 0\n                ? Math.min(totalRelevant, Math.max(6, Math.ceil(totalRelevant * 0.5)))\n                : 0;\n\n            let minimumCapabilityAnswered = capElements.length > 0\n                ? Math.min(capElements.length, Math.max(3, Math.ceil(capElements.length * 0.5)))\n                : 0;\n\n            let minimumPreferenceAnswered = prefElements.length > 0\n                ? Math.min(prefElements.length, 6)\n                : 0;\n\n            let capabilityEvidenceEnough =\n                capElements.length > 0 &&\n                capAnswered >= minimumCapabilityAnswered &&\n                capabilityPercent !== null;\n\n            \/\/ P0.3A conservative guard:\n            \/\/ An OVERALL career alignment is only valid when the occupation has\n            \/\/ mapped personal-fit indicators AND the user has supplied enough\n            \/\/ real evidence for both capability and personal fit.\n            let hasPersonalFitMapping = prefElements.length > 0;\n\n            let preferenceEvidenceEnough =\n                hasPersonalFitMapping &&\n                prefAnswered >= minimumPreferenceAnswered &&\n                preferencePercent !== null;\n\n            let legacyTwoDimensionEvidenceEnough =\n                totalRelevant > 0 &&\n                answeredRelevant >= minimumAnswered &&\n                capabilityEvidenceEnough &&\n                preferenceEvidenceEnough;\n\n            \/\/ Validated dimension 3: My Natural Approach \/ O*NET Work Styles.\n            const workStyleAlignment = window.pivotCalculateWorkStylePerformanceAlignment\n                ? window.pivotCalculateWorkStylePerformanceAlignment(jobName, allScores, assessableIds)\n                : null;\n\n            \/\/ Validated dimension 4: Career Interests.\n            \/\/ Detailed Specific Interest Areas are primary; RIASEC remains the\n            \/\/ occupation fallback where detailed O*NET interest data is absent.\n            const careerInterestAlignment = window.pivotCalculateCareerInterestAlignment\n                ? window.pivotCalculateCareerInterestAlignment(jobName, allScores, assessableIds)\n                : null;\n\n            const workStyleEvidenceEnough =\n                !!(workStyleAlignment && workStyleAlignment.evidenceEnough);\n\n            const careerInterestEvidenceEnough =\n                !!(careerInterestAlignment && careerInterestAlignment.evidenceEnough);\n\n            const capabilityCoveragePercent =\n                capElements.length > 0\n                    ? Math.round((capAnswered \/ capElements.length) * 100)\n                    : 0;\n\n            const workContextCoveragePercent =\n                prefElements.length > 0\n                    ? Math.round((prefResolved \/ prefElements.length) * 100)\n                    : 0;\n\n            const careerInterestCoveragePercent =\n                careerInterestAlignment &&\n                careerInterestAlignment.relevant > 0\n                    ? Math.round(\n                        (\n                            careerInterestAlignment.answered \/\n                            careerInterestAlignment.relevant\n                        ) * 100\n                    )\n                    : 0;\n\n            const naturalApproachCoveragePercent =\n                workStyleAlignment &&\n                workStyleAlignment.relevant > 0\n                    ? Math.round(\n                        (\n                            workStyleAlignment.answered \/\n                            workStyleAlignment.relevant\n                        ) * 100\n                    )\n                    : 0;\n\n            \/\/ Dimension-balanced coverage prevents Capability's larger question\n            \/\/ count from dominating the coverage indicator.\n            const dimensionCoverageValues = [\n                capabilityCoveragePercent,\n                workContextCoveragePercent,\n                careerInterestCoveragePercent,\n                naturalApproachCoveragePercent\n            ];\n\n            const coveragePercent = Math.round(\n                dimensionCoverageValues.reduce(\n                    (sum, value) => sum + value,\n                    0\n                ) \/ dimensionCoverageValues.length\n            );\n\n            const evidenceDimensionCount = [\n                capabilityEvidenceEnough,\n                preferenceEvidenceEnough,\n                careerInterestEvidenceEnough,\n                workStyleEvidenceEnough\n            ].filter(Boolean).length;\n\n            \/\/ Conservative final guard: no headline Career Alignment unless all\n            \/\/ four validated dimensions independently have sufficient evidence.\n            const hasSufficientEvidence =\n                evidenceDimensionCount === 4;\n\n            let combinedPercent = null;\n\n            if (\n                hasSufficientEvidence &&\n                Number.isFinite(capabilityPercent) &&\n                Number.isFinite(preferencePercent) &&\n                careerInterestAlignment &&\n                Number.isFinite(careerInterestAlignment.percent) &&\n                workStyleAlignment &&\n                Number.isFinite(workStyleAlignment.percent)\n            ) {\n                \/\/ Equal dimension weights are transparent and avoid pretending\n                \/\/ PIVOT has empirical outcome calibration that it does not yet have.\n                combinedPercent = Math.round(\n                    (\n                        capabilityPercent +\n                        preferencePercent +\n                        careerInterestAlignment.percent +\n                        workStyleAlignment.percent\n                    ) \/ 4\n                );\n            }\n\n            matchResults.push({\n                title: jobName,\n                capabilityPercent: capabilityPercent,\n                preferencePercent: preferencePercent,\n                combinedPercent: combinedPercent,\n                strengths: [...new Set(strengths)].slice(0, 4),\n                gaps: [...new Set(gaps)].slice(0, 4),\n                answeredRelevant: answeredRelevant,\n                totalRelevant: totalRelevant,\n                coveragePercent: coveragePercent,\n                legacyIndicatorCoveragePercent: legacyIndicatorCoveragePercent,\n                hasSufficientEvidence: hasSufficientEvidence,\n                evidenceDimensionCount: evidenceDimensionCount,\n                evidenceDimensionTotal: 4,\n                capabilityEvidenceEnough: capabilityEvidenceEnough,\n                preferenceEvidenceEnough: preferenceEvidenceEnough,\n                careerInterestEvidenceEnough: careerInterestEvidenceEnough,\n                workStyleEvidenceEnough: workStyleEvidenceEnough,\n                legacyTwoDimensionEvidenceEnough: legacyTwoDimensionEvidenceEnough,\n                hasPersonalFitMapping: hasPersonalFitMapping,\n                capabilityCoveragePercent: capabilityCoveragePercent,\n                workContextCoveragePercent: workContextCoveragePercent,\n                careerInterestCoveragePercent: careerInterestCoveragePercent,\n                naturalApproachCoveragePercent: naturalApproachCoveragePercent,\n                careerAlignmentModel: 'equal-four-dimension-v1',\n                careerAlignmentDimensionCount: 4,\n                careerAlignmentWeights: {\n                    capability: 0.25,\n                    contextEnvironment: 0.25,\n                    careerInterests: 0.25,\n                    naturalApproach: 0.25\n                },\n                valuesIncludedInCareerAlignment: false,\n                capabilityAnswered: capAnswered,\n                capabilityTotal: capElements.length,\n                preferenceAnswered: prefAnswered,\n                preferenceResolved: prefResolved,\n                preferenceNoPreference: prefNoPreference,\n                preferenceInvalid: prefInvalid,\n                preferenceTotal: prefElements.length,\n                workContextSpecifiedAnswered: prefAnswered,\n                workContextResolved: prefResolved,\n                workContextNoPreference: prefNoPreference,\n                workContextRelevant: prefElements.length,\n                workContextExcludedNonOrdinal: NON_ORDINAL_CONTEXT_IDS.size,\n                workContextModel: 'item-scale-mean-alignment',\n                workContextOccupationSource: 'O*NET 30.3 Work Context',\n                workContextStorageModel: 'memory-only-runtime-matrix',\n                naturalApproachPercent: workStyleAlignment ? workStyleAlignment.percent : null,\n                workStyleAnswered: workStyleAlignment ? workStyleAlignment.answered : 0,\n                workStyleRelevant: workStyleAlignment ? workStyleAlignment.relevant : 0,\n                workStyleMinimumAnswered: workStyleAlignment ? workStyleAlignment.minimumAnswered : 0,\n                workStyleEvidenceEnoughCalculated: workStyleAlignment ? workStyleAlignment.evidenceEnough : false,\n                workStyleModel: workStyleAlignment ? workStyleAlignment.model : 'directional-tendency-weighted-by-absolute-WI',\n                workStyleOccupationSource: 'O*NET 30.3 Work Styles',\n                workStyleStorageModel: 'memory-only-runtime-matrix',\n                workStyleDistinctivenessUse: 'explanation-only-not-score-weight',\n                workStyleDistinctiveStyles: workStyleAlignment ? workStyleAlignment.distinctiveStyles : [],\n\n                careerInterestPercent: careerInterestAlignment ? careerInterestAlignment.percent : null,\n                careerInterestAnswered: careerInterestAlignment ? careerInterestAlignment.answered : 0,\n                careerInterestRelevant: careerInterestAlignment ? careerInterestAlignment.relevant : 0,\n                careerInterestMinimumAnswered: careerInterestAlignment ? careerInterestAlignment.minimumAnswered : 0,\n                careerInterestEvidenceEnoughCalculated: careerInterestAlignment ? careerInterestAlignment.evidenceEnough : false,\n                careerInterestCoverageEvidenceEnough: careerInterestAlignment ? careerInterestAlignment.coverageEvidenceEnough : false,\n                careerInterestDistinctiveEvidenceEnough: careerInterestAlignment ? careerInterestAlignment.distinctiveEvidenceEnough : false,\n                careerInterestRequiredDistinctiveCount: careerInterestAlignment ? careerInterestAlignment.requiredDistinctiveCount : 0,\n                careerInterestRequiredDistinctiveAnswered: careerInterestAlignment ? careerInterestAlignment.requiredDistinctiveAnswered : 0,\n                careerInterestRequiredDistinctive: careerInterestAlignment ? careerInterestAlignment.requiredDistinctiveInterests : [],\n                careerInterestMode: careerInterestAlignment ? careerInterestAlignment.mode : null,\n                careerInterestModel: careerInterestAlignment ? careerInterestAlignment.model : null,\n                careerInterestOccupationSource: 'O*NET 30.3 Career Interests',\n                careerInterestStorageModel: 'memory-only-runtime-matrix',\n                careerInterestDistinctivenessUse: 'DS-and-IH-explanation-only-not-score-weight',\n                careerInterestDetailedPercent: careerInterestAlignment ? careerInterestAlignment.detailedPercent : null,\n                careerInterestDetailedAnswered: careerInterestAlignment ? careerInterestAlignment.detailedAnswered : 0,\n                careerInterestDetailedRelevant: careerInterestAlignment ? careerInterestAlignment.detailedRelevant : 0,\n                careerInterestRIASECPercent: careerInterestAlignment ? careerInterestAlignment.riasecPercent : null,\n                careerInterestRIASECAnswered: careerInterestAlignment ? careerInterestAlignment.riasecAnswered : 0,\n                careerInterestRIASECRelevant: careerInterestAlignment ? careerInterestAlignment.riasecRelevant : 0,\n                careerInterestDistinctiveSpecific: careerInterestAlignment ? careerInterestAlignment.distinctiveSpecificInterests : [],\n                careerInterestRIASECProfile: careerInterestAlignment ? careerInterestAlignment.riasecProfile : [],\n                careerInterestOfficialHighPoints: careerInterestAlignment ? careerInterestAlignment.officialHighPoints : [],\n\n                basicSkillsLevelAnswered: capElements.filter(e => {\n                    const id = String(e.id || '').trim();\n                    return basicSkillsPilotIds.has(id) && Number.isFinite(allScores[id]);\n                }).length,\n                basicSkillsLevelRelevant: capElements.filter(e =>\n                    basicSkillsPilotIds.has(\n                        String(e.id || '').trim()\n                    )\n                ).length,\n                abilityLevelAnswered: capElements.filter(e => {\n                    const id = String(e.id || '').trim();\n\n                    return abilityLevelPilotIds.has(id) &&\n                        Number.isFinite(allScores[id]);\n                }).length,\n                abilityLevelRelevant: capElements.filter(e =>\n                    abilityLevelPilotIds.has(\n                        String(e.id || '').trim()\n                    )\n                ).length,\n                knowledgeLevelAnswered: capElements.filter(e => {\n                    const id = String(e.id || '').trim();\n\n                    return knowledgeLevelPilotIds.has(id) &&\n                        Number.isFinite(allScores[id]);\n                }).length,\n                knowledgeLevelRelevant: capElements.filter(e =>\n                    knowledgeLevelPilotIds.has(\n                        String(e.id || '').trim()\n                    )\n                ).length,\n                transferableSkillsLevelAnswered: capElements.filter(e => {\n                    const id = String(e.id || '').trim();\n\n                    return transferableSkillsLevelPilotIds.has(id) &&\n                        Number.isFinite(allScores[id]);\n                }).length,\n                transferableSkillsLevelRelevant: capElements.filter(e =>\n                    transferableSkillsLevelPilotIds.has(\n                        String(e.id || '').trim()\n                    )\n                ).length,\n                workActivitiesLevelAnswered: capElements.filter(e => {\n                    const id = String(e.id || '').trim();\n\n                    return workActivitiesLevelPilotIds.has(id) &&\n                        Number.isFinite(allScores[id]);\n                }).length,\n                workActivitiesLevelRelevant: capElements.filter(e =>\n                    workActivitiesLevelPilotIds.has(\n                        String(e.id || '').trim()\n                    )\n                ).length,\n                capabilityModel: 'onet-level-abilities-essential-skills-knowledge-transferable-skills-work-activities',\n                basicSkillsOccupationSource: 'O*NET 30.3 Essential Skills',\n                abilitiesOccupationSource: 'O*NET 30.3 Abilities',\n                abilitiesStorageModel: 'memory-only-runtime-matrix',\n                knowledgeOccupationSource: 'O*NET 30.3 Knowledge',\n                knowledgeStorageModel: 'memory-only-runtime-matrix',\n                transferableSkillsOccupationSource: 'O*NET 30.3 Transferable Skills',\n                transferableSkillsStorageModel: 'memory-only-runtime-matrix',\n                workActivitiesOccupationSource: 'O*NET 30.3 Work Activities',\n                workActivitiesStorageModel: 'memory-only-runtime-matrix'\n            });\n        }\n\n        return matchResults.sort((a, b) => {\n            \/\/ Full multidimensional evidence always ranks first.\n            if (a.hasSufficientEvidence !== b.hasSufficientEvidence) {\n                return a.hasSufficientEvidence ? -1 : 1;\n            }\n\n            if (a.hasSufficientEvidence && b.hasSufficientEvidence) {\n                return (b.combinedPercent || 0) - (a.combinedPercent || 0);\n            }\n\n            \/\/ Incomplete four-dimensional results remain useful, but are\n            \/\/ ordered by evidence completeness rather than pretending they are\n            \/\/ comparable headline Career Alignment scores.\n            if (\n                (b.evidenceDimensionCount || 0) !==\n                (a.evidenceDimensionCount || 0)\n            ) {\n                return (\n                    (b.evidenceDimensionCount || 0) -\n                    (a.evidenceDimensionCount || 0)\n                );\n            }\n\n            if (b.coveragePercent !== a.coveragePercent) {\n                return b.coveragePercent - a.coveragePercent;\n            }\n\n            if (a.capabilityEvidenceEnough !== b.capabilityEvidenceEnough) {\n                return a.capabilityEvidenceEnough ? -1 : 1;\n            }\n\n            if (\n                a.capabilityEvidenceEnough &&\n                b.capabilityEvidenceEnough &&\n                (b.capabilityPercent || 0) !== (a.capabilityPercent || 0)\n            ) {\n                return (b.capabilityPercent || 0) - (a.capabilityPercent || 0);\n            }\n\n            return a.title.localeCompare(b.title);\n        });\n    };\n\n    window.generateActionListTrackerHtml = function(level, pillarOrCareer = '') {\n        let actions = window.safeLocalParse('pivotDevActions', []);\n        if (!Array.isArray(actions)) actions = [];\n\n        let plannedHtml = '';\n        let completedHtml = '';\n\n        actions.forEach((act, globalIdx) => {\n            if (!act || typeof act !== 'object') return;\n\n            const matchesContext =\n                level === 'general' ||\n                (level === 'pillar' && act.pillarTag === pillarOrCareer) ||\n                (level === 'career' && act.careerTag === pillarOrCareer) ||\n                (level !== 'general' && level !== 'pillar' && level !== 'career');\n\n            if (!matchesContext) return;\n\n            let typeLabel = act.type === 'Resource Access' ? 'Learning resource' : act.type;\n            let typeHtml = typeLabel && typeLabel !== 'General Task'\n                ? `<span style=\"display:inline-block; background:#e0e7ff; color:#002FA7; font-size:0.7rem; font-weight:800; padding:2px 8px; border-radius:6px; margin-bottom:5px;\">${window.pivotEscapeHelpHtml(typeLabel)}<\/span>`\n                : '';\n\n            let displayActionText = act.text || '';\n            if (act.type === 'Resource Access' && displayActionText.startsWith('Accessed: ')) {\n                displayActionText = 'Opened resource: ' + displayActionText.slice('Accessed: '.length);\n            }\n\n            let metaLabel = act.pillarTag\n                ? `<div style=\"font-size:0.75rem; color:#64748b; margin-top:4px;\">\ud83d\udccd Area: ${window.pivotEscapeHelpHtml(act.pillarTag)}<\/div>`\n                : '';\n\n            if (act.careerTag) {\n                metaLabel = `<div style=\"font-size:0.75rem; color:#002FA7; margin-top:4px; font-weight:600;\">\ud83c\udfaf Career: ${window.pivotEscapeHelpHtml(act.careerTag)}<\/div>`;\n            }\n\n            const accessibleOpen =\n                `role=\"button\" tabindex=\"0\" onclick=\"window.pivotOpenActionEditor(${globalIdx})\" ` +\n                `onkeydown=\"if(event.key==='Enter'||event.key===' '){event.preventDefault();window.pivotOpenActionEditor(${globalIdx});}\"`;\n\n            if (act.status === 'planned') {\n                plannedHtml += `\n                    <div class=\"pivot-journal-item pivot-journal-item-clickable\" ${accessibleOpen}>\n                        <div class=\"pivot-journal-item-row\" style=\"display:flex; justify-content:space-between; align-items:flex-start;\">\n                            <div class=\"pivot-journal-item-main\" style=\"flex:1; min-width:0;\">\n                                ${typeHtml}\n                                <div style=\"font-weight:600; color:#0f172a; overflow-wrap:anywhere;\">${window.pivotEscapeHelpHtml(displayActionText)}<\/div>\n                                ${metaLabel}\n                                <div style=\"font-size:0.7rem; color:#94a3b8; margin-top:6px;\">\ud83d\udcc5 Added: ${window.pivotEscapeHelpHtml(act.dateAdded || '')}<\/div>\n                                <div class=\"pivot-journal-review-link\">View \/ edit \u2192<\/div>\n                            <\/div>\n                            <button\n                                type=\"button\"\n                                class=\"pivot-btn-success pivot-journal-complete-btn\"\n                                style=\"padding:6px 12px !important; font-size:0.75rem !important;\"\n                                onclick=\"event.stopPropagation(); window.pivotOpenCompleteModal(${globalIdx}, '${level}', '${encodeURIComponent(pillarOrCareer)}')\"\n                            >Mark complete<\/button>\n                        <\/div>\n                    <\/div>`;\n            } else {\n                let hasUserReflection =\n                    act.type !== 'Resource Access' &&\n                    act.reflection &&\n                    act.reflection.trim() !== '';\n\n                let reflectionHtml = hasUserReflection\n                    ? `<div style=\"margin-top:10px; padding:10px; background:#ffffff; border-radius:8px; border:1px dashed #16a34a; font-size:0.85rem; color:#334155;\"><strong>Reflection:<\/strong> ${window.pivotEscapeHelpHtml(act.reflection)}<\/div>`\n                    : '';\n\n                completedHtml += `\n                    <div class=\"pivot-journal-item completed pivot-journal-item-clickable\" ${accessibleOpen}>\n                        ${typeHtml}\n                        <div style=\"font-weight:600; color:#0f172a; overflow-wrap:anywhere;\">${window.pivotEscapeHelpHtml(displayActionText)}<\/div>\n                        ${metaLabel}\n                        <div style=\"font-size:0.7rem; color:#16a34a; margin-top:6px; font-weight:700;\">\u2713 Completed: ${window.pivotEscapeHelpHtml(act.dateCompleted || act.dateAdded || '')}<\/div>\n                        ${reflectionHtml}\n                        <div class=\"pivot-journal-review-link\">View \/ edit \u2192<\/div>\n                    <\/div>`;\n            }\n        });\n\n        let isQuestion = (level === 'question');\n        return `<div class=\"${isQuestion ? '' : 'pivot-journal-grid'}\" style=\"${isQuestion ? 'display:flex; flex-direction:column; gap:15px;' : ''}\"><div class=\"pivot-journal-col\" style=\"${isQuestion ? 'padding: 15px;' : ''}\"><h4 style=\"margin:0 0 10px 0; color:#b45309; font-size:0.85rem; font-weight:800; text-transform:uppercase;\">\ud83c\udfaf Planned Actions<\/h4>${plannedHtml || '<p style=\"color:#94a3b8; font-size:0.8rem; margin:0; font-style:italic;\">No planned actions here yet.<\/p>'}<\/div><div class=\"pivot-journal-col\" style=\"${isQuestion ? 'padding: 15px;' : ''}\"><h4 style=\"margin:0 0 10px 0; color:#15803d; font-size:0.85rem; font-weight:800; text-transform:uppercase;\">\u2705 Completed Actions<\/h4>${completedHtml || '<p style=\"color:#94a3b8; font-size:0.8rem; margin:0; font-style:italic;\">Completed actions will appear here.<\/p>'}<\/div><\/div>`;\n    };\n\n    window.getContextualBlocks = function(level, pillar = '', mod = '', questionId = '', careerTitle = '') {\n        let identifier = level === 'career' ? careerTitle : (level === 'general' ? 'General Profile' : pillar);\n        let contextLabel = level === 'general' ? 'your wider development' : level === 'career' ? 'this career' : 'this assessment area';\n        let containerStyle = level === 'question' ? 'margin-top:0;' : 'margin-top:25px; background: #fff; padding: 25px; border-radius: 16px; border: 1px solid #e2e8f0;';\n        \n        let assetsHtml = '';\n        if (level === 'career' || level === 'pillar') {\n            assetsHtml = `<div style=\"margin-top: 30px; border-top: 1px solid #e2e8f0; padding-top: 20px;\"><div style=\"display:flex; align-items:center; gap:8px; margin-bottom:5px;\"><span style=\"font-size:1.8rem;\">\ud83d\udcda<\/span><h4 style=\"color:#0f172a; margin:0; font-size:1.1rem; font-weight:800;\">Helpful Resources<\/h4><\/div><p style=\"color:#64748b; font-size:0.9rem; margin-top:0; margin-bottom:15px;\">Learning resources related to ${contextLabel}.<\/p>${window.pivotGenerateResourceCarouselHtml(identifier)}<\/div>`;\n        }\n        return `<div style=\"${containerStyle}\">${window.generateActionListTrackerHtml(level, identifier)}${assetsHtml}<\/div>`;\n    };\n\n    window.pivotHandleCareerSearch = function(inputVal) {\n        let container = document.getElementById('pivot_career_results_list');\n        if (!container) return;\n\n        let allScores = window.getFlattenedUserScores();\n        let hasScores = Object.keys(allScores).length > 0;\n\n        if (!hasScores && inputVal.trim() === '' && Object.keys(window.pivotJobProfiles || {}).length === 0) {\n            container.innerHTML = `\n                <div style=\"text-align: center; padding: 35px 20px; background: #f8fafc; border-radius: 12px; border: 2px dashed #cbd5e1; margin-top: 15px;\">\n                    <div style=\"font-size: 2.5rem; margin-bottom: 10px; line-height: 1;\">\ud83c\udfaf<\/div>\n                    <h4 style=\"color:#0f172a; font-weight:800; font-size:1.1rem; margin:0 0 8px 0;\">Start with your self-assessments<\/h4>\n                    <p style=\"color:#64748b; font-size:0.85rem; line-height:1.4; margin:0;\">Complete some self-assessments to begin building your profile. Career Alignment will appear when all four areas have enough relevant answers.<\/p>\n                <\/div>`;\n            return;\n        }\n\n        let results = window.calculateTwoTierCareerMatches(inputVal.trim());\n        let html = '';\n        let displayLimit = results.length > 50 ? 50 : results.length;\n\n        for (let i = 0; i < displayLimit; i++) {\n            let res = results[i];\n            let onClickAction = `window.pivotShowJobDetails('${encodeURIComponent(res.title)}')`;\n\n            const dimensionCoverageLine =\n                `Assessment coverage: ${res.coveragePercent}% ` +\n                `(Capability ${res.capabilityCoveragePercent}% \u00b7 ` +\n                `Context ${res.workContextCoveragePercent}% \u00b7 ` +\n                `Interests ${res.careerInterestCoveragePercent}% \u00b7 ` +\n                `Natural Approach ${res.naturalApproachCoveragePercent}%).`;\n\n            const missingDimensions = [];\n            if (!res.capabilityEvidenceEnough) missingDimensions.push('Capability');\n            if (!res.preferenceEvidenceEnough) missingDimensions.push('Context & Environment');\n            if (!res.careerInterestEvidenceEnough) missingDimensions.push('Career Interests');\n            if (!res.workStyleEvidenceEnough) missingDimensions.push('Natural Approach');\n\n            const subScores = [];\n\n            if (Number.isFinite(res.capabilityPercent)) {\n                subScores.push(`<span class=\"metric-pill-cap\" style=\"font-size:0.72rem; padding:3px 8px; border-radius:5px;\">\ud83d\udcaa Capability: ${res.capabilityPercent}%<\/span>`);\n            }\n\n            if (Number.isFinite(res.preferencePercent)) {\n                subScores.push(`<span class=\"metric-pill-pref\" style=\"font-size:0.72rem; padding:3px 8px; border-radius:5px;\">\u2601\ufe0f Context &amp; Environment: ${res.preferencePercent}%<\/span>`);\n            }\n\n            if (Number.isFinite(res.careerInterestPercent)) {\n                subScores.push(`<span class=\"metric-pill-interest\" style=\"font-size:0.72rem; padding:3px 8px; border-radius:5px;\">\ud83e\udded Career Interests: ${res.careerInterestPercent}%<\/span>`);\n            }\n\n            if (Number.isFinite(res.naturalApproachPercent)) {\n                subScores.push(`<span class=\"metric-pill-style\" style=\"font-size:0.72rem; padding:3px 8px; border-radius:5px;\">\ud83e\udde9 Natural Approach: ${res.naturalApproachPercent}%<\/span>`);\n            }\n\n            let statsHtml = '';\n\n            if (res.hasSufficientEvidence) {\n                statsHtml = `\n                    <div><span class=\"metric-pill-combined\" style=\"font-size:0.78rem; padding:3px 10px; font-weight:800; border-radius:5px;\">\u26a1 Career Alignment: ${res.combinedPercent}%<\/span><\/div>\n                    ${subScores.length ? `<div style=\"display:flex; flex-wrap:wrap; gap:6px 10px;\">${subScores.join('')}<\/div>` : ''}\n                    <div style=\"font-size:0.7rem; color:#64748b; line-height:1.35;\">${dimensionCoverageLine}<\/div>`;\n            } else {\n                const missingText = missingDimensions.length\n                    ? ` Complete more relevant questions in: ${missingDimensions.join(', ')}.`\n                    : '';\n\n                statsHtml = `\n                    <div><span class=\"metric-pill-combined\" style=\"background:#f8fafc; color:#475569; border-color:#cbd5e1; font-size:0.75rem; padding:4px 10px; font-weight:800; border-radius:5px;\">Career Alignment not yet available<\/span><\/div>\n                    ${subScores.length ? `<div style=\"display:flex; flex-wrap:wrap; gap:6px 10px;\">${subScores.join('')}<\/div>` : ''}\n                    ${subScores.length ? `<div style=\"font-size:0.7rem; color:#64748b; line-height:1.35;\">Area percentages are early results based on the answers available so far and may change as you complete more relevant questions.<\/div>` : ''}\n                    <div style=\"font-size:0.7rem; color:#64748b; line-height:1.35;\">${dimensionCoverageLine}${missingText}<\/div>`;\n            }\n\n            html += `\n                <div class=\"pivot-career-item\" onclick=\"${onClickAction}\">\n                    <div style=\"flex:1; text-align:left;\">\n                        <div style=\"font-weight:700; color:#1e293b; font-size:1rem; margin-bottom:8px;\">${res.title}<\/div>\n                        <div style=\"display:flex; flex-direction:column; gap:6px;\">${statsHtml}<\/div>\n                    <\/div>\n                    <span class=\"pivot-badge pivot-career-free-badge\" style=\"background:#eef4ff; color:#002FA7; font-size:0.7rem; border:1px solid #bfd0ff;\">Explore Career &rarr;<\/span>\n                <\/div>`;\n        }\n\n        if (results.length === 0) {\n            html = `<p style=\"color:#64748b; font-size:0.85rem; margin-top:10px;\">No career title found. Try a different search.<\/p>`;\n        }\n\n        container.innerHTML = html;\n\n        \/\/ v2.16.55: hard-lock the internal Career Explorer viewport on phones.\n        \/\/ This is applied at runtime as well as in CSS so older mobile rules\n        \/\/ cannot accidentally return the list to natural-page scrolling.\n        if (window.matchMedia && window.matchMedia('(max-width: 600px)').matches) {\n            container.style.setProperty('height', '500px', 'important');\n            container.style.setProperty('max-height', '62dvh', 'important');\n            container.style.setProperty('min-height', '360px', 'important');\n            container.style.setProperty('overflow-y', 'auto', 'important');\n            container.style.setProperty('overflow-x', 'hidden', 'important');\n            container.style.setProperty('overscroll-behavior', 'contain', 'important');\n            container.style.setProperty('-webkit-overflow-scrolling', 'touch', 'important');\n            container.style.setProperty('touch-action', 'pan-y', 'important');\n            container.scrollTop = 0;\n        } else {\n            container.style.removeProperty('height');\n            container.style.setProperty('max-height', '350px', 'important');\n            container.style.setProperty('overflow-y', 'auto', 'important');\n        }\n    };\n\n    window.pivotScrollCarousel = function(btn, direction) {\n        let container = btn.parentElement.querySelector('.pivot-resource-carousel');\n        let scrollAmount = 280 * direction;\n        container.scrollBy({ left: scrollAmount, behavior: 'smooth' });\n    };\n\n    window.pivotAutoTrackAndAccess = function(title, link) {\n        try {\n            let actions = window.safeLocalParse('pivotDevActions', []);\n            if (!Array.isArray(actions)) actions = [];\n            let exists = actions.some(a => a.text === `Accessed: ${title}`);\n            if (!exists) {\n                actions.push({ id: Date.now(), text: `Accessed: ${title}`, type: 'Resource Access', resources: link, status: 'completed', contextLevel: 'hub', pillarTag: 'Growth Hub', careerTag: '', dateAdded: window.pivotToday(), dateCompleted: window.pivotToday(), reflection: \"Automatically tracked upon accessing the resource.\" });\n                window.pivotSaveAll('pivotDevActions', actions);\n                window.pivotDebouncedSync();\n            }\n        } catch(e) {}\n        window.location.href = link;\n    };\n\n    \/\/ --- INFINITE SCROLL LISTENER ---\n    window.pivotHandleCarouselScroll = function(carousel) {\n        if (carousel.scrollLeft + carousel.clientWidth >= carousel.scrollWidth - 200) {\n            let cards = Array.from(carousel.querySelectorAll('.pivot-resource-card:not(.request-card)'));\n            if(cards.length === 0) return;\n            let batch = cards.sort(() => 0.5 - Math.random()).slice(0, 5);\n            batch.forEach(card => carousel.appendChild(card.cloneNode(true)));\n        }\n    };\n\n    window.pivotScrollCarousel = function(btn, direction) {\n        let container = btn.parentElement.querySelector('.pivot-resource-carousel');\n        let scrollAmount = 280 * direction;\n        container.scrollBy({ left: scrollAmount, behavior: 'smooth' });\n    };\n\n    \/\/ --- THE MISSING LINK HELPER ---\n    window.pivotOpenResourceWindow = function(url) {\n        if (!url || url === '#' || url === 'undefined') return;\n        window.location.href = url;\n    };\n\n    window.pivotAutoTrackAndAccess = function(title, link) {\n        if (!link || link === '#' || link === 'undefined') return;\n        try {\n            let actions = window.safeLocalParse('pivotDevActions', []);\n            if (!Array.isArray(actions)) actions = [];\n            let exists = actions.some(a => a.text === `Accessed: ${title}`);\n            if (!exists) {\n                actions.push({ id: Date.now(), text: `Accessed: ${title}`, type: 'Resource Access', resources: link, status: 'completed', contextLevel: 'hub', pillarTag: 'Growth Hub', careerTag: '', dateAdded: window.pivotToday(), dateCompleted: window.pivotToday(), reflection: \"Automatically tracked upon accessing the resource.\" });\n                window.pivotSaveAll('pivotDevActions', actions);\n                window.pivotDebouncedSync();\n            }\n        } catch(e) {}\n        window.location.href = link;\n    };\n\n    \/\/ --- OVERHAULED CAROUSEL GENERATOR ---\n    window.pivotGenerateResourceCarouselHtml = function(contextTag) {\n        let userTier = typeof window.pivotGetUserTier === 'function' ? window.pivotGetUserTier() : 'guest';\n        let unlockedItems = window.safeLocalParse('pivot_unlocked_resources', []);\n\n        let liveResources = [];\n        if (typeof window.pivotPremiumDatabase !== 'undefined' && Array.isArray(window.pivotPremiumDatabase)) { \n            liveResources = liveResources.concat(window.pivotPremiumDatabase); \n        } \n        if (typeof window.pivotLiveResources !== 'undefined' && Array.isArray(window.pivotLiveResources)) { \n            liveResources = liveResources.concat(window.pivotLiveResources); \n        }\n\n        let uniqueResources = [];\n        let seenTitles = new Set();\n        liveResources.forEach(r => {\n            if (r.title && !seenTitles.has(r.title) && r.id != 26739 && !r.title.includes('PIVOT Premium Access')) {\n                seenTitles.add(r.title);\n                uniqueResources.push(r);\n            }\n        });\n        liveResources = uniqueResources;\n\n        let coaches = [];\n        if (typeof HUB_DATA !== 'undefined' && HUB_DATA.coaches) { coaches = HUB_DATA.coaches.map(c => ({ isCoach: true, title: c.name, image: c.img, desc: c.title, bookingUrl: c.bookingUrl, premiumBookingUrl: c.premiumBookingUrl })); }\n\n        let courses = [];\n        if (typeof HUB_DATA !== 'undefined' && HUB_DATA.courses) { courses = HUB_DATA.courses.map(c => ({ isCourse: true, title: c.title, image: c.img, desc: c.desc, hours: c.hours, tier: c.tier, link: c.link })); }\n\n        let mixedPool = [...liveResources, ...coaches, ...courses];\n        if(mixedPool.length === 0) { mixedPool = [{ title: \"Top 10 Tips for Bouncing Back\", type: \"Article\", tier: \"standard\", cost: 50, display_price: \"Free\", image: \"https:\/\/dumondeducation.com\/wp-content\/uploads\/Top-10-Tips-for-Bouncing-Back-from-Setbacks.jpg\", link: \"#\" }]; }\n\n        for (let i = mixedPool.length - 1; i > 0; i--) { const j = Math.floor(Math.random() * (i + 1)); [mixedPool[i], mixedPool[j]] = [mixedPool[j], mixedPool[i]]; }\n\n        let requestCardHtml = `\n        <div class=\"pivot-resource-card request-card\" onclick=\"window.pivotOpenResourceRequestForm()\" style=\"flex: 0 0 260px; min-height: 280px; padding: 0;\">\n            <div class=\"request-card-content\" style=\"padding: 25px 15px; position: relative; z-index: 2; display: flex; flex-direction: column; justify-content: center; height: 100%;\">\n                <div class=\"request-card-icon\">\ud83d\ude80<\/div>\n                <h3>Looking for something else?<\/h3>\n                <p style=\"color:#e2e8f0; font-size:0.9rem;\">Suggest a topic, guide or course that would help your development.<\/p>\n                <span class=\"request-card-btn\" style=\"display: inline-block; padding: 10px 20px; border-radius: 20px; font-size: 0.85rem; font-weight: 800; background:#b45309; color:#fff; margin-top: auto;\">Suggest a resource<\/span>\n            <\/div>\n        <\/div>`;\n\n        let html = `<div class=\"pivot-carousel-wrapper\"><button type=\"button\" class=\"pivot-carousel-btn prev\" aria-label=\"Previous resources\" title=\"Previous resources\" onclick=\"event.stopPropagation(); window.pivotScrollCarousel(this, -1)\">&#10094;<\/button><div class=\"pivot-resource-carousel\" aria-label=\"Growth Hub resources\" onscroll=\"window.pivotHandleCarouselScroll(this)\" style=\"display: flex; overflow-x: auto; scroll-snap-type: x mandatory; gap: 20px; padding: 10px 5px 25px 5px; scroll-behavior: smooth; flex: 1; -ms-overflow-style: none; scrollbar-width: none;\">${requestCardHtml}`;\n        \n        mixedPool.forEach(item => {\n            let badgeClass, badgeText, onClickAction, linkLabel, isLocked;\n            let imgSrc = item.image || item.img || ''; \n            let safeTitle = (item.title || '').replace(\/'\/g, \"\\\\'\");\n\n            if (item.isCoach) {\n                let isPremium = (userTier === 'premium' || userTier === 'admin' || userTier === 'administrator');\n                let activeBookingUrl = (isPremium && item.premiumBookingUrl) ? item.premiumBookingUrl : item.bookingUrl;\n                badgeClass = 'tier-premium'; badgeText = '1-to-1 Coaching'; linkLabel = 'View availability &amp; book &rarr;';\n                onClickAction = `window.pivotOpenResourceWindow('${activeBookingUrl}')`;\n\n                html += `<div class=\"pivot-resource-card\" onclick=\"${onClickAction}\" style=\"flex: 0 0 260px; scroll-snap-align: start; min-height: 280px; display: flex; flex-direction: column;\">\n                            <div class=\"pivot-resource-image\" style=\"background-image: url('${imgSrc}'); height: 130px; background-size: cover; background-position: center; position: relative; border-bottom: 1px solid #e2e8f0;\">\n                                <span class=\"pivot-resource-tier\" style=\"position: absolute; top: 12px; right: 12px; background: #0f766e; color: #fff; padding: 5px 12px; border-radius: 8px; font-size: 0.7rem; font-weight: 800; text-transform: uppercase;\">${badgeText}<\/span>\n                            <\/div>\n                            <div class=\"pivot-resource-content\" style=\"padding: 16px; flex: 1; display: flex; flex-direction: column;\">\n                                <h4 style=\"margin: 0 0 5px 0; font-size: 0.95rem; color: #0f172a;\">${item.title}<\/h4>\n                                <p style=\"margin: 0 0 6px 0; font-size: 0.8rem; color: #64748b;\">${item.desc}<\/p>\n                                <p style=\"margin: 0 0 10px 0; font-size: 0.75rem; color:#64748b; line-height:1.45; flex:1;\">One-to-one support for development goals, decisions, challenges and next steps.<\/p>\n                                <a href=\"${activeBookingUrl || '#'}\" onclick=\"event.stopPropagation();\" style=\"font-size: 0.8rem; color: #002FA7; font-weight: 700; margin-top: auto; padding-top: 10px; border-top: 1px solid #f1f5f9; display: block; text-decoration:none;\">${linkLabel}<\/a>\n                            <\/div>\n                         <\/div>`;\n\n            } else if (item.isCourse) {\n                const premiumContent = window.pivotIsPremiumContent(item);\n                const premiumUser = window.pivotHasAuthoritativePremiumAccess();\n                isLocked = premiumContent && !premiumUser;\n\n                badgeText = premiumContent ? 'Premium' : 'Free';\n                linkLabel = isLocked ? `See Premium benefits &rarr;` : `Start course &rarr;`;\n                onClickAction = isLocked\n                    ? `window.pivotGoPremium()`\n                    : `window.pivotAutoTrackAndAccess('${safeTitle}', '${item.link || '#'}')`;\n\n                html += `<div class=\"pivot-resource-card ${premiumContent ? 'is-premium-resource' : ''}\" onclick=\"${onClickAction}\" style=\"flex: 0 0 260px; scroll-snap-align: start; min-height: 280px; display: flex; flex-direction: column;\">\n                            <div class=\"pivot-resource-image\" style=\"background-image: url('${imgSrc}'); height: 130px; background-size: cover; background-position: center; position: relative; border-bottom: 1px solid #e2e8f0;\">\n                                <span class=\"pivot-resource-type-badge\">Course<\/span>\n                                <span class=\"pivot-resource-tier ${premiumContent ? 'tier-premium' : 'tier-free'}\">${badgeText}<\/span>\n                            <\/div>\n                            <div class=\"pivot-resource-content\" style=\"padding: 16px; flex: 1; display: flex; flex-direction: column;\">\n                                <h4 style=\"margin: 0 0 5px 0; font-size: 0.95rem; color: #0f172a;\">${item.title}<\/h4>\n                                <p style=\"margin: 0 0 10px 0; font-size: 0.75rem; color: #64748b; flex: 1;\">${item.hours ? `About ${item.hours}` : 'PIVOT course'}<\/p>\n                                <span class=\"pivot-resource-cta ${isLocked ? 'premium-cta' : ''}\">${linkLabel}<\/span>\n                            <\/div>\n                         <\/div>`;\n\n            } else {\n                let cost = item.cost !== undefined ? parseInt(item.cost) : (String(item.tier || '').toLowerCase() === 'standard' ? 50 : 0);\n                const premiumContent = window.pivotIsPremiumContent(item);\n                const premiumUser = window.pivotHasAuthoritativePremiumAccess();\n                isLocked = premiumContent && !premiumUser;\n                let actualCost = premiumUser ? 0 : cost;\n                let isAlreadyUnlocked = unlockedItems.includes(safeTitle);\n                let rType = item.type ? item.type : 'Resource';\n\n                if (premiumContent) {\n                    badgeText = 'Premium';\n                    linkLabel = isLocked ? 'See Premium benefits &rarr;' : 'Open resource &rarr;';\n                    onClickAction = isLocked\n                        ? `window.pivotGoPremium()`\n                        : `window.pivotAutoTrackAndAccess('${safeTitle}', '${item.link || '#'}')`;\n                } else if (isAlreadyUnlocked) {\n                    badgeText = 'Available';\n                    linkLabel = 'Open resource &rarr;';\n                    onClickAction = `window.pivotAutoTrackAndAccess('${safeTitle}', '${item.link || '#'}')`;\n                } else if (actualCost > 0) {\n                    badgeText = `${actualCost} PIVOT Credits`;\n                    linkLabel = 'View resource &rarr;';\n                    onClickAction = `window.pivotOpenResourceWindow('${item.link || '#'}')`;\n                } else {\n                    badgeText = 'Free';\n                    linkLabel = 'Open resource &rarr;';\n                    onClickAction = `window.pivotAutoTrackAndAccess('${safeTitle}', '${item.link || '#'}')`;\n                }\n\n                html += `<div class=\"pivot-resource-card ${premiumContent ? 'is-premium-resource' : ''}\" onclick=\"${onClickAction}\" style=\"flex: 0 0 260px; scroll-snap-align: start; min-height: 280px; display: flex; flex-direction: column;\">\n                            <div class=\"pivot-resource-image\" style=\"background-image: url('${imgSrc}'); height: 130px; background-size: cover; background-position: center; position: relative; border-bottom: 1px solid #e2e8f0;\">\n                                <span class=\"pivot-resource-type-badge\">${rType}<\/span>\n                                <span class=\"pivot-resource-tier ${premiumContent ? 'tier-premium' : (isAlreadyUnlocked ? 'tier-unlocked' : (actualCost > 0 ? 'tier-credits' : 'tier-free'))}\">${badgeText}<\/span>\n                            <\/div>\n                            <div class=\"pivot-resource-content\" style=\"padding: 16px; flex: 1; display: flex; flex-direction: column;\">\n                                <h4 style=\"margin: 0 0 10px 0; font-size: 0.95rem; color: #0f172a; flex: 1;\">${item.title}<\/h4>\n                                <p style=\"margin:0 0 10px 0; font-size:0.75rem; color:#64748b; font-weight:700;\">${premiumContent ? 'Included with Premium' : `Type: ${rType}`}<\/p>\n                                <span class=\"pivot-resource-cta ${isLocked ? 'premium-cta' : ''}\">${linkLabel}<\/span>\n                            <\/div>\n                         <\/div>`;\n            }\n        });\n        html += `<\/div><button type=\"button\" class=\"pivot-carousel-btn next\" aria-label=\"Next resources\" title=\"Next resources\" onclick=\"event.stopPropagation(); window.pivotScrollCarousel(this, 1)\">&#10095;<\/button><\/div>`;\n        return html;\n    };\n\n    window.pivotSwitchJobTab = function(tabName) {\n        document.querySelectorAll('.pivot-pill-tab').forEach(t => t.classList.remove('active'));\n        if(event && event.target) event.target.classList.add('active');\n        document.getElementById('job-tab-fit').style.display = 'none'; document.getElementById('job-tab-future').style.display = 'none';\n        document.getElementById('job-tab-reward').style.display = 'none'; document.getElementById('job-tab-reqs').style.display = 'none';\n        document.getElementById('job-tab-' + tabName).style.display = 'block';\n    };\n\n    window.pivotChangeJobRegion = function(locKey) {\n        let jobName = window.pivotCurrentJobView;\n        let safeKey = window.getSafeJobKey(jobName);\n        let data = (\n            window.pivotAIJobData[safeKey] &&\n            window.pivotAIJobData[safeKey][locKey]\n        ) ? window.pivotAIJobData[safeKey][locKey] : null;\n\n        if (!data) return;\n\n        document.getElementById('job-content-fit').innerText = data.fit || \"Information is not available for this location yet.\";\n        document.getElementById('job-content-future').innerText = data.future || \"Information is not available for this location yet.\";\n        document.getElementById('job-content-reward').innerText = data.reward || \"Information is not available for this location yet.\";\n        document.getElementById('job-content-reqs').innerText = data.reqs || \"Information is not available for this location yet.\";\n    };\n\n    window.pivotShowJobDetails = function(jobTitleEncoded) {\n        let jobName = decodeURIComponent(jobTitleEncoded); window.pivotCurrentJobView = jobName; \n        let matches = window.calculateTwoTierCareerMatches(); let job = matches.find(j => j.title === jobName); if(!job) return;\n\n        let gateway = document.getElementById('gateway-pillars-anchor'); let modAnchor = document.getElementById('module-buttons-anchor');\n        if(gateway) gateway.style.display = 'none'; if(modAnchor) modAnchor.style.display = 'block';\n\n        let evidenceReady = job.capabilityEvidenceEnough === true;\n        let strengthsHtml = evidenceReady\n            ? (job.strengths.map(s => `<li style=\"margin-bottom:6px; color:#15803d; font-weight:600;\">\u2705 ${s}<\/li>`).join('') || '<li>No clearly stronger capability alignments are showing from your current answers yet.<\/li>')\n            : '<li style=\"color:#64748b; font-style:italic;\">Complete more relevant self-assessment questions before using this section.<\/li>';\n        let gapsHtml = evidenceReady\n            ? (job.gaps.map(g => `<li style=\"margin-bottom:6px; color:#b45309; font-weight:600;\">\ud83c\udfaf ${g}<\/li>`).join('') || '<li>No clear lower-alignment capability areas are showing from your current answers.<\/li>')\n            : '<li style=\"color:#64748b; font-style:italic;\">Complete more relevant self-assessment questions before using this section.<\/li>';\n\n        let optionsHtml = `<option value=\"\">Loading career information\u2026<\/option>`;\n        let defaultData = {\n            fit: 'Loading career information\u2026',\n            future: 'Loading career information\u2026',\n            reward: 'Loading career information\u2026',\n            reqs: 'Loading career information\u2026'\n        };\n        let currentIndex = matches.findIndex(j => j.title === jobName);\n        let prevBtn = currentIndex > 0 ? `<button type=\"button\" class=\"pivot-btn-secondary\" style=\"padding: 10px 18px; font-size: 0.9rem;\" onclick=\"window.pivotShowJobDetails('${encodeURIComponent(matches[currentIndex - 1].title)}')\">&larr; Previous Career<\/button>` : `<button type=\"button\" class=\"pivot-btn-secondary\" style=\"padding: 10px 18px; font-size: 0.9rem; opacity:0.4; cursor:not-allowed;\" disabled>&larr; Previous Career<\/button>`;\n        let nextBtn = currentIndex < matches.length - 1 ? `<button type=\"button\" class=\"pivot-btn-accent\" style=\"padding: 10px 18px; font-size: 0.9rem;\" onclick=\"window.pivotShowJobDetails('${encodeURIComponent(matches[currentIndex + 1].title)}')\">Next Career &rarr;<\/button>` : `<button type=\"button\" class=\"pivot-btn-accent\" style=\"padding: 10px 18px; font-size: 0.9rem; opacity:0.4; cursor:not-allowed;\" disabled>Next Career &rarr;<\/button>`;\n\n        let matchStatsHtml = '';\n\n        const dimensionCoverageLine =\n            `Assessment coverage: ${job.coveragePercent}% ` +\n            `(Capability ${job.capabilityCoveragePercent}% \u00b7 ` +\n            `Context ${job.workContextCoveragePercent}% \u00b7 ` +\n            `Career Interests ${job.careerInterestCoveragePercent}% \u00b7 ` +\n            `Natural Approach ${job.naturalApproachCoveragePercent}%).`;\n\n        const missingDimensions = [];\n        if (!job.capabilityEvidenceEnough) missingDimensions.push('Capability');\n        if (!job.preferenceEvidenceEnough) missingDimensions.push('Context & Environment');\n        if (!job.careerInterestEvidenceEnough) missingDimensions.push('Career Interests');\n        if (!job.workStyleEvidenceEnough) missingDimensions.push('Natural Approach');\n\n        const detailSubScores = [];\n\n        if (Number.isFinite(job.capabilityPercent)) {\n            detailSubScores.push(`<div class=\"metric-pill-cap\" style=\"font-size:0.9rem; padding:6px 14px; border-radius:8px;\">\ud83d\udcaa Capability: ${job.capabilityPercent}%<\/div>`);\n        }\n\n        if (Number.isFinite(job.preferencePercent)) {\n            detailSubScores.push(`<div class=\"metric-pill-pref\" style=\"font-size:0.9rem; padding:6px 14px; border-radius:8px;\">\u2601\ufe0f Context &amp; Environment: ${job.preferencePercent}%<\/div>`);\n        }\n\n        if (Number.isFinite(job.careerInterestPercent)) {\n            detailSubScores.push(`<div class=\"metric-pill-interest\" style=\"font-size:0.9rem; padding:6px 14px; border-radius:8px;\">\ud83e\udded Career Interests: ${job.careerInterestPercent}%<\/div>`);\n        }\n\n        if (Number.isFinite(job.naturalApproachPercent)) {\n            detailSubScores.push(`<div class=\"metric-pill-style\" style=\"font-size:0.9rem; padding:6px 14px; border-radius:8px;\">\ud83e\udde9 Natural Approach: ${job.naturalApproachPercent}%<\/div>`);\n        }\n\n        if (job.hasSufficientEvidence) {\n            matchStatsHtml = `\n                <div><div class=\"metric-pill-combined\" style=\"font-size:1.15rem; padding:8px 18px; font-weight:800; border-radius:10px; box-shadow:0 4px 10px rgba(55,48,163,0.12);\">\u26a1 Career Alignment: ${job.combinedPercent}%<\/div><\/div>\n                ${detailSubScores.length ? `<div style=\"display:flex; flex-wrap:wrap; gap:10px 14px;\" class=\"pivot-mobile-button-stack\">${detailSubScores.join('')}<\/div>` : ''}\n                <div style=\"font-size:0.82rem; color:#64748b; line-height:1.45;\">${dimensionCoverageLine}<\/div>\n                <div style=\"font-size:0.78rem; color:#64748b; line-height:1.45;\">Career Alignment combines Capability, Context &amp; Environment, Career Interests and Natural Approach equally at 25% each. What I Value Most remains separate guidance and is not included in this percentage.<\/div>`;\n        } else {\n            const missingText = missingDimensions.length\n                ? ` Complete more relevant questions in: ${missingDimensions.join(', ')}.`\n                : '';\n\n            matchStatsHtml = `\n                <div><div class=\"metric-pill-combined\" style=\"background:#f8fafc; color:#475569; border-color:#cbd5e1; font-size:1rem; padding:8px 18px; font-weight:800; border-radius:10px;\">Career Alignment not yet available<\/div><\/div>\n                ${detailSubScores.length ? `<div style=\"display:flex; flex-wrap:wrap; gap:10px 14px;\" class=\"pivot-mobile-button-stack\">${detailSubScores.join('')}<\/div>` : ''}\n                ${detailSubScores.length ? `<div style=\"font-size:0.8rem; color:#64748b; line-height:1.45;\">The area percentages above are early results based on your current answers and may change as you complete more relevant questions.<\/div>` : ''}\n                <div style=\"font-size:0.82rem; color:#64748b; line-height:1.45;\">${dimensionCoverageLine}${missingText}<\/div>\n                <div style=\"font-size:0.78rem; color:#64748b; line-height:1.45;\">Career Alignment appears when you have answered enough relevant questions in all four areas.<\/div>`;\n        }\n\n        modAnchor.innerHTML = `\n            <div class=\"pivot-career-detail-back\" style=\"margin-bottom:18px; display:flex; justify-content:flex-start; align-items:center;\"><button type=\"button\" class=\"pivot-btn-secondary\" style=\"padding:10px 18px; font-size:0.9rem;\" onclick=\"document.getElementById('module-buttons-anchor').style.display='none'; document.getElementById('gateway-pillars-anchor').style.display='block'; window.renderDashboard(); window.pivotScrollToTop();\">&larr; Back to Career Explorer<\/button><\/div>\n            <div class=\"pivot-career-detail-nav\" style=\"margin-bottom:25px; display:flex; justify-content:center; align-items:center; flex-wrap:wrap; gap:20px;\">${prevBtn}${nextBtn}<\/div>\n            <div class=\"pivot-premium-card pivot-card-accent-blue pivot-career-detail-card\">\n                <span class=\"pivot-badge\" style=\"background:#e0e7ff; color:#002FA7;\">Career Explorer<\/span>\n                <h2 style=\"color:#0f172a; margin:15px 0 12px 0; font-size:2.2rem; font-weight:900;\">${job.title}<\/h2>\n                <div style=\"margin-bottom:30px; display:flex; flex-direction:column; gap:12px;\">${matchStatsHtml}<\/div>\n                <div style=\"background:#f8fafc; border: 1px solid #e2e8f0; border-radius: 16px; padding: 25px; margin-bottom: 30px;\">\n                    <div style=\"display:flex; justify-content:space-between; align-items:center; margin-bottom: 20px; flex-wrap: wrap; gap: 15px;\">\n                        <h3 style=\"margin:0; font-size: 1.3rem; font-weight: 800; color:#0f172a;\">Career Information<\/h3>\n                        <select id=\"pivot-career-region-select\" class=\"pivot-region-select\" onchange=\"window.pivotChangeJobRegion(this.value)\" disabled>${optionsHtml}<\/select>\n                        <div id=\"pivot-career-insight-status\" style=\"width:100%; color:#64748b; font-size:0.82rem;\"><\/div>\n                    <\/div>\n                    <div class=\"pivot-pill-nav\">\n                        <div class=\"pivot-pill-tab active\" onclick=\"window.pivotSwitchJobTab('fit')\">Work &amp; Lifestyle<\/div>\n                        <div class=\"pivot-pill-tab\" onclick=\"window.pivotSwitchJobTab('future')\">Future Outlook<\/div>\n                        <div class=\"pivot-pill-tab\" onclick=\"window.pivotSwitchJobTab('reward')\">Pay &amp; Earnings<\/div>\n                        <div class=\"pivot-pill-tab\" onclick=\"window.pivotSwitchJobTab('reqs')\">Requirements<\/div>\n                    <\/div>\n                    <div id=\"job-tab-fit\" style=\"display:block;\"><p id=\"job-content-fit\" style=\"color:#475569; font-size:1rem; line-height:1.6; margin:0;\">${defaultData.fit}<\/p><\/div>\n                    <div id=\"job-tab-future\" style=\"display:none;\"><p id=\"job-content-future\" style=\"color:#475569; font-size:1rem; line-height:1.6; margin:0;\">${defaultData.future}<\/p><\/div>\n                    <div id=\"job-tab-reward\" style=\"display:none;\"><p id=\"job-content-reward\" style=\"color:#475569; font-size:1rem; line-height:1.6; margin:0;\">${defaultData.reward}<\/p><\/div>\n                    <div id=\"job-tab-reqs\" style=\"display:none;\"><p id=\"job-content-reqs\" style=\"color:#475569; font-size:1rem; line-height:1.6; margin:0;\">${defaultData.reqs}<\/p><\/div>\n                <\/div>\n                <div style=\"display:grid; grid-template-columns:1fr 1fr; gap:25px; margin-bottom:30px;\" class=\"pivot-journal-grid\">\n                    <div style=\"background:#f0fdf4; padding:20px; border-radius:12px; border:1px solid #bbf7d0;\"><h4 style=\"margin:0 0 6px 0; color:#166534; font-weight:800;\">\ud83d\udcaa Areas of Stronger Alignment<\/h4><p style=\"margin:0 0 12px 0; color:#557066; font-size:0.84rem; line-height:1.45;\">Capability areas where your current self-rating meets or exceeds the level recorded for this occupation and the area is important to the work.<\/p><ul style=\"margin:0; padding-left:20px; font-size:0.95rem; line-height:1.4;\">${strengthsHtml}<\/ul><\/div>\n                    <div style=\"background:#fff7ed; padding:20px; border-radius:12px; border:1px solid #ffedd5;\"><h4 style=\"margin:0 0 6px 0; color:#9a3412; font-weight:800;\">\ud83d\udcdd Areas Worth Exploring<\/h4><p style=\"margin:0 0 12px 0; color:#7c6456; font-size:0.84rem; line-height:1.45;\">Capability areas where your current self-rating is lower than the level recorded for this occupation. Use these as prompts for reflection, not automatic development priorities.<\/p><ul style=\"margin:0; padding-left:20px; font-size:0.95rem; line-height:1.4;\">${gapsHtml}<\/ul><\/div>\n                <\/div>\n                <h3 style=\"color:#0f172a; margin-top:40px; margin-bottom:15px; font-size: 1.5rem; font-weight: 800;\">Development Actions for This Career<\/h3>\n                ${window.getContextualBlocks('career', '', '', '', job.title)}\n                <div class=\"pivot-career-detail-nav pivot-career-detail-nav-bottom\" style=\"margin-top:40px; border-top:1px solid #e2e8f0; padding-top:25px; display:flex; justify-content:center; align-items:center; flex-wrap:wrap; gap:20px;\">${prevBtn}${nextBtn}<\/div>\n            <\/div>`;\n        window.pivotLoadCareerInsights(job.title).catch(function() {\n            \/\/ The loader already provides a user-friendly unavailable state.\n        });\n\n        window.pivotScrollToTop();\n    };\n\n    window.pivotUpdateDescriptor = function(val, isPreview = false, shouldPersist = true) {\n        let descriptorBoxes = Array.from(document.querySelectorAll('.pivot-active-descriptor'));\n        let bigNumber = document.getElementById('slider_current_val');\n        let pillar = window.pivotActiveAssessment.pillar;\n        let mod = window.pivotActiveAssessment.mod;\n        let isInterest = window.pivotIsCareerInterestModule(pillar, mod);\n        let isWorkStyle = window.pivotIsWorkStyleModule(pillar, mod);\n        let isBasicSkills = window.pivotIsBasicSkillsModule(pillar, mod);\n        let isAbilities = window.pivotIsAbilitiesModule(pillar, mod);\n        let isKnowledge = window.pivotIsKnowledgeModule(pillar, mod);\n        let isTransferableSkills = window.pivotIsTransferableSkillsModule(pillar, mod);\n        let isWorkActivities = window.pivotIsWorkActivitiesModule(pillar, mod);\n        let isPref = (pillar === 'Work Preferences' || pillar === 'Work Requirement and Style');\n        let isContext = (pillar === 'Work Context');\n\n        const isContextNoPreference = isContext && window.pivotIsContextNoPreference(val);\n\n        if (bigNumber) {\n            bigNumber.innerText = isContextNoPreference ? 'NP' : val;\n        }\n\n        if (descriptorBoxes.length) {\n            let scaleData = null;\n\n            if (isInterest) {\n                scaleData = (window.pivotScaleInterest && window.pivotScaleInterest[val])\n                    ? window.pivotScaleInterest[val]\n                    : fallbackScale1To7Interest[val];\n            } else if (isWorkStyle) {\n                scaleData = (window.pivotScaleWorkStyle && window.pivotScaleWorkStyle[val])\n                    ? window.pivotScaleWorkStyle[val]\n                    : fallbackScale1To5WorkStyle[val];\n            } else if (isBasicSkills) {\n                const state = window.pivotActiveAssessment || {};\n                const questions = Array.isArray(state.questions) ? state.questions : [];\n                const q = questions[state.currentIndex];\n                scaleData = q\n                    ? window.pivotGetBasicSkillsScaleData(q.id, Number(val))\n                    : null;\n            } else if (isAbilities) {\n                const state = window.pivotActiveAssessment || {};\n                const questions = Array.isArray(state.questions) ? state.questions : [];\n                const q = questions[state.currentIndex];\n                scaleData = q\n                    ? window.pivotGetAbilityScaleData(q.id, Number(val))\n                    : null;\n            } else if (isKnowledge) {\n                const state = window.pivotActiveAssessment || {};\n                const questions = Array.isArray(state.questions) ? state.questions : [];\n                const q = questions[state.currentIndex];\n                scaleData = q\n                    ? window.pivotGetKnowledgeScaleData(q.id, Number(val))\n                    : null;\n            } else if (isTransferableSkills) {\n                const state = window.pivotActiveAssessment || {};\n                const questions = Array.isArray(state.questions) ? state.questions : [];\n                const q = questions[state.currentIndex];\n                scaleData = q\n                    ? window.pivotGetTransferableSkillScaleData(q.id, Number(val))\n                    : null;\n            } else if (isWorkActivities) {\n                const state = window.pivotActiveAssessment || {};\n                const questions = Array.isArray(state.questions) ? state.questions : [];\n                const q = questions[state.currentIndex];\n                scaleData = q\n                    ? window.pivotGetWorkActivityScaleData(q.id, Number(val))\n                    : null;\n            } else if (isContext) {\n                if (isContextNoPreference) {\n                    scaleData = { title: 'No preference', keywords: ['This factor would not affect my choice'] };\n                } else {\n                    const state = window.pivotActiveAssessment || {};\n                    const questions = Array.isArray(state.questions) ? state.questions : [];\n                    const q = questions[state.currentIndex];\n                    const label = q ? window.pivotGetContextScaleLabel(q.id, Number(val)) : '';\n                    scaleData = label\n                        ? { title: String(val) + '. ' + label, keywords: [] }\n                        : fallbackScale1To5[val];\n                }\n            } else if (isPref) {\n                scaleData = (window.pivotScale5 && window.pivotScale5[val])\n                    ? window.pivotScale5[val]\n                    : fallbackScale1To5[val];\n            } else {\n                scaleData = (window.pivotScale10 && window.pivotScale10[val])\n                    ? window.pivotScale10[val]\n                    : fallbackScale1To10[val];\n            }\n\n            if (scaleData) {\n                let rawTitle = String(scaleData.title || '');\n                let keywords = Array.isArray(scaleData.keywords) ? scaleData.keywords : [];\n\n                if (rawTitle.includes('[')) {\n                    let numPrefix = rawTitle.split('.')[0] + '. ';\n                    let cleaned = rawTitle\n                        .substring(rawTitle.indexOf('.') + 1)\n                        .replace(\/[\\[\\]\"']\/g, '');\n                    rawTitle = numPrefix + cleaned.split(',')[0].trim();\n                } else {\n                    rawTitle = rawTitle.replace(\/[\\[\\]\"']\/g, '');\n                }\n\n                let processedKeywords = [];\n\n                keywords.forEach(function(kw) {\n                    if (typeof kw !== 'string') {\n                        return;\n                    }\n\n                    if (kw.includes('[')) {\n                        kw.replace(\/[\\[\\]\"']\/g, '')\n                            .split(',')\n                            .forEach(function(item) {\n                                processedKeywords.push(item.trim());\n                            });\n                    } else {\n                        processedKeywords.push(\n                            kw.replace(\/[\"']\/g, '').trim()\n                        );\n                    }\n                });\n\n                let titleWithoutNumber = rawTitle.includes('.')\n                    ? rawTitle.substring(rawTitle.indexOf('.') + 1).trim().toLowerCase()\n                    : rawTitle.trim().toLowerCase();\n\n                processedKeywords = [...new Set(processedKeywords)]\n                    .filter(function(keyword) {\n                        return (\n                            keyword &&\n                            keyword.length > 0 &&\n                            keyword.toLowerCase() !== titleWithoutNumber\n                        );\n                    });\n\n                let pillsHtml = processedKeywords\n                    .map(function(keyword) {\n                        return `<span class=\"pivot-prompt-pill\">${keyword}<\/span>`;\n                    })\n                    .join('');\n\n                let guidanceText = isInterest\n                    ? 'Use these words to check how interested you really are in this kind of work. Do not rate your ability, qualifications or how important the work seems.'\n                    : (isWorkStyle\n                        ? 'Use these words to check how well this describes the way you usually work. Rate your actual pattern, not what sounds most desirable.'\n                        : (isBasicSkills\n                            ? 'Use the official O*NET examples to choose the highest level that best matches what you can currently do. This is a self-assessment of your current level, not a test of your potential.'\n                            : (isAbilities\n                                ? 'Use the official O*NET examples to choose the highest Ability level that best matches what you can currently do. Rate your current capability, not your potential or how important the Ability seems.'\n                                : (isKnowledge\n                                    ? 'Use the official O*NET examples to choose the highest level of work you could currently handle using this knowledge. Rate usable knowledge now, not interest or potential.'\n                                    : (isTransferableSkills\n                                        ? 'Use the official O*NET examples to choose the highest level of task where you can currently use this skill effectively. Rate what you can demonstrate now, not your potential.'\n                                        : (isWorkActivities\n                                            ? 'Use the official O*NET examples to choose the highest level of this Work Activity that you can currently carry out. Rate what you can do now, not your potential.'\n                                            : (isContext\n                                ? (isContextNoPreference\n                                    ? 'No preference means this working condition would not influence your preference for a role or work situation. PIVOT will leave it out of Context & Environment alignment.'\n                                    : 'This is the option you would prefer or be comfortable with for this working condition. Read the wording carefully because the options mean different things in different questions.')\n                                : (isPref\n                                    ? 'Use these words to check whether this rating reflects how important this factor is to you right now.'\n                                    : 'Use these words to check whether this rating reflects what you can currently understand, apply or demonstrate.'))))))));\n\n                const descriptorHtml = `\n                    <div class=\"descriptor-eyebrow\">${isPreview ? 'Preview only' : 'Your selected rating'}<\/div>\n                    <h4 class=\"descriptor-title\" style=\"font-size:1.42rem; margin:0 0 12px; color:#0f172a; line-height:1.25;\">\n                        ${rawTitle}\n                    <\/h4>\n                    <p class=\"descriptor-support\">${guidanceText}<\/p>\n                    ${pillsHtml ? `<div class=\"descriptor-keywords\">${pillsHtml}<\/div>` : ''}\n                `;\n                descriptorBoxes.forEach(function(descriptorBox) {\n                    descriptorBox.innerHTML = descriptorHtml;\n                });\n            }\n        }\n\n        if (\n            !isPreview &&\n            shouldPersist &&\n            window.pivotActiveAssessment &&\n            window.pivotActiveAssessment.questions\n        ) {\n            let q =\n                window.pivotActiveAssessment.questions[\n                    window.pivotActiveAssessment.currentIndex\n                ];\n\n            if (q) {\n                window.pivotActiveAssessment.scores[q.id] = isContextNoPreference ? 'NP' : val;\n                if (isContext) window.pivotRefreshContextNoPreferenceButton(isContextNoPreference);\n                window.pivotActiveAssessment.scores['_date'] =\n                    window.pivotToday();\n\n                let state = window.pivotActiveAssessment;\n\n                if (state.pillar && state.mod) {\n                    let allScores = window.safeLocalParse(\n                        'pivotScores',\n                        {}\n                    );\n\n                    if (!allScores[state.pillar]) {\n                        allScores[state.pillar] = {};\n                    }\n\n                    allScores[state.pillar][state.mod] = state.scores;\n\n                    localStorage.setItem(\n                        'pivotScores',\n                        JSON.stringify(allScores)\n                    );\n                }\n\n                window.pivotDebouncedSync();\n            }\n        }\n    };\n\n    \/\/ PIVOT v2.16.14 \u2014 EXPLICIT SLIDER INPUT INTEGRITY\n    \/\/ Rendering an unanswered slider at its visual midpoint must never create\n    \/\/ an assessment response. A score is persisted only after a real user\n    \/\/ pointer\/keyboard interaction has armed the slider.\n    window.pivotArmSliderInteraction = function(el) {\n        if (!el) return;\n        el.dataset.pivotUserInteracted = '1';\n    };\n\n    window.pivotRefreshRatingNumberButtons = function(value, hasAnswer = true) {\n        const numeric = Number(value);\n\n        document\n            .querySelectorAll('.pivot-rating-number-btn')\n            .forEach(function(button) {\n                const buttonValue = Number(button.dataset.value);\n                const selected =\n                    hasAnswer &&\n                    Number.isFinite(numeric) &&\n                    buttonValue === numeric;\n\n                button.classList.toggle('is-selected', selected);\n                button.setAttribute(\n                    'aria-pressed',\n                    selected ? 'true' : 'false'\n                );\n            });\n    };\n\n    window.pivotSelectRatingNumber = function(value) {\n        const slider = document.getElementById('pivot-main-slider');\n        const numeric = Number(value);\n\n        if (\n            !slider ||\n            !Number.isFinite(numeric) ||\n            numeric < Number(slider.min) ||\n            numeric > Number(slider.max)\n        ) {\n            return;\n        }\n\n        slider.value = String(numeric);\n        slider.dataset.pivotUserInteracted = '1';\n\n        window.pivotUpdateSliderVisual(slider);\n        window.pivotUpdateDescriptor(numeric, false, true);\n        window.pivotRefreshRatingNumberButtons(numeric, true);\n\n        if (\n            window.pivotActiveAssessment &&\n            window.pivotIsWorkContextPreferenceModule(\n                window.pivotActiveAssessment.pillar,\n                window.pivotActiveAssessment.mod\n            )\n        ) {\n            window.pivotRefreshContextNoPreferenceButton(false);\n        }\n    };\n\n    window.pivotHandleSliderInput = function(event, el) {\n        if (!el) return;\n\n        const isTrustedUserEvent = !!(event && event.isTrusted === true);\n        const isExplicitlyArmed = el.dataset.pivotUserInteracted === '1';\n\n        window.pivotUpdateSliderVisual(el);\n\n        if (!isTrustedUserEvent || !isExplicitlyArmed) {\n            \/\/ Safe preview only. Never persist a programmatic\/initial event.\n            window.pivotUpdateDescriptor(el.value, true, false);\n            return;\n        }\n\n        window.pivotUpdateDescriptor(el.value, false, true);\n        window.pivotRefreshRatingNumberButtons(el.value, true);\n    };\n\n    window.pivotUpdateSliderVisual = function(el) {\n        if (!el) {\n            return;\n        }\n\n        let min = Number(el.min || 1);\n        let max = Number(el.max || 10);\n        let value = Number(el.value || min);\n\n        let pct = max === min\n            ? 0\n            : ((value - min) \/ (max - min)) * 100;\n\n        el.style.setProperty(\n            '--pivot-slider-pct',\n            Math.max(0, Math.min(100, pct)) + '%'\n        );\n    };\n\n\n    window.pivotRestoreCurrentDescriptor = function() {\n        const state = window.pivotActiveAssessment || {};\n        const questions = Array.isArray(state.questions) ? state.questions : [];\n        const question = questions[state.currentIndex];\n        const slider = document.getElementById('pivot-main-slider');\n\n        if (!question || !slider) return;\n\n        const rawSaved = state.scores ? state.scores[question.id] : undefined;\n        if (window.pivotIsWorkContextPreferenceModule(state.pillar, state.mod) && window.pivotIsContextNoPreference(rawSaved)) {\n            window.pivotUpdateDescriptor('NP', false, false);\n            window.pivotRefreshContextNoPreferenceButton(true);\n            return;\n        }\n        const saved = Number(rawSaved);\n        const hasSaved = window.pivotIsAnsweredAssessmentResponse(state.pillar, state.mod, rawSaved);\n        const displayValue = hasSaved ? saved : Number(slider.value);\n\n        window.pivotUpdateDescriptor(displayValue, !hasSaved, false);\n    };\n\n    window.pivotHandleAssessmentNext = function(nextIndex) {\n        const state = window.pivotActiveAssessment || {};\n        const questions = Array.isArray(state.questions) ? state.questions : [];\n        const question = questions[state.currentIndex];\n        const score = question && state.scores ? state.scores[question.id] : undefined;\n\n        \/* Only give positive progress feedback when the question really has\n           a recorded response. Skipped questions receive no praise. *\/\n        if (window.pivotIsAnsweredAssessmentResponse(state.pillar, state.mod, score)) {\n            window.pivotShowToast('next');\n        }\n\n        window.pivotGoToAssessmentQuestion(nextIndex);\n    };\n\n    window.pivotPreviewSlider = function(e, el, maxVal) {\n        if (e.buttons === 0) {\n            let rect = el.getBoundingClientRect();\n            let padding = 14;\n            let usableWidth = Math.max(1, rect.width - (padding * 2));\n            let x = e.clientX - rect.left - padding;\n            let pct = Math.max(0, Math.min(1, x \/ usableWidth));\n            let minVal = Number(el.min || 1);\n            let hoverVal = Math.round(minVal + pct * (maxVal - minVal));\n            window.pivotUpdateDescriptor(hoverVal, true);\n        }\n    };\n\n    window.pivotGetQuestionTrackerHtml = function(state) {\n        let totalQuestions = state.questions.length;\n        let answeredCount = state.questions.reduce(function(total, question) {\n            let score = state.scores[question.id];\n            return total + (window.pivotIsAnsweredAssessmentResponse(state.pillar, state.mod, score) ? 1 : 0);\n        }, 0);\n\n        let remainingCount = Math.max(0, totalQuestions - answeredCount);\n\n        let html = `\n            <section class=\"pivot-question-tracker\" aria-label=\"Question navigation\">\n                <div class=\"pivot-question-tracker-head\">\n                    <div>\n                        <div class=\"pivot-question-tracker-title\">Jump to a question<\/div>\n                        <div class=\"pivot-question-tracker-meta\">\n                            ${answeredCount} answered \u00b7 ${remainingCount} remaining\n                        <\/div>\n                    <\/div>\n                    <div class=\"pivot-question-tracker-position\">\n                        ${state.currentIndex + 1} \/ ${totalQuestions}\n                    <\/div>\n                <\/div>\n                <div class=\"pivot-question-list\">\n        `;\n\n        state.questions.forEach(function(q, idx) {\n            let score = state.scores[q.id];\n            let isAnswered = window.pivotIsAnsweredAssessmentResponse(state.pillar, state.mod, score);\n            let isActive = state.currentIndex === idx;\n            let safeTitle =\n                typeof window.pivotEscapeHelpHtml === 'function'\n                    ? window.pivotEscapeHelpHtml(q.title || ('Question ' + (idx + 1)))\n                    : String(q.title || ('Question ' + (idx + 1)));\n\n            let classes = [\n                'pivot-question-nav-item',\n                isAnswered ? 'is-answered' : '',\n                isActive ? 'is-active' : ''\n            ].filter(Boolean).join(' ');\n\n            let statusHtml = isAnswered\n                ? (window.pivotIsContextNoPreference(score)\n                    ? `<span class=\"pivot-question-score\" aria-label=\"Saved response No preference\">NP<\/span>`\n                    : `<span class=\"pivot-question-score\" aria-label=\"Saved rating ${score}\">${score}<\/span>`)\n                : `<span class=\"pivot-question-pending\">Not answered<\/span>`;\n\n            html += `\n                <button\n                    type=\"button\"\n                    class=\"${classes}\"\n                    ${isActive ? 'aria-current=\"step\"' : ''}\n                    onclick=\"window.pivotGoToAssessmentQuestion(${idx})\"\n                >\n                    <span class=\"pivot-question-nav-main\">\n                        <span class=\"pivot-question-nav-number\">${idx + 1}<\/span>\n                        <span class=\"pivot-question-nav-title\">${safeTitle}<\/span>\n                    <\/span>\n                    ${statusHtml}\n                <\/button>\n            `;\n        });\n\n        html += `\n                <\/div>\n            <\/section>\n        `;\n\n        return html;\n    };\n\n\n    window.pivotRenderQuestion = function(index) {\n        let state = window.pivotActiveAssessment;\n\n        if (!state.questions || state.questions.length === 0) {\n            document.getElementById('assessment-content-anchor').innerHTML = `\n                <div class=\"pivot-premium-card pivot-card-accent-blue\" style=\"padding-top:40px;\">\n                    <h3>Loading assessment questions<\/h3>\n                    <button type=\"button\" class=\"pivot-btn-secondary\" onclick=\"window.renderDashboard()\">\n                        &larr; Back to Dashboard\n                    <\/button>\n                <\/div>\n            `;\n            return;\n        }\n\n        index = Math.max(0, Math.min(index, state.questions.length - 1));\n        state.currentIndex = index;\n\n        let q = state.questions[index];\n        let total = state.questions.length;\n        let isPref =\n            state.pillar === 'Work Preferences' ||\n            state.pillar === 'Work Requirement and Style';\n        let isContext = state.pillar === 'Work Context';\n        let isInterest = window.pivotIsCareerInterestModule(state.pillar, state.mod);\n        let isWorkStyle = window.pivotIsWorkStyleModule(state.pillar, state.mod);\n        let isBasicSkills = window.pivotIsBasicSkillsModule(state.pillar, state.mod);\n        let isAbilities = window.pivotIsAbilitiesModule(state.pillar, state.mod);\n        let isKnowledge = window.pivotIsKnowledgeModule(state.pillar, state.mod);\n        let isTransferableSkills = window.pivotIsTransferableSkillsModule(state.pillar, state.mod);\n        let isWorkActivities = window.pivotIsWorkActivitiesModule(state.pillar, state.mod);\n\n        let basicSkillConfig = isBasicSkills\n            ? window.pivotGetBasicSkillsLevelConfig(q.id)\n            : null;\n\n        let abilityConfig = isAbilities\n            ? window.pivotGetAbilityLevelConfig(q.id)\n            : null;\n\n        let knowledgeConfig = isKnowledge\n            ? window.pivotGetKnowledgeLevelConfig(q.id)\n            : null;\n\n        let transferableSkillConfig = isTransferableSkills\n            ? window.pivotGetTransferableSkillLevelConfig(q.id)\n            : null;\n\n        let workActivityConfig = isWorkActivities\n            ? window.pivotGetWorkActivityLevelConfig(q.id)\n            : null;\n\n        let contextScaleMax = isContext ? window.pivotGetContextScaleMax(q.id) : 5;\n        let minScaleVal = (isBasicSkills || isAbilities || isKnowledge || isTransferableSkills || isWorkActivities) ? 0 : 1;\n        let maxScaleVal = (isBasicSkills || isAbilities || isKnowledge || isTransferableSkills || isWorkActivities)\n            ? 7\n            : (isInterest\n                ? 7\n                : (isContext\n                    ? contextScaleMax\n                    : ((isWorkStyle || isPref) ? 5 : 10)));\n        let midScaleVal = (isBasicSkills || isAbilities || isKnowledge || isTransferableSkills || isWorkActivities)\n            ? 4\n            : Math.ceil(maxScaleVal \/ 2);\n\n        let scaleHeading = isBasicSkills\n            ? '0\u20137 Essential Skill Level'\n            : (isAbilities\n                ? '0\u20137 Ability Level'\n                : (isKnowledge\n                    ? '0\u20137 Knowledge Level'\n                    : (isTransferableSkills\n                        ? '0\u20137 Transferable Skill Level'\n                        : (isWorkActivities\n                            ? '0\u20137 Work Activity Level'\n                            : (isInterest\n                ? '1\u20137 Career Interest'\n                : (isWorkStyle\n                    ? '1\u20135 Natural Approach'\n                    : (isContext\n                        ? `1\u2013${maxScaleVal} Context & Environment Preference`\n                        : (isPref\n                            ? '1\u20135 Importance'\n                            : '1\u201310 Current Capability'))))))));\n        let scaleHelper = isBasicSkills\n            ? 'Use the examples below and choose the highest level that best matches what you can currently do.'\n            : (isAbilities\n                ? 'Use the examples below and choose the highest level that best matches what you can currently do.'\n                : (isKnowledge\n                    ? 'Use the examples below and choose the highest level of work you could currently handle using this knowledge.'\n                    : (isTransferableSkills\n                        ? 'Use the examples below and choose the highest level of task where you can currently use this skill effectively.'\n                        : (isWorkActivities\n                            ? 'Use the examples below and choose the highest level of this activity that you can currently carry out.'\n                            : (isInterest\n                                ? 'Choose how interested you would be in doing this kind of work.'\n                                : (isWorkStyle\n                                    ? 'Choose how well this describes the way you usually work.'\n                                    : (isContext\n                                        ? 'Choose the option you would prefer or be comfortable with. Use No preference if it would not affect your choice.'\n                                        : (isPref\n                                            ? 'Choose how important this is to you.'\n                                            : 'Choose the rating that best reflects what you can do now.'))))))));\n        let rawStoredScore = state.scores[q.id];\n        let isSavedNoPreference = isContext && window.pivotIsContextNoPreference(rawStoredScore);\n        let rawSavedScore = Number(rawStoredScore);\n        let hasNumericSavedScore =\n            !isSavedNoPreference &&\n            Number.isFinite(rawSavedScore) &&\n            rawSavedScore >= minScaleVal &&\n            rawSavedScore <= maxScaleVal &&\n            window.pivotIsAnsweredAssessmentResponse(state.pillar, state.mod, rawStoredScore);\n        let hasSavedScore = isSavedNoPreference || hasNumericSavedScore;\n        let savedScore = hasNumericSavedScore ? rawSavedScore : midScaleVal;\n        let questionPromptText =\n            isBasicSkills && basicSkillConfig\n                ? `Using the examples below, choose the highest level that best matches what you can currently do in ${basicSkillConfig.element_name}.`\n                : (isAbilities && abilityConfig\n                    ? `Using the examples below, choose the highest level that best matches what you can currently do in ${abilityConfig.element_name}.`\n                    : (isKnowledge && knowledgeConfig\n                        ? `Using the examples below, choose the highest level of work you could currently handle using your knowledge of ${knowledgeConfig.element_name}.`\n                        : (isTransferableSkills && transferableSkillConfig\n                            ? `Using the examples below, choose the highest level of task where you can currently use ${transferableSkillConfig.element_name} effectively.`\n                            : (isWorkActivities && workActivityConfig\n                                ? `Using the examples below, choose the highest level of ${workActivityConfig.element_name} that you can currently carry out.`\n                                : (q.question || q.description)))));\n\n        let levelAnchorHtml = isBasicSkills\n            ? window.pivotGetBasicSkillsAnchorHtml(q.id)\n            : (isAbilities\n                ? window.pivotGetAbilityAnchorHtml(q.id)\n                : (isKnowledge\n                    ? window.pivotGetKnowledgeAnchorHtml(q.id)\n                    : (isTransferableSkills\n                        ? window.pivotGetTransferableSkillAnchorHtml(q.id)\n                        : (isWorkActivities\n                            ? window.pivotGetWorkActivityAnchorHtml(q.id)\n                            : ''))));\n\n        \/*\n         * PIVOT HELP v1:\n         * Store the current question context safely rather than placing\n         * CSV question text directly inside an inline onclick attribute.\n         *\/\n        let displayQuestionTitle =\n            isWorkActivities && workActivityConfig\n                ? workActivityConfig.element_name\n                : (q.title || 'Assessment Question');\n\n        window.pivotCurrentQuestionHelp = {\n            id: q.id || '',\n            title: displayQuestionTitle,\n            description: q.description || '',\n            question: questionPromptText,\n            pillar: state.pillar || '',\n            module: state.mod || '',\n            maxScale: maxScaleVal,\n            scaleHeading: scaleHeading\n        };\n\n        \/\/ --- OPTION C MAPPING ---\n        let displayPillar = state.pillar;\n\n        if (state.pillar === 'Work Preferences') {\n            displayPillar = isInterest ? 'Career Interests' : 'What I Value Most';\n        }\n\n        if (state.pillar === 'Work Context') {\n            displayPillar = 'My Context & Environment';\n        }\n\n        if (state.pillar === 'Work Requirement and Style') {\n            displayPillar = 'My Natural Approach';\n        }\n        if (state.pillar === 'Basic Skills Assessment') displayPillar = 'Essential Skills';\n        if (state.pillar === 'Knowledge, Skills and Abilities' || state.pillar === 'Knowledge Skills and Abilities') displayPillar = 'Abilities';\n        if (state.pillar === 'Knowledge Assessment') displayPillar = 'Knowledge';\n        if (state.pillar === 'Cross-Functional Skills Assessment') displayPillar = 'Transferable Skills';\n        if (state.pillar === 'Generalized Work Activities') displayPillar = 'Work Activities';\n\n        let questionProgressPct = Math.round(\n            ((index + 1) \/ total) * 100\n        );\n\n        let ratingNumberButtons = '';\n\n        for (\n            let ratingValue = minScaleVal;\n            ratingValue <= maxScaleVal;\n            ratingValue++\n        ) {\n            const isSelected =\n                hasNumericSavedScore &&\n                Number(rawSavedScore) === ratingValue;\n\n            ratingNumberButtons += `\n                <button\n                    type=\"button\"\n                    class=\"pivot-rating-number-btn${isSelected ? ' is-selected' : ''}\"\n                    data-value=\"${ratingValue}\"\n                    aria-pressed=\"${isSelected ? 'true' : 'false'}\"\n                    aria-label=\"Select ${scaleHeading} ${ratingValue}\"\n                    title=\"Select ${ratingValue}\"\n                    onclick=\"window.pivotSelectRatingNumber(${ratingValue})\"\n                >\n                    ${ratingValue}\n                <\/button>\n            `;\n        }\n\n        let navButtons = `\n            <div class=\"pivot-mobile-button-stack pivot-assessment-actions\">\n                <button\n                    type=\"button\"\n                    class=\"pivot-btn-secondary pivot-assessment-back\"\n                    onclick=\"window.pivotGoToAssessmentQuestion(${index - 1})\"\n                    ${index === 0 ? 'disabled' : ''}\n                >\n                    &larr; Back\n                <\/button>\n\n                <button\n                    type=\"button\"\n                    class=\"pivot-btn-outline pivot-assessment-save\"\n                    onclick=\"window.pivotSaveAssessment()\"\n                >\n                    Save progress\n                <\/button>\n\n                ${\n                    index === total - 1\n                        ? `\n                            <button\n                                type=\"button\"\n                                class=\"pivot-btn-success pivot-assessment-next\"\n                                onclick=\"window.pivotSubmitAssessment()\"\n                            >\n                                Finish assessment\n                            <\/button>\n                        `\n                        : `\n                            <button\n                                type=\"button\"\n                                class=\"pivot-btn-accent pivot-assessment-next\"\n                                onclick=\"window.pivotHandleAssessmentNext(${index + 1})\"\n                            >\n                                Next &rarr;\n                            <\/button>\n                        `\n                }\n            <\/div>\n        `;\n\n        let html = `\n            <div class=\"pivot-premium-card pivot-card-accent-blue pivot-assessment-question-card\">\n                <div\n                    class=\"question-header-row\"\n                    style=\"display:flex; justify-content:space-between; align-items:center; margin-bottom:18px;\"\n                >\n                    <div style=\"display:flex; align-items:center; gap:15px;\">\n                        <span\n                            class=\"pivot-badge\"\n                            style=\"background:#002FA7; color:#fff;\"\n                        >\n                            Question ${index + 1} of ${total}\n                        <\/span>\n\n                        <span\n                            style=\"color:#64748b; font-size:.8rem; font-weight:750; text-transform:uppercase; letter-spacing:.055em;\"\n                        >\n                            ${displayPillar}\n                        <\/span>\n                    <\/div>\n\n                    <div style=\"display:flex; align-items:center; gap:10px; flex-wrap:wrap;\">\n                        <button\n                            type=\"button\"\n                            class=\"pivot-action-btn-mini pivot-question-exit\"\n                            onclick=\"document.getElementById('assessment-content-anchor').style.display='none'; window.pivotSelectPillar('${encodeURIComponent(state.pillar)}'); window.pivotScrollToTop();\"\n                        >\n                            &larr; Back to sections\n                        <\/button>\n                    <\/div>\n                <\/div>\n\n                <div\n                    class=\"pivot-question-progress-wrap\"\n                    aria-label=\"Question ${index + 1} of ${total}\"\n                >\n                    <div class=\"pivot-question-progress-track\" aria-hidden=\"true\">\n                        <span\n                            class=\"pivot-question-progress-fill\"\n                            style=\"width:${questionProgressPct}%\"\n                        ><\/span>\n                    <\/div>\n                    <span class=\"pivot-question-progress-text\">\n                        ${questionProgressPct}% through this section\n                    <\/span>\n                <\/div>\n\n                <div class=\"question-grid\">\n                    <div>\n                        <h2 class=\"pivot-question-title\">\n                            ${displayQuestionTitle}\n                            <span\n                                class=\"info-icon\"\n                                data-pivot-question-help=\"v2\"\n                                onclick=\"event.stopPropagation(); window.pivotShowQuestionHelp()\"\n                                title=\"Explain this question\"\n                                aria-label=\"Explain this question\"\n                                role=\"button\"\n                                tabindex=\"0\"\n                            >?<\/span>\n                        <\/h2>\n\n                        ${\n                            questionPromptText\n                                ? `\n                                    <p class=\"pivot-question-description\">\n                                        ${questionPromptText}\n                                    <\/p>\n                                `\n                                : ''\n                        }\n\n                        <div class=\"mobile-fixed-bottom\">\n                            <div class=\"compact-slider-area\">\n                                <div class=\"pivot-slider-header\">\n                                    <div class=\"pivot-scale-heading\">\n                                        ${scaleHeading}\n                                        <span class=\"pivot-scale-helper\">\n                                            ${scaleHelper}\n                                        <\/span>\n                                    <\/div>\n\n                                    <div class=\"pivot-slider-score\">\n                                        <span id=\"slider_current_val\">\n                                            ${savedScore}\n                                        <\/span>\n                                        <span class=\"pivot-slider-max\">\n                                            \/ ${maxScaleVal}\n                                        <\/span>\n                                    <\/div>\n                                <\/div>\n\n                                <div class=\"pivot-slider-wrapper\">\n                                    <input\n                                        type=\"range\"\n                                        min=\"${minScaleVal}\"\n                                        max=\"${maxScaleVal}\"\n                                        value=\"${savedScore}\"\n                                        class=\"pivot-slider\"\n                                        id=\"pivot-main-slider\"\n                                        title=\"Drag, click or use the arrow keys to choose a rating\"\n                                        aria-label=\"${scaleHeading}\"\n                                        data-pivot-user-interacted=\"0\"\n                                        onpointerdown=\"window.pivotArmSliderInteraction(this)\"\n                                        onkeydown=\"window.pivotArmSliderInteraction(this)\"\n                                        oninput=\"window.pivotHandleSliderInput(event, this)\"\n                                        onmousemove=\"window.pivotPreviewSlider(event, this, ${maxScaleVal})\"\n                                        onmouseleave=\"window.pivotRestoreCurrentDescriptor()\"\n                                    >\n\n                                    <div\n                                        class=\"slider-markers\"\n                                        aria-hidden=\"true\"\n                                    >\n                                        <span>${minScaleVal}<\/span>\n                                        <span>${midScaleVal}<\/span>\n                                        <span>${maxScaleVal}<\/span>\n                                    <\/div>\n                                <\/div>\n\n                                <div\n                                    class=\"pivot-rating-number-row\"\n                                    aria-label=\"Choose a rating directly\"\n                                >\n                                    ${ratingNumberButtons}\n                                <\/div>\n\n                                ${levelAnchorHtml}\n\n                                ${isContext ? `\n                                    <button\n                                        type=\"button\"\n                                        id=\"pivot-context-no-preference\"\n                                        class=\"pivot-btn-outline\"\n                                        aria-pressed=\"${isSavedNoPreference ? 'true' : 'false'}\"\n                                        onclick=\"window.pivotSetContextNoPreference()\"\n                                        style=\"width:100%;margin-top:14px;padding:11px 14px !important;font-size:.82rem !important;\"\n                                    >${isSavedNoPreference ? '\u2713 No preference selected' : 'No preference \u2014 this would not affect my choice'}<\/button>\n                                ` : ''}\n                            <\/div>\n\n                            <div\n                                id=\"active_descriptor_mobile\"\n                                class=\"descriptor-box pivot-active-descriptor pivot-active-descriptor-mobile\"\n                                aria-live=\"polite\"\n                            ><\/div>\n\n                            <div class=\"pivot-assessment-actions-mobile\">\n                                ${navButtons}\n                            <\/div>\n                        <\/div>\n\n                        ${window.pivotGetQuestionTrackerHtml(state)}\n\n                    <\/div>\n\n                    <div>\n                        <div\n                            id=\"active_descriptor\"\n                            class=\"descriptor-box pivot-active-descriptor pivot-active-descriptor-desktop\"\n                            aria-live=\"polite\"\n                        ><\/div>\n\n                        <div class=\"pivot-assessment-actions-desktop\">\n                            ${navButtons}\n                        <\/div>\n                    <\/div>\n                <\/div>\n            <\/div>\n        `;\n\n        document.getElementById(\n            'assessment-content-anchor'\n        ).innerHTML = html;\n\n        if (isSavedNoPreference) {\n            window.pivotUpdateDescriptor('NP', false, false);\n            window.pivotRefreshContextNoPreferenceButton(true);\n        } else {\n            window.pivotUpdateDescriptor(savedScore, !hasSavedScore, false);\n            window.pivotRefreshContextNoPreferenceButton(false);\n        }\n        window.pivotUpdateSliderVisual(\n            document.getElementById('pivot-main-slider')\n        );\n        window.pivotRefreshRatingNumberButtons(\n            savedScore,\n            hasNumericSavedScore\n        );\n        window.pivotEnsureQuestionHelpTrigger();\n    };\n\n\n    window.pivotLoadAssessment = function(pillarEnc, modEnc) {\n        let pillar = decodeURIComponent(pillarEnc); let mod = decodeURIComponent(modEnc);\n        let gateway = document.getElementById('gateway-pillars-anchor'); if (gateway) gateway.style.display = 'none';\n        let modAnchor = document.getElementById('module-buttons-anchor'); if (modAnchor) modAnchor.style.display = 'none';\n        let contentAnchor = document.getElementById('assessment-content-anchor'); if (contentAnchor) contentAnchor.style.display = 'block';\n\n        let allScores = window.safeLocalParse('pivotScores', {});\n        let modScores = (allScores[pillar] && allScores[pillar][mod]) ? allScores[pillar][mod] : {};\n\n        \/* O*NET 30.3 CAREER INTEREST MIGRATION\n         * These two modules previously stored 1\u20135 importance ratings.\n         * They cannot be treated as 1\u20137 interest ratings, so clear each\n         * module once and require a genuine retake instead of converting it.\n         * The migration marker is stored outside pivotScores so it never\n         * contaminates completion counts, averages or career calculations.\n         *\/\n        if (window.pivotIsCareerInterestModule(pillar, mod)) {\n            let migrationState = window.pivotGetInterestMigrationState();\n            if (migrationState[mod] !== window.PIVOT_INTEREST_SCALE_VERSION) {\n                modScores = {};\n                if (!allScores[pillar]) allScores[pillar] = {};\n                allScores[pillar][mod] = modScores;\n                window.pivotSaveAll('pivotScores', allScores);\n                window.pivotMarkInterestModuleMigrated(mod);\n                window.pivotDebouncedSync();\n            }\n        }\n\n        \/* O*NET 30.3 WORK STYLE MIGRATION\n         * The legacy My Natural Approach module used 17 retired 1.C Work\n         * Style IDs and was not measured on a tendency scale. The current\n         * 21-item 1.D framework is therefore retaken rather than converted.\n         * Completion-credit history is preserved separately.\n         *\/\n        if (window.pivotIsWorkStyleModule(pillar, mod)) {\n            let migrationState = window.pivotGetWorkStyleMigrationState();\n            if (migrationState[mod] !== window.PIVOT_WORK_STYLE_SCALE_VERSION) {\n                modScores = {};\n                if (!allScores[pillar]) allScores[pillar] = {};\n                allScores[pillar][mod] = modScores;\n                window.pivotSaveAll('pivotScores', allScores);\n                window.pivotMarkWorkStyleModuleMigrated(mod);\n                window.pivotDebouncedSync();\n            }\n        }\n\n        \/* O*NET 30.3 WORK ACTIVITIES LEVEL MIGRATION\n         * The legacy Generalized Work Activities assessment stored 41 generic\n         * 1\u201310 capability self-ratings. Those values are not linearly\n         * interchangeable with the O*NET 0\u20137 Work Activity Level scale.\n         *\n         * Archive every legacy value once, clear live answers and require a\n         * genuine retake using the official activity-specific O*NET anchors.\n         *\/\n        if (window.pivotIsWorkActivitiesModule(pillar, mod)) {\n            let migrationState =\n                window.pivotGetWorkActivitiesMigrationState();\n\n            if (\n                migrationState[mod] !==\n                window.PIVOT_WORK_ACTIVITIES_SCALE_VERSION\n            ) {\n                const legacyScores = {};\n\n                Object.keys(modScores || {}).forEach(function(key) {\n                    if (\n                        key === '_date' ||\n                        key === '_legacy_1_10'\n                    ) return;\n\n                    const value = modScores[key];\n\n                    if (\n                        value !== undefined &&\n                        value !== null &&\n                        value !== ''\n                    ) {\n                        legacyScores[key] = value;\n                    }\n                });\n\n                modScores = {\n                    _legacy_1_10: {\n                        scale: '1-10 generic work activity self-rating',\n                        archived_at: new Date().toISOString(),\n                        original_date:\n                            modScores && modScores['_date']\n                                ? modScores['_date']\n                                : null,\n                        scores: legacyScores\n                    }\n                };\n\n                if (!allScores[pillar]) {\n                    allScores[pillar] = {};\n                }\n\n                allScores[pillar][mod] = modScores;\n\n                window.pivotSaveAll(\n                    'pivotScores',\n                    allScores\n                );\n\n                window.pivotMarkWorkActivitiesModuleMigrated(mod);\n                window.pivotDebouncedSync();\n            }\n        }\n\n        \/* O*NET 30.3 TRANSFERABLE SKILLS LEVEL MIGRATION\n         * The legacy Cross-Functional Skills assessment stored 26 generic\n         * 1\u201310 self-ratings, including the broad parent item 2.B.3\n         * (Technical Skills). Current O*NET 30.3 provides 25 occupation-rated\n         * Transferable Skills and does not rate that parent category.\n         *\n         * Archive every legacy value once, clear live answers, exclude 2.B.3\n         * from the new assessment and require a genuine 0\u20137 Level retake.\n         *\/\n        if (window.pivotIsTransferableSkillsModule(pillar, mod)) {\n            let migrationState =\n                window.pivotGetTransferableSkillsMigrationState();\n\n            if (\n                migrationState[mod] !==\n                window.PIVOT_TRANSFERABLE_SKILLS_SCALE_VERSION\n            ) {\n                const legacyScores = {};\n\n                Object.keys(modScores || {}).forEach(function(key) {\n                    if (\n                        key === '_date' ||\n                        key === '_legacy_1_10'\n                    ) return;\n\n                    const value = modScores[key];\n\n                    if (\n                        value !== undefined &&\n                        value !== null &&\n                        value !== ''\n                    ) {\n                        legacyScores[key] = value;\n                    }\n                });\n\n                modScores = {\n                    _legacy_1_10: {\n                        scale: '1-10 generic cross-functional skill self-rating',\n                        archived_at: new Date().toISOString(),\n                        original_date:\n                            modScores && modScores['_date']\n                                ? modScores['_date']\n                                : null,\n                        legacy_parent_excluded:\n                            window.PIVOT_TRANSFERABLE_SKILLS_PARENT_ID,\n                        scores: legacyScores\n                    }\n                };\n\n                if (!allScores[pillar]) {\n                    allScores[pillar] = {};\n                }\n\n                allScores[pillar][mod] = modScores;\n\n                window.pivotSaveAll(\n                    'pivotScores',\n                    allScores\n                );\n\n                window.pivotMarkTransferableSkillsModuleMigrated(mod);\n                window.pivotDebouncedSync();\n            }\n        }\n\n        \/* O*NET 30.3 KNOWLEDGE LEVEL MIGRATION\n         * Legacy Knowledge Assessment answers used a generic 1\u201310\n         * self-rating. Those values are not linearly interchangeable\n         * with the O*NET 0\u20137 Knowledge Level scale.\n         *\n         * Archive the legacy values once, clear live answers and require\n         * a genuine retake using the element-specific O*NET anchors.\n         *\/\n        if (window.pivotIsKnowledgeModule(pillar, mod)) {\n            let migrationState =\n                window.pivotGetKnowledgeMigrationState();\n\n            if (\n                migrationState[mod] !==\n                window.PIVOT_KNOWLEDGE_SCALE_VERSION\n            ) {\n                const legacyScores = {};\n\n                Object.keys(modScores || {}).forEach(function(key) {\n                    if (\n                        key === '_date' ||\n                        key === '_legacy_1_10'\n                    ) return;\n\n                    const value = modScores[key];\n\n                    if (\n                        value !== undefined &&\n                        value !== null &&\n                        value !== ''\n                    ) {\n                        legacyScores[key] = value;\n                    }\n                });\n\n                modScores = {\n                    _legacy_1_10: {\n                        scale: '1-10 generic knowledge self-rating',\n                        archived_at: new Date().toISOString(),\n                        original_date:\n                            modScores && modScores['_date']\n                                ? modScores['_date']\n                                : null,\n                        scores: legacyScores\n                    }\n                };\n\n                if (!allScores[pillar]) {\n                    allScores[pillar] = {};\n                }\n\n                allScores[pillar][mod] = modScores;\n\n                window.pivotSaveAll(\n                    'pivotScores',\n                    allScores\n                );\n\n                window.pivotMarkKnowledgeModuleMigrated(mod);\n                window.pivotDebouncedSync();\n            }\n        }\n\n        \/* O*NET 30.3 ABILITIES LEVEL MIGRATION\n         * Legacy Ability modules stored generic 1\u201310 self-ratings.\n         * Those values are not linearly interchangeable with O*NET 0\u20137\n         * Ability Level. Archive each affected module once, clear its live\n         * answers, and require a genuine retake using element-specific anchors.\n         *\/\n        if (window.pivotIsAbilitiesModule(pillar, mod)) {\n            let migrationState =\n                window.pivotGetAbilityMigrationState();\n\n            if (\n                migrationState[mod] !==\n                window.PIVOT_ABILITY_SCALE_VERSION\n            ) {\n                const legacyScores = {};\n\n                Object.keys(modScores || {}).forEach(function(key) {\n                    if (\n                        key === '_date' ||\n                        key === '_legacy_1_10'\n                    ) return;\n\n                    const value = modScores[key];\n\n                    if (\n                        value !== undefined &&\n                        value !== null &&\n                        value !== ''\n                    ) {\n                        legacyScores[key] = value;\n                    }\n                });\n\n                modScores = {\n                    _legacy_1_10: {\n                        scale: '1-10 generic self-rating',\n                        archived_at: new Date().toISOString(),\n                        original_date:\n                            modScores && modScores['_date']\n                                ? modScores['_date']\n                                : null,\n                        scores: legacyScores\n                    }\n                };\n\n                if (!allScores[pillar]) {\n                    allScores[pillar] = {};\n                }\n\n                allScores[pillar][mod] = modScores;\n\n                window.pivotSaveAll(\n                    'pivotScores',\n                    allScores\n                );\n\n                window.pivotMarkAbilityModuleMigrated(mod);\n                window.pivotDebouncedSync();\n            }\n        }\n\n        \/* O*NET 30.3 BASIC SKILLS LEVEL MIGRATION\n         * Legacy Basic Skills values used a generic 1\u201310 self-rating.\n         * Archive those values once, clear the live item responses and require\n         * a retake on the 0\u20137 O*NET Level scale. No linear conversion is used.\n         *\/\n        if (window.pivotIsBasicSkillsModule(pillar, mod)) {\n            let migrationState = window.pivotGetBasicSkillsMigrationState();\n            if (migrationState[mod] !== window.PIVOT_BASIC_SKILLS_SCALE_VERSION) {\n                const legacyScores = {};\n                Object.keys(modScores || {}).forEach(function(key) {\n                    if (key === '_date' || key === '_legacy_1_10') return;\n                    const value = modScores[key];\n                    if (value !== undefined && value !== null && value !== '') {\n                        legacyScores[key] = value;\n                    }\n                });\n\n                modScores = {\n                    _legacy_1_10: {\n                        scale: '1-10 generic self-rating',\n                        archived_at: new Date().toISOString(),\n                        original_date: modScores && modScores['_date'] ? modScores['_date'] : null,\n                        scores: legacyScores\n                    }\n                };\n\n                if (!allScores[pillar]) allScores[pillar] = {};\n                allScores[pillar][mod] = modScores;\n                window.pivotSaveAll('pivotScores', allScores);\n                window.pivotMarkBasicSkillsModuleMigrated(mod);\n                window.pivotDebouncedSync();\n            }\n        }\n\n        \/* O*NET 30.3 WORK CONTEXT PREFERENCE MIGRATION\n         * The legacy module stored 63 importance ratings. The current model\n         * uses 57 leaf Work Context elements and their actual O*NET category\n         * scales, plus an explicit No preference response. Legacy importance\n         * ratings are therefore cleared once rather than converted.\n         *\/\n        if (window.pivotIsWorkContextPreferenceModule(pillar, mod)) {\n            let migrationState = window.pivotGetContextMigrationState();\n            if (migrationState[mod] !== window.PIVOT_CONTEXT_PREFERENCE_VERSION) {\n                modScores = {};\n                if (!allScores[pillar]) allScores[pillar] = {};\n                allScores[pillar][mod] = modScores;\n                window.pivotSaveAll('pivotScores', allScores);\n                window.pivotMarkContextModuleMigrated(mod);\n                window.pivotDebouncedSync();\n            }\n        }\n\n        let questions = [];\n        if (window.pivotMasterStore && window.pivotMasterStore[pillar] && window.pivotMasterStore[pillar][mod]) {\n            questions = window.pivotMasterStore[pillar][mod];\n            if (!Array.isArray(questions)) questions = Object.values(questions);\n        }\n\n        window.pivotActiveAssessment = { pillar: pillar, mod: mod, questions: questions, currentIndex: 0, scores: modScores };\n\n        if (typeof window.pivotAuditAssessmentHelp === 'function') {\n            window.pivotLastHelpAudit =\n                window.pivotAuditAssessmentHelp({ log: false });\n        }\n\n        window.pivotRenderQuestion(0);\n        window.pivotScrollToTop();\n    };\n\n    window.pivotSaveAssessment = function(isSubmit = false, silent = false) {\n        let state = window.pivotActiveAssessment; let now = window.pivotToday(); state.scores['_date'] = now;\n        let allScores = window.safeLocalParse('pivotScores', {});\n        if (!allScores[state.pillar]) allScores[state.pillar] = {}; allScores[state.pillar][state.mod] = state.scores;\n        \n        window.pivotSaveAll('pivotScores', allScores); window.pivotSaveAll('scores_date', now);\n        window.pivotDebouncedSync(); \n\n        if (isSubmit) {\n            let contentAnchor = document.getElementById('assessment-content-anchor');\n            if (contentAnchor) contentAnchor.style.display = 'none';\n            window.pivotSelectPillar(encodeURIComponent(state.pillar));\n            if (!silent) window.pivotShowToast('complete');\n        } else if (!silent) {\n            window.pivotShowToast('save');\n        }\n    };\n\n   window.pivotSubmitAssessment = function() {\n        let state = window.pivotActiveAssessment;\n        let totalQuestions = Array.isArray(state.questions) ? state.questions.length : 0;\n        let answeredCount = 0;\n\n        if (state.scores && Array.isArray(state.questions)) {\n            answeredCount = state.questions.reduce(function(total, question) {\n                return total + (window.pivotIsAnsweredAssessmentResponse(state.pillar, state.mod, state.scores[question.id]) ? 1 : 0);\n            }, 0);\n        }\n\n        const remaining = Math.max(0, totalQuestions - answeredCount);\n\n        \/* Do not say an assessment is complete when questions remain. *\/\n        if (!totalQuestions || remaining > 0) {\n            window.pivotSaveAssessment(false, true);\n            const noun = remaining === 1 ? 'question' : 'questions';\n            window.pivotShowToast(\n                'attention',\n                0,\n                `Progress saved. ${remaining} ${noun} still to answer before you complete this assessment.`\n            );\n            return;\n        }\n\n        let paidModules = window.safeLocalParse('pivot_paid_modules', []);\n        let moduleKey = `${state.pillar}::${state.mod}`;\n        let wasAlreadyCompleted = paidModules.includes(moduleKey);\n\n        \/* Save and leave the assessment without showing a second generic toast. *\/\n        window.pivotSaveAssessment(true, true);\n\n        window.pivotShowToast(\n            'complete',\n            0,\n            wasAlreadyCompleted\n                ? 'Assessment updated. Your latest responses have been saved.'\n                : 'Assessment complete. Your responses have been saved.'\n        );\n\n        if (wasAlreadyCompleted) return;\n\n        const ajaxUrl = window.pivotGetAjaxUrl();\n        const params = new URLSearchParams();\n        params.append('action', 'pivot_award_module_credits');\n        params.append('pillar', state.pillar);\n        params.append('module', state.mod);\n        params.append('question_count', totalQuestions);\n        window.pivotAppendSecureNonce(params);\n\n        fetch(ajaxUrl, {\n            method: 'POST',\n            credentials: 'same-origin',\n            cache: 'no-store',\n            body: params,\n            headers: { 'Content-Type': 'application\/x-www-form-urlencoded' }\n        })\n        .then(response => response.json())\n        .then(data => {\n            if (data.success && data.data.rewarded) {\n                paidModules.push(moduleKey);\n                window.pivotSaveAll('pivot_paid_modules', paidModules);\n\n                setTimeout(() => {\n                    window.pivotShowToast('gamification', data.data.points, 'Assessment completed. Your PIVOT Credits have been added to your wallet.');\n\n                    let walletSpan = document.querySelector('#pivot-floating-wallet-btn span');\n                    let walletBtn = document.getElementById('pivot-floating-wallet-btn');\n\n                    if (walletSpan && walletBtn) {\n                        let currentText = walletSpan.innerText;\n                        let currentBalance = parseInt(currentText.split(' ')[0].replace(\/,\/g, '')) || 0;\n                        let targetBalance = currentBalance + data.data.points;\n\n                        walletBtn.style.transform = 'scale(1.2) translateY(-10px)';\n                        walletBtn.style.boxShadow = '0 10px 30px rgba(212, 175, 55, 0.8), 0 0 20px rgba(234, 88, 12, 0.5)';\n                        walletBtn.style.borderColor = '#ea580c';\n\n                        let duration = 3000;\n                        let startTime = null;\n\n                        function updateCounter(timestamp) {\n                            if (!startTime) startTime = timestamp;\n                            let progress = timestamp - startTime;\n                            let percent = Math.min(progress \/ duration, 1);\n                            let easeOutQuart = 1 - Math.pow(1 - percent, 4);\n                            let currentDisplay = Math.floor(currentBalance + (data.data.points * easeOutQuart));\n\n                            walletSpan.innerHTML = '<span style=\"color:#ffffff;\">' + currentDisplay.toLocaleString() + '<\/span> <span style=\"color:#ea580c; font-size:0.8rem; margin-left:5px;\">GROWING<\/span>';\n\n                            if (progress < duration) {\n                                window.requestAnimationFrame(updateCounter);\n                            } else {\n                                walletBtn.style.transform = '';\n                                walletBtn.style.boxShadow = '';\n                                walletBtn.style.borderColor = '#d4af37';\n                                walletSpan.innerHTML = targetBalance.toLocaleString();\n                            }\n                        }\n\n                        window.requestAnimationFrame(updateCounter);\n                    }\n                }, 1500);\n            }\n        })\n        .catch(err => console.error('Credit Sync Error:', err));\n    };\n\n    window.pivotSelectPillar = function(pillarEnc) {\n        let pillar = decodeURIComponent(pillarEnc);\n        let gateway = document.getElementById('gateway-pillars-anchor'); if (gateway) gateway.style.display = 'none';\n        let contentAnchor = document.getElementById('assessment-content-anchor'); if (contentAnchor) contentAnchor.style.display = 'none';\n        let modAnchor = document.getElementById('module-buttons-anchor'); if (modAnchor) modAnchor.style.display = 'block';\n        \n        let userScores = window.safeLocalParse('pivotScores', {});\n        let pillarScores = userScores[pillar] || {};\n        let isCloudPillar = (pillar === 'Work Preferences' || pillar === 'Work Context' || pillar === 'Work Requirement and Style');\n        \n        \/\/ --- OPTION C MAPPING ---\n        let displayTitle = pillar;\n        if (pillar === 'Work Preferences') displayTitle = 'What I Value Most';\n        if (pillar === 'Work Context') displayTitle = 'My Context & Environment';\n        if (pillar === 'Work Requirement and Style') displayTitle = 'My Natural Approach';\n        if (pillar === 'Basic Skills Assessment') displayTitle = 'Essential Skills';\n        if (pillar === 'Knowledge, Skills and Abilities' || pillar === 'Knowledge Skills and Abilities') displayTitle = 'Abilities';\n        if (pillar === 'Knowledge Assessment') displayTitle = 'Knowledge';\n        if (pillar === 'Cross-Functional Skills Assessment') displayTitle = 'Transferable Skills';\n        if (pillar === 'Generalized Work Activities') displayTitle = 'Work Activities';\n\n        let html = `<div style=\"margin-bottom:25px; display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:15px;\">\n                        <button type=\"button\" class=\"pivot-btn-accent\" style=\"padding: 10px 24px !important; font-size: 0.9rem;\" onclick=\"document.getElementById('module-buttons-anchor').style.display='none'; document.getElementById('gateway-pillars-anchor').style.display='block'; window.renderDashboard(); window.pivotScrollToTop();\">&larr; Back to dashboard<\/button>\n                    <\/div>\n                    <h2 style=\"color:#0f172a; margin-bottom: 25px; font-size: 2.2rem; font-weight: 900;\">\n                        ${displayTitle}: choose a section\n                        <span class=\"info-icon\" onclick=\"event.stopPropagation(); window.pivotShowPillarHelp('${encodeURIComponent(pillar)}')\" title=\"Learn more about this assessment area\" aria-label=\"Learn more about this assessment area\">?<\/span>\n                    <\/h2>`;\n        \n        html += `<div class=\"pivot-grid-4\">`;\n        if (window.pivotMasterStore && window.pivotMasterStore[pillar]) {\n            for (let mod in window.pivotMasterStore[pillar]) {\n                let questions = window.pivotMasterStore[pillar][mod] || [];\n                if (!Array.isArray(questions)) questions = Object.values(questions);\n                let totalQuestions = questions.length;\n                let modScores = pillarScores[mod] || {};\n                let answeredCount = 0; let totalScore = 0; let lastModUpdate = modScores['_date'] || \"Never started\";\n\n                questions.forEach(function(question) {\n                    if (!question || !question.id) return;\n                    const value = modScores[question.id];\n                    if (window.pivotIsAnsweredAssessmentResponse(pillar, mod, value)) {\n                        answeredCount++;\n                        const scoreVal = Number(value);\n                        if (Number.isFinite(scoreVal)) totalScore += scoreVal;\n                    }\n                });\n                \n                if (answeredCount > 0 && lastModUpdate === \"Never started\") { lastModUpdate = \"In Progress\"; }\n                let percentComplete = totalQuestions > 0 ? Math.round((answeredCount \/ totalQuestions) * 100) : 0;\n                let avgScore = answeredCount > 0 ? (totalScore \/ answeredCount).toFixed(1) : \"0.0\";\n\n                \/\/ --- OPTION C MAPPING ---\n                let modDisplayTitle = mod;\n                if (mod === 'General Work Interest') modDisplayTitle = 'Career Interest Types';\n                if (mod === 'Work Focus and Interest') modDisplayTitle = 'Specific Career Interests';\n                if (mod === 'Work Preferences') modDisplayTitle = 'What I Value Most';\n                if (mod === 'Work Context') modDisplayTitle = 'My Context & Environment';\n                if (mod === 'Work Requirement and Style') modDisplayTitle = 'My Natural Approach';\n                if (pillar === 'Basic Skills Assessment') modDisplayTitle = 'Essential Skills';\n                if (pillar === 'Knowledge, Skills and Abilities' || pillar === 'Knowledge Skills and Abilities') modDisplayTitle = 'Abilities';\n                if (pillar === 'Knowledge Assessment') modDisplayTitle = 'Knowledge';\n                if (pillar === 'Cross-Functional Skills Assessment') modDisplayTitle = 'Transferable Skills';\n                if (pillar === 'Generalized Work Activities') modDisplayTitle = 'Work Activities';\n                if ((pillar === '21st Century Skills' || pillar === 'Employability Skills') && mod === 'Core Assessments') modDisplayTitle = 'Assessment questions';\n                if (pillar === 'Work Context') modDisplayTitle = 'Context & Environment';\n\n                html += `\n                <div class=\"pivot-premium-card pivot-module-row pivot-square-card pivot-card-accent-blue\" onclick=\"window.pivotLoadAssessment('${encodeURIComponent(pillar)}', '${encodeURIComponent(mod)}')\">\n                    <div style=\"text-align:center;\">\n                        <h3 style=\"margin:0 0 10px 0; color:#002FA7; font-size: 1.15rem; font-weight:800; line-height: 1.3;\">${modDisplayTitle}<\/h3>\n                        <span class=\"pivot-badge ${percentComplete === 100 ? 'complete' : ''}\">${percentComplete}% answered<\/span>\n                    <\/div>\n                    <div style=\"flex:1; display:flex; flex-direction:column; align-items:center; justify-content:center; padding: 15px 0; overflow: hidden;\">\n                        ${isCloudPillar ? \n                            (answeredCount > 0 ? `<div style=\"font-size:4.5rem; line-height:1;\">\u2601\ufe0f<\/div><div style=\"font-size:0.75rem; color:#0f766e; font-weight:800; text-transform:uppercase; margin-top:5px; padding: 4px 10px; background:#ccfbf1; border-radius: 8px; border: 1px solid #99f6e4;\">Profile summary ready<\/div>` : `<div style=\"font-size:4.5rem; color:#cbd5e1; line-height:1;\">\u2601\ufe0f<\/div><div style=\"font-size:0.75rem; color:#94a3b8; font-weight:700; text-transform:uppercase; margin-top:5px;\">Not started<\/div>`) : \n                            `<div style=\"font-size:4.5rem; font-weight:900; color:#002FA7; line-height:1;\">${avgScore}<\/div><div style=\"font-size:0.75rem; color:#64748b; font-weight:700; text-transform:uppercase; margin-top:5px;\">Average self-rating<\/div>`\n                        }\n                    <\/div>\n                    <div style=\"text-align:center; font-size:0.8rem; color:#94a3b8; border-top:1px solid #f1f5f9; padding-top:12px;\">${answeredCount} of ${totalQuestions} answered<br><strong style=\"color:#002FA7;\">Last updated: ${lastModUpdate}<\/strong><\/div>\n                <\/div>`;\n            }\n        }\n        html += `<\/div>`;\n\n        if (isCloudPillar) {\n            if (pillar === 'Work Preferences') {\n                let interestTypeCloud = window.buildWordcloudHtml('Work Preferences', 'General Work Interest', false);\n                let specificInterestCloud = window.buildWordcloudHtml('Work Preferences', 'Work Focus and Interest', false);\n                html += `<div class=\"pivot-premium-card pivot-card-accent-blue\" style=\"max-width:700px; margin:0 auto 20px; padding-top:35px;\">\n                    <h3 style=\"color:#0f172a; margin:0 0 8px; font-size:1.4rem; font-weight:800; text-align:center;\">\ud83c\udfaf Career Interests<\/h3>\n                    <p style=\"color:#64748b; font-size:.88rem; line-height:1.5; text-align:center; margin:0 0 18px;\">These interests are measured separately from your work values. Higher-rated interests show the kinds of work activity you currently find more appealing.<\/p>\n                    ${interestTypeCloud}\n                    <div style=\"height:12px;\"><\/div>\n                    ${specificInterestCloud}\n                <\/div>`;\n            }\n            if (pillar === 'Work Context') {\n                html += `<div class=\"pivot-premium-card pivot-card-accent-blue\" style=\"max-width:700px;margin:0 auto;padding-top:35px;\"><h3 style=\"color:#0f172a;margin:0 0 15px;font-size:1.4rem;font-weight:800;text-align:center;\">My Context &amp; Environment Summary<\/h3>${window.pivotBuildContextPreferenceSummaryHtml(false)}<\/div>`;\n            } else {\n                html += `<div class=\"pivot-premium-card pivot-card-accent-blue\" style=\"max-width: 700px; margin: 0 auto; padding-top:35px;\"><h3 style=\"color:#0f172a; margin:0 0 15px 0; font-size:1.4rem; font-weight:800; text-align:center;\">\u2601\ufe0f ${displayTitle} Summary<\/h3>${window.buildWordcloudHtml(pillar, null, false)}<\/div>`;\n            }\n        }\n        \n        html += `<div style=\"margin-top: 40px; width: 100%; clear: both;\">${window.getContextualBlocks('pillar', pillar)}<\/div>`;\n        if(modAnchor) modAnchor.innerHTML = html; \n        window.pivotScrollToTop();\n    };\n\n    window.buildWordcloudHtml = function(pillar, specificModule = null, isCompact = false) {\n        try {\n            let userScores = window.safeLocalParse('pivotScores', {}); let tagsData = []; let pData = window.pivotMasterStore[pillar] || {};\n\n            function cloudWeight(mod, score) {\n                let numeric = Number(score);\n                if (!Number.isFinite(numeric) || numeric <= 0) return 0;\n                if (window.pivotIsCareerInterestModule(pillar, mod)) {\n                    \/\/ Normalise 1\u20137 interest to the existing 1\u20135 visual weight only.\n                    return Math.max(1, Math.min(5, Math.round(1 + ((numeric - 1) * 4 \/ 6))));\n                }\n                let weight = parseInt(numeric);\n                if (weight > 5) weight = Math.ceil(weight \/ 2);\n                return Math.max(1, Math.min(5, weight));\n            }\n\n            if (specificModule) {\n                let modScores = (userScores[pillar] && userScores[pillar][specificModule]) ? userScores[pillar][specificModule] : {};\n                let questions = pData[specificModule] || []; if (!Array.isArray(questions)) questions = Object.values(questions);\n                questions.forEach(q => { if(!q || !q.id) return; let score = modScores[q.id]; if (score) { let weight = cloudWeight(specificModule, score); if (weight >= 4) tagsData.push({ text: q.title, weight: weight }); } });\n            } else {\n                for (let mod in pData) {\n                    \/\/ Career interests are measured separately and must not be mixed\n                    \/\/ into the existing \"What I Value Most\" values summary cloud.\n                    if (pillar === 'Work Preferences' && window.pivotIsCareerInterestModule(pillar, mod)) continue;\n                    let modScores = (userScores[pillar] && userScores[pillar][mod]) ? userScores[pillar][mod] : {}; let questions = pData[mod] || []; if (!Array.isArray(questions)) questions = Object.values(questions);\n                    questions.forEach(q => { if(!q || !q.id) return; let score = modScores[q.id]; if (score) { let weight = cloudWeight(mod, score); if (weight >= 4) tagsData.push({ text: q.title, weight: weight }); } });\n                }\n            }\n            if (tagsData.length === 0) { if (isCompact) return `<div style=\"font-size:3.5rem;\">\u2601\ufe0f<\/div><div style=\"font-size:0.7rem; color:#94a3b8; font-weight:700; text-transform:uppercase; margin-top:5px; text-align:center;\">Not started<\/div>`; return `<p style=\"color:#94a3b8; font-style:italic; margin: 10px 0;\">Answer some questions in this assessment to build your summary.<\/p>`; }\n            tagsData.sort(() => Math.random() - 0.5); let containerClass = isCompact ? 'pivot-wordcloud-container compact' : 'pivot-wordcloud-container'; let cloudHtml = `<div class=\"${containerClass}\">`;\n            tagsData.forEach(tag => { let randomRotation = (Math.random() * 8 - 4).toFixed(1); cloudHtml += `<span class=\"wc-tag wc-size-${tag.weight}\" style=\"transform: rotate(${randomRotation}deg);\">${tag.text}<\/span>`; });\n            cloudHtml += `<\/div>`; return cloudHtml;\n        } catch(e) { return \"<p>Loading summary...<\/p>\"; }\n    };\n\/\/ =======================================================\n    \/\/ --- NEW PORTFOLIO ENGINE (CERTIFICATES & REFERENCES) ---\n    \/\/ =======================================================\n\n    window.pivotBuildPortfolioModals = function() {\n        if (!document.getElementById('pivot-cert-modal')) {\n            let certModal = document.createElement('div'); \n            certModal.id = 'pivot-cert-modal'; \n            certModal.className = 'pivot-modal-overlay';\n            certModal.innerHTML = `\n                <div class=\"pivot-modal-box\">\n                    <h2 style=\"color:#002FA7; font-size:1.6rem; font-weight:900; margin:0 0 10px 0; text-align:center;\">Add Certificate<\/h2>\n                    <div class=\"setup-input-group\"><label>Certificate Title<\/label><input type=\"text\" id=\"cert_title\" placeholder=\"e.g. Masterclass in Leadership\"><\/div>\n                    <div class=\"setup-input-group\"><label>Issuing Organization<\/label><input type=\"text\" id=\"cert_issuer\" placeholder=\"e.g. PIVOT Education\"><\/div>\n                    <div class=\"setup-input-group\"><label>Year Issued<\/label><input type=\"text\" id=\"cert_year\" placeholder=\"e.g. 2026\"><\/div>\n                    <div class=\"setup-input-group\"><label>Document Link \/ URL<\/label><input type=\"text\" id=\"cert_url\" placeholder=\"Link to the PDF or Credential (e.g. Google Drive)\"><\/div>\n                    <div class=\"setup-input-group\"><label>Thumbnail Image URL (Optional)<\/label><input type=\"text\" id=\"cert_img\" placeholder=\"Link to a preview image (png\/jpg)\"><\/div>\n                    <div style=\"display:flex; justify-content:flex-end; gap:15px; margin-top:25px;\">\n                        <button type=\"button\" class=\"pivot-btn-secondary\" onclick=\"document.getElementById('pivot-cert-modal').classList.remove('active')\">Cancel<\/button>\n                        <button type=\"button\" class=\"pivot-btn-accent\" onclick=\"window.pivotSavePortfolioItem('cert')\">Save Certificate<\/button>\n                    <\/div>\n                <\/div>`;\n            document.body.appendChild(certModal);\n        }\n\n        if (!document.getElementById('pivot-ref-modal')) {\n            let refModal = document.createElement('div'); \n            refModal.id = 'pivot-ref-modal'; \n            refModal.className = 'pivot-modal-overlay';\n            refModal.innerHTML = `\n                <div class=\"pivot-modal-box\">\n                    <h2 style=\"color:#002FA7; font-size:1.6rem; font-weight:900; margin:0 0 10px 0; text-align:center;\">Add Reference<\/h2>\n                    <div class=\"setup-input-group\"><label>Reference Name<\/label><input type=\"text\" id=\"ref_name\" placeholder=\"e.g. Jane Doe\"><\/div>\n                    <div class=\"setup-input-group\"><label>Relationship \/ Title<\/label><input type=\"text\" id=\"ref_relation\" placeholder=\"e.g. Former Manager at TechCorp\"><\/div>\n                    <div class=\"setup-input-group\"><label>Reference Type<\/label>\n                        <select id=\"ref_type\" class=\"modal-input\" style=\"padding: 10px;\"><option value=\"Professional\">Professional<\/option><option value=\"Character\">Personal \/ Character<\/option><\/select>\n                    <\/div>\n                    <div class=\"setup-input-group\"><label>Date Received<\/label><input type=\"text\" id=\"ref_date\" placeholder=\"e.g. July 2026\"><\/div>\n                    <div class=\"setup-input-group\"><label>Document Link \/ URL<\/label><input type=\"text\" id=\"ref_url\" placeholder=\"Link to the reference document\"><\/div>\n                    <div style=\"display:flex; justify-content:flex-end; gap:15px; margin-top:25px;\">\n                        <button type=\"button\" class=\"pivot-btn-secondary\" onclick=\"document.getElementById('pivot-ref-modal').classList.remove('active')\">Cancel<\/button>\n                        <button type=\"button\" class=\"pivot-btn-accent\" onclick=\"window.pivotSavePortfolioItem('ref')\">Save Reference<\/button>\n                    <\/div>\n                <\/div>`;\n            document.body.appendChild(refModal);\n        }\n    };\n\n    window.pivotOpenCertModal = function() { window.pivotBuildPortfolioModals(); document.getElementById('cert_title').value = ''; document.getElementById('cert_issuer').value = ''; document.getElementById('cert_year').value = ''; document.getElementById('cert_url').value = ''; document.getElementById('cert_img').value = ''; document.getElementById('pivot-cert-modal').classList.add('active'); };\n    window.pivotOpenRefModal = function() { window.pivotBuildPortfolioModals(); document.getElementById('ref_name').value = ''; document.getElementById('ref_relation').value = ''; document.getElementById('ref_date').value = ''; document.getElementById('ref_url').value = ''; document.getElementById('pivot-ref-modal').classList.add('active'); };\nwindow.pivotAutoAwardCertificate = function(courseTitle, topicsString = null, customThumbnailUrl = null) {\n        let certs = window.safeLocalParse('pivot_certificates', []);\n        \n        let alreadyAwarded = certs.some(c => c.title === courseTitle);\n        if (alreadyAwarded) return;\n\n        let currentYear = new Date().getFullYear().toString();\n        let safeTitleEncoded = encodeURIComponent(courseTitle);\n        \n        \/\/ Encode the topics. If none are provided, it uses a generic fallback\n        let safeTopics = topicsString ? encodeURIComponent(topicsString) : encodeURIComponent('Core Competencies \u2022 Practical Application \u2022 Strategic Execution');\n        \n        \/\/ Pass both the title and the topics to the PHP generator\n        let downloadUrl = `\/?download_pivot_cert=1&course=${safeTitleEncoded}&topics=${safeTopics}`;\n        \n        let thumbUrl = customThumbnailUrl || 'https:\/\/dumondeducation.com\/wp-content\/uploads\/2026\/06\/default-cert.png';\n\n        certs.push({ \n            title: courseTitle, \n            issuer: 'PIVOT Education', \n            year: currentYear, \n            url: downloadUrl, \n            img: thumbUrl \n        });\n\n        window.pivotSaveAll('pivot_certificates', certs);\n        window.pivotDebouncedSync();\n        \n        if (typeof window.pivotRenderPortfolio === 'function') {\n            window.pivotRenderPortfolio();\n        }\n        \n        window.pivotShowToast('gamification', 500, \"Official Certificate Earned!\");\n    };\n    window.pivotSavePortfolioItem = function(type) {\n        if (type === 'cert') {\n            let title = document.getElementById('cert_title').value.trim(); let issuer = document.getElementById('cert_issuer').value.trim(); let year = document.getElementById('cert_year').value.trim(); let url = document.getElementById('cert_url').value.trim(); let img = document.getElementById('cert_img').value.trim();\n            if(!title || !url) return alert(\"Please provide at least a Title and a Document Link.\");\n            let certs = window.safeLocalParse('pivot_certificates', []);\n            certs.push({ title: title, issuer: issuer, year: year, url: url, img: img });\n            window.pivotSaveAll('pivot_certificates', certs);\n            document.getElementById('pivot-cert-modal').classList.remove('active');\n        } else {\n            let name = document.getElementById('ref_name').value.trim(); let relation = document.getElementById('ref_relation').value.trim(); let date = document.getElementById('ref_date').value.trim(); let url = document.getElementById('ref_url').value.trim(); let rType = document.getElementById('ref_type').value;\n            if(!name || !url) return alert(\"Please provide at least a Name and a Document Link.\");\n            let refs = window.safeLocalParse('pivot_references', []);\n            refs.push({ name: name, relation: relation, date: date, url: url, type: rType });\n            window.pivotSaveAll('pivot_references', refs);\n            document.getElementById('pivot-ref-modal').classList.remove('active');\n        }\n        window.pivotDebouncedSync();\n        window.pivotRenderPortfolio();\n        window.pivotShowToast('complete', 0, \"Portfolio Updated!\");\n    };\n\n    window.pivotDeletePortfolioItem = function(type, index) {\n        if(!confirm(\"Remove this item from your portfolio?\")) return;\n        let key = type === 'cert' ? 'pivot_certificates' : 'pivot_references';\n        let items = window.safeLocalParse(key, []);\n        items.splice(index, 1);\n        window.pivotSaveAll(key, items);\n        window.pivotDebouncedSync();\n        window.pivotRenderPortfolio();\n    };\n\n    window.pivotRenderPortfolio = function() {\n        let certs = window.safeLocalParse('pivot_certificates', []);\n        let refs = window.safeLocalParse('pivot_references', []);\n        \n        let certAnchor = document.getElementById('pivot-certificates-anchor');\n        if (certAnchor) {\n            certAnchor.innerHTML = certs.length ? `<div class=\"pivot-grid-4\">` + certs.map((c, i) => `\n                <div class=\"pivot-premium-card pivot-square-card pivot-card-accent-teal\" style=\"padding:20px; display:flex; flex-direction:column; min-height:0;\">\n                    <button onclick=\"window.pivotDeletePortfolioItem('cert', ${i})\" style=\"position:absolute; top:10px; right:10px; background:#fee2e2; color:#ef4444; border:none; width:28px; height:28px; border-radius:50%; cursor:pointer; font-weight:bold; display:flex; align-items:center; justify-content:center;\">&times;<\/button>\n                    <div style=\"height:130px; background:#f1f5f9 url('${c.img || 'https:\/\/dumondeducation.com\/wp-content\/uploads\/2026\/06\/default-cert.png'}') center\/contain no-repeat; border-radius:10px; border:1px solid #e2e8f0; margin-bottom:15px;\"><\/div>\n                    <h4 style=\"margin:0 0 5px 0; color:#0f172a; font-size:1.05rem; font-weight:800; line-height:1.3;\">${c.title}<\/h4>\n                    <p style=\"margin:0 0 5px 0; font-size:0.85rem; color:#64748b; font-weight:600;\">${c.issuer}<\/p>\n                    <p style=\"margin:0 0 15px 0; font-size:0.8rem; color:#94a3b8; font-weight:700;\">Year: ${c.year || 'N\/A'}<\/p>\n                    <a href=\"${c.url}\" target=\"_blank\" class=\"pivot-btn-secondary\" style=\"text-align:center; padding:8px !important; text-decoration:none; margin-top:auto; font-size:0.85rem;\">View Document<\/a>\n                <\/div>\n            `).join('') + `<\/div>` : `<div style=\"background:#f8fafc; border:2px dashed #cbd5e1; border-radius:16px; padding:40px 20px; text-align:center;\"><div style=\"font-size:3rem; margin-bottom:10px;\">\ud83c\udf93<\/div><h4 style=\"color:#0f172a; font-weight:800; margin:0 0 10px 0;\">No Certificates Yet<\/h4><p style=\"color:#64748b; margin:0; font-size:0.9rem;\">Complete PIVOT courses or upload your external qualifications here.<\/p><\/div>`;\n        }\n\n        let refAnchor = document.getElementById('pivot-references-anchor');\n        if (refAnchor) {\n            refAnchor.innerHTML = refs.length ? `<div class=\"pivot-grid-3\">` + refs.map((r, i) => `\n                <div class=\"pivot-premium-card pivot-card-accent-orange\" style=\"padding:25px; display:flex; flex-direction:column; min-height:0; margin-bottom:0;\">\n                    <button onclick=\"window.pivotDeletePortfolioItem('ref', ${i})\" style=\"position:absolute; top:10px; right:10px; background:#fee2e2; color:#ef4444; border:none; width:28px; height:28px; border-radius:50%; cursor:pointer; font-weight:bold; display:flex; align-items:center; justify-content:center;\">&times;<\/button>\n                    <span class=\"pivot-badge\" style=\"background:#fff7ed; color:#ea580c; align-self:flex-start; margin-bottom:12px; border:1px solid #ffedd5;\">${r.type} Reference<\/span>\n                    <h4 style=\"margin:0 0 5px 0; color:#0f172a; font-size:1.15rem; font-weight:800;\">${r.name}<\/h4>\n                    <p style=\"margin:0 0 5px 0; font-size:0.9rem; color:#64748b; font-weight:600;\">${r.relation}<\/p>\n                    <p style=\"margin:0 0 20px 0; font-size:0.8rem; color:#94a3b8; font-weight:700;\">Date: ${r.date || 'N\/A'}<\/p>\n                    <a href=\"${r.url}\" target=\"_blank\" class=\"pivot-btn-secondary\" style=\"text-align:center; padding:10px !important; text-decoration:none; margin-top:auto; font-size:0.9rem;\">Read Reference<\/a>\n                <\/div>\n            `).join('') + `<\/div>` : `<div style=\"background:#f8fafc; border:2px dashed #cbd5e1; border-radius:16px; padding:40px 20px; text-align:center;\"><div style=\"font-size:3rem; margin-bottom:10px;\">\ud83e\udd1d<\/div><h4 style=\"color:#0f172a; font-weight:800; margin:0 0 10px 0;\">No References Uploaded<\/h4><p style=\"color:#64748b; margin:0; font-size:0.9rem;\">Store your character and professional references here for easy access.<\/p><\/div>`;\n        }\n    };\n    window.renderDashboard = function() {\n        try {\n            let anchor = document.getElementById('gateway-pillars-anchor'); if(!anchor) return;\n            document.getElementById('assessment-content-anchor').style.display = 'none'; document.getElementById('module-buttons-anchor').style.display = 'none'; anchor.style.display = 'block';\n\n            let master = window.pivotMasterStore || {}; let scores = window.safeLocalParse('pivotScores', {});\n            \n            if (master && typeof master === 'object' && master['Knowledge, Skills and Abilities']) {\n                let ksaMaster = master['Knowledge, Skills and Abilities'];\n                for (let k in ksaMaster) { let kLower = k.toLowerCase(); if (kLower === 'knowledge assessment' || kLower.includes('generalized') || kLower.includes('cross') || kLower.includes('basic') || kLower.includes('style') || kLower.includes('requirement')) { delete ksaMaster[k]; } }\n                master['Knowledge, Skills and Abilities'] = ksaMaster; localStorage.setItem('sys_master_store', JSON.stringify(master));\n            }\n\n            if (scores && typeof scores === 'object' && scores['Knowledge, Skills and Abilities']) {\n                let ksaScores = scores['Knowledge, Skills and Abilities'];\n                for (let k in ksaScores) { let kLower = k.toLowerCase(); if (kLower === 'knowledge assessment' || kLower.includes('generalized') || kLower.includes('cross') || kLower.includes('basic') || kLower.includes('style') || kLower.includes('requirement')) { delete ksaScores[k]; } }\n                scores['Knowledge, Skills and Abilities'] = ksaScores; localStorage.setItem('pivotScores', JSON.stringify(scores));\n            }\n            window.pivotMasterStore = master;\n\n            let flatScores = {}; let lastGlobalUpdate = \"Not started yet\";\n            if (scores && typeof scores === 'object') {\n                for (let p in scores) {\n                    if (!scores[p] || typeof scores[p] !== 'object') continue;\n                    for (let m in scores[p]) {\n                        if (!scores[p][m] || typeof scores[p][m] !== 'object') continue;\n                        for (let qId in scores[p][m]) {\n                            if (qId === '_date') { if (scores[p][m][qId]) lastGlobalUpdate = scores[p][m][qId]; } \n                            else { if (qId && typeof qId === 'string') { flatScores[qId.trim()] = parseFloat(scores[p][m][qId]); } }\n                        }\n                    }\n                }\n            }\n\n            let actions = window.safeLocalParse('pivotDevActions', []); if (!Array.isArray(actions)) actions = [];\n            let plannedCount = actions.filter(a => a && a.status === 'planned').length; let completedCount = actions.filter(a => a && a.status === 'completed').length;\n            \n            const careerScores =\n                typeof window.getFlattenedUserScores === 'function'\n                    ? window.getFlattenedUserScores()\n                    : flatScores;\n\n            const uniqueIds = function(groups) {\n                return [\n                    ...new Set(\n                        groups.flatMap(group =>\n                            Object.keys(group || {})\n                        )\n                    )\n                ];\n            };\n\n            \/\/ General dashboard profile evidence is deliberately NOT tied to\n            \/\/ any single occupation. It measures how much evidence the user\n            \/\/ has supplied across all available indicators in each of the four\n            \/\/ validated Career Alignment dimensions.\n            const capabilityProfileIds = uniqueIds([\n                window.PIVOT_BASIC_SKILLS_LEVEL_CONFIG,\n                window.PIVOT_ABILITY_LEVEL_CONFIG,\n                window.PIVOT_KNOWLEDGE_LEVEL_CONFIG,\n                window.PIVOT_TRANSFERABLE_SKILLS_LEVEL_CONFIG,\n                window.PIVOT_WORK_ACTIVITIES_LEVEL_CONFIG\n            ]);\n\n            const capabilityProfileAnswered =\n                capabilityProfileIds.filter(id => {\n                    const value = Number(careerScores[id]);\n\n                    return Number.isFinite(value) &&\n                        value >= 0 &&\n                        value <= 7;\n                }).length;\n\n            const capabilityProfileCoverage =\n                capabilityProfileIds.length > 0\n                    ? Math.round(\n                        (\n                            capabilityProfileAnswered \/\n                            capabilityProfileIds.length\n                        ) * 100\n                    )\n                    : 0;\n\n            const capabilityProfileValues =\n                capabilityProfileIds\n                    .map(id => Number(careerScores[id]))\n                    .filter(value =>\n                        Number.isFinite(value) &&\n                        value >= 0 &&\n                        value <= 7\n                    );\n\n            const capabilityDevelopingCount =\n                capabilityProfileValues.filter(\n                    value => value >= 0 && value <= 2\n                ).length;\n\n            const capabilityEstablishedCount =\n                capabilityProfileValues.filter(\n                    value => value >= 3 && value <= 4\n                ).length;\n\n            const capabilityHigherLevelCount =\n                capabilityProfileValues.filter(\n                    value => value >= 5 && value <= 7\n                ).length;\n\n            const workContextQuestionsRaw =\n                master &&\n                master['Work Context'] &&\n                master['Work Context']['Work Context']\n                    ? master['Work Context']['Work Context']\n                    : [];\n\n            const workContextQuestions =\n                Array.isArray(workContextQuestionsRaw)\n                    ? workContextQuestionsRaw\n                    : Object.values(workContextQuestionsRaw || {});\n\n            const contextScores =\n                typeof window.pivotGetWorkContextPreferenceScores === 'function'\n                    ? window.pivotGetWorkContextPreferenceScores()\n                    : {};\n\n            const contextProfileAnswered =\n                workContextQuestions.filter(question => {\n                    if (!question || !question.id) return false;\n\n                    if (\n                        typeof window.pivotIsAnsweredAssessmentResponse === 'function'\n                    ) {\n                        return window.pivotIsAnsweredAssessmentResponse(\n                            'Work Context',\n                            'Work Context',\n                            contextScores[question.id]\n                        );\n                    }\n\n                    const value = contextScores[question.id];\n\n                    return value !== undefined &&\n                        value !== null &&\n                        value !== '';\n                }).length;\n\n            const contextProfileCoverage =\n                workContextQuestions.length > 0\n                    ? Math.round(\n                        (\n                            contextProfileAnswered \/\n                            workContextQuestions.length\n                        ) * 100\n                    )\n                    : 0;\n\n            const interestProfileIds =\n                Object.keys(\n                    window.PIVOT_SPECIFIC_INTEREST_NAMES || {}\n                );\n\n            const interestProfileAnswered =\n                interestProfileIds.filter(id => {\n                    const value = Number(careerScores[id]);\n\n                    return Number.isFinite(value) &&\n                        value >= 1 &&\n                        value <= 7;\n                }).length;\n\n            const interestProfileCoverage =\n                interestProfileIds.length > 0\n                    ? Math.round(\n                        (\n                            interestProfileAnswered \/\n                            interestProfileIds.length\n                        ) * 100\n                    )\n                    : 0;\n\n            const naturalApproachProfileIds =\n                Object.keys(\n                    window.PIVOT_WORK_STYLE_NAMES || {}\n                );\n\n            const naturalApproachProfileAnswered =\n                naturalApproachProfileIds.filter(id => {\n                    const value = Number(careerScores[id]);\n\n                    return Number.isFinite(value) &&\n                        value >= 1 &&\n                        value <= 5;\n                }).length;\n\n            const naturalApproachProfileCoverage =\n                naturalApproachProfileIds.length > 0\n                    ? Math.round(\n                        (\n                            naturalApproachProfileAnswered \/\n                            naturalApproachProfileIds.length\n                        ) * 100\n                    )\n                    : 0;\n\n            const profileDimensionCoverages = [\n                capabilityProfileCoverage,\n                contextProfileCoverage,\n                interestProfileCoverage,\n                naturalApproachProfileCoverage\n            ];\n\n            const profileEvidenceCoverage =\n                Math.round(\n                    profileDimensionCoverages.reduce(\n                        (sum, value) => sum + value,\n                        0\n                    ) \/\n                    profileDimensionCoverages.length\n                );\n\n            const profileDimensionsStarted = [\n                capabilityProfileAnswered > 0,\n                contextProfileAnswered > 0,\n                interestProfileAnswered > 0,\n                naturalApproachProfileAnswered > 0\n            ].filter(Boolean).length;\n\n            const profileAnsweredTotal =\n                capabilityProfileAnswered +\n                contextProfileAnswered +\n                interestProfileAnswered +\n                naturalApproachProfileAnswered;\n\n            if (\n                profileAnsweredTotal > 0 &&\n                lastGlobalUpdate === \"Not started yet\"\n            ) {\n                lastGlobalUpdate = \"In Progress\";\n            }\n\n            let html = `\n        ${window.pivotBuildNoticeTickerHtml()}\n\n        <div class=\"pivot-grid-2 pivot-dashboard-summary-grid\">\n            <!-- STATS CARD -->\n            <div class=\"pivot-premium-card pivot-dashboard-summary-card\" style=\"background: linear-gradient(135deg, #002FA7 0%, #001B63 100%); border:none; box-shadow: 0 25px 45px -10px rgba(0, 47, 167, 0.4); display: flex; flex-direction: column; height: 100%; margin-bottom: 0; box-sizing: border-box;\">\n                <div class=\"pivot-development-snapshot-v35\">\n                    <div class=\"pivot-dev35-header\">\n                        <div>\n                            <div class=\"pivot-dev35-eyebrow\">Your development<\/div>\n                            <div class=\"pivot-dev35-title\">\n                                My Development Snapshot\n                                <span\n                                    class=\"info-icon\"\n                                    onclick=\"event.stopPropagation(); window.pivotShowInfoModal('Development Snapshot', 'development_snapshot')\"\n                                    title=\"Learn more\"\n                                    aria-label=\"Learn more\"\n                                >?<\/span>\n                            <\/div>\n                        <\/div>\n\n                        <div class=\"pivot-dev35-header-note\">\n                            A clear picture of where you are now\n                        <\/div>\n                    <\/div>\n\n                    <div class=\"pivot-dev35-main\">\n                        <div class=\"pivot-dev35-assessed\">\n                            <div class=\"pivot-dev35-count-row\">\n                                <div class=\"pivot-dev35-count\">${capabilityProfileAnswered}<\/div>\n                                <div class=\"pivot-dev35-count-copy\">\n                                    <strong>Capability areas assessed<\/strong>\n                                    <span>A count of the areas you have assessed \u2014 not a score or grade.<\/span>\n                                <\/div>\n                            <\/div>\n\n                            <div class=\"pivot-dev35-includes\">\n                                Essential Skills <i><\/i> Abilities <i><\/i> Knowledge <i><\/i> Transferable Skills <i><\/i> Work Activities\n                            <\/div>\n                        <\/div>\n\n                        <div class=\"pivot-dev35-profile\">\n                            <div class=\"pivot-dev35-section-heading\">\n                                <span>Current profile<\/span>\n                                <small>Your current self-assessment on the 0\u20137 capability scale<\/small>\n                            <\/div>\n\n                            <div class=\"pivot-dev35-profile-grid\">\n                                <button type=\"button\" class=\"pivot-dev35-profile-card pivot-dev35-clickable\" onclick=\"window.pivotOpenCapabilityBand('developing')\" aria-label=\"Review Developing capability areas\">\n                                    <div class=\"pivot-dev35-profile-top\">\n                                        <strong>${capabilityDevelopingCount}<\/strong>\n                                        <span>0\u20132<\/span>\n                                    <\/div>\n                                    <div class=\"pivot-dev35-profile-name\">Developing<\/div>\n                                    <div class=\"pivot-dev35-card-link\">Review areas \u2192<\/div>\n                                <\/button>\n\n                                <button type=\"button\" class=\"pivot-dev35-profile-card pivot-dev35-clickable\" onclick=\"window.pivotOpenCapabilityBand('established')\" aria-label=\"Review Established capability areas\">\n                                    <div class=\"pivot-dev35-profile-top\">\n                                        <strong>${capabilityEstablishedCount}<\/strong>\n                                        <span>3\u20134<\/span>\n                                    <\/div>\n                                    <div class=\"pivot-dev35-profile-name\">Established<\/div>\n                                    <div class=\"pivot-dev35-card-link\">Review areas \u2192<\/div>\n                                <\/button>\n\n                                <button type=\"button\" class=\"pivot-dev35-profile-card pivot-dev35-profile-card-strong pivot-dev35-clickable\" onclick=\"window.pivotOpenCapabilityBand('higher')\" aria-label=\"Review Higher level capability areas\">\n                                    <div class=\"pivot-dev35-profile-top\">\n                                        <strong>${capabilityHigherLevelCount}<\/strong>\n                                        <span>5\u20137<\/span>\n                                    <\/div>\n                                    <div class=\"pivot-dev35-profile-name\">Higher level<\/div>\n                                    <div class=\"pivot-dev35-card-link\">Review areas \u2192<\/div>\n                                <\/button>\n                            <\/div>\n                        <\/div>\n                    <\/div>\n\n                    <div class=\"pivot-dev35-footer\">\n                        <div class=\"pivot-dev35-section-heading pivot-dev35-footer-heading\">\n                            <span>Development activity<\/span>\n                        <\/div>\n\n                        <div class=\"pivot-dev35-activity-grid\">\n                            <button type=\"button\" class=\"pivot-dev35-activity-item pivot-dev35-clickable\" onclick=\"window.pivotOpenActionManager('planned')\" aria-label=\"Open planned development actions\">\n                                <div class=\"pivot-dev35-activity-icon\">\uff0b<\/div>\n                                <div>\n                                    <span>Planned actions<\/span>\n                                    <strong>${plannedCount}<\/strong>\n                                    <small class=\"pivot-dev35-activity-link\">Open actions \u2192<\/small>\n                                <\/div>\n                            <\/button>\n\n                            <button type=\"button\" class=\"pivot-dev35-activity-item pivot-dev35-clickable\" onclick=\"window.pivotOpenActionManager('completed')\" aria-label=\"Open completed development actions\">\n                                <div class=\"pivot-dev35-activity-icon\">\u2713<\/div>\n                                <div>\n                                    <span>Completed actions<\/span>\n                                    <strong>${completedCount}<\/strong>\n                                    <small class=\"pivot-dev35-activity-link\">Open actions \u2192<\/small>\n                                <\/div>\n                            <\/button>\n\n                            <div class=\"pivot-dev35-activity-item\">\n                                <div class=\"pivot-dev35-activity-icon\">\u21bb<\/div>\n                                <div>\n                                    <span>Last updated<\/span>\n                                    <strong>${lastGlobalUpdate}<\/strong>\n                                <\/div>\n                            <\/div>\n                        <\/div>\n\n                        <div class=\"pivot-dev35-growth\">\n                            <span class=\"pivot-dev35-growth-dot\"><\/span>\n                            Growth over time will appear when a later check-in lets PIVOT compare the same capability areas on the same scale.\n                        <\/div>\n                    <\/div>\n                <\/div>\n            <\/div>\n            <!-- MY PIVOT MILESTONES (ULTRA-COMPACT UI) -->\n            <div class=\"pivot-premium-card pivot-dashboard-milestone-card\" style=\"display:flex; flex-direction:column; justify-content:flex-start; height: 100%; margin-bottom: 0; background: #ffffff; padding: 5px 20px; min-width: 0; box-sizing: border-box;\">\n                \n                <div style=\"display:flex; justify-content:space-between; align-items:center; border-bottom: 2px solid #f1f5f9; padding-bottom: 5px; margin-bottom: 5px; flex-wrap: nowrap;\">\n                    <h3 style=\"color: #0f172a; margin:0; font-size:1.15rem; font-weight:800; white-space: nowrap; display:flex; align-items:center;\">\ud83c\udfc6 My PIVOT Milestones <span class=\"info-icon\" onclick=\"event.stopPropagation(); window.pivotShowInfoModal('My Milestones', 'milestones')\" title=\"Learn more\" aria-label=\"Learn more\">?<\/span><\/h3>\n                    <div class=\"pivot-pill-nav\" style=\"border:none; margin:0; padding:0; gap:5px; display:flex; flex-direction:row; flex-wrap: nowrap;\">\n                        <div class=\"pivot-pill-tab active\" style=\"padding: 4px 10px; font-size: 0.75rem; cursor:pointer; white-space: nowrap;\" onclick=\"document.getElementById('pivot-earned-view').style.display='block'; document.getElementById('pivot-all-view').style.display='none'; document.getElementById('pivot-current-status-banner').style.display='block'; this.classList.add('active'); this.nextElementSibling.classList.remove('active');\">Earned<\/div>\n                        <div class=\"pivot-pill-tab\" style=\"padding: 4px 10px; font-size: 0.75rem; cursor:pointer; white-space: nowrap;\" onclick=\"document.getElementById('pivot-earned-view').style.display='none'; document.getElementById('pivot-all-view').style.display='block'; document.getElementById('pivot-current-status-banner').style.display='none'; this.classList.add('active'); this.previousElementSibling.classList.remove('active');\">All<\/div>\n                    <\/div>\n                <\/div>\n                \n                ${(()=>{\n                    \/*\n                     * PIVOT v2.16.64 \u2014 SERVER-AUTHORITATIVE MILESTONES\n                     *\n                     * The Dashboard no longer creates or increments visit counts\n                     * in localStorage. All visit totals, milestone status and\n                     * milestone rewards come from the secure server-side\n                     * PIVOT Daily Visit + Milestone Engine.\n                     *\/\n                    const serverData =\n                        window.PIVOT_MILESTONE_DATA &&\n                        typeof window.PIVOT_MILESTONE_DATA === 'object'\n                            ? window.PIVOT_MILESTONE_DATA\n                            : {};\n\n                    const currentVisits = Math.max(\n                        0,\n                        parseInt(serverData.total_visits, 10) || 0\n                    );\n\n                    const currentRank =\n                        serverData.current_rank &&\n                        typeof serverData.current_rank === 'object'\n                            ? serverData.current_rank\n                            : { title: 'Getting Started', visits: 0 };\n\n                    const nextMilestone =\n                        serverData.next_milestone &&\n                        typeof serverData.next_milestone === 'object'\n                            ? serverData.next_milestone\n                            : null;\n\n                    \/*\n                     * These three keys belonged to the retired browser-side\n                     * milestone engine. They are display-only legacy data and\n                     * must never become authoritative again.\n                     *\/\n                    try {\n                        localStorage.removeItem('pivot_milestone_visits');\n                        localStorage.removeItem('pivot_last_visit_date');\n                        localStorage.removeItem('pivot_badge_dates');\n                    } catch (error) {}\n\n                    const badgeImages = {\n                        10: 'https:\/\/dumondeducation.com\/wp-content\/uploads\/2026\/07\/ChatGPT-Image-Jul-6-2026-10_37_18-PM.webp',\n                        50: 'https:\/\/dumondeducation.com\/wp-content\/uploads\/2026\/07\/ChatGPT-Image-Jul-6-2026-10_43_22-PM.webp',\n                        100: 'https:\/\/dumondeducation.com\/wp-content\/uploads\/2026\/07\/ChatGPT-Image-Jul-6-2026-10_47_36-PM.webp',\n                        365: 'https:\/\/dumondeducation.com\/wp-content\/uploads\/2026\/07\/ChatGPT-Image-Jul-6-2026-10_51_53-PM.webp'\n                    };\n\n                    const rankVisits = Math.max(\n                        0,\n                        parseInt(currentRank.visits, 10) || 0\n                    );\n\n                    const achievedBadge =\n                        rankVisits >= 10 && badgeImages[rankVisits]\n                            ? {\n                                title: String(currentRank.title || 'PIVOT Milestone'),\n                                img: badgeImages[rankVisits]\n                            }\n                            : null;\n\n                    if (!nextMilestone && currentVisits >= 365) {\n                        const masterImage = badgeImages[365];\n\n                        return `\n                        <div id=\"pivot-current-status-banner\">\n                            <div style=\"background:#fef3c7; color:#d97706; padding:6px; border-radius:10px; font-size:0.9rem; font-weight:700; text-align:center; margin-bottom:8px; width:100%; box-sizing:border-box;\">\n                                \ud83c\udfc6 All visit milestones reached!\n                            <\/div>\n\n                            <div class=\"pivot-milestone-rank-card is-master\" style=\"display:flex; flex-direction:row; align-items:center; padding:0 15px; background:#ffffff; border:2px solid #fde68a; border-radius:12px; margin-bottom:8px; box-shadow:0 4px 10px rgba(0,0,0,0.05);\">\n                                <img decoding=\"async\" loading=\"lazy\" class=\"pivot-milestone-rank-image\" src=\"${masterImage}\" style=\"width:200px; height:200px; object-fit:contain; margin-right:20px;\" alt=\"PIVOT Master milestone\">\n                                <div style=\"flex:1; text-align:left;\">\n                                    <p style=\"margin:0 0 4px 0; font-size:0.75rem; color:#64748b; text-transform:uppercase; font-weight:800; letter-spacing:1px;\">Highest milestone<\/p>\n                                    <h4 style=\"margin:0 0 2px 0; color:#002FA7; font-size:1.4rem; font-weight:900;\">PIVOT Master<\/h4>\n                                    <span style=\"font-size:0.9rem; color:#475569; font-weight:600;\">PIVOT visits: ${currentVisits}<\/span>\n                                <\/div>\n                            <\/div>\n                        <\/div>`;\n                    }\n\n                    let achievedHtml = '';\n\n                    if (achievedBadge) {\n                        achievedHtml = `\n                        <div class=\"pivot-milestone-rank-card\" style=\"display:flex; flex-direction:row; align-items:center; padding:0 15px; background:#ffffff; border:2px solid #e2e8f0; border-radius:12px; margin-bottom:8px; box-shadow:0 4px 10px rgba(0,0,0,0.02);\">\n                            <img decoding=\"async\" loading=\"lazy\" class=\"pivot-milestone-rank-image\" src=\"${achievedBadge.img}\" style=\"width:200px; height:200px; object-fit:contain; margin-right:20px;\" alt=\"${achievedBadge.title}\">\n                            <div style=\"flex:1; text-align:left;\">\n                                <p style=\"margin:0 0 4px 0; font-size:0.75rem; color:#64748b; text-transform:uppercase; font-weight:800; letter-spacing:1px;\">Current milestone<\/p>\n                                <h4 style=\"margin:0 0 2px 0; color:#002FA7; font-size:1.3rem; font-weight:900;\">${achievedBadge.title}<\/h4>\n                                <span style=\"font-size:0.85rem; color:#475569; font-weight:600;\">PIVOT visits: ${currentVisits}<\/span>\n                            <\/div>\n                        <\/div>`;\n                    } else {\n                        achievedHtml = `\n                        <div class=\"pivot-milestone-rank-card is-starter\" style=\"display:flex; flex-direction:row; align-items:center; padding:10px 15px; background:#ffffff; border:2px dashed #e2e8f0; border-radius:12px; margin-bottom:8px;\">\n                            <img decoding=\"async\" loading=\"lazy\" class=\"pivot-milestone-rank-image\" src=\"https:\/\/dumondeducation.com\/wp-content\/uploads\/2026\/07\/ChatGPT-Image-Jul-8-2026-03_15_53-PM.png\" style=\"width:85px; height:85px; object-fit:contain; margin-right:20px; border-radius:12px; background:#f8fafc; border:1px solid #e2e8f0; padding:4px;\" alt=\"Getting Started\">\n                            <div style=\"flex:1; text-align:left;\">\n                                <p style=\"margin:0 0 4px 0; font-size:0.75rem; color:#64748b; text-transform:uppercase; font-weight:800; letter-spacing:1px;\">Current milestone<\/p>\n                                <h4 style=\"margin:0 0 2px 0; color:#64748b; font-size:1.2rem; font-weight:800;\">Getting Started<\/h4>\n                                <span style=\"font-size:0.85rem; color:#475569; font-weight:600;\">PIVOT visits: ${currentVisits}<\/span>\n                            <\/div>\n                        <\/div>`;\n                    }\n\n                    if (!nextMilestone) {\n                        return `\n                        <div id=\"pivot-current-status-banner\">\n                            ${achievedHtml}\n                        <\/div>`;\n                    }\n\n                    const remaining = Math.max(\n                        0,\n                        parseInt(nextMilestone.remaining, 10) || 0\n                    );\n\n                    const nextTitle = String(\n                        nextMilestone.title || 'next milestone'\n                    );\n\n                    const nextReward = Math.max(\n                        0,\n                        parseInt(nextMilestone.reward, 10) || 0\n                    ).toLocaleString('en-GB');\n\n                    return `\n                    <div id=\"pivot-current-status-banner\">\n                        ${achievedHtml}\n\n                        <div class=\"pivot-milestone-next-row\" style=\"width:100%; box-sizing:border-box; background:#f8fafc; border:1px solid #e2e8f0; border-radius:10px; padding:6px 12px; margin-bottom:5px; display:flex; align-items:center; justify-content:space-between; gap:12px;\">\n                            <div style=\"flex:1; text-align:left; line-height:1.3;\">\n                                <span style=\"color:#475569; font-size:0.85rem;\">\n                                    You need\n                                    <strong style=\"color:#0f172a; font-size:0.95rem;\">${remaining}<\/strong>\n                                    more visits to reach\n                                    <strong style=\"color:#002FA7;\">${nextTitle}<\/strong>.\n                                <\/span>\n                            <\/div>\n\n                            <div style=\"display:flex; align-items:center; gap:4px; background:#fffbf1; padding:4px 8px; border-radius:20px; border:1px solid #fde68a;\">\n                                <span style=\"font-weight:900; color:#d97706; font-size:0.9rem;\">+${nextReward}<\/span>\n                                <img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/dumondeducation.com\/wp-content\/uploads\/2026\/06\/PIVOT-Credit-2-e1782786217417.webp\" style=\"width:16px; height:16px; object-fit:contain;\" alt=\"\">\n                            <\/div>\n                        <\/div>\n                    <\/div>`;\n                })()}\n                \n                <div id=\"pivot-earned-view\" class=\"pivot-milestone-earned-strip\" style=\"display:block; text-align:center; padding-right: 5px; flex: 1; overflow-y: auto;\">\n                    ${(document.getElementById('earned-badges-data') && document.getElementById('earned-badges-data').innerHTML.trim().length > 10 && !document.getElementById('earned-badges-data').innerHTML.includes('[mycred')) ? document.getElementById('earned-badges-data').innerHTML : '<p style=\"color:#94a3b8; font-size: 0.85rem; font-style:italic; padding: 10px;\">Keep returning to PIVOT to reach your first visit milestone.<\/p>'}\n                <\/div>\n                \n                ${(()=>{\n                    const serverData =\n                        window.PIVOT_MILESTONE_DATA &&\n                        typeof window.PIVOT_MILESTONE_DATA === 'object'\n                            ? window.PIVOT_MILESTONE_DATA\n                            : {};\n\n                    const serverMilestones =\n                        Array.isArray(serverData.milestones)\n                            ? serverData.milestones\n                            : [];\n\n                    const tiers = [\n                        { visits: 10, title: 'PIVOT Starter', reward: 150, img: 'https:\/\/dumondeducation.com\/wp-content\/uploads\/2026\/07\/ChatGPT-Image-Jul-6-2026-10_37_18-PM.webp' },\n                        { visits: 50, title: 'PIVOT Explorer', reward: 500, img: 'https:\/\/dumondeducation.com\/wp-content\/uploads\/2026\/07\/ChatGPT-Image-Jul-6-2026-10_43_22-PM.webp' },\n                        { visits: 100, title: 'PIVOT Achiever', reward: 1250, img: 'https:\/\/dumondeducation.com\/wp-content\/uploads\/2026\/07\/ChatGPT-Image-Jul-6-2026-10_47_36-PM.webp' },\n                        { visits: 365, title: 'PIVOT Master', reward: 5000, img: 'https:\/\/dumondeducation.com\/wp-content\/uploads\/2026\/07\/ChatGPT-Image-Jul-6-2026-10_51_53-PM.webp' }\n                    ];\n\n                    function formatMilestoneDate(value) {\n                        const raw = String(value || '').trim();\n\n                        if (!raw) {\n                            return '';\n                        }\n\n                        \/*\n                         * Use midday when converting a date-only value so local\n                         * timezone rendering cannot accidentally shift it to the\n                         * previous calendar day.\n                         *\/\n                        const parsed = new Date(raw + 'T12:00:00');\n\n                        if (Number.isNaN(parsed.getTime())) {\n                            return raw;\n                        }\n\n                        return parsed.toLocaleDateString(\n                            undefined,\n                            {\n                                month: 'short',\n                                day: 'numeric',\n                                year: 'numeric'\n                            }\n                        );\n                    }\n\n                    let roadmapHtml = `\n                    <div id=\"pivot-all-view\" style=\"display:none; width:100%;\">\n                        <div style=\"display:flex; flex-wrap:nowrap; overflow-x:auto; gap:12px; padding-bottom:8px; width:100%; box-sizing:border-box;\">`;\n\n                    tiers.forEach(tier => {\n                        const serverMilestone =\n                            serverMilestones.find(item => {\n                                return (\n                                    item &&\n                                    parseInt(item.visits, 10) === tier.visits\n                                );\n                            }) || {};\n\n                        const isAchieved =\n                            serverMilestone.achieved === true;\n\n                        const rewardAwarded =\n                            serverMilestone.reward_awarded === true;\n\n                        const achievedDate =\n                            formatMilestoneDate(\n                                serverMilestone.achieved_date\n                            );\n\n                        const imgStyle = isAchieved\n                            ? 'width:75px; height:75px; object-fit:contain; border-radius:10px; background:#f0fdf4; padding:4px; border:2px solid #bbf7d0;'\n                            : 'width:75px; height:75px; object-fit:contain; border-radius:10px; background:#f8fafc; padding:4px; border:1px solid #f1f5f9;';\n\n                        const overlayHtml = isAchieved\n                            ? '<div style=\"position:absolute; top:-6px; right:-6px; background:#16a34a; color:#fff; border-radius:50%; width:24px; height:24px; display:flex; align-items:center; justify-content:center; font-size:14px; font-weight:900; box-shadow:0 2px 5px rgba(0,0,0,0.2); border:2px solid #fff; z-index:10;\">\u2713<\/div>'\n                            : '';\n\n                        const textHtml = isAchieved\n                            ? `<p style=\"margin:2px 0 8px 0; color:#16a34a; font-size:0.75rem; font-weight:700; line-height:1.2;\">\u2705 ${achievedDate || 'Achieved'}<\/p>`\n                            : `<p style=\"margin:2px 0 8px 0; color:#64748b; font-size:0.8rem; line-height:1.2;\">${tier.visits} visits<\/p>`;\n\n                        let rewardHtml = '';\n\n                        if (isAchieved && rewardAwarded) {\n                            rewardHtml = `\n                            <div style=\"display:flex; align-items:center; justify-content:center; background:#f1f5f9; padding:6px; border-radius:20px; border:1px solid #e2e8f0; width:100%; box-sizing:border-box;\">\n                                <span style=\"font-weight:800; color:#64748b; font-size:0.9rem;\">Claimed<\/span>\n                            <\/div>`;\n                        } else if (isAchieved) {\n                            rewardHtml = `\n                            <div style=\"display:flex; align-items:center; justify-content:center; background:#fff7ed; padding:6px; border-radius:20px; border:1px solid #fed7aa; width:100%; box-sizing:border-box;\">\n                                <span style=\"font-weight:800; color:#9a3412; font-size:0.82rem;\">Reward pending<\/span>\n                            <\/div>`;\n                        } else {\n                            rewardHtml = `\n                            <div style=\"display:flex; align-items:center; justify-content:center; gap:6px; background:#fffbf1; padding:6px; border-radius:20px; border:1px solid #fde68a; width:100%; box-sizing:border-box;\">\n                                <span style=\"font-weight:900; color:#d97706; font-size:1rem;\">+${tier.reward.toLocaleString('en-GB')}<\/span>\n                                <img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/dumondeducation.com\/wp-content\/uploads\/2026\/06\/PIVOT-Credit-2-e1782786217417.webp\" style=\"width:24px; height:24px; object-fit:contain;\" alt=\"\">\n                            <\/div>`;\n                        }\n\n                        roadmapHtml += `\n                        <div style=\"flex:0 0 180px; display:flex; flex-direction:column; align-items:center; text-align:center; background:#ffffff; padding:12px; border-radius:12px; border:1px solid ${isAchieved ? '#bbf7d0' : '#e2e8f0'}; box-shadow:0 2px 4px rgba(0,0,0,0.02);\">\n                            <div style=\"position:relative; display:inline-block; margin-bottom:8px;\">\n                                <img decoding=\"async\" loading=\"lazy\" src=\"${tier.img}\" style=\"${imgStyle}\" alt=\"${tier.title}\">\n                                ${overlayHtml}\n                            <\/div>\n\n                            <h4 style=\"margin:0; color:#0f172a; font-size:1rem; font-weight:800; line-height:1.2;\">${tier.title}<\/h4>\n                            ${textHtml}\n                            ${rewardHtml}\n                        <\/div>`;\n                    });\n\n                    roadmapHtml += '<\/div><\/div>';\n\n                    return roadmapHtml;\n                })()}\n            <\/div>\n        <\/div>\n\n        <!-- NEW OPTION C - CLOUD SUMMARIES -->\n        <div class=\"pivot-grid-3\">\n            <div class=\"pivot-premium-card pivot-square-card pivot-card-accent-orange pivot-free-wordcloud-card\" style=\"min-height: 220px; padding: 20px;\">\n                <div class=\"pivot-cloud-card-heading\">\n                    <h3 style=\"color:#0f172a; margin:0; font-size:1.3rem; font-weight:800; text-align:center;\">\u2601\ufe0f What I Value Most<\/h3>\n                    <span class=\"pivot-free-access-pill\">Free<\/span>\n                <\/div>\n                <div style=\"flex:1; display:flex; align-items:center; justify-content:center; width:100%;\">\n                    ${window.buildWordcloudHtml('Work Preferences', null, false)}\n                <\/div>\n            <\/div>\n            <div class=\"pivot-premium-card pivot-square-card pivot-premium-wordcloud-card\" style=\"min-height: 220px; padding: 20px;\">\n                ${(!window.pivotHasAuthoritativePremiumAccess()) ? `\n                    <div class=\"pivot-premium-wordcloud-teaser\" data-pivot-premium-link=\"${window.PIVOT_PREMIUM_URL}\">\n                        <span class=\"pivot-premium-pill\">Premium<\/span>\n                        <div class=\"pivot-premium-lock-visual\" aria-hidden=\"true\">\n                            <svg viewBox=\"0 0 64 64\" role=\"img\">\n                                <rect x=\"14\" y=\"28\" width=\"36\" height=\"28\" rx=\"8\"><\/rect>\n                                <path d=\"M22 28v-8c0-7 4.5-12 10-12s10 5 10 12v8\"><\/path>\n                                <circle cx=\"32\" cy=\"41\" r=\"3.5\"><\/circle>\n                                <path d=\"M32 44.5v5\"><\/path>\n                            <\/svg>\n                        <\/div>\n                        <h3>My Context &amp; Environment<\/h3>\n                        <p>Explore the working conditions and situations you would prefer or feel comfortable with.<\/p>\n                        <button type=\"button\" class=\"pivot-premium-direct-btn\" onclick=\"event.preventDefault(); event.stopPropagation(); window.location.assign(window.PIVOT_PREMIUM_URL)\">See Premium benefits<\/button>\n                    <\/div>\n                ` : `\n                    <div class=\"pivot-premium-unlocked-heading\">\n                        <h3>\u2601\ufe0f My Context &amp; Environment<\/h3>\n                    <\/div>\n                    <div style=\"flex:1; display:flex; align-items:center; justify-content:center; width:100%;\">\n                        ${window.pivotBuildContextPreferenceSummaryHtml(true)}\n                    <\/div>\n                `}\n            <\/div>\n            <div class=\"pivot-premium-card pivot-square-card pivot-premium-wordcloud-card\" style=\"min-height: 220px; padding: 20px;\">\n                ${(!window.pivotHasAuthoritativePremiumAccess()) ? `\n                    <div class=\"pivot-premium-wordcloud-teaser\" data-pivot-premium-link=\"${window.PIVOT_PREMIUM_URL}\">\n                        <span class=\"pivot-premium-pill\">Premium<\/span>\n                        <div class=\"pivot-premium-lock-visual\" aria-hidden=\"true\">\n                            <svg viewBox=\"0 0 64 64\" role=\"img\">\n                                <rect x=\"14\" y=\"28\" width=\"36\" height=\"28\" rx=\"8\"><\/rect>\n                                <path d=\"M22 28v-8c0-7 4.5-12 10-12s10 5 10 12v8\"><\/path>\n                                <circle cx=\"32\" cy=\"41\" r=\"3.5\"><\/circle>\n                                <path d=\"M32 44.5v5\"><\/path>\n                            <\/svg>\n                        <\/div>\n                        <h3>My Natural Approach<\/h3>\n                        <p>Explore patterns in how you usually approach work, responsibilities, people and change.<\/p>\n                        <button type=\"button\" class=\"pivot-premium-direct-btn\" onclick=\"event.preventDefault(); event.stopPropagation(); window.location.assign(window.PIVOT_PREMIUM_URL)\">See Premium benefits<\/button>\n                    <\/div>\n                ` : `\n                    <div class=\"pivot-premium-unlocked-heading\">\n                        <h3>\u2601\ufe0f My Natural Approach<\/h3>\n                    <\/div>\n                    <div style=\"flex:1; display:flex; align-items:center; justify-content:center; width:100%;\">\n                        ${window.buildWordcloudHtml('Work Requirement and Style', null, false)}\n                    <\/div>\n                `}\n            <\/div>\n        <\/div>\n\n        <div style=\"display:flex; justify-content:space-between; align-items:center; margin-top:20px; margin-bottom:20px;\" class=\"pivot-header-action-row pivot-assessment-section-head\">\n            <h3 style=\"color:#0f172a; margin:0; font-size: 2rem; font-weight: 900;\">PIVOT Self-Assessments<\/h3>\n            \n        <\/div>\n        <div class=\"pivot-grid-4 pivot-assessment-grid\">`;\n\n            if (master && typeof master === 'object') {\n                \/*\n                 * V2.10 DISPLAY ORDER\n                 * The assessment-card renderer itself must use this order.\n                 * Free assessments always occupy the first desktop row:\n                 * What I Value Most \u2192 21st Century Skills \u2192\n                 * Employability Skills \u2192 Basic Skills Assessment.\n                 *\n                 * Every remaining Premium assessment follows afterwards\n                 * in its original master-store order.\n                 *\/\n                const assessmentRenderKeys = Object.keys(master);\n\n                \/*\n                 * V2.11 NORMALISED ORDER\n                 * Some imported assessment keys contain hidden\/trailing spaces,\n                 * so comparing raw object keys was not reliable. Sort using a\n                 * trimmed, lower-case display key instead.\n                 *\/\n                const freeAssessmentOrder = [\n                    'work preferences',\n                    '21st century skills',\n                    'employability skills',\n                    'basic skills assessment'\n                ];\n\n                const freeAssessmentRank = name => {\n                    const cleanName = String(name || '').trim().toLowerCase();\n                    const rank = freeAssessmentOrder.indexOf(cleanName);\n                    return rank === -1 ? 999 : rank;\n                };\n\n                const assessmentRenderOrder = assessmentRenderKeys\n                    .map((rawKey, sourceIndex) => ({\n                        rawKey,\n                        sourceIndex,\n                        rank: freeAssessmentRank(rawKey)\n                    }))\n                    .sort((a, b) => {\n                        const aFree = a.rank !== 999;\n                        const bFree = b.rank !== 999;\n\n                        if (aFree && bFree) return a.rank - b.rank;\n                        if (aFree) return -1;\n                        if (bFree) return 1;\n\n                        \/* Preserve the original order of Premium assessments. *\/\n                        return a.sourceIndex - b.sourceIndex;\n                    })\n                    .map(item => item.rawKey);\n\n                for (const p of assessmentRenderOrder) {\n                    if (!master[p] || typeof master[p] !== 'object') continue;\n                    let cleanP = String(p).trim();\n                    let pLower = cleanP.toLowerCase();\n                    \n                    let totalQuestionsInPillar = 0; let totalAnsweredInPillar = 0; let totalPillarScore = 0; let pillarLastUpdate = \"Never started\";\n                    \n                    for (let m in master[p]) {\n                        let questions = master[p][m];\n                        if (!questions || typeof questions !== 'object') continue;\n                        if (!Array.isArray(questions)) questions = Object.values(questions);\n                        totalQuestionsInPillar += questions.length;\n                        \n                        if (scores[p] && scores[p][m]) {\n                            let mScores = scores[p][m];\n                            if (mScores['_date']) pillarLastUpdate = mScores['_date'];\n                            questions.forEach(function(question) {\n                                if (!question || !question.id) return;\n                                const value = mScores[question.id];\n                                if (window.pivotIsAnsweredAssessmentResponse(cleanP, m, value)) {\n                                    totalAnsweredInPillar++;\n                                    const sVal = Number(value);\n                                    if (Number.isFinite(sVal)) totalPillarScore += sVal;\n                                }\n                            });\n                        }\n                    }\n                    \n                    if (totalAnsweredInPillar > 0 && pillarLastUpdate === \"Never started\") { pillarLastUpdate = \"In Progress\"; }\n                    \n                    let pillarPercentComplete = totalQuestionsInPillar > 0 ? Math.round((totalAnsweredInPillar \/ totalQuestionsInPillar) * 100) : 0;\n                    let avgScore = totalAnsweredInPillar > 0 ? (totalPillarScore \/ totalAnsweredInPillar).toFixed(1) : \"0.0\";\n                    \n                    let isCloudPillar = pLower.includes('preference') || pLower.includes('context') || pLower.includes('style');\n                    let tier = window.pivotGetUserTier();\n                    const cleanPKey = cleanP.toLowerCase();\n                    const freeAssessmentKeys = FREE_ACCESS_MODULES.map(name => String(name).trim().toLowerCase());\n                    let isLocked = !window.pivotHasAuthoritativePremiumAccess() && !freeAssessmentKeys.includes(cleanPKey);\n\n                    let onClickAction = isLocked ? `window.pivotGoPremium()` : `window.pivotSelectPillar('${encodeURIComponent(cleanP)}')`;\n\n                    \/\/ --- OPTION C MAPPING ---\n                    let displayTitle = cleanP;\n                    if (cleanP === 'Work Preferences') displayTitle = 'What I Value Most';\n                    if (cleanP === 'Work Context') displayTitle = 'My Context & Environment';\n                    if (cleanP === 'Work Requirement and Style') displayTitle = 'My Natural Approach';\n                    if (cleanP === 'Basic Skills Assessment') displayTitle = 'Essential Skills';\n                    if (cleanP === 'Knowledge, Skills and Abilities') displayTitle = 'Abilities';\n                    if (cleanP === 'Knowledge Skills and Abilities') displayTitle = 'Abilities';\n                    if (cleanP === 'Cross-Functional Skills Assessment') displayTitle = 'Transferable Skills';\n                    if (cleanP === 'Generalized Work Activities') displayTitle = 'Work Activities';\n                    if (cleanP === 'Knowledge Assessment') displayTitle = 'Knowledge';\n\n                    const assessmentDescriptions = {\n                        'Work Preferences': 'Explore the values and conditions that matter most to you in work and development.',\n                        'Work Context': 'Explore the working conditions and situations you would prefer or feel comfortable with.',\n                        'Work Requirement and Style': 'Explore patterns in how you usually approach work, people, decisions, change and pressure.',\n                        'Basic Skills Assessment': 'Explore 10 essential skills that support learning, communication, understanding information and everyday work.',\n                        'Knowledge, Skills and Abilities': 'Explore 52 abilities and estimate what you can currently do using official O*NET reference examples.',\n                        'Knowledge Skills and Abilities': 'Explore knowledge, practical skills and abilities that can support you across different kinds of work.',\n                        'Generalized Work Activities': 'Explore 41 common work activities and estimate the level you can currently carry out using official O*NET reference examples.',\n                        'Knowledge Assessment': 'Explore 33 knowledge areas and estimate the level of work you can currently handle using official O*NET reference examples.',\n                        'Cross-Functional Skills Assessment': 'Explore 25 transferable skills and estimate the level at which you can currently use them using official O*NET reference examples.'\n                    };\n                    const assessmentDescription = assessmentDescriptions[cleanP] || `Explore your current profile in ${displayTitle} through a structured PIVOT self-assessment.`;\n\n                    html += `\n                        <div class=\"pivot-premium-card pivot-module-row pivot-square-card pivot-card-accent-blue pivot-assessment-card ${isLocked ? 'locked-card pivot-assessment-premium' : ''}\" data-assessment-key=\"${cleanPKey}\" data-assessment-access=\"${isLocked ? 'premium' : 'free'}\" ${isLocked ? 'data-pivot-premium-link=\"' + window.PIVOT_PREMIUM_URL + '\"' : ''} onclick=\"${onClickAction}\" style=\"position:relative;\">\n                            ${isLocked ? `\n                                <div class=\"pivot-assessment-premium-top\">\n                                    <span class=\"pivot-premium-pill\">Premium<\/span>\n                                    <span class=\"pivot-assessment-question-count\">${totalQuestionsInPillar} questions<\/span>\n                                <\/div>\n                                <div class=\"pivot-assessment-lock-row\">\n                                    <div class=\"pivot-premium-lock-visual pivot-premium-lock-small\" aria-hidden=\"true\">\n                                        <svg viewBox=\"0 0 64 64\" role=\"img\">\n                                            <rect x=\"14\" y=\"28\" width=\"36\" height=\"28\" rx=\"8\"><\/rect>\n                                            <path d=\"M22 28v-8c0-7 4.5-12 10-12s10 5 10 12v8\"><\/path>\n                                            <circle cx=\"32\" cy=\"41\" r=\"3.5\"><\/circle>\n                                            <path d=\"M32 44.5v5\"><\/path>\n                                        <\/svg>\n                                    <\/div>\n                                    <span>Available with Premium<\/span>\n                                <\/div>\n                                <h3 class=\"pivot-assessment-premium-title\">${displayTitle}<\/h3>\n                                <p class=\"pivot-assessment-premium-desc\">${assessmentDescription}<\/p>\n                                <div class=\"pivot-assessment-premium-footer\">\n                                    <strong>See Premium benefits <span aria-hidden=\"true\">&rarr;<\/span><\/strong>\n                                <\/div>\n                            ` : `\n                                <div style=\"text-align:center;\">\n                                    <h3 style=\"margin:0 0 10px 0; color:#002FA7; font-size: 1.1rem; font-weight:800; line-height: 1.3;\">${displayTitle}<\/h3>\n                                    <span class=\"pivot-badge ${pillarPercentComplete === 100 ? 'complete' : ''}\">${pillarPercentComplete}% answered<\/span>\n                                <\/div>\n                                <div style=\"flex:1; display:flex; flex-direction:column; align-items:center; justify-content:center; padding: 10px 0; overflow: hidden;\">\n                                    ${isCloudPillar ? \n                                        `<div style=\"font-size:4.5rem; line-height:1;\">\u2601\ufe0f<\/div><div style=\"font-size:0.75rem; color:#0f766e; font-weight:800; text-transform:uppercase; margin-top:5px; padding: 4px 10px; background:#ccfbf1; border-radius: 8px; border: 1px solid #99f6e4;\">Profile summary<\/div>` : \n                                        `<div style=\"font-size:4.5rem; font-weight:900; color:#002FA7; line-height:1;\">${avgScore}<\/div><div style=\"font-size:0.75rem; color:#64748b; font-weight:700; text-transform:uppercase; margin-top:5px;\">Average self-rating<\/div>`\n                                    }\n                                <\/div>\n                                <div style=\"text-align:center; font-size:0.8rem; color:#94a3b8; border-top:1px solid #f1f5f9; padding-top:12px; margin-top:auto;\">\n                                    ${totalAnsweredInPillar} of ${totalQuestionsInPillar} answered\n                                <\/div>\n                            `}\n                        <\/div>`;\n                }\n            }\n\n         html += `\n        <\/div> \n        <!-- The div above safely closes the assessment pillars grid -->\n        \n        <!-- UPGRADED CAREER MATCHES SECTION -->\n        <div style=\"width: 100%; display: block; clear: both; margin-top: 40px; margin-bottom: 10px;\">\n            <div class=\"pivot-premium-card pivot-career-explorer-card\" style=\"display:flex; flex-direction:column; justify-content:flex-start; margin-bottom: 20px; background: #ffffff; padding: 30px; border: 2px solid #002FA7;\">\n                <div class=\"pivot-career-explorer-heading\" style=\"display: flex; align-items: center; gap: 12px; margin-bottom: 8px;\">\n                    <span class=\"pivot-career-explorer-icon\" style=\"font-size: 2rem;\">\ud83c\udfaf<\/span>\n                   <h3 style=\"color: #0f172a; margin:0; font-size:1.8rem; font-weight:900;\">Career Explorer <span class=\"info-icon\" onclick=\"event.stopPropagation(); window.pivotShowInfoModal('Career Explorer', 'career_engine')\" title=\"Learn more\" aria-label=\"Learn more\">?<\/span><\/h3>\n                <\/div>\n                <p style=\"color:#64748b; font-size:0.95rem; margin:0 0 20px 0;\">Explore how your current PIVOT profile aligns with different occupations. Career Alignment appears when all four areas have enough relevant answers, and you can still explore occupations while building your profile.<\/p>\n                <input type=\"text\" class=\"pivot-career-search-input\" placeholder=\"Search careers or occupations\u2026\" onkeyup=\"window.pivotHandleCareerSearch(this.value)\" style=\"width:100%; padding:16px 20px; border-radius:14px; border:2px solid #e2e8f0; font-size: 1.05rem; margin-bottom:15px; font-weight: 600; color: #0f172a; transition: all 0.3s;\" onfocus=\"this.style.borderColor='#002FA7'; this.style.boxShadow='0 0 0 4px rgba(0,47,167,0.1)';\" onblur=\"this.style.borderColor='#e2e8f0'; this.style.boxShadow='none';\">\n                <div id=\"pivot_career_results_list\" class=\"pivot-career-results-viewport\" style=\"max-height:350px !important; overflow-x:hidden !important; overflow-y:auto !important; padding-right:10px; -webkit-overflow-scrolling:touch; touch-action:pan-y;\"><\/div>\n            <\/div>\n        <\/div>\n\n       <!-- v2.16.58: The duplicate standalone Journal action block has been removed.\n             Planned and completed actions are managed from the clickable Development Snapshot cards. -->\n\n       <!-- NEW: CERTIFICATES SECTION -->\n        <div style=\"width: 100%; display: block; clear: both; margin-top: 50px;\">\n            <div style=\"display:flex; justify-content:space-between; align-items:center; margin-bottom: 20px; flex-wrap:wrap; gap:15px;\">\n                <h3 style=\"color:#0f172a; margin:0; font-size: 1.8rem; font-weight: 800;\">My Certificates & Awards <span class=\"info-icon\" onclick=\"event.stopPropagation(); window.pivotShowInfoModal('Certificates & Awards', 'certificates')\" title=\"Learn more\" aria-label=\"Learn more\">?<\/span><\/h3>\n                <button type=\"button\" class=\"pivot-btn-outline\" onclick=\"window.pivotOpenCertModal()\">+ Add  Certificate<\/button>\n            <\/div>\n            \n            <h4 style=\"margin: 0 0 15px 0; color: #475569; font-size: 1.1rem; border-bottom: 2px solid #f1f5f9; padding-bottom: 10px;\">Official PIVOT Certificates<\/h4>\n            <div id=\"pivot-auto-certificates-render\" style=\"margin-bottom: 40px;\">\n                ${(document.getElementById('auto-cert-data') && !document.getElementById('auto-cert-data').innerHTML.includes('[pivot_my_certificates]')) ? document.getElementById('auto-cert-data').innerHTML : ''}\n            <\/div>\n\n            <h4 style=\"margin: 0 0 15px 0; color: #475569; font-size: 1.1rem; border-bottom: 2px solid #f1f5f9; padding-bottom: 10px;\">Certificates & Awards from Other Sources<\/h4>\n            <div id=\"pivot-certificates-anchor\"><\/div>\n        <\/div>\n\n        <!-- NEW: REFERENCES SECTION -->\n        <div style=\"width: 100%; display: block; clear: both; margin-top: 50px;\">\n            <div style=\"display:flex; justify-content:space-between; align-items:center; margin-bottom: 20px; flex-wrap:wrap; gap:15px;\">\n                <h3 style=\"color:#0f172a; margin:0; font-size: 1.8rem; font-weight: 800;\">My References <span class=\"info-icon\" onclick=\"event.stopPropagation(); window.pivotShowInfoModal('References', 'references')\" title=\"Learn more\" aria-label=\"Learn more\">?<\/span><\/h3>\n                <button type=\"button\" class=\"pivot-btn-outline\" onclick=\"window.pivotOpenRefModal()\">+ Add Reference<\/button>\n            <\/div>\n            <div id=\"pivot-references-anchor\"><\/div>\n            <!-- NEW: PERSONAL LIBRARY SECTION -->\n        <div style=\"width: 100%; display: block; clear: both; margin-top: 50px;\">\n            <div style=\"display:flex; justify-content:space-between; align-items:center; margin-bottom: 20px; flex-wrap:wrap; gap:15px;\">\n                <h3 style=\"color:#0f172a; margin:0; font-size: 1.8rem; font-weight: 800;\">My Personal Library <span class=\"info-icon\" onclick=\"event.stopPropagation(); window.pivotShowInfoModal('Library', 'access_library')\" title=\"Learn more\" aria-label=\"Learn more\">?<\/span><\/h3>\n            <\/div>\n            <div id=\"pivot-my-library-anchor\">\n                <div style=\"text-align:center; padding: 20px; color: #94a3b8;\">\n                    <div class=\"spinner\" style=\"width:30px; height:30px; border-width:4px; margin: 0 auto 10px auto; border-top-color: #d4af37;\"><\/div>\n                    Loading your resources...\n                <\/div>\n            <\/div>\n        <\/div>\n        <\/div>\n        \n        <!-- GROWTH HUB SECTION (Forced Full Width) -->\n        <div style=\"width: 100%; display: block; clear: both; margin-top: 50px;\">\n            <div style=\"display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:15px; margin-bottom: 8px;\">\n                <h3 style=\"color:#0f172a; margin:0; font-size: 1.8rem; font-weight: 800;\">Explore the Growth Hub <span class=\"info-icon\" onclick=\"event.stopPropagation(); window.pivotShowInfoModal('Growth Hub', 'growth_hub')\" title=\"Learn more\" aria-label=\"Learn more about the Growth Hub\">?<\/span><\/h3>\n            <\/div>\n            <p style=\"color:#64748b; font-size:0.95rem; margin:0 0 14px 0;\">Find courses, guides, articles and tools for the areas you want to develop.<\/p>\n            ${window.pivotGenerateResourceCarouselHtml('General')}\n        <\/div>\n        `;\n        \n        anchor.innerHTML = html;\nwindow.pivotStartNoticeTicker();\nwindow.pivotHandleCareerSearch('');\n            \/\/ --- NEW: UNIFIED HYBRID LIBRARY FETCHER ---\n        let libraryAnchor = document.getElementById('pivot-my-library-anchor');\n        if (libraryAnchor) {\n            let libParams = new URLSearchParams();\n            libParams.append('action', 'pivot_fetch_my_library');\n            \n            fetch(window.pivotAjaxUrl, { method: 'POST', body: libParams, headers: { 'Content-Type': 'application\/x-www-form-urlencoded' } })\n            .then(res => res.json())\n            .then(data => { \n                let libraryItems = [];\n                let addedTitles = new Set();\n\n                \/\/ 1. ADD PREMIUM WOOCOMMERCE ITEMS (From PHP)\n                if (data.success && data.data && data.data.length > 0) {\n                    data.data.forEach(item => {\n                        libraryItems.push(item);\n                        addedTitles.add(item.title);\n                    });\n                }\n\n               \/\/ 2. ADD SERVER-AUTHORITATIVE CREDIT UNLOCKS\n\/\/ Never use browser\/localStorage titles as proof of access.\nconst secureHubConfig =\n    window.PIVOT_GROWTH_HUB_CONFIG &&\n    typeof window.PIVOT_GROWTH_HUB_CONFIG === 'object'\n        ? window.PIVOT_GROWTH_HUB_CONFIG\n        : null;\n\nconst unlockedProductIds =\n    secureHubConfig &&\n    Array.isArray(secureHubConfig.unlockedProductIds)\n        ? secureHubConfig.unlockedProductIds\n            .map(id => Number.parseInt(id, 10))\n            .filter(id => Number.isInteger(id) && id > 0)\n        : [];\n\n\/\/ Match the authoritative product IDs against the live resource catalogue.\nlet allLiveResources = [];\n\nif (Array.isArray(window.pivotPremiumDatabase)) {\n    allLiveResources = allLiveResources.concat(\n        window.pivotPremiumDatabase\n    );\n}\n\nif (Array.isArray(window.pivotLiveResources)) {\n    allLiveResources = allLiveResources.concat(\n        window.pivotLiveResources\n    );\n}\n\nunlockedProductIds.forEach(productId => {\n    const resourceDef = allLiveResources.find(resource =>\n        Number.parseInt(resource && resource.id, 10) === productId\n    );\n\n    if (\n        resourceDef &&\n        resourceDef.title &&\n        !addedTitles.has(resourceDef.title)\n    ) {\n        libraryItems.push({\n            title: resourceDef.title,\n            link: resourceDef.link || '#',\n            img: resourceDef.image || resourceDef.img || ''\n        });\n\n        addedTitles.add(resourceDef.title);\n    }\n});\n\n                \/\/ 4. RENDER THE COMPACT GRID\n                if (libraryItems.length === 0) {\n                    libraryAnchor.innerHTML = `<div style=\"text-align:center; padding: 30px; background: #1a1a1a; border: 1px dashed #475569; border-radius: 12px; color: #94a3b8;\"><div style=\"font-size: 2rem; margin-bottom: 10px;\">\ud83d\udcda<\/div><div style=\"font-size: 1rem; font-weight: 700; color: #fff; margin-bottom: 5px;\">Your PIVOT Library is empty<\/div><div style=\"font-size: 0.85rem;\">Explore the Growth Hub to find your first resource.<\/div><\/div>`;\n                } else {\n                    let gridHtml = `<style>\n                        .pivot-library-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); gap: 15px; margin-top: 15px; font-family: 'Inter', \"Helvetica Neue\", Helvetica, sans-serif; }\n                        .pivot-lib-item { background: #1a1a1a; border: 1px solid rgba(212, 175, 55, 0.3); border-radius: 10px; display: flex; flex-direction: column; transition: transform 0.2s, box-shadow 0.2s; overflow: hidden; }\n                        .pivot-lib-item:hover { transform: translateY(-4px); box-shadow: 0 8px 15px rgba(0,0,0,0.3); border-color: #d4af37; }\n                        .pivot-lib-img-wrap { height: 100px; background-color: #2a2a2a; background-size: cover; background-position: center; border-bottom: 1px solid rgba(255,255,255,0.05); position: relative; }\n                        .pivot-lib-badge { position: absolute; top: 8px; left: 8px; font-size: 0.6rem; text-transform: uppercase; letter-spacing: 0.5px; background: rgba(34, 197, 94, 0.85); backdrop-filter: blur(4px); color: #fff; padding: 3px 6px; border-radius: 4px; font-weight: 800; box-shadow: 0 2px 4px rgba(0,0,0,0.2); }\n                        .pivot-lib-content { padding: 12px; display: flex; flex-direction: column; flex-grow: 1; }\n                        .pivot-lib-title { color: #ffffff; font-size: 0.85rem; font-weight: 700; margin: 0 0 10px 0; line-height: 1.3; flex-grow: 1; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }\n                        .pivot-lib-btn { display: block; background: #002FA7; color: #ffffff; text-align: center; padding: 8px; border-radius: 6px; text-decoration: none; font-weight: 700; font-size: 0.75rem; margin-top: auto; transition: background 0.2s; }\n                        .pivot-lib-btn:hover { background: #001f70; color: #ffffff; }\n                    <\/style>\n                    <div class=\"pivot-library-grid\">`;\n                    \n                    libraryItems.forEach(item => {\n                        gridHtml += `<div class=\"pivot-lib-item\">\n                            <div class=\"pivot-lib-img-wrap\" style=\"background-image: url('${item.img}');\">\n                                <div class=\"pivot-lib-badge\">Available<\/div>\n                            <\/div>\n                            <div class=\"pivot-lib-content\">\n                                <div class=\"pivot-lib-title\">${item.title}<\/div>\n                                <a href=\"${item.link}\" class=\"pivot-lib-btn\">Open<\/a>\n                            <\/div>\n                        <\/div>`;\n                    });\n                    \n                    gridHtml += `<\/div>`;\n                    libraryAnchor.innerHTML = gridHtml;\n                }\n            })\n            .catch(err => console.error(\"Library Fetch Error:\", err));\n        }\n            \n            setTimeout(() => {\n                let flash = document.getElementById('pivot-flash-screen');\n                if(flash) flash.style.opacity = '0';\n                setTimeout(() => { if(flash) flash.style.display = 'none'; }, 400);\n            }, 100);\n            \n            \/\/ Hide the preloader once the dashboard is fully rendered\n            let preloader = document.getElementById('pivot-dashboard-preloader');\n            if (preloader) {\n                preloader.style.opacity = '0';\n                setTimeout(() => { preloader.style.display = 'none'; }, 500);\n            }\n            \n        } catch (error) {\n            console.error(\"PIVOT Rendering Error:\", error);\n        }\n    }\n    window.pivotExportJournalPDF = window.pivotExportJournalPDF_VMAX = function() {\n        try {\n            if (window.pivotGetUserTier === 'function' && window.pivotGetUserTier() === 'guest') return window.pivotShowUpgradeModal();\n            \n            \/\/ 1. Load the Data\n            let master = window.safeLocalParse('sys_master_store', {}); \n            let userScores = window.safeLocalParse('pivotScores', {});\n            let actions = window.safeLocalParse('pivotDevActions', []);\n            let jobProfiles = window.safeLocalParse('sys_job_profiles', {});\n            if (!Array.isArray(actions)) actions = [];\n\n            \/\/ 2. SURGICAL KSA CLEANUP (Matches the Dashboard exactly so math is 1:1)\n            if (master && master['Knowledge, Skills and Abilities']) {\n                let ksaMaster = master['Knowledge, Skills and Abilities'];\n                for (let k in ksaMaster) {\n                    let kLower = k.toLowerCase();\n                    if (kLower === 'knowledge assessment' || kLower.includes('generalized') || kLower.includes('cross') || kLower.includes('basic') || kLower.includes('style') || kLower.includes('requirement')) {\n                        delete ksaMaster[k];\n                    }\n                }\n            }\n            if (userScores && userScores['Knowledge, Skills and Abilities']) {\n                let ksaScores = userScores['Knowledge, Skills and Abilities'];\n                for (let k in ksaScores) {\n                    let kLower = k.toLowerCase();\n                    if (kLower === 'knowledge assessment' || kLower.includes('generalized') || kLower.includes('cross') || kLower.includes('basic') || kLower.includes('style') || kLower.includes('requirement')) {\n                        delete ksaScores[k];\n                    }\n                }\n            }\n\n            \/\/ 3. FIND 80%+ PREFERENCE JOBS\n            let matches = [];\n            if (typeof window.calculateTwoTierCareerMatches === 'function') {\n                matches = window.calculateTwoTierCareerMatches();\n            }\n            \/\/ Isolate only the names of jobs where Preference Match is >= 80%\n            let highPrefJobs = matches.filter(m => m.hasSufficientEvidence && m.preferencePercent !== null && m.preferencePercent >= 80).map(m => m.title);\n\n            \/\/ 4. Clean and Flatten Scores\n            let flatScores = {};\n            let lastGlobalUpdate = localStorage.getItem('scores_date') || \"Not started yet\";\n            \n            for (let p in userScores) {\n                if (!userScores[p] || typeof userScores[p] !== 'object') continue;\n                for (let m in userScores[p]) {\n                    if (!userScores[p][m] || typeof userScores[p][m] !== 'object') continue;\n                    for (let qId in userScores[p][m]) {\n                        if (qId !== '_date' && qId && typeof qId === 'string') {\n                            flatScores[qId.trim()] = parseFloat(userScores[p][m][qId]);\n                        }\n                    }\n                }\n            }\n\n            \/\/ v2.16.48: use the same validated flattened score source used by\n            \/\/ My Development Snapshot. This keeps the PDF capability count,\n            \/\/ 0-7 distribution and per-group coverage exactly aligned with the\n            \/\/ live dashboard rather than estimating them from module completion.\n            const careerScores =\n                typeof window.getFlattenedUserScores === 'function'\n                    ? window.getFlattenedUserScores()\n                    : flatScores;\n\n            let pdfPillars = {};\n            let rawCapabilities = []; \n            let totalQ = 0; let totalAns = 0; let sum = 0;\n\n            for (let p in master) {\n                if (!master[p] || typeof master[p] !== 'object') continue;\n                \n                let cleanP = String(p).trim();\n                let pLower = cleanP.toLowerCase();\n                let isCloud = pLower.includes('preference') || pLower.includes('context') || pLower.includes('style');\n                let isExcluded = pLower.includes('preference') || pLower.includes('context') || pLower.includes('style') || pLower.includes('21st') || pLower.includes('employability') || cleanP === 'Basic Skills Assessment';\n\n                let pTot = 0; let pAns = 0; let pSum = 0; let cTags = [];\n\n                for (let m in master[p]) {\n                    let questions = master[p][m] || [];\n                    if (!Array.isArray(questions)) continue;\n                    \n                    pTot += questions.length;\n                    if (!isExcluded) totalQ += questions.length;\n\n                    questions.forEach(q => {\n                        if (!q || !q.id) return;\n                        let sVal = flatScores[String(q.id).trim()];\n                        if (sVal !== undefined && !isNaN(sVal)) {\n                            pAns++; pSum += sVal;\n                            if (!isExcluded) { totalAns++; sum += sVal; }\n                            \n                            if (isCloud) {\n                                let weight = sVal > 5 ? Math.ceil(sVal \/ 2) : sVal;\n                                if (weight > 5) weight = 5;\n                                if (weight >= 4) cTags.push({text: q.title, weight: weight});\n                            } else if (cleanP !== 'Basic Skills Assessment') {\n                                rawCapabilities.push({ id: q.id, title: q.title, score: sVal });\n                            }\n                        }\n                    });\n                }\n\n                if (pTot > 0) {\n                    let uniqueTags = []; let seen = new Set();\n                    for (let t of cTags) { if (t.text && !seen.has(t.text)) { seen.add(t.text); uniqueTags.push(t); } }\n                    pdfPillars[cleanP] = {\n                        type: isCloud ? 'cloud' : 'score',\n                        avgScore: pAns > 0 ? (pSum \/ pAns).toFixed(1) : \"0.0\",\n                        maxScore: isCloud ? 5 : (cleanP === 'Basic Skills Assessment' ? 7 : 10),\n                        percentComplete: Math.round((pAns \/ pTot) * 100),\n                        tags: uniqueTags\n                    };\n                }\n            }\n\n            \/\/ 5. BUILD THE JOURNAL'S VALIDATED 0-7 CAPABILITY SNAPSHOT\n            \/\/ This uses the same five capability groups as My Development Snapshot.\n            \/\/ It deliberately avoids averaging unlike scales into one headline score.\n            const journalCapabilityGroups = [\n                { name: 'Essential Skills', config: window.PIVOT_BASIC_SKILLS_LEVEL_CONFIG || {} },\n                { name: 'Abilities', config: window.PIVOT_ABILITY_LEVEL_CONFIG || {} },\n                { name: 'Knowledge', config: window.PIVOT_KNOWLEDGE_LEVEL_CONFIG || {} },\n                { name: 'Transferable Skills', config: window.PIVOT_TRANSFERABLE_SKILLS_LEVEL_CONFIG || {} },\n                { name: 'Work Activities', config: window.PIVOT_WORK_ACTIVITIES_LEVEL_CONFIG || {} }\n            ];\n\n            let journalCapabilityItems = [];\n            let journalCapabilityGroupSummary = {};\n\n            journalCapabilityGroups.forEach(group => {\n                const entries = Object.entries(group.config || {});\n                let answered = 0;\n\n                entries.forEach(([id, cfg]) => {\n                    const value = Number(careerScores[id]);\n                    if (!Number.isFinite(value) || value < 0 || value > 7) return;\n\n                    answered++;\n                    journalCapabilityItems.push({\n                        id,\n                        group: group.name,\n                        title: (cfg && cfg.element_name) ? cfg.element_name : id,\n                        score: value\n                    });\n                });\n\n                const total = entries.length;\n                journalCapabilityGroupSummary[group.name] = {\n                    answered,\n                    total,\n                    coverage: total > 0 ? Math.round((answered \/ total) * 100) : 0\n                };\n            });\n\n            const journalCapabilityTotal = journalCapabilityGroups.reduce(\n                (sum, group) => sum + Object.keys(group.config || {}).length,\n                0\n            );\n            const journalCapabilityAssessed = journalCapabilityItems.length;\n            const journalCapabilityCoverage = journalCapabilityTotal > 0\n                ? Math.round((journalCapabilityAssessed \/ journalCapabilityTotal) * 100)\n                : 0;\n\n            const journalDeveloping = journalCapabilityItems.filter(item => item.score >= 0 && item.score <= 2).length;\n            const journalEstablished = journalCapabilityItems.filter(item => item.score >= 3 && item.score <= 4).length;\n            const journalHigher = journalCapabilityItems.filter(item => item.score >= 5 && item.score <= 7).length;\n\n            \/\/ Higher\/lower items are prompts for reflection, not verified strengths or deficits.\n            const journalHigherItems = [...journalCapabilityItems]\n                .filter(item => item.score >= 5)\n                .sort((a, b) => b.score - a.score || a.title.localeCompare(b.title))\n                .map(item => item.title)\n                .filter((title, index, arr) => title && arr.indexOf(title) === index)\n                .slice(0, 8);\n\n            const journalReviewItems = [...journalCapabilityItems]\n                .filter(item => item.score >= 0 && item.score <= 2)\n                .sort((a, b) => a.score - b.score || a.title.localeCompare(b.title))\n                .map(item => item.title)\n                .filter((title, index, arr) => title && arr.indexOf(title) === index)\n                .slice(0, 8);\n\n            \/\/ 6. JOURNAL PAYLOAD\n            \/\/ Keep legacy index\/progress fields for backward compatibility, but the\n            \/\/ premium journal uses the validated capability snapshot above instead.\n            let globalAvg = totalAns > 0 ? (sum \/ totalAns).toFixed(1) : \"0.0\";\n            let globalProg = journalCapabilityCoverage;\n\n            let pdfGlobalStats = {\n                index: globalAvg,\n                progress: globalProg,\n                planned: actions.filter(a => a && a.status === 'planned').length,\n                completed: actions.filter(a => a && a.status === 'completed').length,\n                last_updated: String(lastGlobalUpdate || '').replace(\/^['\\\"]|['\\\"]$\/g, ''),\n                dynamic_strengths: journalHigherItems,\n                dynamic_gaps: journalReviewItems,\n                capability_total: journalCapabilityTotal,\n                capability_assessed: journalCapabilityAssessed,\n                capability_coverage: journalCapabilityCoverage,\n                capability_developing: journalDeveloping,\n                capability_established: journalEstablished,\n                capability_higher: journalHigher,\n                capability_groups: journalCapabilityGroupSummary\n            };\n\n            \/\/ Preserve the development record rather than stripping it down for print.\n            let pdfPlanned = actions\n                .filter(a => a && a.status === 'planned')\n                .map(a => ({\n                    task: a.text || '',\n                    text: a.text || '',\n                    due: a.due || a.targetDate || '',\n                    dateAdded: a.dateAdded || '',\n                    metric: a.pillarTag || a.careerTag || 'General development',\n                    domain: a.pillarTag || a.careerTag || 'General development',\n                    type: a.type || 'Development action',\n                    why: a.why || a.reason || '',\n                    reason: a.reason || a.why || '',\n                    evidence: a.evidence || a.successMeasure || '',\n                    successMeasure: a.successMeasure || a.evidence || ''\n                }));\n\n            let pdfCompleted = actions\n                .filter(a => a && a.status === 'completed')\n                .map(a => ({\n                    task: a.text || '',\n                    text: a.text || '',\n                    date: a.dateCompleted || a.dateAdded || '',\n                    dateCompleted: a.dateCompleted || '',\n                    metric: a.pillarTag || a.careerTag || 'General development',\n                    domain: a.pillarTag || a.careerTag || 'General development',\n                    type: a.type || 'Development activity',\n                    reflection: (a.type === 'Resource Access' && a.reflection === 'Automatically tracked upon accessing the resource.') ? '' : (a.reflection || ''),\n                    resources: a.resources || ''\n                }));\n\n           \/\/ 7. BEAM TO PHP (Silent Native Streaming)\n            let printBtn = document.getElementById(\"pivot-print-btn-global\");\n            let originalText = printBtn ? printBtn.innerText : \"DOWNLOAD JOURNAL\";\n            if (printBtn) {\n                printBtn.innerText = \"PREPARING...\";\n                printBtn.style.opacity = \"0.7\";\n            }\n            \n            setTimeout(() => {\n                let form = document.createElement('form'); \n                form.method = 'POST'; \n                form.action = '\/?download_pivot_journal=1'; \n                form.target = '_blank';\n                \n                let certs = window.safeLocalParse('pivot_certificates', []);\n                let refs = window.safeLocalParse('pivot_references', []);\n\n                let dataMap = { \n                    scores: JSON.stringify(pdfPillars), \n                    global_stats: JSON.stringify(pdfGlobalStats), \n                    actions_planned: JSON.stringify(pdfPlanned), \n                    actions_completed: JSON.stringify(pdfCompleted),\n                    certificates: JSON.stringify(certs),\n                    references: JSON.stringify(refs)\n                };\n                \n                for (let key in dataMap) { \n                    let hiddenField = document.createElement('input'); \n                    hiddenField.type = 'hidden'; \n                    hiddenField.name = key; \n                    hiddenField.value = dataMap[key]; \n                    form.appendChild(hiddenField); \n                }\n                \n                document.body.appendChild(form); \n                form.submit(); \n                form.remove();\n                \n                if (printBtn) {\n                    setTimeout(() => {\n                        printBtn.innerText = originalText;\n                        printBtn.style.opacity = \"1\";\n                    }, 2000);\n                }\n            }, 300);\n\n        } catch(err) {\n            alert(\"A small error occurred generating the PDF. Please reload the page and try again.\");\n        }\n    };\n\n    window.pivotInitializeSystem = function() {\n        let currentVersion = localStorage.getItem('sys_version');\n        let isCoreLoaded = (currentVersion === SYSTEM_VERSION && Object.keys(window.pivotMasterStore || {}).length > 0 && Object.keys(window.pivotJobProfiles || {}).length > 0);\n\n        let systemLoadingZone = document.getElementById('system-loading-zone');\n        if (systemLoadingZone && !isCoreLoaded) {\n            systemLoadingZone.style.display = 'block';\n            systemLoadingZone.innerHTML = `<div class=\"spinner\"><\/div><h2 style=\"color:#0f172a; font-weight:800;\">Preparing your PIVOT dashboard...<\/h2><p style=\"color:#64748b;\">Loading your assessments and profile data.<\/p>`;\n        }\n\n        let store = {}; let profiles = {}; let contextGrading = {}; let parsedScale10 = null; let parsedScale5 = null; let parsedScaleInterest = null; let parsedScaleWorkStyle = null; let parsedScaleContext = null;\n\n        \/\/ v2.16.21: keep both compact occupation matrices OUT of\n        \/\/ sys_job_profiles\/localStorage.\n        \/\/\n        \/\/ Persistent core = 12 sources.\n        \/\/ Abilities, Knowledge, Transferable Skills and Work Activities\n        \/\/ occupation profiles use compact memory-only runtime matrices,\n        \/\/ alongside Work Context, Work Styles and Career Interests.\n        let totalToParse = 12;\n        let parseCount = 0;\n        let coreReady = isCoreLoaded;\n        let abilitiesReady = false;\n        let knowledgeReady = false;\n        let transferableSkillsReady = false;\n        let workActivitiesReady = false;\n        let workContextReady = false;\n        let workStylesReady = false;\n        let careerInterestsReady = false;\n        let bootFinished = false;\n\n        window.pivotAbilitiesMatrix = {};\n        window.pivotKnowledgeMatrix = {};\n        window.pivotTransferableSkillsMatrix = {};\n        window.pivotWorkActivitiesMatrix = {};\n        window.pivotWorkContextMatrix = {};\n        window.pivotWorkStylesMatrix = {};\n        window.pivotCareerInterestsMatrix = {};\n\n        function finishBootIfReady() {\n            if (\n                bootFinished ||\n                !coreReady ||\n                !abilitiesReady ||\n                !knowledgeReady ||\n                !transferableSkillsReady ||\n                !workActivitiesReady ||\n                !workContextReady ||\n                !workStylesReady ||\n                !careerInterestsReady\n            ) return;\n            bootFinished = true;\n\n            if (typeof window.renderDashboard === 'function') {\n                window.renderDashboard();\n            }\n\n            const loadZone = document.getElementById('system-loading-zone');\n            if (loadZone) loadZone.style.display = 'none';\n        }\n\n        function loadAbilitiesRuntime() {\n            const url = SYSTEM_URLS.onet_abilities_runtime;\n\n            if (!url || url.includes(\"URL_HERE\")) {\n                window.pivotAbilitiesMatrix = {};\n                abilitiesReady = true;\n                finishBootIfReady();\n                return;\n            }\n\n            Papa.parse(url, {\n                download: true,\n                header: true,\n                skipEmptyLines: true,\n\n                complete: function(res) {\n                    const matrix = {};\n\n                    (res.data || []).forEach(row => {\n                        const jobName =\n                            String(row['Title'] || '').trim();\n\n                        if (!jobName) return;\n\n                        const abilities = {};\n\n                        Object.keys(row).forEach(key => {\n                            const match =\n                                String(key || '')\n                                    .trim()\n                                    .match(\/^(1\\.A\\..+)_(IM|LV)$\/);\n\n                            if (!match) return;\n\n                            const elementId = match[1];\n                            const scaleId = match[2];\n                            const value = Number(row[key]);\n\n                            if (!Number.isFinite(value)) return;\n\n                            if (!abilities[elementId]) {\n                                abilities[elementId] = {\n                                    im: null,\n                                    lv: null\n                                };\n                            }\n\n                            if (scaleId === 'IM') {\n                                abilities[elementId].im = value;\n                            }\n\n                            if (scaleId === 'LV') {\n                                abilities[elementId].lv = value;\n                            }\n                        });\n\n                        if (Object.keys(abilities).length) {\n                            matrix[jobName] = abilities;\n                        }\n                    });\n\n                    window.pivotAbilitiesMatrix = matrix;\n                    abilitiesReady = true;\n                    finishBootIfReady();\n                },\n\n                error: function(err) {\n                    console.error(\n                        'PIVOT Abilities runtime load failed.',\n                        err\n                    );\n\n                    window.pivotAbilitiesMatrix = {};\n                    abilitiesReady = true;\n                    finishBootIfReady();\n                }\n            });\n        }\n\n        function loadKnowledgeRuntime() {\n            const url = SYSTEM_URLS.onet_knowledge_runtime;\n\n            if (!url || url.includes(\"URL_HERE\")) {\n                window.pivotKnowledgeMatrix = {};\n                knowledgeReady = true;\n                finishBootIfReady();\n                return;\n            }\n\n            Papa.parse(url, {\n                download: true,\n                header: true,\n                skipEmptyLines: true,\n\n                complete: function(res) {\n                    const matrix = {};\n\n                    (res.data || []).forEach(row => {\n                        const jobName =\n                            String(row['Title'] || '').trim();\n\n                        if (!jobName) return;\n\n                        const knowledge = {};\n\n                        Object.keys(row).forEach(key => {\n                            const match =\n                                String(key || '')\n                                    .trim()\n                                    .match(\/^(2\\.C\\..+)_(IM|LV)$\/);\n\n                            if (!match) return;\n\n                            const elementId = match[1];\n                            const scaleId = match[2];\n                            const value = Number(row[key]);\n\n                            if (!Number.isFinite(value)) return;\n\n                            if (!knowledge[elementId]) {\n                                knowledge[elementId] = {\n                                    im: null,\n                                    lv: null\n                                };\n                            }\n\n                            if (scaleId === 'IM') {\n                                knowledge[elementId].im = value;\n                            }\n\n                            if (scaleId === 'LV') {\n                                knowledge[elementId].lv = value;\n                            }\n                        });\n\n                        if (Object.keys(knowledge).length) {\n                            matrix[jobName] = knowledge;\n                        }\n                    });\n\n                    window.pivotKnowledgeMatrix = matrix;\n                    knowledgeReady = true;\n                    finishBootIfReady();\n                },\n\n                error: function(err) {\n                    console.error(\n                        'PIVOT Knowledge runtime load failed.',\n                        err\n                    );\n\n                    window.pivotKnowledgeMatrix = {};\n                    knowledgeReady = true;\n                    finishBootIfReady();\n                }\n            });\n        }\n\n        function loadTransferableSkillsRuntime() {\n            const url = SYSTEM_URLS.onet_transferable_skills_runtime;\n\n            if (!url || url.includes(\"URL_HERE\")) {\n                window.pivotTransferableSkillsMatrix = {};\n                transferableSkillsReady = true;\n                finishBootIfReady();\n                return;\n            }\n\n            Papa.parse(url, {\n                download: true,\n                header: true,\n                skipEmptyLines: true,\n\n                complete: function(res) {\n                    const matrix = {};\n\n                    (res.data || []).forEach(row => {\n                        const jobName =\n                            String(row['Title'] || '').trim();\n\n                        if (!jobName) return;\n\n                        const skills = {};\n\n                        Object.keys(row).forEach(key => {\n                            const match =\n                                String(key || '')\n                                    .trim()\n                                    .match(\/^(2\\.B\\..+)_(IM|LV)$\/);\n\n                            if (!match) return;\n\n                            const elementId = match[1];\n                            const scaleId = match[2];\n                            const value = Number(row[key]);\n\n                            if (!Number.isFinite(value)) return;\n\n                            if (!skills[elementId]) {\n                                skills[elementId] = {\n                                    im: null,\n                                    lv: null\n                                };\n                            }\n\n                            if (scaleId === 'IM') {\n                                skills[elementId].im = value;\n                            }\n\n                            if (scaleId === 'LV') {\n                                skills[elementId].lv = value;\n                            }\n                        });\n\n                        if (Object.keys(skills).length) {\n                            matrix[jobName] = skills;\n                        }\n                    });\n\n                    window.pivotTransferableSkillsMatrix = matrix;\n                    transferableSkillsReady = true;\n                    finishBootIfReady();\n                },\n\n                error: function(err) {\n                    console.error(\n                        'PIVOT Transferable Skills runtime load failed.',\n                        err\n                    );\n\n                    window.pivotTransferableSkillsMatrix = {};\n                    transferableSkillsReady = true;\n                    finishBootIfReady();\n                }\n            });\n        }\n\n        function loadWorkActivitiesRuntime() {\n            const url = SYSTEM_URLS.onet_work_activities_runtime;\n\n            if (!url || url.includes(\"URL_HERE\")) {\n                window.pivotWorkActivitiesMatrix = {};\n                workActivitiesReady = true;\n                finishBootIfReady();\n                return;\n            }\n\n            Papa.parse(url, {\n                download: true,\n                header: true,\n                skipEmptyLines: true,\n\n                complete: function(res) {\n                    const matrix = {};\n\n                    (res.data || []).forEach(row => {\n                        const jobName =\n                            String(row['Title'] || '').trim();\n\n                        if (!jobName) return;\n\n                        const activities = {};\n\n                        Object.keys(row).forEach(key => {\n                            const match =\n                                String(key || '')\n                                    .trim()\n                                    .match(\/^(4\\.A\\..+)_(IM|LV)$\/);\n\n                            if (!match) return;\n\n                            const elementId = match[1];\n                            const scaleId = match[2];\n                            const value = Number(row[key]);\n\n                            if (!Number.isFinite(value)) return;\n\n                            if (!activities[elementId]) {\n                                activities[elementId] = {\n                                    im: null,\n                                    lv: null\n                                };\n                            }\n\n                            if (scaleId === 'IM') {\n                                activities[elementId].im = value;\n                            }\n\n                            if (scaleId === 'LV') {\n                                activities[elementId].lv = value;\n                            }\n                        });\n\n                        if (Object.keys(activities).length) {\n                            matrix[jobName] = activities;\n                        }\n                    });\n\n                    window.pivotWorkActivitiesMatrix = matrix;\n                    workActivitiesReady = true;\n                    finishBootIfReady();\n                },\n\n                error: function(err) {\n                    console.error(\n                        'PIVOT Work Activities runtime load failed.',\n                        err\n                    );\n\n                    window.pivotWorkActivitiesMatrix = {};\n                    workActivitiesReady = true;\n                    finishBootIfReady();\n                }\n            });\n        }\n\n        function loadWorkContextRuntime() {\n            const url = SYSTEM_URLS.onet_work_context_runtime;\n\n            if (!url || url.includes(\"URL_HERE\")) {\n                window.pivotWorkContextMatrix = {};\n                workContextReady = true;\n                finishBootIfReady();\n                return;\n            }\n\n            Papa.parse(url, {\n                download: true,\n                header: true,\n                skipEmptyLines: true,\n\n                complete: function(res) {\n                    const matrix = {};\n\n                    (res.data || []).forEach(row => {\n                        const jobName = String(row['Title'] || '').trim();\n                        if (!jobName) return;\n\n                        const context = {};\n\n                        Object.keys(row).forEach(key => {\n                            const elementId = String(key || '').trim();\n                            if (!elementId.startsWith('4.C')) return;\n\n                            const value = Number(row[key]);\n                            if (Number.isFinite(value)) {\n                                context[elementId] = value;\n                            }\n                        });\n\n                        if (Object.keys(context).length) {\n                            matrix[jobName] = context;\n                        }\n                    });\n\n                    window.pivotWorkContextMatrix = matrix;\n                    workContextReady = true;\n                    finishBootIfReady();\n                },\n\n                error: function(err) {\n                    console.error('PIVOT Work Context runtime load failed.', err);\n                    window.pivotWorkContextMatrix = {};\n                    workContextReady = true;\n                    finishBootIfReady();\n                }\n            });\n        }\n\n        function loadWorkStylesRuntime() {\n            const url = SYSTEM_URLS.onet_work_styles_runtime;\n\n            if (!url || url.includes(\"URL_HERE\")) {\n                window.pivotWorkStylesMatrix = {};\n                workStylesReady = true;\n                finishBootIfReady();\n                return;\n            }\n\n            Papa.parse(url, {\n                download: true,\n                header: true,\n                skipEmptyLines: true,\n\n                complete: function(res) {\n                    const matrix = {};\n\n                    (res.data || []).forEach(row => {\n                        const jobName = String(row['Title'] || '').trim();\n                        if (!jobName) return;\n\n                        const styles = {};\n\n                        Object.keys(row).forEach(key => {\n                            const match = String(key || '').trim().match(\/^(1\\.D\\..+)_(WI|DR)$\/);\n                            if (!match) return;\n\n                            const elementId = match[1];\n                            const scaleId = match[2];\n                            const value = Number(row[key]);\n                            if (!Number.isFinite(value)) return;\n\n                            if (!styles[elementId]) {\n                                styles[elementId] = { wi: null, dr: null };\n                            }\n\n                            if (scaleId === 'WI') styles[elementId].wi = value;\n                            if (scaleId === 'DR') styles[elementId].dr = value;\n                        });\n\n                        if (Object.keys(styles).length) {\n                            matrix[jobName] = styles;\n                        }\n                    });\n\n                    window.pivotWorkStylesMatrix = matrix;\n                    workStylesReady = true;\n                    finishBootIfReady();\n                },\n\n                error: function(err) {\n                    console.error('PIVOT Work Styles runtime load failed.', err);\n                    window.pivotWorkStylesMatrix = {};\n                    workStylesReady = true;\n                    finishBootIfReady();\n                }\n            });\n        }\n\n        function loadCareerInterestsRuntime() {\n            const url = SYSTEM_URLS.onet_career_interests_runtime;\n\n            if (!url || url.includes(\"URL_HERE\")) {\n                window.pivotCareerInterestsMatrix = {};\n                careerInterestsReady = true;\n                finishBootIfReady();\n                return;\n            }\n\n            Papa.parse(url, {\n                download: true,\n                header: true,\n                skipEmptyLines: true,\n\n                complete: function(res) {\n                    const matrix = {};\n\n                    (res.data || []).forEach(row => {\n                        const jobName = String(row['Title'] || '').trim();\n                        if (!jobName) return;\n\n                        const riasec = {};\n                        const specific = {};\n                        const highPointValues = [];\n\n                        Object.keys(row).forEach(key => {\n                            const cleanKey = String(key || '').trim();\n                            const value = Number(row[key]);\n                            if (!Number.isFinite(value)) return;\n\n                            let match = cleanKey.match(\/^(1\\.B\\.1\\.[a-f])_OI$\/);\n                            if (match) {\n                                riasec[match[1]] = value;\n                                return;\n                            }\n\n                            match = cleanKey.match(\/^(1\\.B\\.1\\.[g-i])_IH$\/);\n                            if (match) {\n                                highPointValues.push({\n                                    id: match[1],\n                                    value: value\n                                });\n                                return;\n                            }\n\n                            match = cleanKey.match(\/^(1\\.B\\.3\\..+)_(OI|DS)$\/);\n                            if (match) {\n                                const elementId = match[1];\n                                const scaleId = match[2];\n\n                                if (!specific[elementId]) {\n                                    specific[elementId] = { oi: null, ds: null };\n                                }\n\n                                if (scaleId === 'OI') specific[elementId].oi = value;\n                                if (scaleId === 'DS') specific[elementId].ds = value;\n                            }\n                        });\n\n                        matrix[jobName] = {\n                            riasec,\n                            specific,\n                            highPointValues\n                        };\n                    });\n\n                    window.pivotCareerInterestsMatrix = matrix;\n                    careerInterestsReady = true;\n                    finishBootIfReady();\n                },\n\n                error: function(err) {\n                    console.error('PIVOT Career Interests runtime load failed.', err);\n                    window.pivotCareerInterestsMatrix = {};\n                    careerInterestsReady = true;\n                    finishBootIfReady();\n                }\n            });\n        }\n\n        \/\/ Load all compact occupation matrices in parallel with any core rebuild.\n        loadAbilitiesRuntime();\n        loadKnowledgeRuntime();\n        loadTransferableSkillsRuntime();\n        loadWorkActivitiesRuntime();\n        loadWorkContextRuntime();\n        loadWorkStylesRuntime();\n        loadCareerInterestsRuntime();\n\n        function checkComplete() {\n            parseCount++;\n            if (parseCount !== totalToParse) return;\n\n            if (!isCoreLoaded) {\n                \/\/ Use fresh data in memory immediately.\n                window.pivotMasterStore = store;\n                window.pivotJobProfiles = profiles;\n                window.pivotContextGradingStore = contextGrading;\n                if (parsedScale10) window.pivotScale10 = parsedScale10;\n                if (parsedScale5) window.pivotScale5 = parsedScale5;\n                if (parsedScaleInterest) window.pivotScaleInterest = parsedScaleInterest;\n                if (parsedScaleWorkStyle) window.pivotScaleWorkStyle = parsedScaleWorkStyle;\n                if (parsedScaleContext) window.pivotScaleContext = parsedScaleContext;\n\n                \/\/ Write the version marker LAST. If any cache write fails,\n                \/\/ the next load will rebuild instead of trusting a partial cache.\n                try {\n                    localStorage.setItem('sys_master_store', JSON.stringify(store));\n                    localStorage.setItem('sys_job_profiles', JSON.stringify(profiles));\n                    localStorage.setItem('sys_context_grading', JSON.stringify(contextGrading));\n\n                    if (parsedScale10) localStorage.setItem('sys_scale10', JSON.stringify(parsedScale10));\n                    if (parsedScale5) localStorage.setItem('sys_scale5', JSON.stringify(parsedScale5));\n                    if (parsedScaleInterest) localStorage.setItem('sys_scale_interest', JSON.stringify(parsedScaleInterest));\n                    if (parsedScaleWorkStyle) localStorage.setItem('sys_scale_workstyle', JSON.stringify(parsedScaleWorkStyle));\n                    if (parsedScaleContext) localStorage.setItem('sys_scale_context', JSON.stringify(parsedScaleContext));\n\n                    localStorage.setItem('sys_version', SYSTEM_VERSION);\n                } catch (err) {\n                    console.error('PIVOT core cache write failed; using in-memory data for this session.', err);\n                    try { localStorage.removeItem('sys_version'); } catch (e) {}\n                }\n            }\n\n            coreReady = true;\n            finishBootIfReady();\n        }\n\n        function safeParseUrl(url, callback) {\n            if (!url || url.includes(\"URL_HERE\")) {\n                checkComplete();\n                return;\n            }\n\n            Papa.parse(url, {\n                download: true,\n                header: true,\n                skipEmptyLines: true,\n                complete: callback,\n                error: function(err) {\n                    console.error('PIVOT core source failed to load:', url, err);\n                    checkComplete();\n                }\n            });\n        }\n\n        \/\/ Career insight data is now loaded on demand per selected career.\n        \/\/ No Global, Continent or 79 MB Country AI dataset is parsed at Dashboard startup.\n\n        \/\/ If the persistent core is already valid, wait only for the compact\n        \/\/ Abilities, Knowledge, Transferable Skills, Work Activities,\n        \/\/ Work Context, Work Styles and Career Interests runtime matrices\n        \/\/ before rendering.\n        if (isCoreLoaded) {\n            coreReady = true;\n            finishBootIfReady();\n            return;\n        }\n\n        let moduleMap = { '21st Century Skills': SYSTEM_URLS.core_21st, 'Employability Skills': SYSTEM_URLS.core_employability, 'Knowledge, Skills and Abilities': SYSTEM_URLS.core_ksa, 'Work Preferences': SYSTEM_URLS.core_preferences, 'Work Context': SYSTEM_URLS.core_context };\n        Object.entries(moduleMap).forEach(([pillarName, url]) => {\n            safeParseUrl(url, function(res) {\n                res.data.forEach(row => {\n                    let currentPillar = pillarName; \n                    let currentMod = '';\n                    let id, titleStr, description, question;\n                    \n                    if (currentPillar === '21st Century Skills' || currentPillar === 'Employability Skills') { \n                        id = row['Element']; titleStr = row['Element']; description = row['Element Description']; question = row['Question']; currentMod = 'Core Assessments'; \n                    } \n                    else if (currentPillar === 'Work Context') { \n                        if (row['Post ID'] === 'Element ID') return; \n                        id = row['Post ID']; titleStr = row['Post Title']; description = row['Post Content']; question = row['Post Status']; currentMod = row['Post Date'] || 'Work Context Data'; \n                    } \n                    else if (currentPillar === 'Knowledge, Skills and Abilities' || currentPillar === 'Work Preferences') { \n                        id = row['Element ID']; titleStr = row['Element Name']; description = row['Description']; question = row['Question Text']; currentMod = row['Assessment Title']; \n                        \n                        if (currentPillar === 'Knowledge, Skills and Abilities' && currentMod) {\n                            let m = currentMod.trim().toLowerCase();\n                            let dynamicPillar = currentPillar;\n                            if (m.includes('generalized work')) dynamicPillar = 'Generalized Work Activities';\n                            else if (m.includes('knowledge assessment') || m === 'knowledge') dynamicPillar = 'Knowledge Assessment';\n                            else if (m.includes('cross-functional') || m.includes('cross functional')) dynamicPillar = 'Cross-Functional Skills Assessment';\n                            else if (m.includes('basic skills')) dynamicPillar = 'Basic Skills Assessment';\n                            else if (m.includes('style') || m.includes('work requirement')) dynamicPillar = 'Work Requirement and Style';\n                            \n                            if (dynamicPillar !== currentPillar) {\n                                currentPillar = dynamicPillar;\n                                currentMod = dynamicPillar; \n                            }\n                        }\n                    }\n                    if (id && titleStr) {\n                        const cleanId = id.trim();\n\n                        \/\/ Current O*NET 30.3 Transferable Skills contains 25\n                        \/\/ occupation-rated child skills. The legacy broad parent\n                        \/\/ 2.B.3 (Technical Skills) must not appear as a 26th item.\n                        if (\n                            currentPillar === 'Cross-Functional Skills Assessment' &&\n                            cleanId === '2.B.3'\n                        ) {\n                            return;\n                        }\n\n                        const workActivityConfig =\n                            currentPillar === 'Generalized Work Activities'\n                                ? window.PIVOT_WORK_ACTIVITIES_LEVEL_CONFIG[cleanId]\n                                : null;\n\n                        const cleanTitle =\n                            workActivityConfig && workActivityConfig.element_name\n                                ? workActivityConfig.element_name\n                                : titleStr.trim();\n\n                        if (!store[currentPillar]) store[currentPillar] = {}; \n                        if (!store[currentPillar][currentMod]) store[currentPillar][currentMod] = [];\n                        store[currentPillar][currentMod].push({ id: cleanId, title: cleanTitle, description: description ? description.trim() : '', question: question ? question.trim() : '' });\n                    }\n                }); checkComplete();\n            });\n        });\n\n        safeParseUrl(SYSTEM_URLS.grading_context, function(res) { res.data.forEach(row => { let elId = row['Element ID']; let cat = row['Category']; let desc = row['Category Description']; if (elId && cat && desc) { let idTrim = elId.trim(); if (!contextGrading[idTrim]) contextGrading[idTrim] = {}; contextGrading[idTrim][parseInt(cat)] = desc.trim(); } }); checkComplete(); });\n        \/\/ Validity-first O*NET Essential Skills occupation profiles.\n        \/\/ For each of the ten Basic Skills elements we retain BOTH:\n        \/\/   IM = occupation Importance (used as the weighting factor)\n        \/\/   LV = occupation Level (used as the direct 0\u20137 requirement target)\n        \/\/ Only IM>=3 elements enter the career evidence profile, matching the\n        \/\/ conservative relevance gate already used by the legacy matcher.\n        safeParseUrl(SYSTEM_URLS.onet_essential_skills, function(res) {\n            const groupedSkills = {};\n\n            res.data.forEach(row => {\n                const jobName = String(row['Title'] || '').trim();\n                const elementId = String(row['Element ID'] || '').trim();\n                const elementName = String(row['Element Name'] || '').trim();\n                const scaleId = String(row['Scale ID'] || '').trim().toUpperCase();\n                const val = parseFloat(row['Data Value']);\n\n                if (!jobName || !elementId || !Number.isFinite(val)) return;\n                if (scaleId !== 'IM' && scaleId !== 'LV') return;\n\n                if (!groupedSkills[jobName]) groupedSkills[jobName] = {};\n                if (!groupedSkills[jobName][elementId]) {\n                    groupedSkills[jobName][elementId] = {\n                        id: elementId,\n                        name: elementName || 'Unknown Requirement',\n                        importance: null,\n                        level: null\n                    };\n                }\n\n                const entry = groupedSkills[jobName][elementId];\n                if (elementName) entry.name = elementName;\n                if (scaleId === 'IM') entry.importance = val;\n                if (scaleId === 'LV') entry.level = val;\n            });\n\n            Object.entries(groupedSkills).forEach(([jobName, byElement]) => {\n                if (!profiles[jobName]) profiles[jobName] = [];\n\n                Object.values(byElement)\n                    .filter(entry =>\n                        Number.isFinite(entry.importance) &&\n                        entry.importance >= 3.0 &&\n                        Number.isFinite(entry.level)\n                    )\n                    .forEach(entry => {\n                        profiles[jobName].push({\n                            id: entry.id,\n                            name: entry.name || 'Unknown Requirement',\n                            \/\/ Legacy code still expects requiredValue to mean IM.\n                            requiredValue: entry.importance,\n                            importance: entry.importance,\n                            level: entry.level,\n                            source: 'essential-skills'\n                        });\n                    });\n            });\n\n            checkComplete();\n        });\n\n        safeParseUrl(SYSTEM_URLS.scale_10, function(res) { parsedScale10 = {}; for(let i=1; i<=10; i++) { let keywords = res.data.map(r => r[i.toString()]).filter(v => v && v.trim() !== '' && v.trim().length <= 100 && !v.includes('?') && !v.includes('+') && !v.includes('=') && !v.toLowerCase().startsWith('if ')); if (keywords.length > 0) parsedScale10[i] = { title: i + \". \" + keywords[0], keywords: keywords }; } checkComplete(); });\n        safeParseUrl(SYSTEM_URLS.scale_5, function(res) { parsedScale5 = {}; for(let i=1; i<=5; i++) { let keywords = res.data.map(r => r[i.toString()]).filter(v => v && v.trim() !== '' && v.trim().length <= 100 && !v.includes('?') && !v.includes('+') && !v.includes('=') && !v.toLowerCase().startsWith('if ')); if (keywords.length > 0) parsedScale5[i] = { title: i + \". \" + keywords[0], keywords: keywords }; } checkComplete(); });\n        safeParseUrl(SYSTEM_URLS.scale_interest, function(res) { parsedScaleInterest = {}; for(let i=1; i<=7; i++) { let keywords = res.data.map(r => r[i.toString()]).filter(v => v && v.trim() !== '' && v.trim().length <= 120 && !v.includes('?') && !v.includes('+') && !v.includes('=') && !v.toLowerCase().startsWith('if ')); if (keywords.length > 0) parsedScaleInterest[i] = { title: i + \". \" + keywords[0], keywords: keywords }; } checkComplete(); });\n        safeParseUrl(SYSTEM_URLS.scale_workstyle, function(res) { parsedScaleWorkStyle = {}; for(let i=1; i<=5; i++) { let keywords = res.data.map(r => r[i.toString()]).filter(v => v && v.trim() !== '' && v.trim().length <= 120 && !v.includes('?') && !v.includes('+') && !v.includes('=') && !v.toLowerCase().startsWith('if ')); if (keywords.length > 0) parsedScaleWorkStyle[i] = { title: i + \". \" + keywords[0], keywords: keywords }; } checkComplete(); });\n        safeParseUrl(SYSTEM_URLS.scale_context_generic, function(res) { parsedScaleContext = {}; for(let i=1; i<=5; i++) { let keywords = res.data.map(r => r[i.toString()]).filter(v => v && v.trim() !== '' && v.trim().length <= 100 && !v.includes('?') && !v.includes('+') && !v.includes('=') && !v.toLowerCase().startsWith('if ')); if (keywords.length > 0) parsedScaleContext[i] = { title: i + \". \" + keywords[0], keywords: keywords }; } checkComplete(); });\n\n        \/* Positive assessment feedback is curated in code.\n           External random encouragement CSV loading was removed in v2.13. *\/\n    };\n\n    window.pivotOpenResourceRequestForm = function() {\n        let openModal = document.querySelector('.pivot-modal-overlay.active');\n        if (openModal) openModal.classList.remove('active'); \n\n        if (window.elementorProFrontend && elementorProFrontend.modules && elementorProFrontend.modules.popup) {\n            elementorProFrontend.modules.popup.showPopup({ id: 26127 });\n        } else {\n            alert(\"We couldn't open the request form. Please refresh and try again.\");\n        }\n    };\n\n    function executePivotBootSequence() {\n        let wrapper = document.getElementById('pivot-wrapper');\n        if(wrapper) { wrapper.style.visibility = 'visible'; wrapper.style.opacity = '1'; }\n\n        if (window.location.href.includes('action=elementor') || document.body.classList.contains('elementor-editor-active')) {\n            let flash = document.getElementById('pivot-flash-screen');\n            if(flash) flash.style.display = 'none';\n            return; \n        }\n\n        \/\/ SPEED FIX: Artificial timeouts removed!\n        let flash = document.getElementById('pivot-flash-screen');\n        if(flash) flash.style.display = 'none';\n\n        if (typeof Papa === 'undefined') {\n            let script = document.createElement('script');\n            script.src = 'https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/PapaParse\/5.4.1\/papaparse.min.js';\n            script.onload = () => { window.pivotInitializeSystem(); };\n            document.head.appendChild(script);\n        } else {\n            window.pivotInitializeSystem();\n        }\n    }\n\n    \/\/ PIVOT v2.16.9 \u2014 STABLE ACCESS-FIRST FIRST PAINT\n    \/\/ Do not render assessment access states at DOMContentLoaded and then correct\n    \/\/ them later. WordPress prints the login\/admin access bridge later in the page,\n    \/\/ so build the Dashboard once after the normal window load event. If this\n    \/\/ script itself runs after load, start immediately.\n    function pivotStartAfterAccessBridge() {\n        if (window.__pivotBootStartedV2169) return;\n        window.__pivotBootStartedV2169 = true;\n        executePivotBootSequence();\n    }\n\n    if (document.readyState === 'complete') {\n        pivotStartAfterAccessBridge();\n    } else {\n        window.addEventListener('load', pivotStartAfterAccessBridge, { once: true });\n    }\n    \n    \/\/ Fallback UI safety clear\n    setTimeout(() => {\n        let preloader = document.getElementById('pivot-dashboard-preloader');\n        if (preloader && preloader.style.display !== 'none') {\n            preloader.style.opacity = '0';\n            setTimeout(() => { preloader.style.display = 'none'; }, 500);\n        }\n    }, 5000);\n\n<\/script>\n\n\n<style id=\"pivot-dashboard-compact-premium-cards-v2\">\n\/* =========================================================\n   PIVOT DASHBOARD \u2014 COMPACT PREMIUM CARD SYSTEM\n   ========================================================= *\/\n\n#gateway-pillars-anchor .pivot-dashboard-summary-grid {\n    display: grid !important;\n    grid-template-columns: minmax(0, 1.70fr) minmax(330px, .90fr) !important;\n    gap: 22px !important;\n    margin-bottom: 26px !important;\n    align-items: start !important;\n}\n\n\/* Dashboard summary row: the Development Snapshot owns its own layout.\n   Do not reuse the legacy two-column rules that previously compressed it. *\/\n#gateway-pillars-anchor .pivot-dashboard-summary-grid {\n    gap: 22px !important;\n    margin-bottom: 26px !important;\n    align-items: start !important;\n}\n\n#gateway-pillars-anchor .pivot-dashboard-summary-card,\n#gateway-pillars-anchor .pivot-dashboard-milestone-card {\n    width: 100% !important;\n    min-width: 0 !important;\n    min-height: 0 !important;\n    height: auto !important;\n    align-self: start !important;\n    padding: 7px 16px 14px !important;\n}\n\n#gateway-pillars-anchor .pivot-dashboard-summary-card {\n    position: relative !important;\n    isolation: isolate !important;\n    overflow: hidden !important;\n    width: 100% !important;\n    min-width: 0 !important;\n    min-height: 340px !important;\n    height: auto !important;\n    padding: 0 !important;\n    display: block !important;\n    background:\n        radial-gradient(circle at 88% 7%, rgba(255,255,255,.12), transparent 25%),\n        radial-gradient(circle at 2% 94%, rgba(43,100,255,.22), transparent 32%),\n        linear-gradient(135deg, #0638b5 0%, #002a91 42%, #001b63 100%) !important;\n    border: 1px solid rgba(255,255,255,.11) !important;\n    box-shadow:\n        0 24px 55px rgba(0,31,102,.22),\n        inset 0 1px 0 rgba(255,255,255,.10) !important;\n}\n\n#gateway-pillars-anchor .pivot-dashboard-milestone-card {\n    min-height: 300px !important;\n    height: auto !important;\n}\n\n\/* Development Snapshot \u2014 premium editorial treatment *\/\n#gateway-pillars-anchor .pivot-dashboard-summary-grid {\n    gap: 22px !important;\n    margin-bottom: 26px !important;\n    align-items: stretch !important;\n}\n\n#gateway-pillars-anchor .pivot-dashboard-summary-card,\n#gateway-pillars-anchor .pivot-dashboard-milestone-card {\n    margin-bottom: 0 !important;\n    border-radius: 22px !important;\n}\n\n#gateway-pillars-anchor .pivot-dashboard-summary-card {\n    position: relative !important;\n    isolation: isolate !important;\n    overflow: hidden !important;\n    min-height: 340px !important;\n    height: 100% !important;\n    padding: 0 !important;\n    display: block !important;\n    background:\n        radial-gradient(circle at 88% 7%, rgba(255,255,255,.12), transparent 25%),\n        radial-gradient(circle at 2% 94%, rgba(43,100,255,.22), transparent 32%),\n        linear-gradient(135deg, #0638b5 0%, #002a91 42%, #001b63 100%) !important;\n    border: 1px solid rgba(255,255,255,.11) !important;\n    box-shadow:\n        0 24px 55px rgba(0,31,102,.22),\n        inset 0 1px 0 rgba(255,255,255,.10) !important;\n}\n\n#gateway-pillars-anchor .pivot-dashboard-summary-card::before {\n    content: \"\" !important;\n    position: absolute !important;\n    inset: 0 0 auto 0 !important;\n    height: 4px !important;\n    z-index: 2 !important;\n    background: linear-gradient(90deg, #ff7a00 0%, #ff9b3d 38%, rgba(255,155,61,0) 86%) !important;\n}\n\n#gateway-pillars-anchor .pivot-dashboard-summary-card::after {\n    content: \"\" !important;\n    position: absolute !important;\n    width: 180px !important;\n    height: 180px !important;\n    right: -84px !important;\n    bottom: -96px !important;\n    border-radius: 50% !important;\n    border: 1px solid rgba(255,255,255,.08) !important;\n    box-shadow:\n        0 0 0 28px rgba(255,255,255,.025),\n        0 0 0 58px rgba(255,255,255,.018) !important;\n    pointer-events: none !important;\n}\n\n#gateway-pillars-anchor .pivot-development-snapshot-v35 {\n    position: relative !important;\n    z-index: 1 !important;\n    width: 100% !important;\n    min-width: 0 !important;\n    padding: 23px 25px 20px !important;\n    box-sizing: border-box !important;\n    color: #ffffff !important;\n}\n\n#gateway-pillars-anchor .pivot-dev35-header {\n    display: flex !important;\n    align-items: flex-start !important;\n    justify-content: space-between !important;\n    gap: 18px !important;\n    margin-bottom: 16px !important;\n}\n\n#gateway-pillars-anchor .pivot-dev35-eyebrow {\n    margin-bottom: 4px !important;\n    font-size: .62rem !important;\n    line-height: 1.2 !important;\n    font-weight: 900 !important;\n    letter-spacing: .15em !important;\n    text-transform: uppercase !important;\n    color: #ffb36b !important;\n}\n\n#gateway-pillars-anchor .pivot-dev35-title {\n    display: flex !important;\n    align-items: center !important;\n    gap: 8px !important;\n    font-size: 1.05rem !important;\n    line-height: 1.2 !important;\n    font-weight: 900 !important;\n    letter-spacing: -.01em !important;\n    color: #ffffff !important;\n}\n\n#gateway-pillars-anchor .pivot-dev35-title .info-icon {\n    width: 21px !important;\n    height: 21px !important;\n    min-width: 21px !important;\n    background: rgba(255,255,255,.11) !important;\n    color: rgba(255,255,255,.90) !important;\n    border: 1px solid rgba(255,255,255,.22) !important;\n    box-shadow: none !important;\n}\n\n#gateway-pillars-anchor .pivot-dev35-header-note {\n    max-width: 150px !important;\n    padding-top: 2px !important;\n    text-align: right !important;\n    font-size: .72rem !important;\n    line-height: 1.35 !important;\n    color: rgba(255,255,255,.68) !important;\n}\n\n#gateway-pillars-anchor .pivot-dev35-main {\n    display: grid !important;\n    grid-template-columns: 245px minmax(0, 1fr) !important;\n    gap: 24px !important;\n    align-items: stretch !important;\n    width: 100% !important;\n    min-width: 0 !important;\n}\n\n#gateway-pillars-anchor .pivot-dev35-assessed,\n#gateway-pillars-anchor .pivot-dev35-profile {\n    min-width: 0 !important;\n}\n\n#gateway-pillars-anchor .pivot-dev35-assessed {\n    min-width: 0 !important;\n    padding: 18px 18px 16px !important;\n    border-radius: 17px !important;\n    background: linear-gradient(145deg, rgba(255,255,255,.105), rgba(255,255,255,.055)) !important;\n    border: 1px solid rgba(255,255,255,.10) !important;\n    box-shadow: inset 0 1px 0 rgba(255,255,255,.05) !important;\n    display: flex !important;\n    flex-direction: column !important;\n    justify-content: center !important;\n}\n\n#gateway-pillars-anchor .pivot-dev35-assessed-label {\n    font-size: .66rem !important;\n    line-height: 1.25 !important;\n    font-weight: 850 !important;\n    letter-spacing: .06em !important;\n    text-transform: uppercase !important;\n    color: rgba(255,255,255,.68) !important;\n}\n\n#gateway-pillars-anchor .pivot-dev35-count-row {\n    display: flex !important;\n    align-items: center !important;\n    gap: 16px !important;\n    margin-top: 0 !important;\n    min-width: 0 !important;\n}\n\n#gateway-pillars-anchor .pivot-dev35-count {\n    font-size: 4.1rem !important;\n    line-height: .9 !important;\n    font-weight: 950 !important;\n    letter-spacing: -.045em !important;\n    flex: 0 0 auto !important;\n    color: #ffffff !important;\n    text-shadow: 0 7px 22px rgba(0,0,0,.14) !important;\n}\n\n#gateway-pillars-anchor .pivot-dev35-count-copy {\n    display: flex !important;\n    flex-direction: column !important;\n    justify-content: center !important;\n    min-width: 0 !important;\n}\n\n\n#gateway-pillars-anchor .pivot-dev35-count-copy strong {\n    display: block !important;\n    font-size: 1rem !important;\n    line-height: 1.18 !important;\n    font-weight: 900 !important;\n    color: #ffffff !important;\n    white-space: normal !important;\n}\n\n#gateway-pillars-anchor .pivot-dev35-count-copy span {\n    display: block !important;\n    margin-top: 6px !important;\n    font-size: .73rem !important;\n    line-height: 1.38 !important;\n    color: rgba(255,255,255,.74) !important;\n}\n\n#gateway-pillars-anchor .pivot-dev35-includes {\n    margin-top: 13px !important;\n    font-size: .63rem !important;\n    line-height: 1.55 !important;\n    font-weight: 750 !important;\n    color: rgba(255,255,255,.62) !important;\n}\n\n#gateway-pillars-anchor .pivot-dev35-includes i {\n    display: inline-block !important;\n    width: 3px !important;\n    height: 3px !important;\n    margin: 0 5px 2px !important;\n    border-radius: 50% !important;\n    background: rgba(255,179,107,.85) !important;\n}\n\n#gateway-pillars-anchor .pivot-dev35-section-heading {\n    display: block !important;\n    margin-bottom: 12px !important;\n}\n\n#gateway-pillars-anchor .pivot-dev35-section-heading > span {\n    display: block !important;\n    font-size: .72rem !important;\n    line-height: 1.2 !important;\n    font-weight: 900 !important;\n    letter-spacing: .05em !important;\n    text-transform: uppercase !important;\n    color: rgba(255,255,255,.84) !important;\n}\n\n#gateway-pillars-anchor .pivot-dev35-section-heading > small {\n    display: block !important;\n    margin-top: 4px !important;\n    max-width: none !important;\n    font-size: .68rem !important;\n    line-height: 1.3 !important;\n    font-weight: 650 !important;\n    text-align: left !important;\n    color: rgba(255,255,255,.56) !important;\n}\n\n#gateway-pillars-anchor .pivot-dev35-profile-grid {\n    display: grid !important;\n    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;\n    gap: 11px !important;\n    min-width: 0 !important;\n}\n\n#gateway-pillars-anchor .pivot-dev35-profile-card {\n    min-width: 0 !important;\n    padding: 15px 13px 15px !important;\n    border-radius: 16px !important;\n    background: rgba(255,255,255,.08) !important;\n    border: 1px solid rgba(255,255,255,.10) !important;\n    box-shadow: inset 0 1px 0 rgba(255,255,255,.04) !important;\n}\n\n#gateway-pillars-anchor .pivot-dev35-profile-card-strong {\n    background: linear-gradient(145deg, rgba(255,255,255,.13), rgba(255,255,255,.075)) !important;\n    border-color: rgba(255,179,107,.24) !important;\n}\n\n#gateway-pillars-anchor .pivot-dev35-profile-top {\n    display: flex !important;\n    align-items: center !important;\n    justify-content: space-between !important;\n    gap: 8px !important;\n}\n\n#gateway-pillars-anchor .pivot-dev35-profile-top strong {\n    font-size: 1.95rem !important;\n    line-height: 1 !important;\n    font-weight: 950 !important;\n    color: #ffffff !important;\n}\n\n#gateway-pillars-anchor .pivot-dev35-profile-top span {\n    padding: 4px 7px !important;\n    border-radius: 999px !important;\n    background: rgba(255,255,255,.13) !important;\n    font-size: .64rem !important;\n    line-height: 1 !important;\n    font-weight: 850 !important;\n    white-space: nowrap !important;\n    color: rgba(255,255,255,.80) !important;\n}\n\n#gateway-pillars-anchor .pivot-dev35-profile-name {\n    margin-top: 10px !important;\n    font-size: .76rem !important;\n    line-height: 1.2 !important;\n    font-weight: 750 !important;\n    color: rgba(255,255,255,.78) !important;\n    min-height: 2.3em !important;\n}\n\n#gateway-pillars-anchor .pivot-dev35-footer {\n    margin-top: 17px !important;\n    padding-top: 14px !important;\n    border-top: 1px solid rgba(255,255,255,.14) !important;\n}\n\n#gateway-pillars-anchor .pivot-dev35-footer-heading {\n    margin-bottom: 10px !important;\n}\n\n#gateway-pillars-anchor .pivot-dev35-activity-grid {\n    display: grid !important;\n    grid-template-columns: repeat(3, minmax(0,1fr)) !important;\n    gap: 10px !important;\n}\n\n#gateway-pillars-anchor .pivot-dev35-activity-item {\n    display: grid !important;\n    grid-template-columns: 30px minmax(0,1fr) !important;\n    gap: 10px !important;\n    align-items: center !important;\n    min-width: 0 !important;\n    padding: 11px 12px !important;\n    border-radius: 14px !important;\n    background: rgba(255,255,255,.06) !important;\n    border: 1px solid rgba(255,255,255,.075) !important;\n}\n\n#gateway-pillars-anchor .pivot-dev35-activity-icon {\n    width: 27px !important;\n    height: 27px !important;\n    display: flex !important;\n    align-items: center !important;\n    justify-content: center !important;\n    border-radius: 9px !important;\n    background: rgba(255,179,107,.13) !important;\n    color: #ffc182 !important;\n    font-size: .78rem !important;\n    font-weight: 900 !important;\n}\n\n#gateway-pillars-anchor .pivot-dev35-activity-item span {\n    display: block !important;\n    font-size: .62rem !important;\n    line-height: 1.15 !important;\n    font-weight: 750 !important;\n    text-transform: uppercase !important;\n    letter-spacing: .035em !important;\n    color: rgba(255,255,255,.56) !important;\n}\n\n#gateway-pillars-anchor .pivot-dev35-activity-item strong {\n    display: block !important;\n    margin-top: 4px !important;\n    font-size: 1rem !important;\n    line-height: 1.15 !important;\n    font-weight: 900 !important;\n    color: #ffffff !important;\n    white-space: nowrap !important;\n}\n\n#gateway-pillars-anchor .pivot-dev35-growth {\n    display: flex !important;\n    align-items: flex-start !important;\n    gap: 8px !important;\n    margin-top: 11px !important;\n    font-size: .69rem !important;\n    line-height: 1.42 !important;\n    font-weight: 600 !important;\n    color: rgba(255,255,255,.68) !important;\n}\n\n#gateway-pillars-anchor .pivot-dev35-growth-dot {\n    width: 6px !important;\n    height: 6px !important;\n    min-width: 6px !important;\n    margin-top: 3px !important;\n    border-radius: 50% !important;\n    background: #ff9a3c !important;\n    box-shadow: 0 0 0 4px rgba(255,154,60,.09) !important;\n}\n\n\/* v2.16.51 \u2014 interactive snapshot + review\/update surfaces *\/\n#gateway-pillars-anchor button.pivot-dev35-profile-card,\n#gateway-pillars-anchor button.pivot-dev35-activity-item {\n    -webkit-appearance: none !important;\n    appearance: none !important;\n    width: 100% !important;\n    text-align: left !important;\n    font: inherit !important;\n    color: inherit !important;\n    cursor: pointer !important;\n}\n\n#gateway-pillars-anchor .pivot-dev35-clickable {\n    transition: transform .16s ease, background .16s ease, border-color .16s ease, box-shadow .16s ease !important;\n}\n\n#gateway-pillars-anchor .pivot-dev35-clickable:hover {\n    transform: translateY(-2px) !important;\n    background: rgba(255,255,255,.13) !important;\n    border-color: rgba(255,255,255,.24) !important;\n    box-shadow: 0 8px 18px rgba(0,0,0,.09), inset 0 1px 0 rgba(255,255,255,.06) !important;\n}\n\n#gateway-pillars-anchor .pivot-dev35-clickable:focus-visible {\n    outline: 3px solid rgba(255,193,130,.85) !important;\n    outline-offset: 3px !important;\n}\n\n#gateway-pillars-anchor .pivot-dev35-card-link,\n#gateway-pillars-anchor .pivot-dev35-activity-link {\n    display: block !important;\n    margin-top: 7px !important;\n    font-size: .61rem !important;\n    line-height: 1.15 !important;\n    font-weight: 850 !important;\n    letter-spacing: .02em !important;\n    color: #ffc182 !important;\n    text-transform: none !important;\n}\n\n.pivot-journal-item-clickable {\n    cursor: pointer !important;\n    transition: border-color .16s ease, box-shadow .16s ease, transform .16s ease !important;\n}\n\n.pivot-journal-item-clickable:hover {\n    border-color: #b9cbf5 !important;\n    box-shadow: 0 7px 18px rgba(15,23,42,.08) !important;\n    transform: translateY(-1px) !important;\n}\n\n.pivot-journal-item-clickable:focus-visible {\n    outline: 3px solid rgba(0,47,167,.16) !important;\n    outline-offset: 2px !important;\n}\n\n.pivot-journal-review-link {\n    margin-top: 9px !important;\n    color: #002FA7 !important;\n    font-size: .75rem !important;\n    font-weight: 850 !important;\n}\n\n.pivot-review-modal-box {\n    max-width: 760px !important;\n}\n\n.pivot-list-modal-box {\n    max-width: 820px !important;\n}\n\n.pivot-review-modal-head {\n    display: flex !important;\n    align-items: flex-start !important;\n    justify-content: space-between !important;\n    gap: 18px !important;\n    margin-bottom: 18px !important;\n}\n\n.pivot-review-modal-head h2 {\n    margin: 3px 0 0 !important;\n    color: #0f172a !important;\n    font-size: 1.55rem !important;\n    line-height: 1.18 !important;\n    font-weight: 900 !important;\n}\n\n.pivot-review-eyebrow {\n    color: #002FA7 !important;\n    font-size: .69rem !important;\n    font-weight: 900 !important;\n    letter-spacing: .09em !important;\n    text-transform: uppercase !important;\n}\n\n.pivot-review-subtitle {\n    margin: 8px 0 0 !important;\n    max-width: 620px !important;\n    color: #64748b !important;\n    font-size: .9rem !important;\n    line-height: 1.45 !important;\n}\n\n.pivot-review-close {\n    -webkit-appearance: none !important;\n    appearance: none !important;\n    width: 38px !important;\n    min-width: 38px !important;\n    height: 38px !important;\n    border: 1px solid #dbe4ef !important;\n    border-radius: 50% !important;\n    background: #f8fafc !important;\n    color: #475569 !important;\n    font-size: 1.45rem !important;\n    line-height: 1 !important;\n    cursor: pointer !important;\n}\n\n.pivot-review-meta {\n    display: flex !important;\n    flex-wrap: wrap !important;\n    gap: 7px !important;\n    margin: 0 0 18px !important;\n}\n\n.pivot-review-meta span,\n.pivot-review-chip,\n.pivot-review-score {\n    display: inline-flex !important;\n    align-items: center !important;\n    min-height: 28px !important;\n    padding: 5px 9px !important;\n    border-radius: 999px !important;\n    font-size: .72rem !important;\n    line-height: 1.1 !important;\n    font-weight: 800 !important;\n}\n\n.pivot-review-meta span,\n.pivot-review-chip {\n    background: #eef4ff !important;\n    color: #002FA7 !important;\n    border: 1px solid #d5e0ff !important;\n}\n\n.pivot-review-score {\n    background: #f1f5f9 !important;\n    color: #334155 !important;\n    border: 1px solid #e2e8f0 !important;\n}\n\n.pivot-review-label {\n    display: block !important;\n    margin-top: 14px !important;\n    color: #0f172a !important;\n    font-size: .84rem !important;\n    font-weight: 850 !important;\n}\n\n.modal-input.is-readonly {\n    color: #64748b !important;\n    background: #f1f5f9 !important;\n    cursor: default !important;\n}\n\n.pivot-review-note {\n    margin-top: 14px !important;\n    padding: 12px 14px !important;\n    border-radius: 12px !important;\n    background: #fff7ed !important;\n    border: 1px solid #fed7aa !important;\n    color: #9a3412 !important;\n    font-size: .82rem !important;\n    line-height: 1.45 !important;\n}\n\n.pivot-review-actions {\n    display: flex !important;\n    justify-content: flex-end !important;\n    gap: 12px !important;\n    margin-top: 24px !important;\n}\n\n.pivot-review-list {\n    display: flex !important;\n    flex-direction: column !important;\n    gap: 12px !important;\n}\n\n.pivot-review-item {\n    -webkit-appearance: none !important;\n    appearance: none !important;\n    display: block !important;\n    width: 100% !important;\n    padding: 17px 18px !important;\n    border: 1px solid #dbe4ef !important;\n    border-radius: 16px !important;\n    background: #ffffff !important;\n    text-align: left !important;\n    color: #0f172a !important;\n    box-shadow: 0 3px 10px rgba(15,23,42,.035) !important;\n    cursor: pointer !important;\n    transition: border-color .16s ease, box-shadow .16s ease, transform .16s ease !important;\n}\n\n.pivot-review-item:hover {\n    border-color: #b9cbf5 !important;\n    box-shadow: 0 8px 20px rgba(15,23,42,.07) !important;\n    transform: translateY(-1px) !important;\n}\n\n.pivot-review-item:focus-visible {\n    outline: 3px solid rgba(0,47,167,.13) !important;\n    outline-offset: 2px !important;\n}\n\n.pivot-review-item-top {\n    display: flex !important;\n    align-items: center !important;\n    justify-content: space-between !important;\n    gap: 10px !important;\n    margin-bottom: 9px !important;\n}\n\n.pivot-review-item h3 {\n    margin: 0 !important;\n    color: #0f172a !important;\n    font-size: 1rem !important;\n    line-height: 1.35 !important;\n    font-weight: 850 !important;\n    overflow-wrap: anywhere !important;\n}\n\n.pivot-review-item-meta {\n    margin-top: 7px !important;\n    color: #64748b !important;\n    font-size: .78rem !important;\n    line-height: 1.4 !important;\n}\n\n.pivot-review-item-note {\n    margin-top: 10px !important;\n    padding: 10px 12px !important;\n    border-radius: 10px !important;\n    background: #f8fafc !important;\n    color: #475569 !important;\n    font-size: .8rem !important;\n    line-height: 1.45 !important;\n}\n\n.pivot-review-item-link {\n    margin-top: 11px !important;\n    color: #002FA7 !important;\n    font-size: .78rem !important;\n    font-weight: 850 !important;\n}\n\n.pivot-review-item-actions {\n    display: flex !important;\n    align-items: center !important;\n    justify-content: space-between !important;\n    gap: 12px !important;\n    margin-top: 13px !important;\n    color: #002FA7 !important;\n    font-size: .78rem !important;\n    font-weight: 850 !important;\n}\n\n.pivot-review-item-actions .pivot-btn-success {\n    padding: 8px 12px !important;\n    font-size: .74rem !important;\n}\n\n.pivot-review-empty {\n    padding: 28px 20px !important;\n    border: 2px dashed #dbe4ef !important;\n    border-radius: 16px !important;\n    background: #f8fafc !important;\n    color: #64748b !important;\n    text-align: center !important;\n    font-size: .9rem !important;\n    line-height: 1.45 !important;\n}\n\n@media (max-width: 600px) {\n    \/* v2.16.52: keep interactive review panels fully below the tall mobile PIVOT nav. *\/\n    #pivot-capability-review-modal,\n    #pivot-action-manager-modal,\n    #pivot-action-editor-modal {\n        align-items: flex-start !important;\n        justify-content: center !important;\n        overflow-y: auto !important;\n        padding: 132px 10px 14px !important;\n        padding-top: calc(132px + env(safe-area-inset-top)) !important;\n    }\n\n    #pivot-capability-review-modal .pivot-review-modal-box,\n    #pivot-action-manager-modal .pivot-review-modal-box,\n    #pivot-action-editor-modal .pivot-review-modal-box {\n        width: 100% !important;\n        max-width: calc(100vw - 20px) !important;\n        max-height: calc(100vh - 148px) !important;\n        max-height: calc(100dvh - 148px - env(safe-area-inset-top)) !important;\n        margin: 0 auto !important;\n        overflow-x: hidden !important;\n        overflow-y: auto !important;\n        overscroll-behavior: contain !important;\n        -webkit-overflow-scrolling: touch;\n    }\n\n    .pivot-review-modal-box {\n        padding: 22px 18px !important;\n        max-height: 88vh !important;\n    }\n\n    .pivot-review-modal-head h2 {\n        font-size: 1.32rem !important;\n    }\n\n    .pivot-review-actions {\n        flex-direction: column-reverse !important;\n    }\n\n    .pivot-review-actions > button {\n        width: 100% !important;\n    }\n\n    .pivot-review-item-actions {\n        align-items: stretch !important;\n        flex-direction: column !important;\n    }\n\n    .pivot-review-item-actions .pivot-btn-success {\n        width: 100% !important;\n    }\n}\n\n@media (max-width: 1220px) {\n    #gateway-pillars-anchor .pivot-dev35-main {\n        grid-template-columns: 1fr !important;\n    }\n\n    #gateway-pillars-anchor .pivot-dashboard-summary-card {\n        min-height: 0 !important;\n    }\n\n    #gateway-pillars-anchor .pivot-dev35-profile-grid {\n        grid-template-columns: repeat(3, minmax(0, 1fr)) !important;\n    }\n}\n\n@media (max-width: 720px) {\n    #gateway-pillars-anchor .pivot-development-snapshot-v35 {\n        padding: 21px 18px 18px !important;\n    }\n\n    #gateway-pillars-anchor .pivot-dev35-header {\n        flex-direction: column !important;\n        gap: 7px !important;\n    }\n\n    #gateway-pillars-anchor .pivot-dev35-header-note {\n        max-width: none !important;\n        text-align: left !important;\n    }\n\n    #gateway-pillars-anchor .pivot-dev35-profile-grid,\n    #gateway-pillars-anchor .pivot-dev35-activity-grid {\n        grid-template-columns: 1fr !important;\n    }\n}\n\n\/* Milestone card: remove the large empty badge area and oversized rank image. *\/\n#gateway-pillars-anchor .pivot-dashboard-milestone-card {\n    padding: 12px 16px !important;\n    overflow: hidden !important;\n}\n\n#gateway-pillars-anchor .pivot-dashboard-milestone-card > div:first-child {\n    min-height: 34px !important;\n    padding-bottom: 6px !important;\n    margin-bottom: 7px !important;\n}\n\n#gateway-pillars-anchor .pivot-dashboard-milestone-card > div:first-child h3 {\n    min-width: 0 !important;\n    overflow: hidden !important;\n    font-size: 1rem !important;\n    text-overflow: ellipsis !important;\n}\n\n#gateway-pillars-anchor .pivot-dashboard-milestone-card .pivot-pill-tab {\n    padding: 4px 9px !important;\n    font-size: .67rem !important;\n}\n\n#gateway-pillars-anchor .pivot-milestone-rank-card {\n    min-height: 112px !important;\n    padding: 8px 12px !important;\n    margin-bottom: 6px !important;\n    border-width: 1px !important;\n}\n\n#gateway-pillars-anchor .pivot-milestone-rank-image {\n    width: 104px !important;\n    height: 104px !important;\n    flex: 0 0 104px !important;\n    margin-right: 14px !important;\n    border-radius: 13px !important;\n}\n\n#gateway-pillars-anchor .pivot-milestone-rank-card.is-starter .pivot-milestone-rank-image {\n    width: 72px !important;\n    height: 72px !important;\n    flex-basis: 72px !important;\n}\n\n#gateway-pillars-anchor .pivot-milestone-rank-card p {\n    margin-bottom: 3px !important;\n    font-size: .64rem !important;\n}\n\n#gateway-pillars-anchor .pivot-milestone-rank-card h4 {\n    margin-bottom: 2px !important;\n    font-size: 1.08rem !important;\n}\n\n#gateway-pillars-anchor .pivot-milestone-rank-card span {\n    font-size: .74rem !important;\n}\n\n#gateway-pillars-anchor .pivot-milestone-next-row {\n    min-height: 38px !important;\n    padding: 5px 9px !important;\n    margin-bottom: 5px !important;\n}\n\n#gateway-pillars-anchor .pivot-milestone-next-row > div:first-child span {\n    font-size: .72rem !important;\n}\n\n#gateway-pillars-anchor .pivot-milestone-next-row > div:last-child {\n    padding: 3px 7px !important;\n}\n\n#gateway-pillars-anchor .pivot-milestone-earned-strip {\n    flex: 0 0 auto !important;\n    min-height: 58px !important;\n    max-height: 76px !important;\n    padding: 4px 2px 0 !important;\n    overflow-x: auto !important;\n    overflow-y: hidden !important;\n    scrollbar-width: thin !important;\n}\n\n#gateway-pillars-anchor .pivot-milestone-earned-strip > p {\n    margin: 0 !important;\n    padding: 12px 8px !important;\n    font-size: .7rem !important;\n}\n\n#gateway-pillars-anchor .pivot-milestone-earned-strip .mycred-badge-list {\n    flex-wrap: nowrap !important;\n    justify-content: flex-start !important;\n    gap: 9px !important;\n    width: max-content !important;\n    min-width: 100% !important;\n}\n\n#gateway-pillars-anchor .pivot-milestone-earned-strip .mycred-badge-list li {\n    width: 62px !important;\n    margin: 0 !important;\n}\n\n#gateway-pillars-anchor .pivot-milestone-earned-strip .mycred-badge-image {\n    width: 52px !important;\n    height: 52px !important;\n    margin-bottom: 2px !important;\n    border-radius: 12px !important;\n}\n\n#gateway-pillars-anchor .pivot-milestone-earned-strip .mycred-badge-title {\n    max-width: 62px !important;\n    overflow: hidden !important;\n    font-size: .53rem !important;\n    line-height: 1.15 !important;\n    text-overflow: ellipsis !important;\n    white-space: nowrap !important;\n}\n\n\/* Roadmap cards become a compact horizontal strip rather than tall panels. *\/\n#gateway-pillars-anchor #pivot-all-view > div {\n    gap: 9px !important;\n    padding-bottom: 5px !important;\n}\n\n#gateway-pillars-anchor #pivot-all-view > div > div {\n    flex-basis: 145px !important;\n    padding: 9px !important;\n}\n\n#gateway-pillars-anchor #pivot-all-view img {\n    max-width: 62px !important;\n    max-height: 62px !important;\n}\n\n#gateway-pillars-anchor #pivot-all-view h4 {\n    font-size: .84rem !important;\n}\n\n\/* Assessment section: shorter cards with the same information density. *\/\n#gateway-pillars-anchor .pivot-assessment-section-head {\n    margin-top: 14px !important;\n    margin-bottom: 14px !important;\n}\n\n#gateway-pillars-anchor .pivot-assessment-section-head h3 {\n    font-size: 1.7rem !important;\n}\n\n#gateway-pillars-anchor .pivot-assessment-grid {\n    gap: 17px !important;\n    margin-bottom: 28px !important;\n    align-items: stretch !important;\n}\n\n#gateway-pillars-anchor .pivot-assessment-card {\n    min-height: 205px !important;\n    height: 205px !important;\n    padding: 17px 15px 13px !important;\n    margin-bottom: 0 !important;\n    border-radius: 17px !important;\n    justify-content: flex-start !important;\n}\n\n#gateway-pillars-anchor .pivot-assessment-card::before {\n    height: 5px !important;\n}\n\n#gateway-pillars-anchor .pivot-assessment-card > div:first-of-type h3 {\n    min-height: 34px !important;\n    margin-bottom: 7px !important;\n    font-size: .96rem !important;\n    line-height: 1.18 !important;\n}\n\n#gateway-pillars-anchor .pivot-assessment-card .pivot-badge {\n    padding: 5px 9px !important;\n    border-radius: 7px !important;\n    font-size: .65rem !important;\n    letter-spacing: .035em !important;\n}\n\n#gateway-pillars-anchor .pivot-assessment-card > div:nth-of-type(2) {\n    flex: 0 0 84px !important;\n    min-height: 84px !important;\n    padding: 7px 0 !important;\n}\n\n#gateway-pillars-anchor .pivot-assessment-card > div:nth-of-type(2) > div:first-child {\n    font-size: 3.15rem !important;\n}\n\n#gateway-pillars-anchor .pivot-assessment-card > div:nth-of-type(2) > div:last-child {\n    margin-top: 3px !important;\n    font-size: .64rem !important;\n}\n\n#gateway-pillars-anchor .pivot-assessment-card > div:last-child {\n    margin-top: auto !important;\n    padding-top: 8px !important;\n    font-size: .68rem !important;\n    line-height: 1.25 !important;\n}\n\n\/* Laptop and tablet: compact without forcing narrow internal columns. *\/\n@media (max-width: 1179px) and (min-width: 901px) {\n    #gateway-pillars-anchor .pivot-dashboard-summary-card,\n    #gateway-pillars-anchor .pivot-dashboard-milestone-card {\n        min-height: 330px !important;\n    }\n}\n\n\/* Single-column dashboard layouts should size naturally. *\/\n@media (max-width: 900px) {\n    #gateway-pillars-anchor .pivot-dashboard-summary-grid {\n        gap: 15px !important;\n    }\n\n    #gateway-pillars-anchor .pivot-dashboard-summary-card,\n    #gateway-pillars-anchor .pivot-dashboard-milestone-card {\n        min-height: 0 !important;\n        height: auto !important;\n    }\n\n    #gateway-pillars-anchor .pivot-dashboard-summary-card {\n        padding: 20px !important;\n    }\n\n    #gateway-pillars-anchor .pivot-dashboard-milestone-card {\n        padding: 12px 14px !important;\n    }\n}\n\n@media (max-width: 600px) {\n    #gateway-pillars-anchor .pivot-dashboard-summary-card .mobile-huge-text {\n        font-size: 2.75rem !important;\n    }\n\n    #gateway-pillars-anchor .pivot-dashboard-summary-card .mobile-large-text {\n        font-size: 1.12rem !important;\n    }\n\n    #gateway-pillars-anchor .pivot-dashboard-summary-card > div:nth-child(2) {\n        padding-top: 12px !important;\n    }\n\n    #gateway-pillars-anchor .pivot-milestone-rank-image {\n        width: 78px !important;\n        height: 78px !important;\n        flex-basis: 78px !important;\n        margin-right: 10px !important;\n    }\n\n    #gateway-pillars-anchor .pivot-milestone-rank-card.is-starter .pivot-milestone-rank-image {\n        width: 62px !important;\n        height: 62px !important;\n        flex-basis: 62px !important;\n    }\n\n    #gateway-pillars-anchor .pivot-assessment-section-head h3 {\n        font-size: 1.35rem !important;\n    }\n\n    #gateway-pillars-anchor .pivot-assessment-grid {\n        gap: 12px !important;\n    }\n\n    #gateway-pillars-anchor .pivot-assessment-card {\n        min-height: 182px !important;\n        height: auto !important;\n        padding: 15px 14px 12px !important;\n    }\n\n    #gateway-pillars-anchor .pivot-assessment-card > div:nth-of-type(2) {\n        flex-basis: 68px !important;\n        min-height: 68px !important;\n    }\n\n    #gateway-pillars-anchor .pivot-assessment-card > div:nth-of-type(2) > div:first-child {\n        font-size: 2.65rem !important;\n    }\n}\n\n\/* v2.16.37 \u2014 compact Milestones so the Development Snapshot can lead the row *\/\n#gateway-pillars-anchor .pivot-dashboard-milestone-card h3 {\n    font-size: 1rem !important;\n}\n\n#gateway-pillars-anchor .pivot-dashboard-milestone-card .pivot-pill-tab {\n    padding: 4px 8px !important;\n    font-size: .70rem !important;\n}\n\n#gateway-pillars-anchor .pivot-dashboard-milestone-card #pivot-current-status-banner {\n    padding: 14px 12px !important;\n}\n\n#gateway-pillars-anchor .pivot-dashboard-milestone-card #pivot-current-status-banner img {\n    max-width: 78px !important;\n    max-height: 78px !important;\n}\n\n#gateway-pillars-anchor .pivot-dashboard-milestone-card #pivot-current-status-banner h3,\n#gateway-pillars-anchor .pivot-dashboard-milestone-card #pivot-current-status-banner h4 {\n    line-height: 1.15 !important;\n}\n\n@media (max-width: 1120px) {\n    #gateway-pillars-anchor .pivot-dashboard-summary-grid {\n        grid-template-columns: 1fr !important;\n    }\n\n    #gateway-pillars-anchor .pivot-dashboard-milestone-card {\n        width: 100% !important;\n    }\n}\n\n<\/style>\n\n\n\n<style id=\"pivot-dashboard-v2-5-production-polish\">\n#pivot-wrapper,\n#pivot-wrapper input,\n#pivot-wrapper select,\n#pivot-wrapper textarea,\n#pivot-wrapper button,\n#pivot-wrapper a,\n#pivot-wrapper p,\n#pivot-wrapper li,\n#pivot-wrapper span,\n#pivot-wrapper div,\n#pivot-dashboard-preloader,\n#pivot-flash-screen,\n#pivot-info-modal,\n#pivot-upgrade-modal {\n    font-family:\"Inter\",\"Helvetica Neue\",Helvetica,Arial,sans-serif!important;\n}\n\n#pivot-wrapper h1,\n#pivot-wrapper h2,\n#pivot-wrapper h3,\n#pivot-wrapper h4,\n#pivot-wrapper h5,\n#pivot-wrapper h6,\n#pivot-dashboard-preloader h1,\n#pivot-dashboard-preloader h2,\n#pivot-dashboard-preloader h3,\n#pivot-info-modal h1,\n#pivot-info-modal h2,\n#pivot-info-modal h3,\n#pivot-upgrade-modal h1,\n#pivot-upgrade-modal h2,\n#pivot-upgrade-modal h3 {\n    font-family:\"Poppins\",\"Inter\",sans-serif!important;\n    letter-spacing:-.012em!important;\n    word-spacing:.065em!important;\n    text-transform:none!important;\n}\n\n.force-clean-preloader-h2,\n.force-clean-preloader-p {\n    font-family:\"Inter\",\"Helvetica Neue\",Helvetica,Arial,sans-serif!important;\n}\n\n#gateway-pillars-anchor .pivot-assessment-card.pivot-assessment-premium {\n    min-height:270px!important;\n    padding:20px!important;\n    border:1px solid #e2d6c8!important;\n    border-top:5px solid #c65d20!important;\n    background:radial-gradient(circle at 100% 0%,rgba(198,93,32,.11),transparent 31%),linear-gradient(155deg,#fff 0%,#fffdf9 100%)!important;\n    box-shadow:0 15px 34px rgba(15,23,42,.075)!important;\n    opacity:1!important;\n    filter:none!important;\n    text-align:left!important;\n}\n#gateway-pillars-anchor .pivot-assessment-card.pivot-assessment-premium:hover {\n    transform:translateY(-5px)!important;\n    border-color:#d9b696!important;\n    box-shadow:0 22px 44px rgba(15,23,42,.12)!important;\n}\n.pivot-assessment-premium-top{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:16px}\n.pivot-premium-pill{display:inline-flex;align-items:center;justify-content:center;padding:6px 10px;border-radius:999px;background:#c65d20;color:#fff!important;font-size:.63rem!important;line-height:1!important;font-weight:900!important;letter-spacing:.07em!important;text-transform:uppercase!important;box-shadow:0 6px 16px rgba(198,93,32,.18)}\n.pivot-assessment-question-count{color:#7c6f63!important;font-size:.68rem!important;font-weight:750!important}\n.pivot-assessment-premium-icon{width:42px;height:42px;border-radius:13px;display:grid;place-items:center;margin:2px 0 14px;background:#fff2e9;border:1px solid #f1c9ad;color:#c65d20;font-size:1.2rem}\n.pivot-assessment-premium-title{margin:0 0 8px!important;color:#0f172a!important;font-size:1.08rem!important;line-height:1.28!important;font-weight:850!important;white-space:normal!important;overflow:visible!important}\n.pivot-assessment-premium-desc{margin:0 0 18px!important;color:#64748b!important;font-size:.79rem!important;line-height:1.55!important;font-weight:500!important}\n.pivot-assessment-premium-footer{margin-top:auto;padding-top:13px;border-top:1px solid #f0e7de;display:grid;gap:5px}\n.pivot-assessment-premium-footer span{color:#8a7565!important;font-size:.67rem!important}\n.pivot-assessment-premium-footer strong{color:#b84f16!important;font-size:.76rem!important;font-weight:850!important}\n\n.pivot-premium-matrix-teaser{width:100%;min-height:155px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:15px;text-align:center}\n.pivot-premium-matrix-teaser .pivot-premium-lock{width:42px;height:42px;border-radius:13px;display:grid;place-items:center;background:#fff2e9;border:1px solid #f1c9ad;color:#c65d20;font-size:1.2rem}\n.pivot-premium-matrix-teaser p{max-width:290px!important;margin:0!important;color:#64748b!important;font-size:.77rem!important;line-height:1.48!important}\n.pivot-premium-direct-btn{border:0!important;border-radius:10px!important;background:#002FA7!important;color:#fff!important;padding:9px 15px!important;font-size:.73rem!important;font-weight:850!important;cursor:pointer}\n\n.pivot-resource-type-badge{position:absolute;top:12px;left:12px;z-index:2;padding:5px 9px;border-radius:999px;background:rgba(255,255,255,.94);color:#002FA7;font-size:.61rem;font-weight:900;letter-spacing:.055em;text-transform:uppercase;box-shadow:0 4px 12px rgba(15,23,42,.1)}\n.pivot-resource-tier{border-radius:999px!important}\n.pivot-resource-tier.tier-premium,.is-premium-resource .pivot-resource-tier{background:#c65d20!important;color:#fff!important}\n.pivot-resource-tier.tier-unlocked{background:#dbeafe!important;color:#1d4ed8!important}\n.pivot-resource-tier.tier-credits{background:#fef3c7!important;color:#a14c0d!important}\n.pivot-resource-card.is-premium-resource{border-color:#ead8c8!important;box-shadow:0 8px 24px rgba(15,23,42,.07)!important}\n.pivot-resource-card.is-premium-resource::before{content:\"\";position:absolute;left:0;right:0;top:0;height:4px;z-index:4;background:#c65d20}\n.pivot-resource-cta{display:block;margin-top:auto;padding-top:10px;border-top:1px solid #f1f5f9;color:#002FA7;font-size:.8rem;font-weight:800}\n.pivot-resource-cta.premium-cta{color:#b84f16!important}\n.pivot-career-free-badge{white-space:nowrap}\n\n#pivot-wrapper .pivot-badge,\n#pivot-wrapper .pivot-resource-tier,\n#pivot-wrapper .pivot-btn-accent,\n#pivot-wrapper .pivot-btn-outline,\n#pivot-wrapper .pivot-btn-secondary,\n#pivot-wrapper .pivot-btn-success {\n    font-family:\"Inter\",\"Helvetica Neue\",Helvetica,Arial,sans-serif!important;\n}\n\n@media(max-width:600px){\n    #gateway-pillars-anchor .pivot-assessment-card.pivot-assessment-premium{min-height:0!important}\n    .pivot-assessment-premium-top{align-items:flex-start;flex-direction:column}\n}\n\n\n\/* =======================================================\n   v2.16.55 \u2014 MOBILE CAREER SCROLL + FONT LOCK\n   Phone-only layout repair. Desktop\/tablet scoring and logic unchanged.\n   ======================================================= *\/\n@media (max-width: 600px) {\n    \/* Give the Career Explorer enough breathing room without wasting width. *\/\n    #gateway-pillars-anchor .pivot-career-explorer-card {\n        padding: 20px 16px 22px !important;\n        overflow: visible !important;\n    }\n\n    #gateway-pillars-anchor .pivot-career-explorer-heading {\n        align-items: center !important;\n        gap: 9px !important;\n        margin-bottom: 10px !important;\n    }\n\n    #gateway-pillars-anchor .pivot-career-explorer-heading h3 {\n        min-width: 0 !important;\n        font-size: 1.45rem !important;\n        line-height: 1.12 !important;\n    }\n\n    #gateway-pillars-anchor .pivot-career-explorer-icon {\n        flex: 0 0 auto !important;\n        font-size: 1.55rem !important;\n    }\n\n    #gateway-pillars-anchor .pivot-career-explorer-card > p {\n        margin-bottom: 16px !important;\n        font-size: .91rem !important;\n        line-height: 1.55 !important;\n    }\n\n    \/* Inputs cannot wrap placeholder text, so keep the mobile prompt compact. *\/\n    #gateway-pillars-anchor .pivot-career-search-input {\n        width: 100% !important;\n        min-width: 0 !important;\n        padding: 13px 14px !important;\n        margin-bottom: 12px !important;\n        font-size: .92rem !important;\n        line-height: 1.2 !important;\n        border-radius: 12px !important;\n    }\n\n    \/* Keep the cleaned stacked-card layout, but contain long occupation lists in a deliberate mobile results viewport. *\/\n    #pivot_career_results_list,\n    #pivot_career_results_list.pivot-career-results-viewport {\n        height: 500px !important;\n        max-height: 62dvh !important;\n        min-height: 360px !important;\n        overflow-x: hidden !important;\n        overflow-y: scroll !important;\n        padding-right: 5px !important;\n        padding-bottom: 8px !important;\n        margin-right: -2px !important;\n        scroll-behavior: smooth !important;\n        overscroll-behavior: contain !important;\n        -webkit-overflow-scrolling: touch !important;\n        touch-action: pan-y !important;\n        scrollbar-width: thin !important;\n        scrollbar-color: #002FA7 #eef3ff !important;\n        position: relative !important;\n        isolation: isolate !important;\n    }\n\n    #pivot_career_results_list::-webkit-scrollbar {\n        width: 6px !important;\n    }\n\n    #pivot_career_results_list::-webkit-scrollbar-track {\n        background: #eef3ff !important;\n        border-radius: 999px !important;\n    }\n\n    #pivot_career_results_list::-webkit-scrollbar-thumb {\n        background: #002FA7 !important;\n        border-radius: 999px !important;\n    }\n\n    \/* Result cards become one clean vertical reading order on phones. *\/\n    #pivot_career_results_list .pivot-career-item {\n        display: flex !important;\n        flex-direction: column !important;\n        align-items: stretch !important;\n        justify-content: flex-start !important;\n        gap: 14px !important;\n        width: 100% !important;\n        min-width: 0 !important;\n        padding: 17px 15px !important;\n        margin-top: 12px !important;\n        overflow: hidden !important;\n        transform: none !important;\n    }\n\n    #pivot_career_results_list .pivot-career-item:hover {\n        transform: none !important;\n    }\n\n    #pivot_career_results_list .pivot-career-item > div {\n        width: 100% !important;\n        min-width: 0 !important;\n    }\n\n    #pivot_career_results_list .pivot-career-item > div > div:first-child {\n        margin-bottom: 10px !important;\n        font-size: 1.05rem !important;\n        line-height: 1.28 !important;\n        overflow-wrap: break-word !important;\n    }\n\n    \/* Each alignment figure gets its own readable row instead of narrow wrapping pills. *\/\n    #pivot_career_results_list .metric-pill-combined,\n    #pivot_career_results_list .metric-pill-cap,\n    #pivot_career_results_list .metric-pill-pref,\n    #pivot_career_results_list .metric-pill-interest,\n    #pivot_career_results_list .metric-pill-style {\n        display: block !important;\n        width: 100% !important;\n        max-width: 100% !important;\n        min-width: 0 !important;\n        padding: 8px 10px !important;\n        border-radius: 9px !important;\n        font-size: .76rem !important;\n        line-height: 1.32 !important;\n        white-space: normal !important;\n        overflow-wrap: break-word !important;\n        text-transform: none !important;\n        letter-spacing: 0 !important;\n    }\n\n    #pivot_career_results_list .pivot-career-free-badge {\n        display: flex !important;\n        align-items: center !important;\n        justify-content: center !important;\n        align-self: stretch !important;\n        width: 100% !important;\n        max-width: 100% !important;\n        min-height: 46px !important;\n        padding: 11px 14px !important;\n        border-radius: 11px !important;\n        font-size: .78rem !important;\n        line-height: 1.2 !important;\n        text-align: center !important;\n        white-space: normal !important;\n    }\n\n    \/* Career detail view: stack controls and keep every element inside the viewport. *\/\n    .pivot-career-detail-back .pivot-btn-secondary,\n    .pivot-career-detail-nav .pivot-btn-secondary,\n    .pivot-career-detail-nav .pivot-btn-accent {\n        width: 100% !important;\n        max-width: 100% !important;\n        justify-content: center !important;\n        text-align: center !important;\n    }\n\n    .pivot-career-detail-nav {\n        display: grid !important;\n        grid-template-columns: 1fr 1fr !important;\n        gap: 10px !important;\n        width: 100% !important;\n    }\n\n    .pivot-career-detail-nav-bottom {\n        padding-top: 18px !important;\n        margin-top: 28px !important;\n    }\n\n    .pivot-career-detail-card {\n        padding: 20px 16px !important;\n        overflow: visible !important;\n    }\n\n    .pivot-career-detail-card > h2 {\n        font-size: 1.65rem !important;\n        line-height: 1.15 !important;\n        overflow-wrap: break-word !important;\n    }\n\n    .pivot-career-detail-card .metric-pill-combined,\n    .pivot-career-detail-card .metric-pill-cap,\n    .pivot-career-detail-card .metric-pill-pref,\n    .pivot-career-detail-card .metric-pill-interest,\n    .pivot-career-detail-card .metric-pill-style {\n        display: block !important;\n        width: 100% !important;\n        max-width: 100% !important;\n        padding: 9px 11px !important;\n        font-size: .82rem !important;\n        line-height: 1.35 !important;\n        white-space: normal !important;\n        overflow-wrap: break-word !important;\n    }\n\n    .pivot-career-detail-card .pivot-region-select {\n        width: 100% !important;\n        max-width: 100% !important;\n    }\n}\n\n@media (max-width: 390px) {\n    .pivot-career-detail-nav {\n        grid-template-columns: 1fr !important;\n    }\n}\n\n<\/style>\n\n\n<style id=\"pivot-dashboard-v2-6-free-access-polish\">\n.pivot-cloud-card-heading{\n    display:flex;\n    align-items:center;\n    justify-content:center;\n    gap:10px;\n    margin-bottom:10px;\n    flex-wrap:wrap;\n}\n.pivot-free-access-pill{\n    display:inline-flex;\n    align-items:center;\n    justify-content:center;\n    padding:5px 9px;\n    border-radius:999px;\n    background:#dcfce7;\n    color:#166534!important;\n    border:1px solid #bbf7d0;\n    font-size:.6rem!important;\n    line-height:1!important;\n    font-weight:900!important;\n    letter-spacing:.065em!important;\n    text-transform:uppercase!important;\n}\n.pivot-free-wordcloud-card{\n    border-color:#e8dccb!important;\n    box-shadow:0 12px 30px rgba(15,23,42,.06)!important;\n}\n<\/style>\n\n\n<style id=\"pivot-dashboard-v2-7-premium-visual-system\">\n\/* =========================================================\n   PIVOT DASHBOARD v2.7 \u2014 PREMIUM VISUAL SYSTEM\n   ========================================================= *\/\n\n\/* Shared premium lock visual *\/\n.pivot-premium-lock-visual{\n    width:70px;\n    height:70px;\n    flex:0 0 70px;\n    border-radius:22px;\n    display:grid;\n    place-items:center;\n    background:linear-gradient(145deg,#fff7f0,#ffeadb);\n    border:1px solid #efc5a7;\n    box-shadow:\n        0 12px 30px rgba(180,83,9,.13),\n        inset 0 1px 0 rgba(255,255,255,.9);\n}\n.pivot-premium-lock-visual svg{\n    width:38px;\n    height:38px;\n    fill:none;\n    stroke:#c65d20;\n    stroke-width:3.4;\n    stroke-linecap:round;\n    stroke-linejoin:round;\n}\n.pivot-premium-lock-small{\n    width:48px;\n    height:48px;\n    flex-basis:48px;\n    border-radius:15px;\n}\n.pivot-premium-lock-small svg{\n    width:27px;\n    height:27px;\n}\n\n\/* The two locked word-cloud profile cards now use exactly the same design. *\/\n#gateway-pillars-anchor .pivot-premium-wordcloud-card{\n    min-height:250px!important;\n    height:100%!important;\n    padding:22px!important;\n    border:1px solid #ead9ca!important;\n    border-top:5px solid #c65d20!important;\n    background:\n        radial-gradient(circle at 100% 0%,rgba(198,93,32,.08),transparent 31%),\n        linear-gradient(160deg,#fff 0%,#fffdf9 100%)!important;\n    box-shadow:0 16px 38px rgba(15,23,42,.075)!important;\n    overflow:hidden!important;\n}\n#gateway-pillars-anchor .pivot-premium-wordcloud-card::before{\n    display:none!important;\n}\n.pivot-premium-wordcloud-teaser{\n    width:100%;\n    min-height:205px;\n    display:flex;\n    flex-direction:column;\n    align-items:center;\n    justify-content:center;\n    gap:11px;\n    padding:8px 12px;\n    text-align:center;\n    filter:none!important;\n    opacity:1!important;\n}\n.pivot-premium-wordcloud-teaser h3{\n    margin:2px 0 0!important;\n    color:#0f172a!important;\n    font-family:\"Poppins\",\"Inter\",sans-serif!important;\n    font-size:1.25rem!important;\n    line-height:1.22!important;\n    font-weight:850!important;\n    letter-spacing:-.01em!important;\n    word-spacing:.06em!important;\n}\n.pivot-premium-wordcloud-teaser p{\n    max-width:330px!important;\n    margin:0!important;\n    color:#64748b!important;\n    font-size:.82rem!important;\n    line-height:1.55!important;\n    font-weight:500!important;\n}\n.pivot-premium-unlocked-heading h3{\n    color:#0f172a!important;\n    margin:0 0 10px!important;\n    font-size:1.3rem!important;\n    font-weight:800!important;\n    text-align:center!important;\n}\n\n\/* LOCKED ASSESSMENT CARDS:\n   reset the old compact-card selectors completely. *\/\n#gateway-pillars-anchor .pivot-assessment-grid .pivot-assessment-card.pivot-assessment-premium{\n    height:auto!important;\n    min-height:300px!important;\n    padding:20px 20px 18px!important;\n    display:flex!important;\n    flex-direction:column!important;\n    justify-content:flex-start!important;\n    overflow:hidden!important;\n    opacity:1!important;\n    filter:none!important;\n    border:1px solid #e8d6c7!important;\n    border-top:5px solid #c65d20!important;\n    background:\n        radial-gradient(circle at 100% 0%,rgba(198,93,32,.09),transparent 30%),\n        linear-gradient(155deg,#fff 0%,#fffdfa 100%)!important;\n    box-shadow:0 15px 36px rgba(15,23,42,.075)!important;\n}\n\n\/* Kill the older blue accent line on locked Premium cards. *\/\n#gateway-pillars-anchor .pivot-assessment-grid .pivot-assessment-card.pivot-assessment-premium::before{\n    display:none!important;\n}\n\n\/* Prevent the old nth-child compact rules changing the new Premium layout. *\/\n#gateway-pillars-anchor .pivot-assessment-grid .pivot-assessment-card.pivot-assessment-premium > div,\n#gateway-pillars-anchor .pivot-assessment-grid .pivot-assessment-card.pivot-assessment-premium > h3,\n#gateway-pillars-anchor .pivot-assessment-grid .pivot-assessment-card.pivot-assessment-premium > p{\n    flex:none!important;\n    min-height:0!important;\n    height:auto!important;\n    padding-left:0!important;\n    padding-right:0!important;\n    filter:none!important;\n    opacity:1!important;\n    transform:none!important;\n}\n\n#gateway-pillars-anchor .pivot-assessment-grid .pivot-assessment-card.pivot-assessment-premium:hover{\n    transform:translateY(-5px)!important;\n    border-color:#dcb99e!important;\n    box-shadow:0 24px 48px rgba(15,23,42,.12)!important;\n}\n\n.pivot-assessment-premium-top{\n    width:100%;\n    display:flex!important;\n    align-items:center!important;\n    justify-content:space-between!important;\n    gap:10px!important;\n    margin:0 0 16px!important;\n}\n.pivot-assessment-question-count{\n    color:#7c6f63!important;\n    font-size:.68rem!important;\n    line-height:1.2!important;\n    font-weight:750!important;\n    white-space:nowrap;\n}\n\n.pivot-assessment-lock-row{\n    width:100%;\n    display:flex!important;\n    align-items:center!important;\n    gap:11px!important;\n    margin:0 0 14px!important;\n}\n.pivot-assessment-lock-row > span{\n    color:#8a7565!important;\n    font-size:.7rem!important;\n    line-height:1.35!important;\n    font-weight:700!important;\n}\n\n#gateway-pillars-anchor .pivot-assessment-grid .pivot-assessment-card.pivot-assessment-premium .pivot-assessment-premium-title{\n    min-height:0!important;\n    margin:0 0 9px!important;\n    color:#0f172a!important;\n    font-family:\"Poppins\",\"Inter\",sans-serif!important;\n    font-size:1.08rem!important;\n    line-height:1.28!important;\n    font-weight:850!important;\n    letter-spacing:-.008em!important;\n    word-spacing:.055em!important;\n    white-space:normal!important;\n    overflow:visible!important;\n    text-overflow:clip!important;\n}\n\n#gateway-pillars-anchor .pivot-assessment-grid .pivot-assessment-card.pivot-assessment-premium .pivot-assessment-premium-desc{\n    margin:0 0 16px!important;\n    color:#64748b!important;\n    font-size:.79rem!important;\n    line-height:1.55!important;\n    font-weight:500!important;\n    white-space:normal!important;\n    overflow:visible!important;\n}\n\n#gateway-pillars-anchor .pivot-assessment-grid .pivot-assessment-card.pivot-assessment-premium .pivot-assessment-premium-footer{\n    width:100%;\n    margin:auto 0 0!important;\n    padding:13px 0 0!important;\n    border-top:1px solid #efe4da!important;\n    display:flex!important;\n    align-items:center!important;\n    justify-content:flex-start!important;\n}\n.pivot-assessment-premium-footer strong{\n    color:#b84f16!important;\n    font-size:.76rem!important;\n    line-height:1.25!important;\n    font-weight:850!important;\n}\n\n\/* Never allow a legacy locked-card visual effect to blur Premium content. *\/\n#gateway-pillars-anchor .locked-card,\n#gateway-pillars-anchor .locked-card *,\n#gateway-pillars-anchor .pivot-premium-wordcloud-card,\n#gateway-pillars-anchor .pivot-premium-wordcloud-card *{\n    filter:none!important;\n    -webkit-filter:none!important;\n    opacity:1!important;\n    text-shadow:none!important;\n}\n\n\/* Premium pill is shared by profile and assessment cards. *\/\n#gateway-pillars-anchor .pivot-premium-pill{\n    background:#c65d20!important;\n    color:#fff!important;\n    border:0!important;\n}\n\n\/* Small screens *\/\n@media(max-width:850px){\n    #gateway-pillars-anchor .pivot-assessment-grid .pivot-assessment-card.pivot-assessment-premium{\n        min-height:270px!important;\n    }\n}\n@media(max-width:550px){\n    #gateway-pillars-anchor .pivot-premium-wordcloud-card{\n        min-height:230px!important;\n    }\n    #gateway-pillars-anchor .pivot-assessment-grid .pivot-assessment-card.pivot-assessment-premium{\n        min-height:0!important;\n        padding:18px!important;\n    }\n    .pivot-assessment-premium-top{\n        align-items:flex-start!important;\n        flex-direction:column!important;\n    }\n}\n<\/style>\n\n\n<script id=\"pivot-dashboard-v2-8-premium-route-normalizer\">\n(function(){\n    \"use strict\";\n\n    const PREMIUM_URL = window.PIVOT_PREMIUM_URL || new URL('premium-upgrade\/', window.pivotGetSiteBaseUrl ? window.pivotGetSiteBaseUrl() : window.location.origin + '\/').href;\n\n    function cleanDuplicatePremiumPills(root){\n        if(!root || !root.querySelectorAll) return;\n\n        root.querySelectorAll(\n            \".pivot-assessment-premium, .pivot-premium-wordcloud-card\"\n        ).forEach(card => {\n            const exactPremiumNodes = Array.from(card.querySelectorAll(\"span,div,strong,b\"))\n                .filter(el => {\n                    if(el.classList.contains(\"pivot-premium-pill\")) return false;\n                    if(el.children.length > 0) return false;\n                    return (el.textContent || \"\").trim().toUpperCase() === \"PREMIUM\";\n                });\n\n            exactPremiumNodes.forEach(el => {\n                el.style.setProperty(\"display\",\"none\",\"important\");\n                el.setAttribute(\"aria-hidden\",\"true\");\n            });\n        });\n    }\n\n    function enforcePremiumRoutes(root){\n        if(!root || !root.querySelectorAll) return;\n\n        root.querySelectorAll(\"[data-pivot-premium-link]\").forEach(el => {\n            el.setAttribute(\"data-pivot-premium-link\", PREMIUM_URL);\n        });\n    }\n\n    function refreshPremiumUI(root){\n        cleanDuplicatePremiumPills(root || document);\n        enforcePremiumRoutes(root || document);\n    }\n\n    \/* Capture phase deliberately runs before any legacy bubble-phase click\n       handlers that may still point to the former Premium registration URL. *\/\n    document.addEventListener(\"click\", function(event){\n        const target = event.target.closest(\"[data-pivot-premium-link]\");\n        if(!target) return;\n\n        event.preventDefault();\n        event.stopPropagation();\n        if(typeof event.stopImmediatePropagation === \"function\"){\n            event.stopImmediatePropagation();\n        }\n        window.location.assign(PREMIUM_URL);\n    }, true);\n\n    function start(){\n        refreshPremiumUI(document);\n\n        const observer = new MutationObserver(mutations => {\n            mutations.forEach(mutation => {\n                mutation.addedNodes.forEach(node => {\n                    if(node.nodeType === Node.ELEMENT_NODE){\n                        refreshPremiumUI(node);\n                    }\n                });\n            });\n            \/* Also clean siblings\/legacy badges inserted into an existing card. *\/\n            refreshPremiumUI(document);\n        });\n\n        observer.observe(document.body, {\n            childList:true,\n            subtree:true\n        });\n\n        window.pivotRefreshPremiumUI = function(){\n            refreshPremiumUI(document);\n        };\n    }\n\n    if(document.readyState === \"loading\"){\n        document.addEventListener(\"DOMContentLoaded\", start, {once:true});\n    }else{\n        start();\n    }\n})();\n<\/script>\n\n\n<style id=\"pivot-dashboard-v2-8-single-premium-pill\">\n\/* One premium status pill only *\/\n#gateway-pillars-anchor .pivot-assessment-premium .pivot-premium-pill,\n#gateway-pillars-anchor .pivot-premium-wordcloud-card .pivot-premium-pill{\n    position:static!important;\n    margin:0!important;\n    min-width:92px;\n    padding:7px 13px!important;\n    background:#e65308!important;\n    color:#fff!important;\n    box-shadow:0 7px 18px rgba(230,83,8,.22)!important;\n    font-size:.64rem!important;\n    letter-spacing:.065em!important;\n    text-transform:uppercase!important;\n}\n\n\/* Locked profile cards: centre the one premium pill *\/\n#gateway-pillars-anchor .pivot-premium-wordcloud-teaser > .pivot-premium-pill{\n    align-self:center!important;\n}\n\n\/* Locked assessment cards: keep the one premium pill on the left, question\n   count on the right. Any old direct-child orange access badge is suppressed\n   by the v2.8 runtime normalizer as a second safety layer. *\/\n#gateway-pillars-anchor .pivot-assessment-premium-top{\n    position:relative!important;\n    z-index:4!important;\n}\n<\/style>\n\n\n<style id=\"pivot-dashboard-v2-9-free-first-order\">\n\/* V2.10 \u2014 all Free assessments occupy the first desktop row.\n   Premium cards begin cleanly on the next row. *\/\n@media (min-width: 901px){\n    #gateway-pillars-anchor .pivot-assessment-grid{\n        align-items:stretch;\n    }\n}\n<\/style>\n\n\n<style id=\"pivot-dashboard-v2-12-assessment-order-css\">\n\/* Persistent free-first ordering. These selectors survive later dashboard redraws. *\/\n#gateway-pillars-anchor .pivot-assessment-grid > .pivot-assessment-card[data-assessment-key=\"work preferences\"]{\n    order:1!important;\n}\n#gateway-pillars-anchor .pivot-assessment-grid > .pivot-assessment-card[data-assessment-key=\"21st century skills\"]{\n    order:2!important;\n}\n#gateway-pillars-anchor .pivot-assessment-grid > .pivot-assessment-card[data-assessment-key=\"employability skills\"]{\n    order:3!important;\n}\n#gateway-pillars-anchor .pivot-assessment-grid > .pivot-assessment-card[data-assessment-key=\"basic skills assessment\"]{\n    order:4!important;\n}\n\n    }\n<\/style>\n\n\n<script id=\"pivot-dashboard-v2-12-assessment-order-guard\">\n(function(){\n    \"use strict\";\n\n    \/*\n     * Why this exists:\n     * The dashboard performs a later asynchronous data sync and calls\n     * renderDashboard() again. A subsequent renderer\/data source can restore\n     * the original master-store order after the first correct paint.\n     *\n     * This guard applies the intended order to the ACTUAL DOM every time the\n     * assessment grid is created or replaced, so the layout cannot switch back.\n     *\/\n    const FREE_ORDER = [\n        \"what i value most\",\n        \"21st century skills\",\n        \"employability skills\",\n        \"basic skills assessment\"\n    ];\n\n    const KEY_ALIASES = {\n        \"work preferences\": \"what i value most\",\n        \"what i value most\": \"what i value most\",\n        \"21st century skills\": \"21st century skills\",\n        \"employability skills\": \"employability skills\",\n        \"basic skills assessment\": \"basic skills assessment\"\n    };\n\n    function normalise(value){\n        return String(value || \"\")\n            .replace(\/\\s+\/g, \" \")\n            .trim()\n            .toLowerCase();\n    }\n\n    function getAssessmentIdentity(card){\n        const rawKey = normalise(card.getAttribute(\"data-assessment-key\"));\n        if(rawKey && KEY_ALIASES[rawKey]){\n            return KEY_ALIASES[rawKey];\n        }\n\n        \/* Fallback for any legacy\/alternate renderer that does not include\n           the data-assessment-key attribute. *\/\n        const heading = card.querySelector(\n            \".pivot-assessment-premium-title, h3, h4\"\n        );\n        return normalise(heading ? heading.textContent : \"\");\n    }\n\n    function applyAssessmentOrder(){\n        const grid = document.querySelector(\n            \"#gateway-pillars-anchor .pivot-assessment-grid\"\n        );\n        if(!grid) return;\n\n        const cards = Array.from(\n            grid.querySelectorAll(\":scope > .pivot-assessment-card\")\n        );\n        if(!cards.length) return;\n\n        let premiumIndex = 0;\n\n        cards.forEach(card => {\n            const identity = getAssessmentIdentity(card);\n            const freeRank = FREE_ORDER.indexOf(identity);\n\n            if(freeRank !== -1){\n                card.style.setProperty(\"order\", String(freeRank + 1), \"important\");\n                card.setAttribute(\"data-pivot-display-order\", String(freeRank + 1));\n                card.setAttribute(\"data-pivot-free-first\", \"true\");\n            }else{\n                premiumIndex += 1;\n                const order = 100 + premiumIndex;\n                card.style.setProperty(\"order\", String(order), \"important\");\n                card.setAttribute(\"data-pivot-display-order\", String(order));\n                card.removeAttribute(\"data-pivot-free-first\");\n            }\n        });\n    }\n\n    function startOrderGuard(){\n        applyAssessmentOrder();\n\n        const anchor = document.getElementById(\"gateway-pillars-anchor\");\n        if(!anchor) return;\n\n        let scheduled = false;\n        const scheduleApply = function(){\n            if(scheduled) return;\n            scheduled = true;\n            requestAnimationFrame(() => {\n                scheduled = false;\n                applyAssessmentOrder();\n            });\n        };\n\n        const observer = new MutationObserver(scheduleApply);\n        observer.observe(anchor, {\n            childList: true,\n            subtree: true\n        });\n\n        \/*\n         * Short boot-time safety window for plugin\/shortcode scripts that\n         * redraw after network\/CSV loading without producing a predictable\n         * mutation sequence.\n         *\/\n        let passes = 0;\n        const timer = setInterval(() => {\n            applyAssessmentOrder();\n            passes += 1;\n            if(passes >= 20) clearInterval(timer);\n        }, 500);\n\n        window.pivotApplyAssessmentDisplayOrder = applyAssessmentOrder;\n    }\n\n    if(document.readyState === \"loading\"){\n        document.addEventListener(\"DOMContentLoaded\", startOrderGuard, {once:true});\n    }else{\n        startOrderGuard();\n    }\n})();\n<\/script>\n\n<script>\n\/* =========================================================\n   PIVOT v2.4 \u2014 LEGACY DISPLAY LABEL NORMALIZER\n   Keeps the internal pillar name \"Work Context\" unchanged,\n   while ensuring the old public-facing label never appears.\n   ========================================================= *\/\n(function () {\n    \"use strict\";\n\n    const legacyLabel = [\"My\", \"Perfect\", \"Setup\"].join(\" \");\n    const currentLabel = \"My Context & Environment\";\n\n    function replaceLegacyLabel(root) {\n        if (!root) return;\n\n        \/* Replace visible text nodes without touching script\/style source. *\/\n        const walker = document.createTreeWalker(\n            root,\n            NodeFilter.SHOW_TEXT,\n            {\n                acceptNode(node) {\n                    const parent = node.parentElement;\n                    if (!parent) return NodeFilter.FILTER_REJECT;\n                    if (parent.closest(\"script, style\")) return NodeFilter.FILTER_REJECT;\n                    return node.nodeValue && node.nodeValue.includes(legacyLabel)\n                        ? NodeFilter.FILTER_ACCEPT\n                        : NodeFilter.FILTER_REJECT;\n                }\n            }\n        );\n\n        const matches = [];\n        while (walker.nextNode()) matches.push(walker.currentNode);\n\n        matches.forEach(node => {\n            node.nodeValue = node.nodeValue.split(legacyLabel).join(currentLabel);\n        });\n\n        \/* Also clean accessible\/tool-tip labels if an older component emits them. *\/\n        if (root.querySelectorAll) {\n            const attributeSelector = \"[\" + \"title],[\" + \"aria-label],[\" + \"data-title]\";\n            root.querySelectorAll(attributeSelector).forEach(el => {\n                [\"title\", \"aria-label\", \"data-title\"].forEach(attr => {\n                    const value = el.getAttribute(attr);\n                    if (value && value.includes(legacyLabel)) {\n                        el.setAttribute(attr, value.split(legacyLabel).join(currentLabel));\n                    }\n                });\n            });\n        }\n    }\n\n    function startNormalizer() {\n        replaceLegacyLabel(document.body);\n\n        const observer = new MutationObserver(mutations => {\n            mutations.forEach(mutation => {\n                if (mutation.type === \"characterData\") {\n                    const node = mutation.target;\n                    if (\n                        node &&\n                        node.nodeValue &&\n                        node.nodeValue.includes(legacyLabel) &&\n                        node.parentElement &&\n                        !node.parentElement.closest(\"script, style\")\n                    ) {\n                        node.nodeValue = node.nodeValue.split(legacyLabel).join(currentLabel);\n                    }\n                }\n\n                mutation.addedNodes.forEach(node => {\n                    if (node.nodeType === Node.TEXT_NODE) {\n                        if (\n                            node.nodeValue &&\n                            node.nodeValue.includes(legacyLabel) &&\n                            node.parentElement &&\n                            !node.parentElement.closest(\"script, style\")\n                        ) {\n                            node.nodeValue = node.nodeValue.split(legacyLabel).join(currentLabel);\n                        }\n                    } else if (node.nodeType === Node.ELEMENT_NODE) {\n                        replaceLegacyLabel(node);\n                    }\n                });\n            });\n        });\n\n        observer.observe(document.body, {\n            childList: true,\n            subtree: true,\n            characterData: true\n        });\n\n        window.pivotNormalizeLegacyLabels = function () {\n            replaceLegacyLabel(document.body);\n        };\n    }\n\n    if (document.readyState === \"loading\") {\n        document.addEventListener(\"DOMContentLoaded\", startNormalizer, { once: true });\n    } else {\n        startNormalizer();\n    }\n})();\n<\/script>\n\n<script id=\"pivot-dashboard-v2-16-11-premium-dom-reconciler\">\n(function(){\n    \"use strict\";\n\n    \/*\n     * PIVOT v2.16.11 \u2014 Authoritative Premium DOM Reconciler\n     *\n     * The server-side Early Access Bridge is authoritative. If an older\/later\n     * asynchronous render inserts locked Premium assessment markup after the\n     * correct access tier is already known, rebuild the dashboard immediately\n     * from the authoritative state.\n     *\n     * This does nothing for Free\/Guest users.\n     *\/\n    let reconcileScheduled = false;\n    let reconcileRunning = false;\n\n    function hasAuthoritativePremiumAccess(){\n        return (typeof window.pivotHasAuthoritativePremiumAccess === \"function\")\n            ? window.pivotHasAuthoritativePremiumAccess()\n            : false;\n    }\n\n    function hasStaleLockedPremiumUi(){\n        const root = document.getElementById(\"gateway-pillars-anchor\");\n        if(!root) return false;\n\n        return !!root.querySelector(\n            \".pivot-assessment-card.locked-card,\" +\n            \".pivot-assessment-card.pivot-assessment-premium,\" +\n            \".pivot-assessment-card[data-assessment-access='premium'],\" +\n            \".pivot-premium-wordcloud-teaser\"\n        );\n    }\n\n    function reconcile(){\n        reconcileScheduled = false;\n\n        if(reconcileRunning) return;\n        if(!hasAuthoritativePremiumAccess()) return;\n        if(!hasStaleLockedPremiumUi()) return;\n        if(typeof window.renderDashboard !== \"function\") return;\n\n        reconcileRunning = true;\n\n        try{\n            window.renderDashboard();\n        }finally{\n            requestAnimationFrame(function(){\n                reconcileRunning = false;\n            });\n        }\n    }\n\n    function scheduleReconcile(){\n        if(reconcileScheduled) return;\n        reconcileScheduled = true;\n        requestAnimationFrame(reconcile);\n    }\n\n    function start(){\n        scheduleReconcile();\n\n        const target = document.getElementById(\"gateway-pillars-anchor\") || document.body;\n        if(!target) return;\n\n        const observer = new MutationObserver(function(){\n            if(hasAuthoritativePremiumAccess()){\n                scheduleReconcile();\n            }\n        });\n\n        observer.observe(target, {\n            childList: true,\n            subtree: true\n        });\n\n        window.pivotReconcilePremiumAssessmentAccess = scheduleReconcile;\n    }\n\n    if(document.readyState === \"loading\"){\n        document.addEventListener(\"DOMContentLoaded\", start, {once:true});\n    }else{\n        start();\n    }\n})();\n<\/script>\n\n<script id=\"pivot-dashboard-v2-16-13-legacy-lock-visual-scrubber\">\n(function(){\n    \"use strict\";\n\n    \/*\n     * PIVOT v2.16.13 \u2014 Legacy Premium Lock Visual Scrubber\n     *\n     * Some older site code can add the obsolete `pivot-card-locked` class and\n     * an orange PREMIUM badge after the current Dashboard renderer has already\n     * marked the card as accessible (`data-assessment-access=\"free\"`).\n     *\n     * For authoritative Premium\/Corporate\/Admin users only, remove those stale\n     * visual artefacts from cards that are already accessible. Genuine locked\n     * cards for Free\/Guest users are untouched.\n     *\/\n\n    function hasAuthoritativePremiumAccess(){\n        if (typeof window.pivotHasAuthoritativePremiumAccess === \"function\") {\n            return !!window.pivotHasAuthoritativePremiumAccess();\n        }\n\n        const state = window.PIVOT_EARLY_ACCESS_STATE;\n        if (!state || !state.tier) return false;\n\n        return [\"premium\",\"corporate\",\"admin\",\"administrator\"].includes(\n            String(state.tier).trim().toLowerCase()\n        );\n    }\n\n    function isAccessibleAssessmentCard(card){\n        if (!card || !card.matches) return false;\n        if (!card.matches(\".pivot-assessment-card\")) return false;\n\n        const access = String(card.dataset.assessmentAccess || \"\").toLowerCase();\n\n        \/\/ Current renderer explicitly marks accessible cards as \"free\".\n        if (access === \"free\") return true;\n\n        \/\/ Defensive fallback: an assessment with a normal select-pillar action\n        \/\/ and no current locked-card class is already accessible.\n        const click = card.getAttribute(\"onclick\") || \"\";\n        return (\n            click.includes(\"pivotSelectPillar\") &&\n            !card.classList.contains(\"locked-card\") &&\n            !card.classList.contains(\"pivot-assessment-premium\")\n        );\n    }\n\n    function removeStrayPremiumBadges(card){\n        \/\/ Current locked-card markup uses these classes. They must not survive on\n        \/\/ an accessible Premium\/Admin card.\n        card.querySelectorAll(\n            \".pivot-premium-pill,\" +\n            \".pivot-assessment-premium-top,\" +\n            \".pivot-assessment-lock-row,\" +\n            \".pivot-assessment-premium-footer\"\n        ).forEach(el => el.remove());\n\n        \/\/ Older renderers sometimes inserted a plain direct-child orange badge\n        \/\/ whose only text is PREMIUM.\n        Array.from(card.children).forEach(el => {\n            if (!el || !el.textContent) return;\n            if ((el.textContent || \"\").trim().toUpperCase() !== \"PREMIUM\") return;\n            el.remove();\n        });\n    }\n\n    function scrubCard(card){\n        if (!hasAuthoritativePremiumAccess()) return;\n        if (!isAccessibleAssessmentCard(card)) return;\n\n        card.classList.remove(\n            \"pivot-card-locked\",\n            \"locked-card\",\n            \"pivot-assessment-premium\"\n        );\n\n        card.removeAttribute(\"data-pivot-premium-link\");\n        removeStrayPremiumBadges(card);\n\n        \/\/ Remove inline legacy visual restrictions if an old script applied them.\n        card.style.removeProperty(\"filter\");\n        card.style.removeProperty(\"-webkit-filter\");\n        card.style.removeProperty(\"opacity\");\n        card.style.removeProperty(\"pointer-events\");\n\n        card.querySelectorAll(\"*\").forEach(el => {\n            el.style.removeProperty(\"filter\");\n            el.style.removeProperty(\"-webkit-filter\");\n            el.style.removeProperty(\"opacity\");\n        });\n    }\n\n    function scrub(root){\n        if (!hasAuthoritativePremiumAccess()) return;\n\n        const scope = root && root.querySelectorAll ? root : document;\n\n        if (\n            scope.matches &&\n            scope.matches(\".pivot-assessment-card\")\n        ) {\n            scrubCard(scope);\n        }\n\n        scope.querySelectorAll(\n            \"#gateway-pillars-anchor .pivot-assessment-card\"\n        ).forEach(scrubCard);\n    }\n\n    function start(){\n        scrub(document);\n\n        const root = document.getElementById(\"gateway-pillars-anchor\") || document.body;\n        if (!root) return;\n\n        const observer = new MutationObserver(mutations => {\n            let needsScrub = false;\n\n            for (const mutation of mutations) {\n                if (mutation.type === \"attributes\") {\n                    if (\n                        mutation.attributeName === \"class\" ||\n                        mutation.attributeName === \"data-assessment-access\" ||\n                        mutation.attributeName === \"style\"\n                    ) {\n                        needsScrub = true;\n                        break;\n                    }\n                }\n\n                if (mutation.addedNodes && mutation.addedNodes.length) {\n                    needsScrub = true;\n                    break;\n                }\n            }\n\n            if (needsScrub) {\n                requestAnimationFrame(() => scrub(root));\n            }\n        });\n\n        observer.observe(root, {\n            childList: true,\n            subtree: true,\n            attributes: true,\n            attributeFilter: [\n                \"class\",\n                \"style\",\n                \"data-assessment-access\",\n                \"data-pivot-premium-link\"\n            ]\n        });\n\n        window.pivotScrubLegacyPremiumLockVisuals = function(){\n            scrub(document);\n        };\n    }\n\n    if (document.readyState === \"loading\"){\n        document.addEventListener(\"DOMContentLoaded\", start, {once:true});\n    } else {\n        start();\n    }\n})();\n<\/script>\n\n<style id=\"pivot-dashboard-v2-16-55-final-mobile-guard\">\n\/* =========================================================\n   PIVOT Dashboard v2.16.55 \u2014 FINAL MOBILE CASCADE GUARD\n   ========================================================= *\/\n\n\/* The visible Dashboard page heading is outside #pivot-wrapper on some Elementor layouts.\n   Lock it back to the current PIVOT type system without changing navigation typography. *\/\nbody:has(#pivot-wrapper) .elementor-widget-heading .elementor-heading-title,\nbody:has(#pivot-wrapper) .entry-title,\nbody:has(#pivot-wrapper) .page-title {\n    font-family: \"Poppins\", \"Inter\", \"Helvetica Neue\", Helvetica, Arial, sans-serif !important;\n    font-style: normal !important;\n    text-transform: none !important;\n    letter-spacing: -0.02em !important;\n}\n\n#pivot-wrapper,\n#pivot-wrapper input,\n#pivot-wrapper select,\n#pivot-wrapper textarea,\n#pivot-wrapper button,\n#pivot-wrapper a,\n#pivot-wrapper p,\n#pivot-wrapper li,\n#pivot-wrapper span,\n#pivot-wrapper div {\n    font-family: \"Inter\", \"Helvetica Neue\", Helvetica, Arial, sans-serif !important;\n}\n\n#pivot-wrapper h1,\n#pivot-wrapper h2,\n#pivot-wrapper h3,\n#pivot-wrapper h4,\n#pivot-wrapper h5,\n#pivot-wrapper h6 {\n    font-family: \"Poppins\", \"Inter\", \"Helvetica Neue\", Helvetica, Arial, sans-serif !important;\n}\n\n@media (max-width: 600px) {\n    #pivot_career_results_list,\n    #pivot_career_results_list.pivot-career-results-viewport {\n        height: 500px !important;\n        max-height: 62dvh !important;\n        min-height: 360px !important;\n        overflow-x: hidden !important;\n        overflow-y: scroll !important;\n        -webkit-overflow-scrolling: touch !important;\n        overscroll-behavior-y: contain !important;\n        touch-action: pan-y !important;\n        scrollbar-gutter: stable !important;\n    }\n\n    #pivot_career_results_list .pivot-career-item,\n    #pivot_career_results_list .pivot-career-item * {\n        font-family: \"Inter\", \"Helvetica Neue\", Helvetica, Arial, sans-serif !important;\n    }\n\n    #pivot_career_results_list .pivot-career-item > div > div:first-child {\n        font-family: \"Poppins\", \"Inter\", \"Helvetica Neue\", Helvetica, Arial, sans-serif !important;\n        font-weight: 700 !important;\n    }\n}\n<\/style>\n<!-- =========================================================\n     PIVOT Dashboard v2.16.60\n     AUTO-EXPANDING DEVELOPMENT TEXTAREAS + SAVE COMPATIBILITY\n     - Expands typed and voice-transcribed development actions\n     - Expands completion reflections\n     - Expands existing action\/reflection editor fields\n     - Preserves the existing modal scrolling architecture\n     ========================================================= -->\n\n<style id=\"pivot-development-autogrow-v2-16-60\">\n    textarea[data-pivot-global-action-voice-target=\"1\"],\n    #action_details_input,\n    #action_reflection_input,\n    #pivot-action-editor-text,\n    #pivot-action-editor-reflection {\n        box-sizing: border-box !important;\n        overflow-y: hidden !important;\n        resize: none !important;\n        max-height: none !important;\n    }\n<\/style>\n\n<script id=\"pivot-development-autogrow-v2-16-60\">\n(function () {\n\n    if (window.pivotDevelopmentAutoGrowV21660Installed) {\n        return;\n    }\n\n    window.pivotDevelopmentAutoGrowV21660Installed = true;\n\n    const PIVOT_AUTOGROW_SELECTOR = [\n        'textarea[data-pivot-global-action-voice-target=\"1\"]',\n        '#action_details_input',\n        '#action_reflection_input',\n        '#pivot-action-editor-text',\n        '#pivot-action-editor-reflection'\n    ].join(',');\n\n    window.pivotIsDevelopmentTextarea = function (element) {\n        return !!(\n            element &&\n            element.tagName === 'TEXTAREA' &&\n            element.matches(PIVOT_AUTOGROW_SELECTOR)\n        );\n    };\n\n    window.pivotGetDevelopmentTextareaMinHeight = function (textarea) {\n\n        if (!textarea) {\n            return 0;\n        }\n\n        const saved = parseFloat(\n            textarea.dataset.pivotAutoGrowMinHeight || ''\n        );\n\n        if (Number.isFinite(saved) && saved > 0) {\n            return saved;\n        }\n\n        const styles = window.getComputedStyle(textarea);\n\n        let minimum = parseFloat(styles.minHeight) || 0;\n\n        const rect = textarea.getBoundingClientRect();\n\n        if (rect.height > 0) {\n            minimum = Math.max(minimum, rect.height);\n        }\n\n        \/*\n         * Hidden modal textareas can report zero height.\n         * In that case calculate a sensible starting height\n         * from their existing rows setting.\n         *\/\n        if (!minimum) {\n\n            const rows = Math.max(\n                1,\n                parseInt(textarea.getAttribute('rows') || '3', 10)\n            );\n\n            const fontSize =\n                parseFloat(styles.fontSize) || 16;\n\n            const lineHeight =\n                parseFloat(styles.lineHeight) || (fontSize * 1.5);\n\n            const paddingTop =\n                parseFloat(styles.paddingTop) || 0;\n\n            const paddingBottom =\n                parseFloat(styles.paddingBottom) || 0;\n\n            const borderTop =\n                parseFloat(styles.borderTopWidth) || 0;\n\n            const borderBottom =\n                parseFloat(styles.borderBottomWidth) || 0;\n\n            minimum = Math.ceil(\n                (rows * lineHeight) +\n                paddingTop +\n                paddingBottom +\n                borderTop +\n                borderBottom\n            );\n        }\n\n        textarea.dataset.pivotAutoGrowMinHeight =\n            String(minimum);\n\n        return minimum;\n    };\n\n    window.pivotAutoSizeDevelopmentTextarea = function (textarea) {\n\n        if (!window.pivotIsDevelopmentTextarea(textarea)) {\n            return;\n        }\n\n        const minimum =\n            window.pivotGetDevelopmentTextareaMinHeight(textarea);\n\n        const styles =\n            window.getComputedStyle(textarea);\n\n        const borderTop =\n            parseFloat(styles.borderTopWidth) || 0;\n\n        const borderBottom =\n            parseFloat(styles.borderBottomWidth) || 0;\n\n        textarea.style.setProperty(\n            'overflow-y',\n            'hidden',\n            'important'\n        );\n\n        textarea.style.setProperty(\n            'resize',\n            'none',\n            'important'\n        );\n\n        textarea.style.setProperty(\n            'max-height',\n            'none',\n            'important'\n        );\n\n        \/*\n         * Reset first so scrollHeight reflects the full\n         * current contents rather than the previous height.\n         *\/\n        textarea.style.setProperty(\n            'height',\n            'auto',\n            'important'\n        );\n\n        const requiredHeight = Math.max(\n            minimum,\n            textarea.scrollHeight +\n                borderTop +\n                borderBottom\n        );\n\n        textarea.style.setProperty(\n            'height',\n            Math.ceil(requiredHeight) + 'px',\n            'important'\n        );\n    };\n\n    window.pivotAutoSizeDevelopmentTextareas = function () {\n\n        document\n            .querySelectorAll(PIVOT_AUTOGROW_SELECTOR)\n            .forEach(function (textarea) {\n                window.pivotAutoSizeDevelopmentTextarea(\n                    textarea\n                );\n            });\n    };\n\n    \/*\n     * Typing and OpenAI transcripts both pass through\n     * an input event, so both resize immediately.\n     *\/\n    document.addEventListener(\n        'input',\n        function (event) {\n\n            if (\n                window.pivotIsDevelopmentTextarea(\n                    event.target\n                )\n            ) {\n                window.pivotAutoSizeDevelopmentTextarea(\n                    event.target\n                );\n            }\n\n        },\n        true\n    );\n\n    \/*\n     * Also resize when the user enters an existing field.\n     *\/\n    document.addEventListener(\n        'focusin',\n        function (event) {\n\n            if (\n                window.pivotIsDevelopmentTextarea(\n                    event.target\n                )\n            ) {\n                window.pivotAutoSizeDevelopmentTextarea(\n                    event.target\n                );\n            }\n\n        },\n        true\n    );\n\n    let resizeScheduled = false;\n\n    const scheduleResize = function () {\n\n        if (resizeScheduled) {\n            return;\n        }\n\n        resizeScheduled = true;\n\n        window.requestAnimationFrame(function () {\n\n            resizeScheduled = false;\n\n            window.pivotAutoSizeDevelopmentTextareas();\n\n            \/*\n             * A second frame allows newly opened modals\n             * to finish becoming measurable on phones.\n             *\/\n            window.requestAnimationFrame(function () {\n                window.pivotAutoSizeDevelopmentTextareas();\n            });\n\n        });\n    };\n\n    \/*\n     * PIVOT creates and opens several development modals\n     * dynamically. Watch for those changes rather than\n     * modifying their existing working architecture.\n     *\/\n    const startObserver = function () {\n\n        window.pivotAutoSizeDevelopmentTextareas();\n\n        if (!document.body) {\n            return;\n        }\n\n        const observer = new MutationObserver(\n            function (mutations) {\n\n                let shouldResize = false;\n\n                for (const mutation of mutations) {\n\n                    if (\n                        mutation.type === 'childList' &&\n                        mutation.addedNodes.length\n                    ) {\n                        shouldResize = true;\n                        break;\n                    }\n\n                    if (\n                        mutation.type === 'attributes'\n                    ) {\n                        shouldResize = true;\n                        break;\n                    }\n                }\n\n                if (shouldResize) {\n                    scheduleResize();\n                }\n            }\n        );\n\n        observer.observe(\n            document.body,\n            {\n                childList: true,\n                subtree: true,\n                attributes: true,\n                attributeFilter: [\n                    'class',\n                    'style',\n                    'aria-hidden',\n                    'data-pivot-global-action-voice-target'\n                ]\n            }\n        );\n\n        window.pivotDevelopmentAutoGrowObserver =\n            observer;\n    };\n\n    if (document.readyState === 'loading') {\n\n        document.addEventListener(\n            'DOMContentLoaded',\n            startObserver,\n            { once: true }\n        );\n\n    } else {\n\n        startObserver();\n\n    }\n\n})();\n<\/script>\n\n<!-- =========================================================\n     PIVOT Dashboard v2.16.62\n     ACTION FORM TOP RESET\n\n     Surgical UX-only layer on the locked v2.16.60 Dashboard.\n     - Does not touch Journal Vault v2.0 or Flow Supervisor v2.0.\n     - Does not alter action create\/edit\/complete\/save logic.\n     - Preserves the working Back to Dashboard control from v2.16.61.\n     - Strengthens the floating Add New Self-Development Action reset:\n       * resets any internal scrolling element;\n       * resets generic scroll-owning ancestors, not just elements whose\n         class names happen to contain modal\/popup\/dialog;\n       * resets before the form closes;\n       * resets again whenever a fresh opening is detected.\n     ========================================================= -->\n\n<style id=\"pivot-action-flow-ux-v2-16-62\">\n    #pivot-action-manager-modal .pivot-action-manager-back-row {\n        display: flex;\n        align-items: center;\n        justify-content: flex-start;\n        margin: -2px 0 18px;\n        padding-bottom: 14px;\n        border-bottom: 1px solid #e2e8f0;\n    }\n\n    #pivot-action-manager-modal .pivot-action-manager-back {\n        appearance: none !important;\n        display: inline-flex !important;\n        align-items: center !important;\n        justify-content: center !important;\n        gap: 8px !important;\n        min-height: 42px !important;\n        margin: 0 !important;\n        padding: 9px 14px !important;\n        border: 1px solid #c7d2fe !important;\n        border-radius: 10px !important;\n        background: #f5f8ff !important;\n        color: #002FA7 !important;\n        font-family: 'Inter', 'Helvetica Neue', Helvetica, Arial, sans-serif !important;\n        font-size: .82rem !important;\n        font-weight: 800 !important;\n        line-height: 1.2 !important;\n        text-decoration: none !important;\n        cursor: pointer !important;\n        box-shadow: none !important;\n    }\n\n    #pivot-action-manager-modal .pivot-action-manager-back:hover,\n    #pivot-action-manager-modal .pivot-action-manager-back:focus-visible {\n        background: #eaf0ff !important;\n        border-color: #002FA7 !important;\n        color: #001B63 !important;\n        outline: 3px solid rgba(0, 47, 167, .12) !important;\n        outline-offset: 2px !important;\n    }\n\n    @media (max-width: 600px) {\n        #pivot-action-manager-modal .pivot-action-manager-back {\n            width: 100% !important;\n        }\n    }\n<\/style>\n\n<script id=\"pivot-action-flow-ux-v2-16-62\">\n(function () {\n    'use strict';\n\n    if (window.pivotActionFlowUxV21662Installed) {\n        return;\n    }\n\n    window.pivotActionFlowUxV21662Installed = true;\n    window.pivotLastActionManagerTrigger = null;\n\n    \/* ---------------------------------------------------------\n       1. Planned \/ Completed lists\n          PRESERVED FROM THE PASSED v2.16.61 TEST\n       --------------------------------------------------------- *\/\n\n    window.pivotEnsureActionManagerBackButton = function () {\n        const modal = document.getElementById('pivot-action-manager-modal');\n        if (!modal) return false;\n\n        if (modal.querySelector('[data-pivot-action-manager-back=\"1\"]')) {\n            return true;\n        }\n\n        const list = modal.querySelector('#pivot-action-manager-list');\n        if (!list || !list.parentNode) return false;\n\n        const row = document.createElement('div');\n        row.className = 'pivot-action-manager-back-row';\n        row.setAttribute('data-pivot-action-manager-back', '1');\n        row.innerHTML = `\n            <button\n                type=\"button\"\n                class=\"pivot-action-manager-back\"\n                onclick=\"window.pivotReturnToDashboardFromActionManager()\"\n            >\n                <span aria-hidden=\"true\">\u2190<\/span>\n                <span>Back to Dashboard<\/span>\n            <\/button>\n        `;\n\n        list.parentNode.insertBefore(row, list);\n        return true;\n    };\n\n    window.pivotReturnToDashboardFromActionManager = function () {\n        if (typeof window.pivotCloseActionManager === 'function') {\n            window.pivotCloseActionManager();\n        } else {\n            const modal = document.getElementById('pivot-action-manager-modal');\n            if (modal) modal.classList.remove('active');\n        }\n\n        window.requestAnimationFrame(function () {\n            if (\n                window.pivotLastActionManagerTrigger &&\n                document.contains(window.pivotLastActionManagerTrigger)\n            ) {\n                try {\n                    window.pivotLastActionManagerTrigger.focus({\n                        preventScroll: true\n                    });\n                } catch (error) {\n                    try {\n                        window.pivotLastActionManagerTrigger.focus();\n                    } catch (ignore) {}\n                }\n            }\n        });\n    };\n\n    document.addEventListener(\n        'click',\n        function (event) {\n            const trigger =\n                event.target &&\n                event.target.closest\n                    ? event.target.closest(\n                        'button[onclick*=\"pivotOpenActionManager\"], ' +\n                        '.pivot-dev35-activity-item[onclick*=\"pivotOpenActionManager\"]'\n                    )\n                    : null;\n\n            if (trigger) {\n                window.pivotLastActionManagerTrigger = trigger;\n            }\n        },\n        true\n    );\n\n    \/* ---------------------------------------------------------\n       2. Floating + Add New Self-Development Action modal\n          ROBUST TOP RESET v2.16.62\n       --------------------------------------------------------- *\/\n\n    window.pivotGlobalActionModalIsOpen = function (modal) {\n        if (!modal || !modal.isConnected) return false;\n\n        \/*\n         * A hidden ancestor makes the form closed even if the discovered\n         * inner content node itself has ordinary display\/visibility values.\n         *\/\n        let node = modal;\n\n        while (node && node !== document.documentElement) {\n            const style = window.getComputedStyle(node);\n\n            if (\n                style.display === 'none' ||\n                style.visibility === 'hidden' ||\n                Number(style.opacity || '1') === 0 ||\n                node.getAttribute('aria-hidden') === 'true' ||\n                node.hidden === true\n            ) {\n                return false;\n            }\n\n            node = node.parentElement;\n        }\n\n        const rect = modal.getBoundingClientRect();\n\n        return (\n            rect.width > 0 &&\n            rect.height > 0\n        );\n    };\n\n    window.pivotGetGlobalActionHeading = function (modal) {\n        if (!modal) return null;\n\n        return Array.from(\n            modal.querySelectorAll(\n                'h1,h2,h3,h4,[role=\"heading\"]'\n            )\n        ).find(function (heading) {\n            return window\n                .pivotNormalizeUiText(\n                    heading.textContent\n                )\n                .includes(\n                    'add new self-development action'\n                );\n        }) || null;\n    };\n\n    window.pivotResetScrollElement = function (element) {\n        if (!element) return;\n\n        try {\n            element.scrollTop = 0;\n            element.scrollLeft = 0;\n        } catch (error) {}\n\n        try {\n            if (\n                typeof element.scrollTo ===\n                'function'\n            ) {\n                element.scrollTo(0, 0);\n            }\n        } catch (error) {}\n    };\n\n    window.pivotResetGlobalActionModalToTop = function (modal) {\n        if (!modal) return;\n\n        const candidates = new Set();\n\n        \/*\n         * The discovered modal can be an inner content wrapper rather than\n         * the element that actually owns the scroll. Reset the content,\n         * every scroll-capable descendant, and EVERY relevant ancestor up\n         * to BODY \u2014 regardless of its class name.\n         *\/\n        candidates.add(modal);\n\n        modal\n            .querySelectorAll('*')\n            .forEach(function (element) {\n                if (\n                    element.scrollTop > 0 ||\n                    element.scrollHeight >\n                        element.clientHeight + 2\n                ) {\n                    candidates.add(element);\n                }\n            });\n\n        let parent = modal.parentElement;\n        let depth = 0;\n\n        while (\n            parent &&\n            parent !== document.body &&\n            depth < 12\n        ) {\n            if (\n                parent.scrollTop > 0 ||\n                parent.scrollHeight >\n                    parent.clientHeight + 2\n            ) {\n                candidates.add(parent);\n            }\n\n            parent = parent.parentElement;\n            depth++;\n        }\n\n        candidates.forEach(function (element) {\n            window.pivotResetScrollElement(\n                element\n            );\n        });\n\n        \/*\n         * If an unusual wrapper still owns scrolling, align the form heading\n         * within the nearest scrollable viewport without focusing a field.\n         *\/\n        const heading =\n            window.pivotGetGlobalActionHeading(\n                modal\n            );\n\n        if (\n            heading &&\n            typeof heading.scrollIntoView ===\n                'function'\n        ) {\n            try {\n                heading.scrollIntoView({\n                    behavior: 'auto',\n                    block: 'start',\n                    inline: 'nearest'\n                });\n            } catch (error) {}\n        }\n    };\n\n    window.pivotScheduleGlobalActionTopReset = function (modal) {\n        if (!modal) return;\n\n        const reset = function () {\n            window\n                .pivotResetGlobalActionModalToTop(\n                    modal\n                );\n        };\n\n        \/*\n         * Cover browser layout, modal animation and the mobile sticky\n         * action\/footer settling without continuously fighting user scroll.\n         *\/\n        reset();\n\n        window.requestAnimationFrame(\n            function () {\n                reset();\n\n                window.requestAnimationFrame(\n                    reset\n                );\n            }\n        );\n\n        setTimeout(reset, 60);\n        setTimeout(reset, 160);\n        setTimeout(reset, 320);\n    };\n\n    window.pivotBindGlobalActionExitReset = function (modal) {\n        if (!modal) return;\n\n        Array.from(\n            modal.querySelectorAll(\n                'button,' +\n                'input[type=\"button\"],' +\n                'input[type=\"submit\"],' +\n                'a'\n            )\n        ).forEach(function (control) {\n            if (\n                control.dataset\n                    .pivotUxExitResetBound ===\n                '1'\n            ) {\n                return;\n            }\n\n            const label =\n                typeof window\n                    .pivotNormalizeUiText ===\n                'function'\n                    ? window\n                        .pivotNormalizeUiText(\n                            control.innerText ||\n                            control.value ||\n                            control.getAttribute(\n                                'aria-label'\n                            )\n                        )\n                    : String(\n                        control.innerText ||\n                        control.value ||\n                        control.getAttribute(\n                            'aria-label'\n                        ) ||\n                        ''\n                    )\n                        .replace(\/\\s+\/g, ' ')\n                        .trim()\n                        .toLowerCase();\n\n            const isExitControl =\n                label.includes('log action') ||\n                label === 'cancel' ||\n                label === 'close' ||\n                label === '\u00d7' ||\n                label === 'x';\n\n            if (!isExitControl) {\n                return;\n            }\n\n            control.dataset\n                .pivotUxExitResetBound =\n                '1';\n\n            \/*\n             * Capture phase means the scroll position is cleared before the\n             * modal's existing save\/cancel\/close handler hides the form.\n             * No values or save handlers are changed.\n             *\/\n            control.addEventListener(\n                'click',\n                function () {\n                    window\n                        .pivotResetGlobalActionModalToTop(\n                            modal\n                        );\n\n                    setTimeout(\n                        function () {\n                            \/*\n                             * If the form actually closed, explicitly arm\n                             * the next opening as a fresh opening.\n                             *\/\n                            if (\n                                !window\n                                    .pivotGlobalActionModalIsOpen(\n                                        modal\n                                    )\n                            ) {\n                                modal.dataset\n                                    .pivotUxWasOpen =\n                                    '0';\n                            }\n                        },\n                        180\n                    );\n                },\n                true\n            );\n        });\n    };\n\n    window.pivotCheckGlobalActionModalOpening = function () {\n        if (\n            typeof window\n                .pivotFindGlobalActionModal !==\n            'function'\n        ) {\n            return;\n        }\n\n        const modal =\n            window.pivotFindGlobalActionModal();\n\n        if (!modal) {\n            return;\n        }\n\n        window\n            .pivotBindGlobalActionExitReset(\n                modal\n            );\n\n        const isOpen =\n            window\n                .pivotGlobalActionModalIsOpen(\n                    modal\n                );\n\n        const wasOpen =\n            modal.dataset\n                .pivotUxWasOpen ===\n            '1';\n\n        if (!isOpen) {\n            \/*\n             * Reset while hidden as an extra guarantee. This cannot disturb\n             * the member because the form is not visible.\n             *\/\n            window\n                .pivotResetGlobalActionModalToTop(\n                    modal\n                );\n\n            modal.dataset\n                .pivotUxWasOpen =\n                '0';\n\n            return;\n        }\n\n        if (isOpen && !wasOpen) {\n            modal.dataset\n                .pivotUxWasOpen =\n                '1';\n\n            window\n                .pivotScheduleGlobalActionTopReset(\n                    modal\n                );\n        }\n    };\n\n    \/*\n     * Contextual Plan a development action modal:\n     * keep the already-working reset behaviour.\n     *\/\n    const previousOpenActionModal =\n        window.pivotOpenActionModal;\n\n    if (\n        typeof previousOpenActionModal ===\n        'function'\n    ) {\n        window.pivotOpenActionModal =\n            function () {\n                const result =\n                    previousOpenActionModal\n                        .apply(\n                            this,\n                            arguments\n                        );\n\n                window.requestAnimationFrame(\n                    function () {\n                        const modal =\n                            document\n                                .getElementById(\n                                    'pivot-action-modal'\n                                );\n\n                        if (!modal) return;\n\n                        modal.scrollTop = 0;\n\n                        const box =\n                            modal.querySelector(\n                                '.pivot-modal-box'\n                            );\n\n                        if (box) {\n                            box.scrollTop = 0;\n                        }\n                    }\n                );\n\n                return result;\n            };\n    }\n\n    const run = function () {\n        window\n            .pivotEnsureActionManagerBackButton();\n\n        window\n            .pivotCheckGlobalActionModalOpening();\n    };\n\n    const start = function () {\n        run();\n\n        const observer =\n            new MutationObserver(\n                function () {\n                    run();\n                }\n            );\n\n        observer.observe(\n            document.documentElement,\n            {\n                childList: true,\n                subtree: true,\n                attributes: true,\n                attributeFilter: [\n                    'class',\n                    'style',\n                    'aria-hidden',\n                    'open',\n                    'hidden'\n                ]\n            }\n        );\n\n        window\n            .pivotActionFlowUxV21662Observer =\n            observer;\n\n        \/*\n         * Low-frequency safety check for external modal code that changes\n         * scroll state without mutating a watched attribute.\n         *\/\n        window\n            .pivotActionFlowUxV21662Timer =\n            setInterval(\n                function () {\n                    window\n                        .pivotCheckGlobalActionModalOpening();\n                },\n                500\n            );\n    };\n\n    if (\n        document.readyState ===\n        'loading'\n    ) {\n        document.addEventListener(\n            'DOMContentLoaded',\n            start,\n            { once: true }\n        );\n    } else {\n        start();\n    }\n\n})();\n<\/script>\n\n\n<!-- =========================================================\n     PIVOT Dashboard v2.16.63\n     ACTION LIST CLOSE POLISH\n\n     Surgical UX-only layer.\n     - Preserves v2.16.62 Add Action top reset.\n     - Preserves v2.16.61 Back to Dashboard behaviour.\n     - Does not alter action data, voice, completion, editing,\n       Journal Vault v2.0 or Flow Supervisor v2.0.\n     - Styles ONLY the Planned \/ Completed action-manager close.\n     - Adds a second Close control after the final listed action.\n     ========================================================= -->\n\n<style id=\"pivot-action-manager-close-polish-v2-16-63\">\n\n    \/*\n     * Top close control \u2014 scoped ONLY to the Planned \/ Completed\n     * action browser so other review\/editor modals remain unchanged.\n     *\/\n    #pivot-action-manager-modal .pivot-review-close {\n        -webkit-appearance: none !important;\n        appearance: none !important;\n\n        display: inline-flex !important;\n        align-items: center !important;\n        justify-content: center !important;\n\n        flex: 0 0 44px !important;\n        width: 44px !important;\n        min-width: 44px !important;\n        height: 44px !important;\n        min-height: 44px !important;\n\n        margin: 0 !important;\n        padding: 0 0 3px !important;\n\n        border: 2px solid #002FA7 !important;\n        border-radius: 50% !important;\n\n        background: #002FA7 !important;\n        color: #ffffff !important;\n\n        font-family: 'Inter', 'Helvetica Neue', Helvetica, Arial, sans-serif !important;\n        font-size: 1.65rem !important;\n        font-weight: 700 !important;\n        line-height: 1 !important;\n\n        cursor: pointer !important;\n\n        box-shadow:\n            0 7px 18px rgba(0, 47, 167, .18),\n            0 0 0 4px rgba(0, 47, 167, .055) !important;\n\n        transition:\n            background .16s ease,\n            border-color .16s ease,\n            transform .16s ease,\n            box-shadow .16s ease !important;\n    }\n\n    #pivot-action-manager-modal .pivot-review-close:hover {\n        background: #001B63 !important;\n        border-color: #001B63 !important;\n        color: #ffffff !important;\n\n        transform: translateY(-1px) !important;\n\n        box-shadow:\n            0 9px 22px rgba(0, 47, 167, .24),\n            0 0 0 4px rgba(0, 47, 167, .07) !important;\n    }\n\n    #pivot-action-manager-modal .pivot-review-close:focus-visible {\n        outline: 3px solid rgba(0, 47, 167, .22) !important;\n        outline-offset: 3px !important;\n    }\n\n    \/*\n     * Bottom control appears AFTER the action list, so members with a\n     * long history never have to return to the top simply to close it.\n     *\/\n    #pivot-action-manager-modal .pivot-action-manager-bottom-row {\n        display: flex !important;\n        align-items: center !important;\n        justify-content: center !important;\n\n        width: 100% !important;\n        margin: 20px 0 0 !important;\n        padding: 18px 0 2px !important;\n\n        border-top: 1px solid #e2e8f0 !important;\n    }\n\n    #pivot-action-manager-modal .pivot-action-manager-bottom-close {\n        -webkit-appearance: none !important;\n        appearance: none !important;\n\n        display: inline-flex !important;\n        align-items: center !important;\n        justify-content: center !important;\n        gap: 9px !important;\n\n        min-height: 46px !important;\n        margin: 0 !important;\n        padding: 10px 18px !important;\n\n        border: 2px solid #002FA7 !important;\n        border-radius: 12px !important;\n\n        background: #002FA7 !important;\n        color: #ffffff !important;\n\n        font-family: 'Inter', 'Helvetica Neue', Helvetica, Arial, sans-serif !important;\n        font-size: .82rem !important;\n        font-weight: 850 !important;\n        line-height: 1.15 !important;\n\n        text-decoration: none !important;\n        cursor: pointer !important;\n\n        box-shadow: 0 8px 20px rgba(0, 47, 167, .17) !important;\n\n        transition:\n            background .16s ease,\n            border-color .16s ease,\n            transform .16s ease,\n            box-shadow .16s ease !important;\n    }\n\n    #pivot-action-manager-modal .pivot-action-manager-bottom-close:hover {\n        background: #001B63 !important;\n        border-color: #001B63 !important;\n        transform: translateY(-1px) !important;\n        box-shadow: 0 10px 24px rgba(0, 47, 167, .23) !important;\n    }\n\n    #pivot-action-manager-modal .pivot-action-manager-bottom-close:focus-visible {\n        outline: 3px solid rgba(0, 47, 167, .20) !important;\n        outline-offset: 3px !important;\n    }\n\n    #pivot-action-manager-modal .pivot-action-manager-bottom-x {\n        display: inline-flex !important;\n        align-items: center !important;\n        justify-content: center !important;\n\n        width: 24px !important;\n        min-width: 24px !important;\n        height: 24px !important;\n\n        border: 1px solid rgba(255,255,255,.78) !important;\n        border-radius: 50% !important;\n\n        color: #ffffff !important;\n\n        font-size: 1.05rem !important;\n        font-weight: 700 !important;\n        line-height: 1 !important;\n    }\n\n    @media (max-width: 600px) {\n        #pivot-action-manager-modal .pivot-review-close {\n            flex-basis: 46px !important;\n            width: 46px !important;\n            min-width: 46px !important;\n            height: 46px !important;\n            min-height: 46px !important;\n        }\n\n        #pivot-action-manager-modal .pivot-action-manager-bottom-close {\n            width: 100% !important;\n            max-width: 100% !important;\n        }\n    }\n\n<\/style>\n\n<script id=\"pivot-action-manager-close-polish-v2-16-63\">\n(function () {\n    'use strict';\n\n    if (window.pivotActionManagerClosePolishV21663Installed) {\n        return;\n    }\n\n    window.pivotActionManagerClosePolishV21663Installed = true;\n\n    function ensureBottomCloseControl() {\n        const modal =\n            document.getElementById(\n                'pivot-action-manager-modal'\n            );\n\n        if (!modal) {\n            return false;\n        }\n\n        \/*\n         * Improve the existing top X semantics without replacing its\n         * original onclick handler.\n         *\/\n        const topClose =\n            modal.querySelector(\n                '.pivot-review-close'\n            );\n\n        if (topClose) {\n            topClose.setAttribute(\n                'aria-label',\n                'Close development actions and return to Dashboard'\n            );\n\n            topClose.setAttribute(\n                'title',\n                'Close'\n            );\n        }\n\n        if (\n            modal.querySelector(\n                '[data-pivot-action-manager-bottom-close=\"1\"]'\n            )\n        ) {\n            return true;\n        }\n\n        const list =\n            modal.querySelector(\n                '#pivot-action-manager-list'\n            );\n\n        if (\n            !list ||\n            !list.parentNode\n        ) {\n            return false;\n        }\n\n        const row =\n            document.createElement('div');\n\n        row.className =\n            'pivot-action-manager-bottom-row';\n\n        row.setAttribute(\n            'data-pivot-action-manager-bottom-close',\n            '1'\n        );\n\n        row.innerHTML = `\n            <button\n                type=\"button\"\n                class=\"pivot-action-manager-bottom-close\"\n                aria-label=\"Close development actions and return to Dashboard\"\n            >\n                <span\n                    class=\"pivot-action-manager-bottom-x\"\n                    aria-hidden=\"true\"\n                >\u00d7<\/span>\n                <span>Close<\/span>\n            <\/button>\n        `;\n\n        list.insertAdjacentElement(\n            'afterend',\n            row\n        );\n\n        const button =\n            row.querySelector(\n                '.pivot-action-manager-bottom-close'\n            );\n\n        if (button) {\n            button.addEventListener(\n                'click',\n                function () {\n                    \/*\n                     * Reuse the already-proven v2.16.61 path because it\n                     * closes the modal AND restores focus to the Dashboard\n                     * activity control that opened it.\n                     *\/\n                    if (\n                        typeof window\n                            .pivotReturnToDashboardFromActionManager ===\n                        'function'\n                    ) {\n                        window\n                            .pivotReturnToDashboardFromActionManager();\n                        return;\n                    }\n\n                    if (\n                        typeof window\n                            .pivotCloseActionManager ===\n                        'function'\n                    ) {\n                        window\n                            .pivotCloseActionManager();\n                    } else {\n                        modal.classList.remove(\n                            'active'\n                        );\n                    }\n                }\n            );\n        }\n\n        return true;\n    }\n\n    function run() {\n        ensureBottomCloseControl();\n    }\n\n    if (\n        document.readyState ===\n        'loading'\n    ) {\n        document.addEventListener(\n            'DOMContentLoaded',\n            run,\n            { once: true }\n        );\n    } else {\n        run();\n    }\n\n    \/*\n     * The action-manager modal is created dynamically by pivotBuildModals().\n     * Observe insertions so the bottom control is added the first time that\n     * modal is built, without modifying any core modal-construction code.\n     *\/\n    const observer =\n        new MutationObserver(\n            function () {\n                run();\n            }\n        );\n\n    observer.observe(\n        document.documentElement,\n        {\n            childList: true,\n            subtree: true\n        }\n    );\n\n    window\n        .pivotActionManagerClosePolishV21663Observer =\n        observer;\n\n})();\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>PIVOT Self-Development Dashboard PIVOT is bringing together your current self-assessment profile. Your development record connects self-awareness, choices, action, reflection and evidence. A lower self-rating is not automatically a weakness. Context, goals and circumstances matter. Development can happen through work, study, courses, projects, coaching, practice and everyday experience. Career Explorer is optional and becomes more informative [&#8230;]\n","protected":false},"author":6,"featured_media":24323,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"nf_dc_page":"","footnotes":""},"class_list":["post-24336","page","type-page","status-publish","has-post-thumbnail","hentry"],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/dumondeducation.com\/de\/wp-json\/wp\/v2\/pages\/24336","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dumondeducation.com\/de\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/dumondeducation.com\/de\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/dumondeducation.com\/de\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/dumondeducation.com\/de\/wp-json\/wp\/v2\/comments?post=24336"}],"version-history":[{"count":5,"href":"https:\/\/dumondeducation.com\/de\/wp-json\/wp\/v2\/pages\/24336\/revisions"}],"predecessor-version":[{"id":29511,"href":"https:\/\/dumondeducation.com\/de\/wp-json\/wp\/v2\/pages\/24336\/revisions\/29511"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/dumondeducation.com\/de\/wp-json\/wp\/v2\/media\/24323"}],"wp:attachment":[{"href":"https:\/\/dumondeducation.com\/de\/wp-json\/wp\/v2\/media?parent=24336"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}