{"packageName":"@cedros-academy/academy","packageRoot":"workspace/react","entryPath":"workspace/react/dist/web/register.js","surfaceEntryPaths":{"web":"workspace/react/dist/web/register.js"},"surfaceFilePaths":{"web":["workspace/react/dist/bootstrap.js","workspace/react/dist/generated-manifest.js","workspace/react/dist/generated-templates.js","workspace/react/dist/manifest.js","workspace/react/dist/shared/adminStyles.js","workspace/react/dist/shared/api.js","workspace/react/dist/shared/courseAccess.js","workspace/react/dist/shared/courseArtwork.js","workspace/react/dist/shared/formValidation.js","workspace/react/dist/shared/lessonContent.js","workspace/react/dist/shared/links.js","workspace/react/dist/shared/response.js","workspace/react/dist/shared/styles.js","workspace/react/dist/shared/ui.js","workspace/react/dist/styles.css","workspace/react/dist/styles.css.js","workspace/react/dist/web/blocks.js","workspace/react/dist/web/certificateCredential.js","workspace/react/dist/web/certificateState.js","workspace/react/dist/web/courseSubmission.js","workspace/react/dist/web/learnerPlayer.js","workspace/react/dist/web/learningTools.js","workspace/react/dist/web/openCourse.js","workspace/react/dist/web/publicState.js","workspace/react/dist/web/publicUi.js","workspace/react/dist/web/register.js"]},"files":[{"path":"workspace/react/dist/bootstrap.js","kind":"module","text":"import { extensionManifest as t } from \"./manifest.js\";\nconst e = {\n  manifest: t\n};\nexport {\n  e as extensionBootstrap\n};\n","imports":[{"dynamic":false,"end":53,"specifier":"./manifest.js","start":40}],"hasUnsupportedDynamicImports":false},{"path":"workspace/react/dist/generated-manifest.js","kind":"module","text":"const e = { schemaVersion: 1, extensionId: \"cedros-academy\", displayName: \"Cedros Academy\", version: \"5.2.14\", description: \"Text-course authoring, enrollment, learner completion, certification, and learning operations for Cedros sites.\", platformApiVersion: \"1\", compatibility: { platformApiVersion: \"1\", minCedrosDataVersion: \"0.1.75\", witChecksum: \"2bb16879743cfd2748b7deefefcb82204c16b55a1c1a70385f4e9707a83d48f9\" }, packageFamily: { server: { packageName: \"cedros-academy-server\", version: \"5.2.14\", required: !0 }, react: { packageName: \"@cedros-academy/academy\", version: \"5.2.14\", required: !0 }, reactNative: { packageName: \"@cedros-academy/academy-native\", version: \"5.2.14\", required: !0 } }, dependencies: { extensions: [{ extensionId: \"cedros-login\", minVersion: \"0.0.60\", required: !0, reason: \"Authenticated student, submitter, API-agent, and admin identity is owned by Cedros Login; browser sessions use its credential-free auth-response contract.\" }, { extensionId: \"cedros-pay\", minVersion: \"2.0.0\", required: !1, reason: \"Optional durable entitlement state for paid enrollments; free learning does not require Pay, and paid checkout remains host-coordinated until Cedros Pay publishes its current checkout binding.\" }, { extensionId: \"cedros-notifications\", minVersion: \"0.1.9\", required: !1, reason: \"Optional delivery for the published-course notification seed.\" }], services: [], capabilities: [{ capabilityId: \"cedros-login:user-context\", required: !0, reason: \"Academy relies on Login user identity.\" }, { capabilityId: \"cedros-login:auth-response\", required: !0, reason: \"Learner and course-submission routes require Login authentication; inherited wire bindings need provider qualification before launch.\" }, { capabilityId: \"cedros-data:extension-storage-cas-v1\", required: !0, reason: \"Academy uses the host's typed compare-and-set seam to prevent lost updates to shared JSONB records.\" }, { capabilityId: \"cedros-pay:checkout\", required: !1, reason: \"Reserved for the host-coordinated current Cedros Pay checkout binding; Academy fails closed until that contract is published and bound.\" }, { capabilityId: \"cedros-pay:entitlement-read\", required: !1, reason: \"Pay-owned course access is reconciled against durable entitlements and fails closed when Pay is unavailable; free enrollments do not use this capability.\" }, { capabilityId: \"cedros-data:notification-event-publish-v1\", required: !1, reason: \"Optional host-owned durable course-announcement publication and status; course learning works without notification delivery.\" }, { capabilityId: \"cedros-data:notification-event-status-read-v1\", required: !1, reason: \"Optional host-owned durable course-announcement publication and status; course learning works without notification delivery.\" }] }, surfaces: { ai: { packageRef: \"server\", skills: [], capabilities: [{ id: \"cedros-academy:update-course-presentation\", name: \"Update course presentation\", description: \"Update a course learning access mode or featured image using its current storage version. Requires Academy management permission. Paid and private lessons remain protected.\", kind: \"action\", visibility: \"admin\", endpoint: { method: \"POST\", path: \"/extensions/cedros-academy/admin/v1/course-presentation\" }, auth: { schemes: [\"bearer-token\"] }, inputSchema: { type: \"object\", required: [\"courseId\", \"expectedCourseVersion\"], properties: { courseId: { type: \"string\", minLength: 1 }, expectedCourseVersion: { type: \"string\", minLength: 1 }, learningAccess: { type: \"string\", enum: [\"enrollment\", \"open\"] }, thumbnailRef: { type: \"string\" } }, additionalProperties: !1 } }] }, server: { packageRef: \"server\", required: !0, contentModels: [\"cedros-academy:courses\", \"cedros-academy:course-versions\", \"cedros-academy:curriculum\", \"cedros-academy:instructors\", \"cedros-academy:enrollments\", \"cedros-academy:lesson-progress\", \"cedros-academy:quizzes\", \"cedros-academy:quiz-attempts\", \"cedros-academy:assignments\", \"cedros-academy:submissions\", \"cedros-academy:course-submissions\", \"cedros-academy:certificates\", \"cedros-academy:reviews\", \"cedros-academy:questions\", \"cedros-academy:notes-bookmarks\", \"cedros-academy:cohorts\", \"cedros-academy:announcements\", \"cedros-academy:offers\", \"cedros-academy:learning-paths\", \"cedros-academy:report-configs\", \"cedros-academy:audit-events\"], migrations: [\"cedros-academy:v1-jsonb\"], settingsSchemas: [\"cedros-academy:academy-settings\", \"cedros-academy:learning-settings\", \"cedros-academy:privacy-retention-settings\", \"cedros-academy:ai-settings\"], routes: [\"cedros-academy:admin-summary\", \"cedros-academy:settings-read\", \"cedros-academy:settings-update\", \"cedros-academy:course-list\", \"cedros-academy:course-create\", \"cedros-academy:course-import\", \"cedros-academy:course-read\", \"cedros-academy:course-feedback\", \"cedros-academy:question-reply\", \"cedros-academy:review-moderate\", \"cedros-academy:course-update\", \"cedros-academy:course-presentation-update\", \"cedros-academy:course-delete\", \"cedros-academy:course-submit-review\", \"cedros-academy:course-approve\", \"cedros-academy:course-publish\", \"cedros-academy:course-archive\", \"cedros-academy:course-restore\", \"cedros-academy:curriculum-update\", \"cedros-academy:instructor-list\", \"cedros-academy:instructor-upsert\", \"cedros-academy:enrollment-list\", \"cedros-academy:enrollment-grant\", \"cedros-academy:enrollment-revoke\", \"cedros-academy:reports-summary\", \"cedros-academy:audit-list\", \"cedros-academy:ai-authoring\", \"cedros-academy:course-submission-admin-list\", \"cedros-academy:course-submission-accept\", \"cedros-academy:course-submission-reject\", \"cedros-academy:catalog-read\", \"cedros-academy:course-detail-read\", \"cedros-academy:checkout-create\", \"cedros-academy:free-enroll\", \"cedros-academy:student-dashboard\", \"cedros-academy:player-read\", \"cedros-academy:progress-update\", \"cedros-academy:note-upsert\", \"cedros-academy:bookmark-upsert\", \"cedros-academy:certificate-verify\", \"cedros-academy:review-submit\", \"cedros-academy:question-submit\", \"cedros-academy:quiz-submit\", \"cedros-academy:assignment-submit\", \"cedros-academy:announcement-list\", \"cedros-academy:course-submission-create\", \"cedros-academy:course-submission-list\", \"cedros-academy:course-notification-read\", \"cedros-academy:course-notification-retry\"], jobs: [\"cedros-academy:nightly-entitlement-reconcile\", \"cedros-academy:drip-release\", \"cedros-academy:access-expiration\", \"cedros-academy:certificate-generation\", \"cedros-academy:analytics-rollup\", \"cedros-academy:retention-sweep\"], events: [\"cedros-academy:course-viewed\", \"cedros-academy:course-published\", \"cedros-academy:enrollment-created\", \"cedros-academy:enrollment-revoked\", \"cedros-academy:lesson-completed\", \"cedros-academy:course-completed\", \"cedros-academy:certificate-issued\", \"cedros-academy:certificate-revoked\", \"cedros-academy:review-submitted\", \"cedros-academy:audit-recorded\", \"cedros-academy:ai-draft-created\"] }, admin: { packageRef: \"react\", required: !0, moduleIds: [\"cedros-academy:admin\"] }, web: { packageRef: \"react\", required: !0, routeIds: [\"cedros-academy:catalog-page\", \"cedros-academy:student-dashboard-page\", \"cedros-academy:certificate-verify-page\", \"cedros-academy:course-submission-page\"], blockTypes: [\"cedros-academy:course-catalog\", \"cedros-academy:featured-courses\", \"cedros-academy:course-landing\", \"cedros-academy:instructor-profile\", \"cedros-academy:student-dashboard\", \"cedros-academy:course-player\", \"cedros-academy:certificate-verification\", \"cedros-academy:course-submission\"], templateIds: [\"cedros-academy:catalog-template\", \"cedros-academy:student-dashboard-template\", \"cedros-academy:certificate-template\", \"cedros-academy:course-submission-template\"], authoredSurfaceIds: [\"cedros-academy:learning-surface\"], templateUtilityIds: [\"cedros-academy:learning-preset\"] }, native: { packageRef: \"reactNative\", required: !0 } }, registration: { server: { entrypoint: \"cedros_academy_server::register_extension_family\" }, admin: { entrypoint: \"@cedros-academy/academy/admin/register\" }, web: { entrypoint: \"@cedros-academy/academy/web/register\" }, native: { entrypoint: \"@cedros-academy/academy-native/register\" } }, adminModules: [{ moduleId: \"cedros-academy:admin\", extensionId: \"cedros-academy\", displayName: \"Academy\", version: \"5.2.14\", packageName: \"@cedros-academy/academy\", sectionIds: [\"cedros-academy:dashboard\", \"cedros-academy:courses\", \"cedros-academy:students\", \"cedros-academy:instructors\", \"cedros-academy:learning-ops\", \"cedros-academy:reports\", \"cedros-academy:settings\"], sectionIcons: { \"cedros-academy:dashboard\": \"dashboard\", \"cedros-academy:courses\": \"book-open\", \"cedros-academy:students\": \"users\", \"cedros-academy:instructors\": \"graduation-cap\", \"cedros-academy:learning-ops\": \"clipboard-check\", \"cedros-academy:reports\": \"bar-chart\", \"cedros-academy:settings\": \"settings\" }, navigation: { sections: [{ id: \"cedros-academy:dashboard\", label: \"Academy\", group: \"Build\", order: 10 }, { id: \"cedros-academy:courses\", label: \"Courses\", group: \"Build\", order: 11, requiredPermission: \"cedros-academy:manage-learning\" }, { id: \"cedros-academy:students\", label: \"Students\", group: \"Users\", order: 20, requiredPermission: \"cedros-academy:manage-learning\" }, { id: \"cedros-academy:instructors\", label: \"Instructors\", group: \"Users\", order: 21, requiredPermission: \"cedros-academy:manage-learning\" }, { id: \"cedros-academy:learning-ops\", label: \"Drafting tools\", group: \"Tools\", order: 41, requiredPermission: \"cedros-academy:manage-learning\" }, { id: \"cedros-academy:reports\", label: \"Reports\", group: \"Tools\", order: 40, requiredPermission: \"cedros-academy:manage-learning\" }, { id: \"cedros-academy:settings\", label: \"Academy settings\", group: \"Extension Settings\", order: 50, requiredPermission: \"cedros-academy:manage-learning\" }] }, contributions: { dashboardCards: [{ id: \"cedros-academy:learning-health-card\", displayName: \"Learning health\", description: \"Shows course readiness, learner access, completion, and review queues.\", order: 40, requiredPermission: \"cedros-academy:manage-learning\" }] } }], capabilities: [{ id: \"cedros-academy:manage-learning\", displayName: \"Manage courses and students\", description: \"Create, approve, publish, and operate Academy learning content and enrollment records.\", category: \"content\", requestedScopes: [{ verb: \"read\", resource: \"course and enrollment records\", summary: \"Reads Academy courses, enrollments, progress, and reports.\" }, { verb: \"write\", resource: \"course and enrollment records\", summary: \"Writes Academy-owned course, curriculum, enrollment, progress, and certificate data.\" }] }, { id: \"cedros-academy:publish-site-brain-records\", displayName: \"Publish Academy operational records\", description: \"Writes redacted learning operations records for site intelligence and audits.\", category: \"runtime\", requestedScopes: [{ verb: \"write\", resource: \"site-brain-record:learning\", summary: \"Publishes redacted Academy operational records.\" }] }], contentBlocks: [{ type: \"cedros-academy:course-catalog\", displayName: \"Course catalog\", description: \"Searchable public course catalog.\", category: \"learning\", order: 10 }, { type: \"cedros-academy:featured-courses\", displayName: \"Course highlights\", description: \"Three current course offerings.\", category: \"learning\", order: 20 }, { type: \"cedros-academy:course-landing\", displayName: \"Course landing\", description: \"Course sales and enrollment page.\", category: \"learning\", order: 30 }, { type: \"cedros-academy:instructor-profile\", displayName: \"Instructor profile\", description: \"Public instructor biography.\", category: \"learning\", order: 40 }, { type: \"cedros-academy:student-dashboard\", displayName: \"Student dashboard\", description: \"Authenticated learner dashboard.\", category: \"learning\", order: 50 }, { type: \"cedros-academy:course-player\", displayName: \"Course player\", description: \"Authenticated lesson player.\", category: \"learning\", order: 60 }, { type: \"cedros-academy:certificate-verification\", displayName: \"Certificate verification\", description: \"Public certificate verification.\", category: \"learning\", order: 70 }, { type: \"cedros-academy:course-submission\", displayName: \"Submit a course\", description: \"Account-authenticated course submission form and status list.\", category: \"learning\", order: 80 }], contentTemplates: [{ id: \"cedros-academy:catalog-template\", displayName: \"Academy catalog\", description: \"Starter course catalog page.\", order: 10, contentTypes: [\"page\"], surfaceId: \"cedros-academy:learning-surface\" }, { id: \"cedros-academy:student-dashboard-template\", displayName: \"Academy dashboard\", description: \"Starter student dashboard page.\", order: 20, contentTypes: [\"page\"], surfaceId: \"cedros-academy:learning-surface\" }, { id: \"cedros-academy:certificate-template\", displayName: \"Certificate verification\", description: \"Starter certificate verification page.\", order: 30, contentTypes: [\"page\"], surfaceId: \"cedros-academy:learning-surface\" }, { id: \"cedros-academy:course-submission-template\", displayName: \"Course submission\", description: \"Starter third-party course submission page.\", order: 40, contentTypes: [\"page\"], surfaceId: \"cedros-academy:learning-surface\" }], authoredSurfaces: [{ id: \"cedros-academy:learning-surface\", displayName: \"Academy\", description: \"Owner-editable learning pages.\", eyebrow: \"Learning\", templateIds: [\"cedros-academy:catalog-template\", \"cedros-academy:student-dashboard-template\", \"cedros-academy:certificate-template\", \"cedros-academy:course-submission-template\"] }], authoredTemplateUtilities: [{ id: \"cedros-academy:learning-preset\", displayName: \"Academy preset\", description: \"Suggested Academy public blocks.\", order: 10, templateIds: [\"cedros-academy:catalog-template\"], contentTypes: [\"page\"], surfaceIds: [\"cedros-academy:learning-surface\"], suggestedBlockTypes: [\"cedros-academy:course-catalog\"] }], pageSeeds: [{ id: \"cedros-academy:catalog-page\", displayName: \"Courses\", title: \"Courses\", routePath: \"/courses\", description: \"Public Academy course catalog.\", slug: \"courses\", templateId: \"cedros-academy:catalog-template\", seo: { title: \"Courses\", description: \"Browse courses and learning paths.\", canonicalPath: \"/courses\", ogTitle: \"Courses\", ogDescription: \"Browse courses and learning paths.\" }, autoCreateOnEnable: !0, publishOnEnable: !0 }, { id: \"cedros-academy:student-dashboard-page\", displayName: \"My Learning\", title: \"My Learning\", routePath: \"/academy/dashboard\", description: \"Student learning dashboard.\", slug: \"academy-dashboard\", templateId: \"cedros-academy:student-dashboard-template\", seo: { title: \"My Learning\", description: \"Your enrolled courses.\", noindex: !0 }, autoCreateOnEnable: !0, publishOnEnable: !0 }, { id: \"cedros-academy:certificate-verify-page\", displayName: \"Verify Certificate\", title: \"Verify Certificate\", routePath: \"/academy/certificates/verify\", description: \"Verify an Academy certificate.\", slug: \"academy-certificate-verify\", templateId: \"cedros-academy:certificate-template\", seo: { title: \"Verify Certificate\", description: \"Verify an Academy completion certificate.\", noindex: !0 }, autoCreateOnEnable: !0, publishOnEnable: !0 }, { id: \"cedros-academy:course-submission-page\", displayName: \"Submit a Course\", title: \"Submit a Course\", routePath: \"/academy/submit-course\", description: \"Account-authenticated third-party course submission page.\", slug: \"academy-submit-course\", templateId: \"cedros-academy:course-submission-template\", seo: { title: \"Submit a Course\", description: \"Submit a course for Academy review.\", noindex: !0 }, autoCreateOnEnable: !0, publishOnEnable: !1 }], formTemplates: [{ id: \"cedros-academy:course-interest\", displayName: \"Academy course interest\", title: \"Course interest\", description: \"Owner-editable inquiry form for learners who need help choosing an Academy course.\", scope: \"contact\", defaultKey: \"academy-course-interest\", status: \"active\", submitLabel: \"Send inquiry\", successTitle: \"Inquiry received\", successMessage: \"The site team will review your Academy course question.\", autoCreateOnEnable: !1, fields: [{ key: \"email\", label: \"Email\", type: \"email\", required: !0 }, { key: \"course_title\", label: \"Course or topic\", type: \"text\", required: !1, helpText: \"Use the public course title or learning topic.\" }, { key: \"learning_goal\", label: \"Learning goal\", type: \"textarea\", required: !0, helpText: \"Do not include payment details, passwords, or private account notes.\" }, { key: \"contact_consent\", label: \"I agree to be contacted about this Academy inquiry.\", type: \"checkbox\", required: !0, helpText: \"The owner should review this consent copy before using the form.\" }] }], docsArticles: [{ id: \"cedros-academy:learner-help\", displayName: \"Academy learner help\", title: \"Using Academy courses\", slug: \"using-academy-courses\", routePath: \"/docs/using-academy-courses\", excerpt: \"How learners browse courses, enroll, continue lessons, and verify certificates.\", bodyMarkdown: `# Using Academy courses\n\nBrowse the course catalog to find published Academy courses. Sign in with Cedros Login before enrolling or opening your learner dashboard.\n\n## Course access\n\nFree published courses can offer self-enrollment. Private courses require an explicit grant from the site team. Paid enrollment is not currently self-service; follow the site's instructions rather than sending payment details, card data, wallet secrets, or other credentials to Academy.\n\n## Your learning dashboard\n\nAfter sign-in, open My Learning to continue active courses. If access is pending, refunded, disputed, expired, or revoked, Academy keeps the course locked until the site team or Cedros Pay resolves the state.\n\n## Certificates\n\nAfter completing a course, open its certificate from My Learning to print it, save it as a PDF, or copy its verification link. The protected credential uses the Cedros Login display name recorded when the certificate was issued, with current account identity as a fallback for older records. The public verification page confirms the certificate reference, course, issue date, and current status without exposing private learner account details.`, category: \"learning\", tags: [\"academy\", \"courses\", \"certificates\"], productSlug: \"academy\", productLabel: \"Academy\", sectionKey: \"learning\", sectionLabel: \"Learning\", readingMinutes: 3, order: 10, internal: !1, seo: { title: \"Using Academy courses\", description: \"How learners use Academy course pages, enrollment, dashboards, and certificates.\", canonicalPath: \"/docs/using-academy-courses\" } }], seoRoutes: [], analytics: { events: [{ id: \"cedros-academy:course-viewed\", displayName: \"Course viewed\", description: \"A learner viewed a public course page.\", category: \"learning\", kind: \"content_view\", visibility: \"public\" }, { id: \"cedros-academy:checkout-started\", displayName: \"Checkout started\", description: \"A learner started course checkout.\", category: \"learning\", kind: \"purchase_intent_view\", visibility: \"public\" }, { id: \"cedros-academy:lesson-completed\", displayName: \"Lesson completed\", description: \"A learner completed a lesson.\", category: \"learning\", kind: \"learning_progress\", visibility: \"admin\" }] }, jobSchedules: [{ id: \"cedros-academy:nightly-entitlement-reconcile-schedule\", jobId: \"cedros-academy:nightly-entitlement-reconcile\", label: \"Nightly entitlement reconciliation\", cron: \"0 2 * * *\", timezone: \"America/Los_Angeles\", enabled: !0, timeoutSeconds: 300, maxRetries: 3, autoCreateOnEnable: !0 }, { id: \"cedros-academy:drip-release-schedule\", jobId: \"cedros-academy:drip-release\", label: \"Legacy drip configuration audit\", cron: \"*/30 * * * *\", timezone: \"America/Los_Angeles\", enabled: !0, timeoutSeconds: 180, maxRetries: 2, autoCreateOnEnable: !0 }, { id: \"cedros-academy:retention-sweep-schedule\", jobId: \"cedros-academy:retention-sweep\", label: \"Academy retention sweep\", cron: \"0 3 * * 0\", timezone: \"America/Los_Angeles\", enabled: !0, timeoutSeconds: 300, maxRetries: 3, autoCreateOnEnable: !0 }], providerAccess: [{ id: \"cedros-academy:intelligence-authoring\", provider: \"intelligence\", displayName: \"Academy AI authoring\", description: \"Drafts course outlines, lesson copy, quiz questions, rubrics, summaries, and SEO copy through the site's intelligence provider.\", scopes: [\"chat.generate\"], tags: [\"learning\", \"ai\"] }, { id: \"cedros-academy:artifact-storage\", provider: \"storage\", displayName: \"Academy generated artifacts\", description: \"Stores generated certificate artifacts under Academy-owned keys.\", scopes: [\"storage.write\"], tags: [\"learning\", \"certificates\"] }], databaseAccess: [{ id: \"cedros-academy:academy-db\", displayName: \"Academy database\", description: \"Reads and writes Academy-owned courses, curriculum, enrollments, progress, certificates, discussions, reports, and audit records.\", contentModels: [\"cedros-academy:courses\", \"cedros-academy:course-versions\", \"cedros-academy:curriculum\", \"cedros-academy:instructors\", \"cedros-academy:enrollments\", \"cedros-academy:lesson-progress\", \"cedros-academy:quizzes\", \"cedros-academy:quiz-attempts\", \"cedros-academy:assignments\", \"cedros-academy:submissions\", \"cedros-academy:course-submissions\", \"cedros-academy:certificates\", \"cedros-academy:reviews\", \"cedros-academy:questions\", \"cedros-academy:notes-bookmarks\", \"cedros-academy:cohorts\", \"cedros-academy:announcements\", \"cedros-academy:offers\", \"cedros-academy:learning-paths\", \"cedros-academy:report-configs\", \"cedros-academy:audit-events\"], migrations: [\"cedros-academy:v1-jsonb\"], scopes: [{ verb: \"read\", resource: \"Academy records\", summary: \"Reads Academy-owned JSONB content models.\" }, { verb: \"write\", resource: \"Academy records\", summary: \"Writes Academy-owned JSONB content models.\" }, { verb: \"delete\", resource: \"Academy records\", summary: \"Deletes Academy-owned records only when lifecycle and retention rules allow it.\" }], tags: [\"learning\", \"academy\"] }], customerTagAccess: [{ id: \"cedros-academy:student-tags\", displayName: \"Academy student tags\", description: \"Labels CRM customer profiles based on Academy enrollment and completion activity.\", scopes: [\"assign\"], managedTagSlugs: [\"cedros-academy:enrolled\", \"cedros-academy:certificate-earned\"], tags: [\"learning\", \"crm\"] }], setupSeeds: { notifications: [{ id: \"cedros-academy:course-announcement-notification\", displayName: \"Course announcement\", title: \"Course announcement\", description: \"Starter team notification route for course announcements.\", eventId: \"cedros-academy:course-published\", audience: \"team\", severity: \"info\", defaultChannels: [\"email\"], subjectTemplate: \"{{courseTitle}} update\", bodyTemplate: \"{{announcementSummary}}\", tags: [\"learning\", \"course\"] }] }, onboardingPages: [{ id: \"cedros-academy:configure-academy\", displayName: \"Create your first course\", moduleId: \"cedros-academy:admin\", sectionId: \"cedros-academy:courses\", description: \"Create a learner-ready course; Academy's launch defaults and core learner pages are already prepared.\" }] };\nexport {\n  e as generatedManifest\n};\n","imports":[],"hasUnsupportedDynamicImports":false},{"path":"workspace/react/dist/generated-templates.js","kind":"module","text":"const e = [{ id: \"cedros-academy:catalog-template\", label: \"Academy catalog\", contentTypes: [\"page\"], zones: [{ id: \"main\", label: \"Main\", order: 0 }], blocks: [{ type: \"cedros-academy:course-catalog\", zoneId: \"main\" }] }, { id: \"cedros-academy:student-dashboard-template\", label: \"Academy dashboard\", contentTypes: [\"page\"], zones: [{ id: \"main\", label: \"Main\", order: 0 }], blocks: [{ type: \"cedros-academy:student-dashboard\", zoneId: \"main\" }] }, { id: \"cedros-academy:certificate-template\", label: \"Certificate verification\", contentTypes: [\"page\"], zones: [{ id: \"main\", label: \"Main\", order: 0 }], blocks: [{ type: \"cedros-academy:certificate-verification\", zoneId: \"main\" }] }, { id: \"cedros-academy:course-submission-template\", label: \"Course submission\", contentTypes: [\"page\"], zones: [{ id: \"main\", label: \"Main\", order: 0 }], blocks: [{ type: \"cedros-academy:course-submission\", zoneId: \"main\" }] }];\nexport {\n  e as generatedContentTemplates\n};\n","imports":[],"hasUnsupportedDynamicImports":false},{"path":"workspace/react/dist/manifest.js","kind":"module","text":"import { generatedManifest as e } from \"./generated-manifest.js\";\nconst n = e;\nexport {\n  n as extensionManifest\n};\n","imports":[{"dynamic":false,"end":63,"specifier":"./generated-manifest.js","start":40}],"hasUnsupportedDynamicImports":false},{"path":"workspace/react/dist/shared/adminStyles.js","kind":"module","text":"import d from \"../styles.css.js\";\nconst t = \"cedros-academy-admin-styles\", n = \"@cedros-academy/academy::workspace/react/dist/styles.css\", s = d;\nfunction a() {\n  if (typeof document > \"u\" || document.getElementById(t)) return;\n  const e = document.createElement(\"style\");\n  e.id = t, e.setAttribute(\"data-ca5ss4b-extension-style\", n), e.textContent = s, document.head.appendChild(e);\n}\nexport {\n  s as academyAdminStyles,\n  a as ensureAcademyAdminStyles\n};\n","imports":[{"dynamic":false,"end":31,"specifier":"../styles.css.js","start":15}],"hasUnsupportedDynamicImports":false},{"path":"workspace/react/dist/shared/api.js","kind":"module","text":"var d = Object.defineProperty;\nvar p = (r, e, t) => e in r ? d(r, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : r[e] = t;\nvar a = (r, e, t) => p(r, typeof e != \"symbol\" ? e + \"\" : e, t);\nimport { readAcademyResponse as h } from \"./response.js\";\nclass g {\n  constructor(e) {\n    a(this, \"baseUrl\");\n    a(this, \"getAccessToken\");\n    this.baseUrl = `${e.serverUrl.replace(/\\/$/, \"\")}/extensions/cedros-academy`, this.getAccessToken = e.getAccessToken;\n  }\n  summary() {\n    return this.get(\"/admin/v1/summary\");\n  }\n  courses(e) {\n    return this.get(`/admin/v1/courses${u(e)}`);\n  }\n  course(e) {\n    return this.get(`/admin/v1/courses/${encodeURIComponent(e)}`);\n  }\n  deleteCourse(e, t) {\n    return this.request(\"DELETE\", `/admin/v1/courses/${encodeURIComponent(e)}`, { expectedCourseVersion: t }, !0);\n  }\n  courseNotification(e) {\n    return this.get(`/admin/v1/courses/${encodeURIComponent(e)}/notification`);\n  }\n  retryCourseNotification(e) {\n    return this.post(`/admin/v1/courses/${encodeURIComponent(e)}/notification`, {});\n  }\n  courseFeedback(e, t) {\n    return this.get(`/admin/v1/courses/${encodeURIComponent(e)}/feedback${u(t)}`);\n  }\n  replyQuestion(e, t) {\n    return this.put(`/admin/v1/questions/${encodeURIComponent(e.questionId)}/reply`, { reply: t, storageVersion: e.storageVersion });\n  }\n  moderateReview(e, t) {\n    return this.put(`/admin/v1/reviews/${encodeURIComponent(e.reviewId)}/moderation`, { status: t, storageVersion: e.storageVersion });\n  }\n  createCourse(e, t) {\n    return this.request(\"POST\", \"/admin/v1/courses\", e, !0, t ? { \"idempotency-key\": t } : void 0);\n  }\n  importCourses(e) {\n    return this.post(\"/admin/v1/courses/import\", e);\n  }\n  courseSubmissions(e = \"submitted\", t) {\n    return this.get(`/admin/v1/course-submissions?status=${encodeURIComponent(e)}${u(t, \"&\")}`);\n  }\n  acceptCourseSubmission(e, t = \"\") {\n    return this.post(`/admin/v1/course-submissions/${encodeURIComponent(e)}/accept`, { note: t });\n  }\n  rejectCourseSubmission(e, t) {\n    return this.post(`/admin/v1/course-submissions/${encodeURIComponent(e)}/reject`, { reason: t });\n  }\n  updateCourse(e, t) {\n    return this.patch(`/admin/v1/courses/${encodeURIComponent(e)}`, t);\n  }\n  saveCourseWorkspace(e, t, s) {\n    return this.patch(`/admin/v1/courses/${encodeURIComponent(e)}`, { ...t, curriculum: s });\n  }\n  publishCourse(e, t = \"published\", s) {\n    return this.post(`/admin/v1/courses/${encodeURIComponent(e)}/publish`, { visibility: t, expectedCourseVersion: s });\n  }\n  archiveCourse(e, t) {\n    return this.post(`/admin/v1/courses/${encodeURIComponent(e)}/archive`, { expectedCourseVersion: t });\n  }\n  restoreCourse(e, t) {\n    return this.post(`/admin/v1/courses/${encodeURIComponent(e)}/restore`, { expectedCourseVersion: t });\n  }\n  approveCourse(e, t) {\n    return this.post(`/admin/v1/courses/${encodeURIComponent(e)}/approve`, { expectedCourseVersion: t });\n  }\n  submitReviewCourse(e, t) {\n    return this.post(`/admin/v1/courses/${encodeURIComponent(e)}/submit-review`, { expectedCourseVersion: t });\n  }\n  saveCurriculum(e, t) {\n    return this.put(`/admin/v1/courses/${encodeURIComponent(e)}/curriculum`, {\n      ...t,\n      expectedCurriculumVersion: t.storageVersion ?? null\n    });\n  }\n  instructors(e) {\n    return this.get(`/admin/v1/instructors${u(e)}`);\n  }\n  saveInstructor(e) {\n    return this.put(`/admin/v1/instructors/${encodeURIComponent(e.instructorId)}`, e);\n  }\n  enrollments(e) {\n    return this.get(`/admin/v1/enrollments${u(e)}`);\n  }\n  grantEnrollment(e, t) {\n    return this.request(\"POST\", \"/admin/v1/enrollments/grant\", e, !0, t ? { \"idempotency-key\": t } : void 0);\n  }\n  revokeEnrollment(e, t, s) {\n    return this.post(`/admin/v1/enrollments/${encodeURIComponent(e)}/revoke`, { reason: t, expectedEnrollmentVersion: s });\n  }\n  settings() {\n    return this.get(\"/admin/v1/settings\");\n  }\n  saveSettings(e) {\n    return this.patch(\"/admin/v1/settings\", e);\n  }\n  async autosaveSettings(e, t, s) {\n    if (t.baseRevision != null || t.etag != null)\n      throw new Error(\"Revision-guarded settings require the Cedros atomic configuration contract. No settings were changed.\");\n    const c = [\"academy-settings\", \"learning-settings\", \"privacy-retention-settings\", \"ai-settings\"];\n    if (!Object.keys(e).length || Object.keys(e).some((n) => !c.includes(n)))\n      throw new Error(\"Academy autosave requires supported settings keys.\");\n    let o = {};\n    for (const n of c.filter((i) => i in e)) {\n      const i = { [n]: e[n] }, m = `${t.idempotencyKey}:${n}`;\n      if (o = await this.patch(\"/admin/v1/settings\", {\n        autosave: !0,\n        resourceType: t.resourceType,\n        resourceId: t.resourceId,\n        clientMutationId: `${t.clientMutationId}:${n}`,\n        idempotencyKey: m,\n        updateMask: [n],\n        patch: i\n      }, { \"idempotency-key\": m }), !o.canonicalResource) throw new Error(\"Academy did not return confirmed settings.\");\n      s == null || s(i, o.canonicalResource);\n    }\n    return o;\n  }\n  reports() {\n    return this.get(\"/admin/v1/reports/summary\");\n  }\n  aiDraft(e, t) {\n    return this.post(\"/admin/v1/ai/authoring\", { kind: e, input: t });\n  }\n  publicCatalog() {\n    return this.get(\"/public/v1/catalog\", !1);\n  }\n  async get(e, t = !0) {\n    return this.request(\"GET\", e, void 0, t);\n  }\n  async post(e, t) {\n    return this.request(\"POST\", e, t, !0);\n  }\n  async put(e, t) {\n    return this.request(\"PUT\", e, t, !0);\n  }\n  async patch(e, t, s) {\n    return this.request(\"PATCH\", e, t, !0, s);\n  }\n  async request(e, t, s, c = !0, o) {\n    const n = this.getAccessToken(), i = await fetch(`${this.baseUrl}${t}`, {\n      method: e,\n      headers: {\n        \"content-type\": \"application/json\",\n        ...o,\n        ...c && n ? { authorization: `Bearer ${n}` } : {}\n      },\n      body: s === void 0 ? void 0 : JSON.stringify(s)\n    });\n    return h(i);\n  }\n}\nfunction u(r, e = \"?\") {\n  if (!r) return \"\";\n  const t = Math.max(1, Math.min(1e3, Math.trunc(r.limit ?? 100))), s = Math.max(0, Math.trunc(r.offset ?? 0));\n  return `${e}limit=${t}&offset=${s}`;\n}\nexport {\n  g as AcademyClient\n};\n","imports":[{"dynamic":false,"end":263,"specifier":"./response.js","start":250}],"hasUnsupportedDynamicImports":false},{"path":"workspace/react/dist/shared/courseAccess.js","kind":"module","text":"function s(e) {\n  var n;\n  return e.learningAccess === \"open\" && e.status === \"published\" && e.audience !== \"invited\" && ((n = e.pricing) == null ? void 0 : n.type) === \"free\" && e.pricing.amountCents === 0;\n}\nfunction u(e) {\n  return e.status === \"private\" ? \"invited\" : e.status === \"published\" ? \"public\" : e.audience === \"public\" || e.audience === \"invited\" ? e.audience : e.status === \"archived\" ? e.archivedFromStatus === \"published\" ? \"public\" : \"invited\" : \"public\";\n}\nfunction l(e) {\n  return e === \"invited\" ? \"private\" : \"published\";\n}\nfunction c(e) {\n  return [\"published\", \"private\", \"archived\", \"retired\", \"suspended\"].includes(e.status);\n}\nfunction o(e) {\n  return e.status === \"private\" ? { title: \"Invitation only\", detail: \"Existing learners or admin grants\" } : e.status === \"published\" ? e.listed ?? !0 ? {\n    title: \"Public catalog\",\n    detail: e.enrollmentStatus === \"closed\" ? \"New enrollment closed\" : \"Open enrollment\"\n  } : {\n    title: \"Direct link\",\n    detail: e.enrollmentStatus === \"closed\" ? \"New enrollment closed\" : \"Open enrollment\"\n  } : e.status === \"archived\" ? {\n    title: \"Archived\",\n    detail: e.archivedFromStatus === \"published\" ? \"Previously public\" : e.archivedFromStatus === \"private\" ? \"Previously invitation only\" : \"Prior audience unavailable\"\n  } : e.audience === \"invited\" ? { title: \"Invitation only planned\", detail: \"Launch before granting access\" } : {\n    title: e.listed ?? !0 ? \"Public catalog planned\" : \"Direct link planned\",\n    detail: e.enrollmentStatus === \"closed\" ? \"Launch with enrollment closed\" : \"Launch with open enrollment\"\n  };\n}\nfunction r(e, n) {\n  const i = n.sections.reduce((t, a) => t + a.lessons.length, 0);\n  return e.audience === \"invited\" ? [\n    \"The course will not appear in public catalog or detail routes.\",\n    \"Only learners granted access in Students can open it.\",\n    `${i} complete lesson${i === 1 ? \"\" : \"s\"} will be available to invited learners.`\n  ] : [\n    e.listed ? \"The course will appear in the public catalog.\" : \"The course will be live only through its direct link.\",\n    e.learningAccess === \"open\" && e.pricingType === \"free\" ? \"Anyone can read the lessons without signing in or enrolling.\" : e.enrollmentStatus === \"open\" ? \"Signed-in learners can enroll immediately.\" : \"New enrollment remains closed.\",\n    `${i} complete lesson${i === 1 ? \"\" : \"s\"} will be available to learners.`\n  ];\n}\nfunction d(e, n) {\n  const i = l(n.audience);\n  return e.status === i ? `Publish changes to ${e.title}?` : i === \"private\" ? `Make ${e.title} invitation only?` : `Make ${e.title} public?`;\n}\nfunction p(e, n) {\n  return e.status === l(n.audience) ? \"Saved changes become available immediately to learners who can open this course.\" : n.audience === \"invited\" ? \"Public discovery and self-enrollment stop when these changes are published.\" : \"The course becomes publicly discoverable according to the choices below.\";\n}\nfunction h(e, n, i) {\n  if (e.status !== l(n.audience)) {\n    const t = r(n, i);\n    return e.status === \"published\" && n.audience === \"invited\" && t.splice(1, 1, \"Existing enrolled learners keep access. Revoke individual access in Students if needed; new learners need an admin grant.\"), t;\n  }\n  return [\n    \"Course details and lesson content are replaced together.\",\n    \"Current learner progress and certificates remain intact.\",\n    \"Academy records the update in course history and the audit trail.\"\n  ];\n}\nfunction v(e, n) {\n  return !n || e.status === l(n.audience) ? \"Publish changes\" : n.audience === \"invited\" ? \"Make invitation only\" : \"Make public\";\n}\nexport {\n  o as courseAccessSummary,\n  r as courseLaunchImpact,\n  c as courseUrlIsLocked,\n  s as hasOpenLessons,\n  u as inferCourseAudience,\n  p as liveCourseChangeDescription,\n  h as liveCourseChangeImpact,\n  v as liveCourseChangeLabel,\n  d as liveCourseChangeTitle,\n  l as liveCourseStatus\n};\n","imports":[],"hasUnsupportedDynamicImports":false},{"path":"workspace/react/dist/shared/courseArtwork.js","kind":"module","text":"import { jsx as e, Fragment as n, jsxs as l } from \"react/jsx-runtime\";\nimport { useState as h } from \"react\";\nfunction u({ course: a, hideWhenUnavailable: i = !1 }) {\n  var t;\n  const r = (t = a.thumbnailRef) == null ? void 0 : t.trim(), [s, o] = h(\"\");\n  return !r || s === r || !(r.startsWith(\"/media/\") || /^https:\\/\\//i.test(r)) ? i ? /* @__PURE__ */ e(n, {}) : /* @__PURE__ */ l(\"div\", { className: \"ca-course-artwork ca-course-artwork--missing\", \"aria-label\": \"Course image unavailable\", children: [\n    /* @__PURE__ */ e(\"svg\", { viewBox: \"0 0 24 24\", width: \"32\", height: \"32\", fill: \"none\", stroke: \"currentColor\", strokeWidth: \"1.5\", strokeLinecap: \"round\", strokeLinejoin: \"round\", \"aria-hidden\": \"true\", children: /* @__PURE__ */ e(\"path\", { d: \"M12 7v14M3 3h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5v17h-5a4 4 0 0 0-4 1 4 4 0 0 0-4-1H3Z\" }) }),\n    /* @__PURE__ */ e(\"span\", { children: \"Text lessons\" })\n  ] }) : /* @__PURE__ */ e(\"img\", { className: \"ca-course-artwork\", src: r, alt: \"\", loading: \"lazy\", width: \"700\", height: \"700\", onError: () => o(r) });\n}\nexport {\n  u as CourseArtwork\n};\n","imports":[{"dynamic":false,"end":69,"specifier":"react/jsx-runtime","start":52},{"dynamic":false,"end":108,"specifier":"react","start":103}],"hasUnsupportedDynamicImports":false},{"path":"workspace/react/dist/shared/formValidation.js","kind":"module","text":"import { useRef as u, useState as a, useEffect as i } from \"react\";\nfunction f() {\n  const t = u(null), [n, l] = a({});\n  i(() => {\n    var o;\n    if (!Object.values(n).some(Boolean)) return;\n    const e = (o = t.current) == null ? void 0 : o.querySelector('[aria-invalid=\"true\"]');\n    if (e) {\n      for (let r = e.parentElement; r && r !== t.current; r = r.parentElement)\n        r instanceof HTMLDetailsElement && (r.open = !0);\n      e.focus(), e.scrollIntoView({ block: \"nearest\" });\n    }\n  }, [n]);\n  function s(e) {\n    return l(e), !Object.values(e).some(Boolean);\n  }\n  return { ref: t, errors: n, validate: s };\n}\nexport {\n  f as useFormValidation\n};\n","imports":[{"dynamic":false,"end":65,"specifier":"react","start":60}],"hasUnsupportedDynamicImports":false},{"path":"workspace/react/dist/shared/lessonContent.js","kind":"module","text":"import { jsx as e, Fragment as p } from \"react/jsx-runtime\";\nfunction u({ body: l, headingLevel: a = 4 }) {\n  const r = l.trim().replace(/^(#{1,3}\\s+.+)\\n(?=\\S)/gm, `$1\n\n`).split(/\\n\\s*\\n/);\n  return /* @__PURE__ */ e(\"div\", { className: \"ca-lesson-body\", children: r.map((s, t) => {\n    const i = s.split(`\n`), d = /^(#{1,3})\\s+(.+)$/.exec(i[0]);\n    if (d && i.length === 1) {\n      const n = Math.min(6, a + d[1].length - 1);\n      return /* @__PURE__ */ e(n === 4 ? \"h4\" : n === 5 ? \"h5\" : \"h6\", { children: /* @__PURE__ */ e(h, { text: d[2] }) }, t);\n    }\n    return i.every((n) => /^[-*]\\s+/.test(n)) ? /* @__PURE__ */ e(\"ul\", { children: i.map((n, o) => /* @__PURE__ */ e(\"li\", { children: /* @__PURE__ */ e(h, { text: n.replace(/^[-*]\\s+/, \"\") }) }, o)) }, t) : i.every((n) => /^\\d+[.)]\\s+/.test(n)) ? /* @__PURE__ */ e(\"ol\", { children: i.map((n, o) => /* @__PURE__ */ e(\"li\", { children: /* @__PURE__ */ e(h, { text: n.replace(/^\\d+[.)]\\s+/, \"\") }) }, o)) }, t) : /* @__PURE__ */ e(\"p\", { children: /* @__PURE__ */ e(h, { text: s }) }, t);\n  }) });\n}\nfunction h({ text: l }) {\n  const a = /\\[([^\\]]+)]\\((https:\\/\\/[^)\\s]+)\\)/g, c = [];\n  let r = 0;\n  for (const s of l.matchAll(a)) {\n    const t = s.index ?? 0;\n    t > r && c.push(/* @__PURE__ */ e(\"span\", { children: l.slice(r, t) }, `text-${r}`)), c.push(/* @__PURE__ */ e(\"a\", { href: s[2], rel: \"noopener noreferrer\", children: s[1] }, `link-${t}`)), r = t + s[0].length;\n  }\n  return r < l.length && c.push(/* @__PURE__ */ e(\"span\", { children: l.slice(r) }, `text-${r}`)), /* @__PURE__ */ e(p, { children: c });\n}\nexport {\n  u as LearnerLessonBody\n};\n","imports":[{"dynamic":false,"end":58,"specifier":"react/jsx-runtime","start":41}],"hasUnsupportedDynamicImports":false},{"path":"workspace/react/dist/shared/links.js","kind":"module","text":"function o(r) {\n  const e = (r == null ? void 0 : r.trim()) ?? \"\";\n  return e ? `/courses?course=${encodeURIComponent(e)}` : \"/courses\";\n}\nfunction c(r) {\n  var e;\n  return ((e = new URLSearchParams(r).get(\"course\")) == null ? void 0 : e.trim()) ?? \"\";\n}\nexport {\n  o as courseCatalogUrl,\n  c as courseSlugFromSearch\n};\n","imports":[],"hasUnsupportedDynamicImports":false},{"path":"workspace/react/dist/shared/response.js","kind":"module","text":"async function i(r) {\n  let e;\n  try {\n    e = await r.json();\n  } catch {\n    throw new Error(r.ok ? \"Academy returned an invalid response.\" : `Academy request failed with ${r.status}`);\n  }\n  if (!r.ok) {\n    const s = n(e) && n(e.error) ? e.error : null;\n    throw new Error(typeof (s == null ? void 0 : s.message) == \"string\" ? s.message : `Academy request failed with ${r.status}`);\n  }\n  if (!n(e) || Object.keys(e).length === 0) throw new Error(\"Academy returned an invalid response.\");\n  return e;\n}\nfunction n(r) {\n  return r !== null && typeof r == \"object\" && !Array.isArray(r);\n}\nfunction o(r) {\n  const e = n(r) && n(r.output) ? r.output : null, a = ((e == null ? void 0 : e.kind) === \"messages\" && Array.isArray(e.messages) ? e.messages : []).filter((t) => n(t) && t.role === \"assistant\").flatMap((t) => n(t) && Array.isArray(t.parts) ? t.parts : []).filter((t) => n(t) && t.kind === \"text\" && typeof t.text == \"string\").map((t) => n(t) && typeof t.text == \"string\" ? t.text.trim() : \"\").filter(Boolean);\n  if (a.length === 0) throw new Error(\"The site provider did not return draft content.\");\n  return a.join(`\n\n`);\n}\nexport {\n  o as readAcademyDraft,\n  i as readAcademyResponse\n};\n","imports":[],"hasUnsupportedDynamicImports":false},{"path":"workspace/react/dist/shared/styles.js","kind":"module","text":"import s from \"../styles.css.js\";\nconst t = \"cedros-academy-runtime-styles\", n = \"@cedros-academy/academy::workspace/react/dist/styles.css\", d = s;\nfunction o() {\n  if (typeof document > \"u\" || document.getElementById(t)) return;\n  const e = document.createElement(\"style\");\n  e.id = t, e.setAttribute(\"data-ca5ss4b-extension-style\", n), e.textContent = d, document.head.appendChild(e);\n}\nexport {\n  d as academyStyles,\n  o as ensureAcademyStyles\n};\n","imports":[{"dynamic":false,"end":31,"specifier":"../styles.css.js","start":15}],"hasUnsupportedDynamicImports":false},{"path":"workspace/react/dist/shared/ui.js","kind":"module","text":"import { jsx as t, jsxs as i, Fragment as _ } from \"react/jsx-runtime\";\nimport { useMemo as E, useState as x, useRef as g, useEffect as k, useCallback as D, useId as S } from \"react\";\nimport { AcademyClient as q } from \"./api.js\";\nimport { ensureAcademyAdminStyles as B } from \"./adminStyles.js\";\nconst T = \"cedros-academy\";\nfunction U(e) {\n  return B(), E(\n    () => new q({\n      serverUrl: e.serverUrl,\n      getAccessToken: e.getAccessToken\n    }),\n    [e]\n  );\n}\nfunction V(e, a, n = !1) {\n  const [l, o] = x(0), [f, s] = x({ loading: !0 }), d = g(a);\n  k(() => {\n    let b = !1;\n    const r = a.length !== d.current.length || a.some((c, u) => !Object.is(c, d.current[u]));\n    return d.current = a, s((c) => n && !r ? { ...c, error: void 0, loading: c.data === void 0, refreshing: c.data !== void 0 } : { loading: !0, refreshing: n ? !1 : void 0 }), e().then((c) => {\n      b || s({ loading: !1, data: c, refreshing: n ? !1 : void 0 });\n    }).catch((c) => {\n      b || s((u) => ({ ...u, loading: !1, refreshing: n ? !1 : void 0, error: c.message }));\n    }), () => {\n      b = !0;\n    };\n  }, [...a, l, n]);\n  const y = D(() => o((b) => b + 1), []);\n  return [f, y];\n}\nfunction z(e) {\n  if (e.state.loading)\n    return e.loadingContent ?? /* @__PURE__ */ t(P, { title: e.loadingTitle ?? \"Loading Academy data\", compact: e.compact });\n  const a = e.state.error ? /* @__PURE__ */ t(\n    F,\n    {\n      tone: \"error\",\n      title: e.errorTitle ?? (e.state.data ? \"Refresh failed\" : \"Academy data unavailable\"),\n      message: e.state.error,\n      action: e.onAction ? /* @__PURE__ */ t(\"button\", { className: \"cedros-data-btn cedros-data-btn--secondary ca-button\", type: \"button\", onClick: e.onAction, children: e.actionLabel ?? \"Retry\" }) : void 0\n    }\n  ) : null;\n  if (a && (e.state.refreshing === void 0 || !e.state.data)) return a;\n  const n = !e.state.data || e.empty ? /* @__PURE__ */ t(\n    j,\n    {\n      action: e.emptyAction,\n      micro: e.compact,\n      title: e.emptyTitle ?? \"No Academy records\",\n      message: e.emptyMessage ?? \"Create or enable Academy content to populate this view.\"\n    }\n  ) : e.children(e.state.data);\n  return e.state.refreshing !== void 0 ? /* @__PURE__ */ i(\"div\", { className: \"ca-inline-stack\", \"aria-busy\": e.state.refreshing || void 0, children: [\n    a,\n    n\n  ] }) : n;\n}\nfunction G(e) {\n  return /* @__PURE__ */ i(\"div\", { className: \"cedros-data-table-wrap\", role: \"region\", \"aria-label\": e.label, \"aria-busy\": \"true\", tabIndex: 0, children: [\n    /* @__PURE__ */ i(\"table\", { className: \"cedros-data-table ca-table\", children: [\n      /* @__PURE__ */ t(\"thead\", { children: /* @__PURE__ */ t(\"tr\", { children: e.columns.map((a) => /* @__PURE__ */ t(\"th\", { scope: \"col\", children: a }, a)) }) }),\n      /* @__PURE__ */ t(\"tbody\", { children: [0, 1, 2].map((a) => /* @__PURE__ */ t(\"tr\", { \"aria-hidden\": \"true\", children: e.columns.map((n) => /* @__PURE__ */ t(\"td\", { children: /* @__PURE__ */ t(\"span\", { className: \"ca-skeleton ca-skeleton--line\" }) }, n)) }, a)) })\n    ] }),\n    /* @__PURE__ */ i(\"span\", { className: \"ca-sr-only\", role: \"status\", children: [\n      \"Loading \",\n      e.label.toLowerCase()\n    ] })\n  ] });\n}\nfunction Y(e) {\n  const a = S(), n = `${a}-description`, l = `${a}-error`, o = g(null), f = e.toolbar ? \"div\" : \"label\";\n  function s() {\n    var d;\n    e.onChange(\"\"), (d = o.current) == null || d.focus();\n  }\n  return /* @__PURE__ */ i(f, { className: `cedros-data-field ca-field${e.toolbar ? \" ca-toolbar-field\" : \"\"}`, children: [\n    e.toolbar ? /* @__PURE__ */ t(\"label\", { htmlFor: a, className: \"ca-sr-only\", children: e.label }) : /* @__PURE__ */ i(\"span\", { className: \"cedros-data-label\", children: [\n      e.label,\n      e.required ? /* @__PURE__ */ t(\"span\", { className: \"ca-muted\", \"aria-hidden\": \"true\", children: \" (required)\" }) : null\n    ] }),\n    e.toolbar ? /* @__PURE__ */ i(\"svg\", { \"aria-hidden\": \"true\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: \"2\", strokeLinecap: \"round\", strokeLinejoin: \"round\", children: [\n      /* @__PURE__ */ t(\"circle\", { cx: \"11\", cy: \"11\", r: \"8\" }),\n      /* @__PURE__ */ t(\"path\", { d: \"m21 21-4.3-4.3\" })\n    ] }) : null,\n    e.textarea ? /* @__PURE__ */ t(\n      \"textarea\",\n      {\n        id: a,\n        \"aria-label\": e.label,\n        \"aria-describedby\": e.error ? l : e.help ? n : void 0,\n        \"aria-invalid\": e.error ? !0 : void 0,\n        className: \"cedros-data-textarea\",\n        disabled: e.disabled,\n        maxLength: e.maxLength,\n        required: e.required,\n        value: e.value,\n        onBlur: e.onBlur,\n        onChange: (d) => e.onChange(d.target.value),\n        rows: 4\n      }\n    ) : /* @__PURE__ */ t(\n      \"input\",\n      {\n        ref: o,\n        id: a,\n        \"aria-label\": e.label,\n        \"aria-describedby\": e.error ? l : e.help ? n : void 0,\n        \"aria-invalid\": e.error ? !0 : void 0,\n        className: \"cedros-data-input\",\n        disabled: e.disabled,\n        maxLength: e.maxLength,\n        required: e.required,\n        min: e.min,\n        max: e.max,\n        step: e.step,\n        type: e.type ?? \"text\",\n        placeholder: e.toolbar ? e.label : void 0,\n        value: e.value,\n        onBlur: e.onBlur,\n        onChange: (d) => e.onChange(d.target.value),\n        onKeyDown: (d) => {\n          e.toolbar && d.key === \"Escape\" && e.value && (d.preventDefault(), s());\n        }\n      }\n    ),\n    e.toolbar && e.value ? /* @__PURE__ */ t(\"button\", { \"aria-label\": \"Clear search\", title: \"Clear search\", className: \"cedros-data-btn cedros-data-btn--ghost ca-button ca-search-clear\", type: \"button\", disabled: e.disabled, onClick: s, children: /* @__PURE__ */ t(\"svg\", { \"aria-hidden\": \"true\", width: \"16\", height: \"16\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: \"2\", strokeLinecap: \"round\", strokeLinejoin: \"round\", children: /* @__PURE__ */ t(\"path\", { d: \"m18 6-12 12M6 6l12 12\" }) }) }) : null,\n    e.error ? /* @__PURE__ */ t(\"span\", { id: l, className: \"cedros-data-field__description ca-field-error\", children: e.error }) : e.help ? /* @__PURE__ */ t(\"span\", { id: n, className: \"cedros-data-field__description ca-muted\", children: e.help }) : null\n  ] });\n}\nfunction Z(e) {\n  if (e.amountCents === void 0 || !Number.isFinite(e.amountCents)) return /* @__PURE__ */ t(\"span\", { children: \"Price unavailable\" });\n  if (e.amountCents === 0) return /* @__PURE__ */ t(\"span\", { children: \"Free\" });\n  const a = e.amountCents / 100;\n  try {\n    const n = { style: \"currency\", currency: e.currency ?? \"USD\" }, l = a.toLocaleString(void 0, n), o = Math.abs(a) >= 1e6 ? a.toLocaleString(void 0, { ...n, notation: \"compact\", maximumFractionDigits: 2 }) : l;\n    return /* @__PURE__ */ t(\"span\", { title: l, \"aria-label\": l, children: o });\n  } catch {\n    return /* @__PURE__ */ t(\"span\", { children: \"Price unavailable\" });\n  }\n}\nfunction J(e) {\n  const a = e.value ?? \"unknown\";\n  return /* @__PURE__ */ t(\"span\", { className: `cedros-data-pill cedros-data-pill--${M(a)} ca-status ca-status--${M(a)}`, children: I(a) });\n}\nfunction I(e) {\n  const a = e.replaceAll(\"_\", \" \");\n  return a.charAt(0).toLocaleUpperCase() + a.slice(1);\n}\nfunction Q(e) {\n  return e.pluginContext.hasPermission(e.permission) ? e.children : /* @__PURE__ */ t(\"div\", { className: \"cedros-data-setup-notice ca-card\", children: /* @__PURE__ */ i(\"div\", { className: \"cedros-data-setup-notice__body\", children: [\n    /* @__PURE__ */ t(\"strong\", { children: \"Academy permission required\" }),\n    /* @__PURE__ */ t(\"p\", { children: \"Ask a site owner for permission to manage Academy before using this view.\" })\n  ] }) });\n}\nfunction X(e) {\n  const a = g(null);\n  return k(() => {\n    e.focusOnMount && $(a.current);\n  }, []), /* @__PURE__ */ i(\"div\", { className: \"cedros-data__header ca-page-header\", children: [\n    /* @__PURE__ */ i(\"div\", { className: \"cedros-data__header-text\", children: [\n      /* @__PURE__ */ t(\"h2\", { ref: a, tabIndex: -1, className: \"cedros-data__title\", children: e.title }),\n      /* @__PURE__ */ t(\"p\", { className: \"cedros-data__subtitle ca-muted\", children: e.subtitle })\n    ] }),\n    e.action ? /* @__PURE__ */ t(\"div\", { className: \"cedros-data-actions\", children: e.action }) : null\n  ] });\n}\nfunction $(e) {\n  e != null && e.isConnected && document.activeElement === document.body && (e.tabIndex = -1, e.focus());\n}\nfunction O(e) {\n  const a = typeof e.value == \"number\" ? e.value.toLocaleString(void 0, e.value >= 1e4 ? { notation: \"compact\", maximumFractionDigits: 1 } : {}) : e.value;\n  return /* @__PURE__ */ i(\"div\", { className: \"cedros-data-metric ca-metric\", children: [\n    /* @__PURE__ */ t(\"span\", { className: \"cedros-data-metric__label\", children: e.title }),\n    /* @__PURE__ */ t(\"strong\", { className: \"cedros-data-metric__value\", title: typeof e.value == \"number\" ? e.value.toLocaleString() : void 0, children: a }),\n    /* @__PURE__ */ t(\"span\", { className: \"cedros-data-metric__hint ca-muted\", children: e.detail })\n  ] });\n}\nfunction p(e) {\n  return Number.isFinite(e) ? Math.max(1, Math.min(100, Math.trunc(e))) : 25;\n}\nfunction ee(e) {\n  if (e.offset === 0 && e.count < e.limit) return /* @__PURE__ */ t(_, {});\n  const a = Math.floor(e.offset / e.limit) + 1;\n  return /* @__PURE__ */ i(\"nav\", { \"aria-label\": \"Pagination\", className: \"cedros-data-pagination ca-row-actions\", children: [\n    /* @__PURE__ */ i(\"span\", { className: \"ca-muted\", children: [\n      \"Page \",\n      a.toLocaleString()\n    ] }),\n    /* @__PURE__ */ i(\"div\", { className: \"cedros-data-actions\", children: [\n      /* @__PURE__ */ t(\n        \"button\",\n        {\n          className: \"cedros-data-btn cedros-data-btn--secondary cedros-data-btn--sm ca-button\",\n          disabled: e.disabled || e.offset === 0,\n          type: \"button\",\n          onClick: () => e.onChange(Math.max(0, e.offset - e.limit)),\n          children: \"Previous\"\n        }\n      ),\n      /* @__PURE__ */ t(\n        \"button\",\n        {\n          className: \"cedros-data-btn cedros-data-btn--secondary cedros-data-btn--sm ca-button\",\n          disabled: e.disabled || e.count < e.limit,\n          type: \"button\",\n          onClick: () => e.onChange(e.offset + e.limit),\n          children: \"Next\"\n        }\n      )\n    ] })\n  ] });\n}\nfunction j(e) {\n  return e.micro ? /* @__PURE__ */ i(\"div\", { className: \"cedros-data-empty ca-empty\", role: e.role, children: [\n    /* @__PURE__ */ t(\"p\", { children: e.message }),\n    e.action ? /* @__PURE__ */ t(\"div\", { className: \"cedros-data-empty-state__action\", children: e.action }) : null\n  ] }) : /* @__PURE__ */ i(\"div\", { className: \"cedros-data-empty-state ca-empty-state\", role: e.role, children: [\n    /* @__PURE__ */ t(\"span\", { className: \"cedros-data-empty-state__art\", \"aria-hidden\": \"true\", children: /* @__PURE__ */ i(\"svg\", { viewBox: \"0 0 64 64\", fill: \"none\", stroke: \"currentColor\", strokeWidth: \"2.4\", strokeLinecap: \"round\", strokeLinejoin: \"round\", children: [\n      /* @__PURE__ */ t(\"rect\", { x: \"16\", y: \"13\", width: \"32\", height: \"42\", rx: \"5\" }),\n      /* @__PURE__ */ t(\"rect\", { x: \"25\", y: \"9\", width: \"14\", height: \"8\", rx: \"2.5\" }),\n      /* @__PURE__ */ t(\"path\", { d: \"M24 29h16M24 37h16\" }),\n      /* @__PURE__ */ t(\"path\", { className: \"cedros-data-empty-state__art-accent\", strokeWidth: \"2.6\", d: \"M24 44.5l4.5 4.5 9.5-9.5\" })\n    ] }) }),\n    /* @__PURE__ */ t(\"strong\", { children: e.title }),\n    /* @__PURE__ */ t(\"p\", { className: \"cedros-data-empty-state__copy\", children: e.message }),\n    e.action ? /* @__PURE__ */ t(\"div\", { className: \"cedros-data-empty-state__action\", children: e.action }) : null\n  ] });\n}\nfunction F(e) {\n  const a = e.tone ?? \"neutral\";\n  return /* @__PURE__ */ i(\"div\", { className: `cedros-data-status cedros-data-status--${a} ca-notice ca-notice--${a}`, role: a === \"error\" ? \"alert\" : \"status\", children: [\n    /* @__PURE__ */ t(\"svg\", { className: \"ca-notice__icon\", \"aria-hidden\": \"true\", width: \"16\", height: \"16\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: \"2\", strokeLinecap: \"round\", strokeLinejoin: \"round\", children: a === \"success\" ? /* @__PURE__ */ i(_, { children: [\n      /* @__PURE__ */ t(\"circle\", { cx: \"12\", cy: \"12\", r: \"10\" }),\n      /* @__PURE__ */ t(\"path\", { d: \"m8 12 3 3 5-6\" })\n    ] }) : a === \"warning\" ? /* @__PURE__ */ i(_, { children: [\n      /* @__PURE__ */ t(\"path\", { d: \"m10.3 3.9-8.2 14.2A2 2 0 0 0 3.8 21h16.4a2 2 0 0 0 1.7-2.9L13.7 3.9a2 2 0 0 0-3.4 0Z\" }),\n      /* @__PURE__ */ t(\"path\", { d: \"M12 9v4m0 4h.01\" })\n    ] }) : /* @__PURE__ */ i(_, { children: [\n      /* @__PURE__ */ t(\"circle\", { cx: \"12\", cy: \"12\", r: \"10\" }),\n      /* @__PURE__ */ t(\"path\", { d: a === \"error\" ? \"M12 8v4m0 4h.01\" : \"M12 16v-4m0-4h.01\" })\n    ] }) }),\n    /* @__PURE__ */ i(\"div\", { className: \"ca-notice__copy\", children: [\n      /* @__PURE__ */ t(\"strong\", { children: e.title }),\n      /* @__PURE__ */ t(\"p\", { children: e.message })\n    ] }),\n    e.action ? /* @__PURE__ */ t(\"div\", { className: \"cedros-data-status__actions\", children: e.action }) : null\n  ] });\n}\nfunction P(e) {\n  return /* @__PURE__ */ i(\"div\", { className: e.compact ? \"ca-skeleton-block\" : \"cedros-data-card ca-card ca-skeleton-block\", role: \"status\", \"aria-label\": e.title, children: [\n    /* @__PURE__ */ t(\"span\", { className: \"ca-skeleton ca-skeleton--title\", \"aria-hidden\": \"true\" }),\n    /* @__PURE__ */ t(\"span\", { className: \"ca-skeleton ca-skeleton--line\", \"aria-hidden\": \"true\" }),\n    e.compact ? null : /* @__PURE__ */ t(\"span\", { className: \"ca-skeleton ca-skeleton--line ca-skeleton--short\", \"aria-hidden\": \"true\" })\n  ] });\n}\nfunction te(e) {\n  const a = S(), [n, l] = x(!1), o = g(e.busy);\n  o.current = e.busy;\n  const f = g(null), s = g(null), d = g(null);\n  function y() {\n    e.busy || (n ? l(!1) : e.dirty ? l(!0) : e.onCancel());\n  }\n  const b = g(y);\n  return b.current = y, k(() => {\n    if (!e.dirty) return;\n    const r = (c) => {\n      c.preventDefault(), c.returnValue = \"\";\n    };\n    return window.addEventListener(\"beforeunload\", r), () => window.removeEventListener(\"beforeunload\", r);\n  }, [e.dirty]), k(() => {\n    var L;\n    const r = typeof document < \"u\" ? document.activeElement : null, c = r instanceof HTMLElement ? r.closest(\".cedros-academy-admin\") : null, u = c == null ? void 0 : c.closest(\"main.cedros-academy-admin\"), N = s.current;\n    N == null || N.showModal(), (L = d.current) == null || L.focus();\n    function w(m) {\n      if (m.key !== \"Tab\" || !f.current) return;\n      const v = Array.from(f.current.querySelectorAll(\"button, input, textarea, select, a[href]\")).filter((A) => !A.matches(\":disabled\") && A.getClientRects().length), h = v[0], C = v[v.length - 1];\n      !h || !C || (m.shiftKey && document.activeElement === h ? (m.preventDefault(), C.focus()) : !m.shiftKey && document.activeElement === C && (m.preventDefault(), h.focus()));\n    }\n    return document.addEventListener(\"keydown\", w), () => {\n      if (document.removeEventListener(\"keydown\", w), N == null || N.close(), r instanceof HTMLElement && r.isConnected) r.focus();\n      else {\n        if (!(c != null && c.isConnected) && (u != null && u.isConnected)) {\n          const h = u.querySelector(\".cedros-data__title\");\n          if (h) {\n            $(h);\n            return;\n          }\n        }\n        const m = c != null && c.isConnected ? c : u, v = Array.from((m == null ? void 0 : m.querySelectorAll(\"button, input, textarea, select, a[href]\")) ?? []).find((h) => !h.matches(\":disabled\") && h.getClientRects().length);\n        v == null || v.focus();\n      }\n    };\n  }, []), k(() => {\n    var r;\n    (r = d.current) == null || r.focus();\n  }, [n]), /* @__PURE__ */ t(\n    \"dialog\",\n    {\n      ref: s,\n      className: \"cedros-data-dialog__overlay\",\n      \"aria-modal\": \"true\",\n      \"aria-busy\": e.busy || void 0,\n      \"aria-labelledby\": `${a}-title`,\n      \"aria-describedby\": `${a}-description`,\n      onCancel: (r) => {\n        r.preventDefault(), o.current || b.current();\n      },\n      onClick: (r) => {\n        var c;\n        r.target === r.currentTarget && !e.dirty && !((c = f.current) != null && c.querySelector(\"input, textarea, select\")) && y();\n      },\n      children: /* @__PURE__ */ i(\"div\", { ref: f, className: \"cedros-data-dialog\", children: [\n        /* @__PURE__ */ i(\"div\", { className: \"cedros-data-dialog__heading\", children: [\n          /* @__PURE__ */ t(\"h3\", { id: `${a}-title`, className: \"cedros-data-dialog__title\", children: n ? \"Save changes before leaving?\" : e.title }),\n          /* @__PURE__ */ t(\"p\", { id: `${a}-description`, className: \"cedros-data-dialog__description\", children: n ? \"You have unsaved changes.\" : e.description }),\n          /* @__PURE__ */ t(\n            \"button\",\n            {\n              \"aria-label\": \"Close dialog\",\n              className: \"cedros-data-btn cedros-data-btn--ghost cedros-data-btn--sm cedros-data-dialog__close ca-button\",\n              disabled: e.busy,\n              title: \"Close dialog\",\n              type: \"button\",\n              onClick: y,\n              children: /* @__PURE__ */ t(\"svg\", { \"aria-hidden\": \"true\", width: \"16\", height: \"16\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: \"2\", strokeLinecap: \"round\", strokeLinejoin: \"round\", children: /* @__PURE__ */ t(\"path\", { d: \"m18 6-12 12M6 6l12 12\" }) })\n            }\n          )\n        ] }),\n        /* @__PURE__ */ t(\"div\", { className: \"cedros-data-dialog__body\", children: n ? /* @__PURE__ */ t(\"p\", { children: \"Exit without saving to discard this draft, or keep editing.\" }) : /* @__PURE__ */ i(_, { children: [\n          /* @__PURE__ */ t(\"ul\", { className: \"ca-dialog-impact\", children: e.impact.map((r) => /* @__PURE__ */ t(\"li\", { children: r }, r)) }),\n          e.children\n        ] }) }),\n        /* @__PURE__ */ i(\"div\", { className: \"ca-dialog-actions\", children: [\n          /* @__PURE__ */ t(\"button\", { ref: d, className: \"cedros-data-btn cedros-data-btn--ghost ca-button\", type: \"button\", disabled: e.busy, onClick: y, children: n ? \"Keep editing\" : \"Cancel\" }),\n          n ? /* @__PURE__ */ t(\"button\", { className: \"cedros-data-btn cedros-data-btn--secondary ca-button\", type: \"button\", onClick: e.onCancel, children: \"Exit without saving\" }) : /* @__PURE__ */ t(\"button\", { className: `cedros-data-btn cedros-data-btn--${e.tone ?? \"danger\"} ca-button ca-button-${e.tone ?? \"danger\"}`, type: \"button\", disabled: e.busy || e.disabled, onClick: e.onConfirm, children: e.confirmLabel })\n        ] })\n      ] })\n    }\n  );\n}\nfunction ae(e = \"\") {\n  return { className: [\"cedros-academy-admin\", \"cedros-data\", e].filter(Boolean).join(\" \"), \"data-extension-id\": T };\n}\nfunction ne(e) {\n  if (!e) return \"redacted\";\n  if (e.includes(\"@\")) {\n    const [a, n] = e.split(\"@\");\n    return `${a.slice(0, 2)}...@${n.slice(0, 2)}...`;\n  }\n  return e.length <= 10 ? `${e.slice(0, 2)}...` : `${e.slice(0, 6)}...${e.slice(-4)}`;\n}\nfunction M(e) {\n  const a = e.toLowerCase();\n  return [\"active\", \"published\", \"completed\", \"approved\", \"valid\", \"ready\", \"healthy\", \"issued\", \"free\"].includes(a) ? \"success\" : [\"draft\", \"needs_review\", \"needs_attention\", \"pending_payment\", \"payment_pending\", \"checkout_pending\", \"awaiting_pay_event\", \"missing_pay_product\"].includes(a) ? \"warning\" : [\"revoked\", \"failed\", \"payment_failed\", \"cancelled\", \"refunded\", \"disputed\", \"chargeback\", \"chargeback_opened\", \"expired\", \"expired_checkout\"].includes(a) ? \"error\" : [\"private\", \"archived\", \"inactive\"].includes(a) ? \"info\" : \"neutral\";\n}\nexport {\n  te as ConfirmDialog,\n  j as EmptyState,\n  Y as Field,\n  Q as Guard,\n  P as LoadingState,\n  O as Metric,\n  Z as Money,\n  F as Notice,\n  ee as PageControls,\n  X as SectionHeader,\n  z as StateBlock,\n  J as Status,\n  G as TableLoading,\n  T as academyExtensionId,\n  ae as adminRootAttrs,\n  I as enumLabel,\n  $ as focusViewHeading,\n  p as normalizedPageSize,\n  ne as redactIdentifier,\n  U as useAcademyClient,\n  V as useAsyncData\n};\n","imports":[{"dynamic":false,"end":69,"specifier":"react/jsx-runtime","start":52},{"dynamic":false,"end":181,"specifier":"react","start":176},{"dynamic":false,"end":228,"specifier":"./api.js","start":220},{"dynamic":false,"end":294,"specifier":"./adminStyles.js","start":278}],"hasUnsupportedDynamicImports":false},{"path":"workspace/react/dist/styles.css","kind":"style","text":".cedros-academy{--ca-radius-sm: 7px;--ca-radius-md: 8px;--ca-radius-lg: 12px;--ca-radius-pill: 999px;color:var(--ca5ss4b-runtime-text, #171717);font:inherit;width:100%;max-width:100%;min-width:0;contain:inline-size;container:cedros-academy / inline-size;overflow-wrap:break-word}.cedros-academy *{box-sizing:border-box}.cedros-academy>*,.cedros-academy .ca-card-grid,.cedros-academy .ca-card,.cedros-academy .ca-notice{max-width:100%;min-width:0}.cedros-academy a{color:inherit}.cedros-academy p,.cedros-academy h2,.cedros-academy h3,.cedros-academy h4{margin-top:0;letter-spacing:0}.cedros-academy p{line-height:1.55}.cedros-academy .ca-muted{color:var(--ca5ss4b-runtime-muted, #667085);font-size:13px}.cedros-academy .ca-card{border:1px solid var(--ca5ss4b-runtime-border, #d0d5dd);border-radius:var(--ca-radius-md);padding:14px;background:var(--ca5ss4b-runtime-panel, #ffffff);box-shadow:none}.cedros-academy .ca-card+.ca-card,.cedros-academy .ca-notice+.ca-card,.cedros-academy .ca-card+.ca-notice{margin-top:12px}.cedros-academy .ca-card-header{display:flex;gap:10px;align-items:flex-start;justify-content:space-between;margin-bottom:10px}.cedros-academy .ca-card h3,.cedros-academy .ca-card h4{margin-bottom:6px;font-size:16px;line-height:1.3;font-weight:650}.cedros-academy .ca-button{display:inline-flex;min-height:34px;align-items:center;justify-content:center;gap:6px;border:1px solid var(--ca5ss4b-runtime-border, #cbd5e1);border-radius:var(--ca-radius-sm);background:var(--ca5ss4b-runtime-panel, #ffffff);color:inherit;padding:7px 11px;cursor:pointer;font:inherit;font-weight:550;text-decoration:none;white-space:nowrap}.cedros-academy .ca-button-primary{background:var(--ca5ss4b-runtime-action-bg, #18181b);color:var(--ca5ss4b-runtime-action-fg, #ffffff);border-color:var(--ca5ss4b-runtime-action-bg, #18181b)}.cedros-academy .ca-button:focus-visible,.cedros-academy a.ca-button:focus-visible,.cedros-academy .ca-field input:focus-visible,.cedros-academy .ca-field textarea:focus-visible,.cedros-academy .ca-field select:focus-visible{outline:2px solid var(--ca5ss4b-runtime-text, #171717);outline-offset:2px}.cedros-academy .ca-button[disabled]{cursor:not-allowed;opacity:.55}.cedros-academy .ca-field{display:grid;gap:5px;margin-bottom:11px}.cedros-academy .ca-field label,.cedros-academy .ca-field>span:first-child{font-size:12px;font-weight:650;color:var(--ca5ss4b-runtime-muted, #667085)}.cedros-academy .ca-field input,.cedros-academy .ca-field textarea,.cedros-academy .ca-field select{width:100%;min-height:36px;border:1px solid var(--ca5ss4b-runtime-muted, #667085);border-radius:var(--ca-radius-sm);padding:8px 10px;background:var(--ca5ss4b-runtime-panel, #ffffff);color:inherit;font:inherit}.cedros-academy .ca-field textarea{min-height:92px;resize:vertical}.cedros-academy .ca-learning-tools{display:grid;gap:12px;align-items:stretch;margin-top:24px}.cedros-academy .ca-learner-reviews{display:grid;gap:12px}.cedros-academy .ca-disclosure{border:1px solid var(--ca5ss4b-runtime-border, #d0d5dd);border-radius:var(--ca-radius-md);background:var(--ca5ss4b-runtime-panel, #ffffff);overflow:hidden}.cedros-academy .ca-disclosure>summary{padding:18px 20px;cursor:pointer;font-weight:650}.cedros-academy .ca-disclosure>summary:focus-visible{outline:3px solid var(--ca5ss4b-runtime-text, #171717);outline-offset:-3px}.cedros-academy .ca-disclosure__body{display:grid;gap:16px;padding:0 20px 20px}.cedros-academy .ca-feedback-item{padding:16px 0;border-top:1px solid var(--ca5ss4b-runtime-border, var(--ca-admin-border, #d0d5dd));overflow-wrap:anywhere}.cedros-academy .ca-feedback-item p,.cedros-academy-admin .ca-feedback-item p{white-space:pre-wrap}.cedros-academy .ca-field-error{color:var(--ca5ss4b-runtime-error, #b42318);font-size:12px}.cedros-academy .ca-status{display:inline-flex;min-height:22px;align-items:center;border-radius:var(--ca-radius-pill);padding:2px 8px;background:var(--ca5ss4b-runtime-accent-soft, #f2f4f7);color:var(--ca5ss4b-runtime-muted, #667085);font-size:12px;line-height:1.2;white-space:nowrap}.cedros-academy .ca-status--success{background:color-mix(in srgb,var(--ca5ss4b-runtime-text, #027a48) 12%,transparent);color:var(--ca5ss4b-runtime-text, #05603a)}.cedros-academy .ca-status--warning{background:color-mix(in srgb,var(--ca5ss4b-runtime-warning, #b54708) 14%,transparent);color:var(--ca5ss4b-runtime-text, #93370d)}.cedros-academy .ca-status--error{background:color-mix(in srgb,var(--ca5ss4b-runtime-error, #b42318) 12%,transparent);color:var(--ca5ss4b-runtime-text, #7a271a)}.cedros-academy .ca-status--info{background:color-mix(in srgb,var(--ca5ss4b-runtime-text, #175cd3) 10%,transparent);color:var(--ca5ss4b-runtime-text, #1849a9)}.cedros-academy .ca-notice{display:grid;gap:4px;border:1px solid var(--ca5ss4b-runtime-border, #d0d5dd);border-radius:var(--ca-radius-md);padding:12px;margin-bottom:12px;background:var(--ca5ss4b-runtime-accent-soft, #f8fafc)}.cedros-academy .ca-notice p{margin:0}.cedros-academy .ca-notice--success{border-color:color-mix(in srgb,var(--ca5ss4b-runtime-text, #027a48) 35%,var(--ca5ss4b-runtime-border, #d0d5dd))}.cedros-academy .ca-notice--warning{border-color:color-mix(in srgb,var(--ca5ss4b-runtime-warning, #b54708) 40%,var(--ca5ss4b-runtime-border, #d0d5dd))}.cedros-academy .ca-notice--error{border-color:var(--ca5ss4b-runtime-error, #b42318)}.cedros-academy.ca-public{color:var(--ca5ss4b-runtime-text, #171717)}.cedros-academy.ca-public .ca-muted,.cedros-academy.ca-public .ca-kicker{color:var(--ca5ss4b-runtime-muted, #667085)}.cedros-academy.ca-public .ca-status--success{background:color-mix(in srgb,var(--ca5ss4b-runtime-text, #171717) 6%,transparent);color:var(--ca5ss4b-runtime-text, #171717)}.cedros-academy.ca-public .ca-status--warning{background:color-mix(in srgb,var(--ca5ss4b-runtime-warning, #b54708) 16%,transparent);color:var(--ca5ss4b-runtime-text, #171717)}.cedros-academy.ca-public .ca-status--error{background:color-mix(in srgb,var(--ca5ss4b-runtime-error, #b42318) 14%,transparent);color:var(--ca5ss4b-runtime-text, #171717)}.cedros-academy.ca-public .ca-notice--success{border-color:color-mix(in srgb,var(--ca5ss4b-runtime-border, #d0d5dd) 100%,var(--ca5ss4b-runtime-border, #d0d5dd))}.cedros-academy.ca-public .ca-notice--warning{border-color:color-mix(in srgb,var(--ca5ss4b-runtime-warning, #b54708) 45%,var(--ca5ss4b-runtime-border, #d0d5dd))}.cedros-academy.ca-public .ca-notice--error{border-color:var(--ca5ss4b-runtime-error, #b42318)}.cedros-academy.ca-public .ca-public-shell,.cedros-academy.ca-public.ca-public-shell{display:grid;gap:16px;width:min(100%,1120px);margin:0 auto;padding:clamp(20px,4vw,44px) 0}.cedros-academy.ca-public .ca-public-head{display:grid;gap:8px;max-width:760px}.cedros-academy.ca-public .ca-public-head h2{margin:0;font-size:clamp(28px,4vw,44px);line-height:1.08;font-weight:700}.cedros-academy .ca-kicker{color:var(--ca5ss4b-runtime-muted, #667085);font-size:12px;font-weight:700;letter-spacing:0;text-transform:uppercase}.cedros-academy .ca-card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));gap:14px}.cedros-academy .ca-card-grid--compact{grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr))}.cedros-academy .ca-skeleton-card{min-height:156px;align-content:start}.cedros-academy .ca-skeleton{display:block;height:12px;border-radius:var(--ca-radius-pill);background:color-mix(in srgb,var(--ca5ss4b-runtime-muted, #667085) 22%,transparent);background-image:linear-gradient(90deg,transparent,color-mix(in srgb,var(--ca5ss4b-runtime-panel, #ffffff) 55%,transparent),transparent);background-size:220% 100%;background-repeat:no-repeat;animation:ca-shimmer var(--motion-duration-skeleton, 1.4s) var(--motion-ease-standard, cubic-bezier(.16, 1, .3, 1)) infinite}.cedros-academy .ca-skeleton--title{width:54%;height:18px;margin-bottom:10px}.cedros-academy .ca-skeleton--line{width:88%;margin-bottom:8px}.cedros-academy .ca-skeleton--short{width:62%}.cedros-academy .ca-course-layout{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(260px,.8fr);gap:14px;align-items:start}.cedros-academy .ca-course-card,.cedros-academy .ca-course-primary,.cedros-academy .ca-course-secondary,.cedros-academy .ca-player{background:var(--ca5ss4b-runtime-panel, #ffffff);border-color:var(--ca5ss4b-runtime-border, #d0d5dd)}.cedros-academy .ca-player{border-radius:var(--ca-radius-lg)}.cedros-academy .ca-meta-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:8px;margin:12px 0}.cedros-academy .ca-meta-list div{display:grid;gap:2px;border:1px solid var(--ca5ss4b-runtime-border, #d0d5dd);border-radius:var(--ca-radius-sm);padding:8px}.cedros-academy .ca-meta-list dt{color:var(--ca5ss4b-runtime-muted, #667085);font-size:12px}.cedros-academy .ca-meta-list dd{margin:0;font-weight:650}.cedros-academy .ca-public-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.cedros-academy .ca-progress{position:relative;display:grid;gap:6px;margin:10px 0}.cedros-academy .ca-progress:before,.cedros-academy .ca-progress>span{display:block;height:8px;border-radius:var(--ca-radius-pill)}.cedros-academy .ca-progress:before{content:\"\";background:var(--ca5ss4b-runtime-accent-soft, #f2f4f7)}.cedros-academy .ca-progress>span{position:absolute;top:0;left:0;background:var(--ca5ss4b-runtime-action-bg, #18181b);transition:width var(--motion-duration-modal, .24s) var(--motion-ease-standard, cubic-bezier(.16, 1, .3, 1))}.cedros-academy .ca-progress strong{font-size:12px;color:var(--ca5ss4b-runtime-muted, #667085)}.cedros-academy .ca-curriculum{display:grid;gap:10px}.cedros-academy .ca-curriculum ul{display:grid;gap:6px;margin:0;padding-left:18px}.cedros-academy .ca-curriculum li span{color:var(--ca5ss4b-runtime-muted, #667085);font-size:12px}.cedros-academy .ca-instructor-list,.cedros-academy .ca-instructor-summary{display:grid;gap:6px}.cedros-academy .ca-instructor-list{border-top:1px solid var(--ca5ss4b-runtime-border, #d0d5dd);padding-top:12px}.cedros-academy .ca-instructor-summary p{margin-bottom:8px}.cedros-academy .ca-player-layout{display:grid;grid-template-columns:minmax(200px,.65fr) minmax(0,1.35fr);gap:16px;align-items:start;margin-top:16px}.cedros-academy .ca-player-nav{display:grid;gap:12px}.cedros-academy .ca-player-nav ol{display:grid;gap:6px;margin:0;padding:0;list-style:none}.cedros-academy .ca-player-lesson{position:relative;display:grid;gap:3px;width:100%;border:1px solid var(--ca5ss4b-runtime-border, #d0d5dd);border-radius:var(--ca-radius-sm);padding:9px 10px;background:transparent;color:inherit;cursor:pointer;font:inherit;text-align:left;transition:background-color var(--motion-duration-fast, .16s) var(--motion-ease-standard, cubic-bezier(.16, 1, .3, 1)),border-color var(--motion-duration-fast, .16s) var(--motion-ease-standard, cubic-bezier(.16, 1, .3, 1))}.cedros-academy .ca-player-lesson:before{content:\"\";position:absolute;top:8px;bottom:8px;left:-1px;width:3px;border-radius:var(--ca-radius-pill);background:var(--ca5ss4b-runtime-action-bg, #18181b);transform:scaleY(0);transition:transform var(--motion-duration-modal, .24s) var(--motion-ease-standard, cubic-bezier(.16, 1, .3, 1))}.cedros-academy .ca-player-lesson[aria-current=step]{border-color:var(--ca5ss4b-runtime-action-bg, #18181b);background:var(--ca5ss4b-runtime-accent-soft, #f2f4f7)}.cedros-academy .ca-player-lesson[aria-current=step]:before{transform:scaleY(1)}.cedros-academy .ca-player-lesson span:last-child{color:var(--ca5ss4b-runtime-muted, #667085);font-size:12px}.cedros-academy .ca-player-lesson:focus-visible{outline:2px solid var(--ca5ss4b-runtime-action-bg, var(--ca5ss4b-runtime-accent, #2f6c7d));outline-offset:2px}.cedros-academy .ca-lesson{min-width:0;border-left:1px solid var(--ca5ss4b-runtime-border, #d0d5dd);padding-left:16px}.cedros-academy .ca-lesson-body{display:grid;gap:10px;margin:14px 0 18px}.cedros-academy .ca-lesson-body>*{margin:0}.cedros-academy .ca-lesson-body p{white-space:pre-wrap}.cedros-academy .ca-lesson-body :is(h4,h5,h6){font-weight:600;line-height:1.4}.cedros-academy .ca-lesson-body h4{font-size:20px}.cedros-academy .ca-lesson-body h5{font-size:18px}.cedros-academy .ca-lesson-body h6{font-size:16px}.cedros-academy .ca-certificate{display:grid;gap:16px;border-radius:var(--ca-radius-lg);width:min(100%,760px);margin:0 auto;padding:clamp(24px,5vw,56px);border-width:2px;text-align:center}.cedros-academy .ca-certificate-heading{display:flex;gap:16px;align-items:flex-start;justify-content:space-between;text-align:left}.cedros-academy .ca-certificate-heading h3{margin:5px 0 0;font-size:clamp(24px,4vw,38px)}.cedros-academy .ca-certificate-statement{margin:0;color:var(--ca5ss4b-runtime-muted, #667085)}.cedros-academy .ca-certificate-holder{font-size:clamp(28px,5vw,48px);line-height:1.1}.cedros-academy .ca-certificate-details{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,180px),1fr));gap:10px;margin:8px 0 0;text-align:left}.cedros-academy .ca-certificate-details div{display:grid;gap:4px;min-width:0;padding-top:10px;border-top:1px solid var(--ca5ss4b-runtime-border, #d0d5dd)}.cedros-academy .ca-certificate-details dt{color:var(--ca5ss4b-runtime-muted, #667085);font-size:12px}.cedros-academy .ca-certificate-details dd{margin:0;overflow-wrap:anywhere;font-weight:650}.cedros-academy .ca-certificate-actions{justify-content:center}.cedros-academy.ca-public-stack{display:grid;gap:12px}.cedros-academy.ca-public-stack>.ca-button{justify-self:start}.cedros-academy .ca-lookup-form{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:end}@media(max-width:760px){.cedros-academy .ca-card-grid,.cedros-academy .ca-card-grid--compact,.cedros-academy .ca-course-layout,.cedros-academy .ca-player-layout,.cedros-academy .ca-lookup-form{grid-template-columns:1fr}.cedros-academy .ca-lesson{border-left:0;border-top:1px solid var(--ca5ss4b-runtime-border, #d0d5dd);padding:16px 0 0}.cedros-academy .ca-button{width:fit-content;max-width:100%;white-space:normal;text-align:center}}@media print{.cedros-academy *,.cedros-academy *:before,.cedros-academy *:after{animation:none!important;transition:none!important}.cedros-academy .ca-check path{stroke-dashoffset:0}body[data-ca5ss4b-academy-print-certificate] *{visibility:hidden!important}body[data-ca5ss4b-academy-print-certificate] .ca-certificate,body[data-ca5ss4b-academy-print-certificate] .ca-certificate *{visibility:visible!important}body[data-ca5ss4b-academy-print-certificate] .ca-certificate{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;max-width:none;border-color:currentColor;box-shadow:none}body[data-ca5ss4b-academy-print-certificate] .ca-certificate-actions,body[data-ca5ss4b-academy-print-certificate] .ca-certificate>.ca-muted{display:none!important}}.cedros-academy-admin{--ca-admin-bg: var(--cd-bg, oklch(1 0 0));--ca-admin-fg: var(--cd-fg, oklch(.145 0 0));--ca-admin-card-bg: var(--cd-card-bg, oklch(1 0 0));--ca-admin-muted: var(--cd-muted, oklch(.556 0 0));--ca-admin-muted-bg: var(--cd-muted-bg, oklch(.97 0 0));--ca-admin-accent: var(--cd-accent, oklch(.97 0 0));--ca-admin-border: var(--cd-border, oklch(.922 0 0));--ca-admin-primary: var(--cd-primary, oklch(.205 0 0));--ca-admin-primary-fg: var(--cd-primary-fg, oklch(.985 0 0));--ca-admin-ring: var(--cd-ring, oklch(.708 0 0));--ca-admin-success: var(--cd-success, oklch(.627 .194 149.214));--ca-admin-warning: var(--cd-warning, oklch(.769 .188 70.08));--ca-admin-warning-fg: var(--cd-warning-fg, oklch(.52 .12 75));--ca-admin-error: var(--cd-error, oklch(.577 .245 27.325));--ca-admin-danger-bg: var(--cd-danger-bg, oklch(.5 .22 27.325));--ca-admin-danger-fg: var(--cd-danger-fg, oklch(.985 0 0));--ca-admin-info: var(--cd-info, oklch(.546 .215 262.881));--ca-admin-input-bg: var(--cd-input-bg, transparent);--ca-radius-sm: var(--cd-radius-control, calc(var(--cd-radius, 8px) - 1px));--ca-radius-md: var(--cd-radius, 8px);--ca-radius-lg: var(--admin-radius, 12px);--ca-radius-pill: 999px;--ca-admin-radius: var(--ca-radius-md);--ca-admin-dialog-radius: var(--admin-radius, 12px);--ca-admin-shadow: var(--cd-shadow, 0 1px 2px color-mix(in srgb, var(--ca-admin-fg) 8%, transparent));color:var(--ca-admin-fg);display:grid;gap:1rem;width:100%;max-width:var(--cd-container-page, min(100%, 1360px));min-width:0;container:cedros-academy-admin / inline-size;overflow-wrap:anywhere;font:inherit;font-size:.875rem}.cedros-academy-admin,.cedros-academy-admin *{box-sizing:border-box}.cedros-academy-admin>*,.cedros-academy-admin .ca-grid,.cedros-academy-admin .ca-card-grid,.cedros-academy-admin .cedros-data-table-wrap{max-width:100%;min-width:0}.cedros-academy-admin p,.cedros-academy-admin h2,.cedros-academy-admin h3,.cedros-academy-admin h4{margin:0;letter-spacing:0}.cedros-academy-admin p{line-height:1.5}.cedros-academy-admin .ca-muted,.cedros-academy-admin .cedros-data-card__subtitle{color:var(--ca-admin-muted);font-size:.8125rem}.cedros-academy-admin .ca-page-header{display:flex;gap:.75rem;align-items:flex-start;justify-content:space-between;flex-wrap:wrap}.cedros-academy-admin .cedros-data__header-text{display:grid;gap:.25rem;max-width:60ch;min-width:min(100%,18rem)}.cedros-academy-admin .cedros-data__title{font-size:1.15rem;line-height:1.25;font-weight:600}.cedros-academy-admin .cedros-data-actions,.cedros-academy-admin .ca-row-actions{display:flex;gap:.5rem;align-items:center;justify-content:flex-end;flex-wrap:wrap}.cedros-academy-admin .ca-grid,.cedros-academy-admin .cedros-data-grid,.cedros-academy-admin .cedros-data-summary-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,14rem),1fr));gap:.75rem}.cedros-academy-admin .ca-grid--two{grid-template-columns:repeat(auto-fit,minmax(min(100%,17.5rem),1fr))}.cedros-academy-admin .ca-grid--metrics{grid-template-columns:repeat(auto-fit,minmax(min(100%,10rem),1fr))}.cedros-academy-admin .ca-settings-column{display:grid;gap:1rem;width:min(100%,var(--cd-container-settings, 45rem))}.cedros-academy-admin .ca-access-operations>.cedros-data-card__header{flex-wrap:wrap}.cedros-academy-admin .ca-access-operations,.cedros-academy-admin .ca-access-filters{min-width:0}.cedros-academy-admin .ca-card,.cedros-academy-admin .cedros-data-card,.cedros-academy-admin.cedros-data-card{border:1px solid var(--ca-admin-border);border-radius:var(--ca-admin-radius);background:var(--ca-admin-card-bg);box-shadow:var(--ca-admin-shadow)}.cedros-academy-admin .ca-card,.cedros-academy-admin.ca-card,.cedros-academy-admin .cedros-data-card__body{padding:.9rem 1rem}.cedros-academy-admin .ca-card+.ca-card,.cedros-academy-admin .ca-notice+.ca-card,.cedros-academy-admin .ca-card+.ca-notice{margin-top:0}.cedros-academy-admin .ca-card-header,.cedros-academy-admin .cedros-data-card__header{display:flex;gap:.75rem;align-items:flex-start;justify-content:space-between;margin-bottom:.75rem}.cedros-academy-admin .ca-card h3,.cedros-academy-admin .ca-card h4,.cedros-academy-admin .cedros-data-card__title{font-size:.875rem;line-height:1.25;font-weight:600}.cedros-academy-admin .ca-button,.cedros-academy-admin .cedros-data-btn{display:inline-flex;min-height:2rem;align-items:center;justify-content:center;gap:.5rem;border:1px solid var(--ca-admin-border);border-radius:var(--ca-radius-sm);background:transparent;color:var(--ca-admin-fg);padding:0 .75rem;cursor:pointer;font:inherit;font-size:.8125rem;font-weight:500;line-height:1;text-decoration:none;white-space:nowrap;transition:background-color var(--motion-duration-fast, .16s) var(--motion-ease-standard, cubic-bezier(.16, 1, .3, 1)),border-color var(--motion-duration-fast, .16s) var(--motion-ease-standard, cubic-bezier(.16, 1, .3, 1)),color var(--motion-duration-fast, .16s) var(--motion-ease-standard, cubic-bezier(.16, 1, .3, 1)),box-shadow var(--motion-duration-fast, .16s) var(--motion-ease-standard, cubic-bezier(.16, 1, .3, 1)),transform var(--motion-duration-micro, .1s) var(--motion-ease-standard, cubic-bezier(.16, 1, .3, 1))}.cedros-academy-admin .cedros-data-btn--sm,.cedros-academy-admin .ca-button--sm,.cedros-academy-admin .cedros-data-row-actions .cedros-data-btn{min-height:2rem;padding-inline:.5rem}.cedros-academy-admin .ca-button:hover,.cedros-academy-admin .cedros-data-btn:hover{background:var(--ca-admin-accent);transform:translateY(-1px)}.cedros-academy-admin .ca-button:active,.cedros-academy-admin .cedros-data-btn:active{transform:scale(.98);transition:transform var(--motion-duration-micro, .1s) var(--motion-ease-standard, cubic-bezier(.16, 1, .3, 1))}.cedros-academy-admin .ca-button-primary,.cedros-academy-admin .cedros-data-btn--primary{border-color:var(--ca-admin-primary);background:var(--ca-admin-primary);color:var(--ca-admin-primary-fg)}.cedros-academy-admin .ca-button-primary:hover,.cedros-academy-admin .cedros-data-btn--primary:hover{background:color-mix(in srgb,var(--ca-admin-primary) 90%,var(--ca-admin-primary-fg));color:var(--ca-admin-primary-fg)}.cedros-academy-admin .ca-button-danger,.cedros-academy-admin .cedros-data-btn--danger{border-color:var(--ca-admin-danger-bg);background:var(--ca-admin-danger-bg);color:var(--ca-admin-danger-fg)}.cedros-academy-admin .ca-button-danger:hover,.cedros-academy-admin .cedros-data-btn--danger:hover{background:color-mix(in srgb,var(--ca-admin-danger-bg) 90%,var(--ca-admin-fg));color:var(--ca-admin-danger-fg)}.cedros-academy-admin .cedros-data-btn--ghost{border-color:transparent;background:transparent}.cedros-academy-admin .ca-button:focus-visible,.cedros-academy-admin a.ca-button:focus-visible,.cedros-academy-admin .cedros-data-btn:focus-visible,.cedros-academy-admin .cedros-data-input:focus-visible,.cedros-academy-admin .cedros-data-select:focus-visible,.cedros-academy-admin .cedros-data-textarea:focus-visible{outline:none;border-color:var(--ca-admin-ring);box-shadow:0 0 0 3px color-mix(in srgb,var(--ca-admin-ring) 14%,transparent)}.cedros-academy-admin .ca-button[disabled],.cedros-academy-admin .cedros-data-btn[disabled]{cursor:not-allowed;opacity:.5;transform:none}.cedros-academy-admin .ca-field,.cedros-academy-admin .cedros-data-field{display:grid;gap:.25rem;align-content:start;margin:0 0 .75rem}.cedros-academy-admin .cedros-data-label{color:var(--ca-admin-fg);font-size:.8125rem;font-weight:500}.cedros-academy-admin .cedros-data-input,.cedros-academy-admin .cedros-data-select,.cedros-academy-admin .cedros-data-textarea{width:100%;min-height:2.25rem;border:1px solid var(--ca-admin-border);border-radius:var(--ca-radius-sm);padding:0 .75rem;background:var(--ca-admin-input-bg);color:var(--ca-admin-fg);font:inherit;font-size:.8125rem}.cedros-academy-admin .cedros-data-textarea{min-height:5.5rem;padding-block:.5rem;resize:vertical}.cedros-academy-admin .cedros-data-field__description,.cedros-academy-admin .ca-field-error{color:var(--ca-admin-muted);font-size:.75rem}.cedros-academy-admin .ca-field-error{color:var(--ca-admin-error)}.cedros-academy-admin .cedros-data-table-wrap{position:relative;container:cedros-academy-table / inline-size;overflow-x:auto;overscroll-behavior-x:contain;border:1px solid var(--ca-admin-border);border-radius:var(--ca-radius-sm);background-color:var(--ca-admin-card-bg);background-image:linear-gradient(to right,var(--ca-admin-card-bg),transparent),linear-gradient(to left,var(--ca-admin-card-bg),transparent),radial-gradient(farthest-side at 0 50%,color-mix(in srgb,var(--ca-admin-fg) 14%,transparent),transparent),radial-gradient(farthest-side at 100% 50%,color-mix(in srgb,var(--ca-admin-fg) 14%,transparent),transparent);background-position:0 0,100% 0,0 0,100% 0;background-size:2.5rem 100%,2.5rem 100%,.75rem 100%,.75rem 100%;background-repeat:no-repeat;background-attachment:local,local,scroll,scroll}.cedros-academy-admin .ca-table{width:100%;min-width:45rem;border-collapse:collapse;font-size:.8125rem}.cedros-academy-admin .ca-table th,.cedros-academy-admin .ca-table td{border-bottom:1px solid var(--ca-admin-border);padding:.5rem .75rem;text-align:left;vertical-align:top}.cedros-academy-admin .ca-table th{background:color-mix(in srgb,var(--ca-admin-bg) 90%,var(--ca-admin-accent) 10%);color:var(--ca-admin-muted);font-size:.6875rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase}.cedros-academy-admin .ca-table tr:last-child td{border-bottom:0}.cedros-academy-admin .ca-table td:nth-child(n+3){font-variant-numeric:tabular-nums}.cedros-academy-admin .ca-status,.cedros-academy-admin .cedros-data-pill{display:inline-flex;min-height:1.375rem;align-items:center;border-radius:var(--ca-radius-pill);padding:.125rem .5rem;border:1px solid color-mix(in srgb,var(--ca-admin-muted) 24%,transparent);background:var(--ca-admin-muted-bg);color:var(--ca-admin-fg);font-size:.6875rem;font-weight:600;line-height:1.2;white-space:nowrap}.cedros-academy-admin .ca-status--success{background:color-mix(in srgb,var(--ca-admin-success) 14%,var(--ca-admin-bg));color:var(--ca-admin-fg)}.cedros-academy-admin .ca-status--warning{background:color-mix(in srgb,var(--ca-admin-warning) 18%,var(--ca-admin-bg));color:var(--ca-admin-warning-fg)}.cedros-academy-admin .ca-status--error{background:color-mix(in srgb,var(--ca-admin-error) 12%,var(--ca-admin-bg));color:var(--ca-admin-fg)}.cedros-academy-admin .ca-status--info{background:color-mix(in srgb,var(--ca-admin-info) 12%,var(--ca-admin-bg));color:var(--ca-admin-fg)}.cedros-academy-admin .ca-notice,.cedros-academy-admin .cedros-data-status{display:grid;grid-template-columns:1rem minmax(0,1fr) auto;gap:.75rem;align-items:flex-start;justify-content:space-between;border:1px solid var(--ca-admin-border);border-radius:var(--ca-admin-radius);padding:.75rem;background:var(--ca-admin-muted-bg)}.cedros-academy-admin .ca-notice strong{font-size:.875rem;font-weight:600}.cedros-academy-admin .ca-notice p{color:var(--ca-admin-fg);font-size:.8125rem}.cedros-academy-admin .ca-notice__icon{margin-top:.125rem}.cedros-academy-admin .ca-notice__copy{min-width:0}.cedros-academy-admin .ca-notice--success{background:color-mix(in srgb,var(--ca-admin-success) 14%,var(--ca-admin-bg));border-color:color-mix(in srgb,var(--ca-admin-success) 34%,transparent)}.cedros-academy-admin .ca-notice--warning{background:color-mix(in srgb,var(--ca-admin-warning) 18%,var(--ca-admin-bg));border-color:color-mix(in srgb,var(--ca-admin-warning) 34%,transparent)}.cedros-academy-admin .ca-notice--error{background:color-mix(in srgb,var(--ca-admin-error) 12%,var(--ca-admin-bg));border-color:color-mix(in srgb,var(--ca-admin-error) 34%,transparent)}.cedros-academy-admin .ca-empty,.cedros-academy-admin .cedros-data-empty{color:var(--ca-admin-muted);font-size:.8125rem}.cedros-academy-admin .cedros-data-empty-state{display:grid;place-items:center;gap:.5rem;min-height:9rem;border:1px dashed color-mix(in srgb,var(--ca-admin-border) 72%,var(--ca-admin-muted));border-radius:var(--ca-admin-radius);padding:1.5rem 1rem;text-align:center}.cedros-academy-admin .cedros-data-empty-state strong{font-size:.875rem;font-weight:600}.cedros-academy-admin .cedros-data-empty-state p{max-width:32rem;color:var(--ca-admin-muted);font-size:.8125rem}.cedros-academy-admin .ca-skeleton-block{display:grid;gap:.5rem;min-height:6rem;padding:.9rem 1rem}.cedros-academy-admin .ca-skeleton{display:block;height:.75rem;border-radius:var(--ca-radius-pill);background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--ca-admin-muted) 18%,transparent),transparent);background-size:220% 100%;animation:ca-admin-shimmer var(--motion-duration-skeleton, 1.4s) var(--motion-ease-standard, cubic-bezier(.16, 1, .3, 1)) infinite}.cedros-academy-admin .ca-skeleton--title{width:54%;height:1rem}.cedros-academy-admin .ca-skeleton--line{width:88%}.cedros-academy-admin .ca-skeleton--short{width:62%}.cedros-academy-admin .ca-lesson-body :is(h4,h5,h6){margin:0;font-size:.875rem;line-height:1.5;font-weight:600}.cedros-academy-admin .ca-metric,.cedros-academy-admin .cedros-data-metric{display:grid;gap:.25rem;min-height:6rem;border:1px solid var(--ca-admin-border);border-radius:var(--ca-admin-radius);padding:.75rem;background:var(--ca-admin-card-bg)}.cedros-academy-admin .cedros-data-metric__label{color:var(--ca-admin-muted);font-size:.6875rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase}.cedros-academy-admin .cedros-data-metric__value{font-size:1.5rem;line-height:1;font-weight:700;font-variant-numeric:tabular-nums}.cedros-academy-admin .ca-code{max-width:100%;overflow:auto;overscroll-behavior:contain;border:1px solid var(--ca-admin-border);border-radius:var(--ca-admin-radius);padding:.75rem;background:var(--ca-admin-muted-bg);color:var(--ca-admin-fg);font-family:var(--cd-font-mono, ui-monospace, SFMono-Regular, Menlo, monospace);font-size:.75rem;white-space:pre-wrap}.cedros-academy-admin .ca-checklist{display:grid;gap:.5rem;margin:0;padding:0;list-style:none}.cedros-academy-admin .ca-checklist li{display:grid;gap:.125rem;border-left:3px solid var(--ca-admin-success);padding:.25rem 0 .25rem .625rem}.cedros-academy-admin .ca-checklist li[data-state=blocked]{border-left-color:var(--ca-admin-warning)}.cedros-academy-admin .ca-checklist span{color:var(--ca-admin-muted);font-size:.8125rem}.cedros-academy-admin .cedros-autosave-status{display:inline-flex;min-height:1.5rem;align-items:center;border:1px solid var(--ca-admin-border);border-radius:var(--ca-radius-pill);padding:.125rem .625rem;background:var(--ca-admin-muted-bg);color:var(--ca-admin-fg);font-size:.75rem}.cedros-academy-admin .cedros-autosave-status--failed,.cedros-academy-admin .cedros-autosave-status--conflict,.cedros-academy-admin .cedros-autosave-status--offline{background:color-mix(in srgb,var(--ca-admin-error) 12%,var(--ca-admin-bg));color:var(--ca-admin-fg)}.cedros-academy-admin .cedros-autosave-banner{display:flex;gap:.5rem;align-items:center;justify-content:space-between;border:1px solid var(--ca-admin-border);border-radius:var(--ca-admin-radius);padding:.75rem;margin-bottom:.75rem;background:var(--ca-admin-muted-bg)}.cedros-academy-admin .cedros-data-dialog__overlay{width:100%;height:100%;max-width:none;max-height:none;margin:0;border:0;color:inherit;position:fixed;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:1rem;background:#00000073;z-index:var(--z-modal, 1000)}.cedros-academy-admin .cedros-data-dialog{max-height:min(85dvh,44rem);overflow:hidden;display:grid;grid-template-rows:auto minmax(0,1fr) auto;gap:1rem;width:min(100%,420px);border:1px solid var(--ca-admin-border);border-radius:var(--ca-admin-dialog-radius);padding:1.25rem;background:var(--ca-admin-card-bg);box-shadow:0 10px 25px -4px color-mix(in srgb,var(--ca-admin-fg) 12%,transparent),0 4px 6px -1px color-mix(in srgb,var(--ca-admin-fg) 10%,transparent);animation:ca-admin-dialog-in var(--motion-duration-modal, .24s) var(--motion-ease-standard, cubic-bezier(.16, 1, .3, 1))}.cedros-academy-admin .cedros-data-dialog__heading{position:relative;display:grid;gap:.25rem;padding-right:2rem}.cedros-academy-admin .cedros-data-dialog__close{position:absolute;top:0;right:0;width:2rem;min-height:2rem;padding:0}.cedros-academy-admin .cedros-data-dialog__title{font-size:1.15rem;line-height:1.25;font-weight:600}.cedros-academy-admin .cedros-data-dialog__description{color:var(--ca-admin-muted);font-size:.8125rem}.cedros-academy-admin .cedros-data-dialog__body{min-height:0;overflow:auto;display:grid;gap:1rem;padding:2px}.cedros-academy-admin .ca-filtered-empty{position:sticky;inset-inline-start:.75rem;inline-size:calc(100cqw - 1.5rem);display:grid;justify-items:center;gap:.5rem;padding:1rem;color:var(--ca-admin-muted)}.cedros-academy-admin .ca-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.cedros-academy-admin .cedros-data-table-wrap:focus-visible{outline:2px solid var(--ca-admin-ring);outline-offset:2px}.cedros-academy-admin .ca-dialog-impact{display:grid;gap:.25rem;margin:0;padding-left:1rem;color:var(--ca-admin-muted);font-size:.8125rem}.cedros-academy-admin .ca-dialog-actions{display:flex;gap:.5rem;justify-content:flex-end;flex-wrap:wrap}.cedros-academy-admin.ca-dashboard-card{display:grid;gap:.75rem}.cedros-academy-admin .cedros-back-breadcrumb{width:fit-content;border:0;padding:0;background:transparent;color:var(--ca-admin-primary);cursor:pointer;font:inherit;font-size:.8125rem;font-weight:600}.cedros-academy-admin .ca-course-workspace,.cedros-academy-admin .ca-curriculum-sections,.cedros-academy-admin .ca-disclosure__body{display:grid;gap:1rem}.cedros-academy-admin .ca-course-editor-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,22rem),1fr));gap:1rem;align-items:start}.cedros-academy-admin .ca-curriculum-section{display:grid;gap:.75rem;border-top:1px solid var(--ca-admin-border);padding-top:1rem}.cedros-academy-admin .ca-curriculum-section:first-child{border-top:0;padding-top:0}.cedros-academy-admin .ca-lesson-editor{display:grid;gap:.75rem;border-top:1px solid var(--ca-admin-border);padding-top:.75rem}.cedros-academy-admin .ca-learner-preview{margin-top:1rem}.cedros-academy-admin .ca-submission-preview{min-width:18rem;max-width:36rem}.cedros-academy-admin .ca-submission-section,.cedros-academy-admin .ca-submission-lesson{display:grid;gap:.5rem}.cedros-academy-admin .ca-submission-lesson{border-top:1px solid var(--ca-admin-border);padding-top:.75rem}.cedros-academy-admin .ca-submission-lesson h5{margin:0}.cedros-academy-admin .ca-submission-lesson .ca-lesson-body{line-height:1.6;overflow-wrap:anywhere}.cedros-academy-admin .ca-preview-layout{display:grid;grid-template-columns:minmax(9rem,.35fr) minmax(0,1fr);gap:1rem}.cedros-academy-admin .ca-preview-nav{display:grid;align-content:start;gap:.25rem}.cedros-academy-admin .ca-preview-nav .ca-button{position:relative;justify-content:flex-start;padding-left:.75rem;text-align:left}.cedros-academy-admin .ca-preview-nav .ca-button:before{content:\"\";position:absolute;top:.3rem;bottom:.3rem;left:0;width:2px;border-radius:var(--ca-radius-pill);background:var(--ca-admin-primary);transform:scaleY(0);transition:transform var(--motion-duration-modal, .24s) var(--motion-ease-standard, cubic-bezier(.16, 1, .3, 1))}.cedros-academy-admin .ca-preview-nav [aria-current=page]{background:var(--ca-admin-muted-bg);color:var(--ca-admin-primary)}.cedros-academy-admin .ca-preview-nav [aria-current=page]:before{transform:scaleY(1)}.cedros-academy-admin .ca-preview-lesson{min-width:0;border-left:1px solid var(--ca-admin-border);padding-left:1rem}.cedros-academy-admin .ca-preview-lesson h4{margin:.25rem 0 1rem}.cedros-academy-admin .ca-preview-lesson .ca-lesson-body{line-height:1.65;overflow-wrap:anywhere}.cedros-academy-admin .ca-course-workspace-actions,.cedros-academy-admin .ca-lifecycle-actions,.cedros-academy-admin .ca-create-course__row{display:flex;gap:.75rem;align-items:end;flex-wrap:wrap}.cedros-academy-admin .ca-lifecycle-actions{align-items:flex-start}.cedros-academy-admin .ca-optional-review{padding:.5rem .75rem}.cedros-academy-admin .ca-create-course__row>.ca-field{flex:1 1 18rem}.cedros-academy-admin .ca-disclosure{border-top:1px solid var(--ca-admin-border);padding-top:.75rem}.cedros-academy-admin .ca-disclosure.ca-secondary-work{border:1px solid var(--ca-admin-border);border-radius:var(--ca-admin-radius);padding:.75rem 1rem;background:var(--ca-admin-card-bg);box-shadow:var(--ca-admin-shadow)}.cedros-academy-admin .ca-disclosure[open]>summary{margin-bottom:.75rem}.cedros-academy-admin details:not(.ca-policy-edit)>summary{display:flex;flex-wrap:wrap;align-items:center;gap:.25rem .5rem;min-height:2rem;list-style:none;cursor:pointer;color:var(--ca-admin-muted);font-size:.8125rem;font-weight:600;transition:color var(--motion-duration-fast, .16s) var(--motion-ease-standard, cubic-bezier(.16, 1, .3, 1))}.cedros-academy-admin details>summary::-webkit-details-marker{display:none}.cedros-academy-admin details:not(.ca-policy-edit)>summary:before{content:\"\";flex:none;width:1rem;height:1rem;background-color:currentColor;mask:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m9 18 6-6-6-6'/%3E%3C/svg%3E\") center / 1rem no-repeat;transition:transform var(--motion-duration-fast, .16s) var(--motion-ease-standard, cubic-bezier(.16, 1, .3, 1))}.cedros-academy-admin details[open]:not(.ca-policy-edit)>summary:before{transform:rotate(90deg)}.cedros-academy-admin details>summary:hover,.cedros-academy-admin details[open]>summary{color:var(--ca-admin-fg)}@keyframes ca-admin-dialog-in{0%{opacity:0;transform:scale(.98) translateY(8px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes ca-admin-shimmer{0%{background-position:120% 0}to{background-position:-120% 0}}@keyframes ca-shimmer{0%{background-position:120% 0}to{background-position:-120% 0}}@keyframes ca-spin{to{transform:rotate(360deg)}}.cedros-academy .ca-progress-mark{display:inline-grid;place-items:center;width:1rem;height:1rem;flex:none}.cedros-academy .ca-progress-mark>*{grid-area:1 / 1}.cedros-academy .ca-spinner{width:1rem;height:1rem;border:2px solid color-mix(in srgb,currentColor 30%,transparent);border-top-color:currentColor;border-radius:var(--ca-radius-pill);animation:ca-spin calc(var(--motion-duration-modal, .24s) * 3) linear infinite}.cedros-academy .ca-check{width:1rem;height:1rem}.cedros-academy-admin .ca-view-stack{display:grid;gap:1rem;min-width:0}.cedros-academy-admin .ca-view-stack>*{max-width:100%;min-width:0}@media(prefers-reduced-motion:reduce){.cedros-academy *,.cedros-academy *:before,.cedros-academy *:after,.cedros-academy-admin *,.cedros-academy-admin *:before,.cedros-academy-admin *:after,.cedros-academy-admin .ca-skeleton,.cedros-academy-admin .cedros-data-dialog{animation:none!important;transition:none!important}.cedros-academy-admin .ca-disclosure::details-content{transition:none!important}.cedros-academy .ca-player-lesson[aria-current=step]:before,.cedros-academy-admin .ca-preview-nav [aria-current=page]:before{transform:scaleY(1)}.cedros-academy .ca-check path{stroke-dashoffset:0}.cedros-academy-admin .ca-button:hover,.cedros-academy-admin .cedros-data-btn:hover,.cedros-academy .ca-course-card:hover{transform:none}}@media(max-width:767px){.cedros-academy .ca-public-head,.cedros-academy .ca-card-header,.cedros-academy-admin .ca-card-header,.cedros-academy-admin .cedros-data-card__header,.cedros-academy-admin .ca-dialog-actions{flex-wrap:wrap}.cedros-academy .ca-public-actions,.cedros-academy .ca-certificate-actions,.cedros-academy-admin .ca-row-actions,.cedros-academy-admin .ca-course-workspace-actions,.cedros-academy-admin .ca-lifecycle-actions{width:100%;justify-content:flex-start}.cedros-academy .ca-public-actions>.ca-button,.cedros-academy-admin .ca-course-workspace-actions>.ca-button,.cedros-academy-admin .ca-lifecycle-actions>.ca-button{flex:1 1 auto}.cedros-academy .ca-field input,.cedros-academy .ca-field textarea{font-size:16px}.cedros-academy-admin .ca-submission-preview{min-width:0;width:100%}.cedros-academy-admin .ca-grid,.cedros-academy-admin .ca-grid--two,.cedros-academy-admin .ca-grid--metrics,.cedros-academy-admin .cedros-data-summary-grid,.cedros-academy-admin .ca-course-editor-grid,.cedros-academy-admin .ca-preview-layout{grid-template-columns:1fr}.cedros-academy-admin .ca-preview-lesson{border-top:1px solid var(--ca-admin-border);border-left:0;padding-top:1rem;padding-left:0}.cedros-academy-admin .ca-page-header,.cedros-academy-admin .cedros-data-actions{align-items:stretch;justify-content:flex-start}.cedros-academy-admin .ca-button,.cedros-academy-admin .cedros-data-btn{min-height:2.75rem;max-width:100%;white-space:normal;text-align:center}.cedros-academy-admin .ca-table{min-width:42.5rem;font-size:.8125rem}}.cedros-academy-admin fieldset.ca-edit-fields{min-width:0;margin:0}.cedros-academy-admin fieldset.ca-ai-draft-fields,.cedros-academy-admin fieldset.ca-course-editor-grid,.cedros-academy-admin fieldset.ca-settings-column,.cedros-academy-admin fieldset.ca-create-course__row,.cedros-academy-admin fieldset.ca-grant-fields{padding:0;border:0}.cedros-academy-admin .ca-grant-fields{display:grid;gap:1rem;width:min(100%,var(--cd-container-settings, 45rem))}.cedros-academy-admin .ca-curriculum-editor .cedros-data-field{max-width:var(--cd-container-settings, 45rem)}.cedros-academy.ca-public{font-family:inherit}.cedros-academy.ca-public.ca-public-shell{gap:28px;padding-block:28px 48px}.cedros-academy.ca-public .ca-public-head{gap:14px;padding-block:12px}.cedros-academy.ca-public .ca-public-head h2{font-size:clamp(32px,4cqi,48px);line-height:1.12}.cedros-academy.ca-public .ca-public-head p{color:var(--ca5ss4b-runtime-muted, #667085);font-size:17px;margin:0;max-width:640px}.cedros-academy.ca-public .ca-card-grid{width:100%;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}.cedros-academy.ca-public .ca-course-card{display:flex;flex-direction:column;padding:28px;border-radius:var(--ca-radius-lg);gap:16px;margin:0}.cedros-academy.ca-public .ca-course-card h3{font-size:24px;line-height:1.25}.cedros-academy.ca-public .ca-course-card>p{font-size:15px;line-height:1.7;margin:0;color:var(--ca5ss4b-runtime-muted, #667085)}.cedros-academy.ca-public .ca-course-card .ca-card-header{margin:0;align-items:center}.cedros-academy.ca-public .ca-course-card .ca-public-actions{margin-top:auto;padding-top:8px}.cedros-academy.ca-public .ca-meta-list{gap:16px;grid-template-columns:repeat(2,minmax(0,1fr));margin:4px 0}.cedros-academy.ca-public .ca-meta-list div{border:0;border-top:1px solid var(--ca5ss4b-runtime-border, #d0d5dd);border-radius:var(--ca-radius-sm);padding:12px 0 0;gap:5px}.cedros-academy.ca-public .ca-meta-list dd{font-size:14px;text-transform:capitalize}.cedros-academy.ca-public .ca-lookup-form{padding:20px;gap:16px;border-radius:var(--ca-radius-lg)}.cedros-academy.ca-public .ca-lookup-form .ca-field{margin-bottom:0}.cedros-academy.ca-public .ca-field input,.cedros-academy.ca-public .ca-field select{min-height:46px;border-radius:var(--ca-radius-md);color:var(--ca5ss4b-runtime-text, #171717);background:var(--ca5ss4b-runtime-panel, #fff);border-color:var(--ca5ss4b-runtime-muted, #667085)}.cedros-academy.ca-public .ca-button{min-height:44px;padding:10px 18px;border-radius:var(--ca-radius-md)}.cedros-academy.ca-public .ca-course-primary,.cedros-academy.ca-public .ca-course-secondary{padding:24px;border-radius:var(--ca-radius-lg)}.cedros-academy.ca-public .ca-course-layout{gap:24px}.cedros-academy.ca-public .ca-lesson-body{font-size:17px;line-height:1.75;max-width:70ch}@media(max-width:680px){.cedros-academy.ca-public .ca-card-grid{grid-template-columns:1fr}.cedros-academy.ca-public .ca-course-card{padding:20px}.cedros-academy.ca-public.ca-public-shell{gap:20px;padding-block:20px 32px}}.cedros-academy.ca-public .ca-course-artwork{display:block;width:100%;height:auto;aspect-ratio:1;object-fit:contain;border-radius:var(--ca-radius-sm)}.cedros-academy.ca-public .ca-course-card{grid-template-columns:minmax(0,1fr)}.cedros-academy.ca-public .ca-course-card .ca-course-artwork{max-height:260px;background:var(--ca5ss4b-runtime-bg, #fff)}.cedros-academy.ca-public .ca-open-course{align-items:start;grid-template-columns:minmax(220px,300px) minmax(0,1fr);gap:24px}.cedros-academy.ca-public .ca-open-outline{display:grid;min-width:0;padding:16px;gap:24px;border-radius:var(--ca-radius-lg)}.cedros-academy.ca-public .ca-open-outline .ca-course-artwork{width:100%;max-width:220px;margin-inline:auto}.cedros-academy.ca-public .ca-open-outline .ca-player-nav{display:grid;gap:20px;border:0;padding:0}.cedros-academy.ca-public .ca-open-outline .ca-player-nav section{display:grid;gap:8px;min-width:0}.cedros-academy.ca-public .ca-open-outline h3{margin:0;padding:0 12px;color:var(--ca5ss4b-runtime-muted, #667085);font-size:12px;line-height:1.5;font-weight:500}.cedros-academy.ca-public .ca-open-outline .ca-player-nav ol{display:grid;gap:4px;margin:0;padding:0;list-style:none}.cedros-academy.ca-public .ca-open-course .ca-player-lesson{display:flex;align-items:center;gap:12px;min-height:44px;width:100%;padding:8px 12px;border:0;background:transparent;border-radius:var(--ca-radius-sm);color:inherit;font:inherit;font-size:14px;line-height:1.5;text-align:left}.cedros-academy.ca-public .ca-open-course .ca-player-lesson:hover{background:color-mix(in srgb,currentColor 5%,transparent)}.cedros-academy.ca-public .ca-open-course .ca-player-lesson[aria-current=step]{background:color-mix(in srgb,currentColor 8%,transparent);font-weight:600}.cedros-academy.ca-public .ca-open-course .ca-player-lesson:before{left:0;width:2px;background:currentColor}.cedros-academy.ca-public .ca-open-course .ca-open-lesson-number{flex:0 0 20px;color:var(--ca5ss4b-runtime-muted, #667085);font-size:12px;font-weight:400;font-variant-numeric:tabular-nums}.cedros-academy.ca-public .ca-open-course .ca-open-lesson-name{color:inherit;font-size:inherit;overflow-wrap:anywhere}.cedros-academy.ca-public .ca-open-course>.ca-card{margin:0}.cedros-academy.ca-public .ca-open-course .ca-lesson{min-width:0;padding:24px}.cedros-academy.ca-public .ca-open-course .ca-lesson>h3{font-size:24px;line-height:1.3}.cedros-academy.ca-public .ca-open-course .ca-lesson-body{font-size:15px;line-height:1.75;overflow-wrap:anywhere}@media(max-width:760px){.cedros-academy.ca-public .ca-open-course{grid-template-columns:minmax(0,1fr)}.cedros-academy.ca-public .ca-open-outline .ca-course-artwork{max-height:180px}.cedros-academy.ca-public .ca-open-course .ca-lesson{padding:16px}}.cedros-academy .ca-inline-stack,.cedros-academy-admin .ca-inline-stack{display:grid;gap:1rem;min-width:0;width:100%}.cedros-academy-admin span.ca-inline-stack{display:inline-flex;gap:.5rem;width:auto;align-items:center}.cedros-academy .ca-inline-stack>*,.cedros-academy-admin .ca-inline-stack>*{min-width:0;max-width:100%}.cedros-academy .ca-inline-stack>.ca-button,.cedros-academy-admin .ca-inline-stack>.ca-button{justify-self:start}.cedros-academy .ca-button:hover{background:var(--ca5ss4b-runtime-accent-soft, #f4f4f5)}.cedros-academy .ca-button-primary:hover{background:color-mix(in srgb,var(--ca5ss4b-runtime-action-bg, #18181b) 90%,var(--ca5ss4b-runtime-action-fg, #fff))}.cedros-academy .ca-button{transition:background-color var(--motion-duration-fast, .16s) ease}.cedros-academy .ca-field>span:first-child{color:var(--ca5ss4b-runtime-text, #171717);font-size:.875rem;font-weight:500}.cedros-academy .ca-field :is(input,select,textarea):disabled{opacity:.5;cursor:not-allowed}.cedros-academy .ca-field [aria-invalid=true]{border-color:var(--ca5ss4b-runtime-error, #b42318)}.cedros-academy .ca-player-lesson{min-height:44px}.cedros-academy .ca-player-lesson:disabled{opacity:.5;cursor:not-allowed}.cedros-academy .ca-lesson-body a{color:var(--ca5ss4b-runtime-accent, #2f6c7d);text-decoration:underline}.cedros-academy a:focus-visible,.cedros-academy summary:focus-visible{outline:2px solid var(--ca5ss4b-runtime-text, #171717);outline-offset:3px}.cedros-academy .ca-certificate-heading{flex-wrap:wrap}.cedros-academy .ca-card-header>*,.cedros-academy-admin .ca-card-header>*{min-width:0;overflow-wrap:anywhere}.cedros-academy .ca-meta-list div{border-radius:0}.cedros-academy-admin a:not(.ca-button){color:var(--cd-link, #2f6c7d);text-decoration:underline}.cedros-academy-admin .cedros-back-breadcrumb{color:var(--ca-admin-muted);font-weight:500}.cedros-academy-admin :is(a,summary,.cedros-back-breadcrumb):focus-visible{outline:2px solid var(--ca-admin-ring);outline-offset:3px}.cedros-academy-admin .cedros-data-input[aria-invalid=true],.cedros-academy-admin .cedros-data-select[aria-invalid=true],.cedros-academy-admin .cedros-data-textarea[aria-invalid=true]{border-color:color-mix(in srgb,var(--ca-admin-error) 55%,var(--ca-admin-border))}.cedros-academy-admin :is(.cedros-data-input,.cedros-data-select,.cedros-data-textarea):disabled{opacity:.5;cursor:not-allowed}.cedros-academy-admin .cedros-data-dialog__overlay::backdrop{background:transparent}.cedros-academy-admin .ca-table :is(th,td).ca-numeric{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.cedros-academy-admin .ca-table td:first-child{overflow-wrap:anywhere}.cedros-academy-admin .ca-table th,.cedros-academy-admin .ca-table .ca-button{white-space:nowrap}.cedros-academy-admin.ca-dashboard-card .ca-metric{border:0;padding:0;min-height:0;background:transparent;box-shadow:none}.cedros-academy-admin .ca-card .ca-metric{box-shadow:none}.cedros-academy-admin .ca-course-workspace-actions,.cedros-academy-admin .ca-create-course__row{align-items:center}.cedros-academy-admin .ca-create-course__row>.ca-field{margin-bottom:0}.cedros-academy-admin .ca-preview-nav .ca-button{white-space:normal;height:auto;line-height:1.45;padding-block:.5rem}.cedros-academy-admin .ca-row-menu{display:flex;justify-content:flex-end}.cedros-academy-admin .cedros-row-actions__trigger{width:2rem;padding:0}.cedros-academy-admin .cedros-dropdown-menu__content{position:fixed;inset:auto;margin:0;width:max-content;min-width:11rem;max-width:min(20rem,calc(100vw - 1rem));max-height:min(20rem,calc(100dvh - 1rem));overflow:auto;padding:.25rem;border:1px solid var(--ca-admin-border);border-radius:var(--ca-admin-radius);background:var(--ca-admin-card-bg);color:var(--ca-admin-fg);box-shadow:0 4px 6px -1px color-mix(in srgb,var(--ca-admin-fg) 10%,transparent),0 2px 4px -2px color-mix(in srgb,var(--ca-admin-fg) 8%,transparent);z-index:var(--z-dropdown, 50)}.cedros-academy-admin .cedros-dropdown-menu__item{display:block;width:100%;min-height:2rem;border:0;border-radius:calc(var(--cd-radius, 8px) - 4px);padding:0 .5rem;background:transparent;color:inherit;font:inherit;font-size:.8125rem;text-align:left;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cedros-academy-admin .cedros-dropdown-menu__item:hover,.cedros-academy-admin .cedros-dropdown-menu__item:focus-visible{outline:none;background:var(--ca-admin-accent)}.cedros-academy-admin .cedros-dropdown-menu__item--danger{color:var(--ca-admin-error)}.cedros-academy-admin .cedros-dropdown-menu__item[aria-disabled=true]{opacity:.5;cursor:not-allowed}.cedros-academy-admin .ca-feedback-item{padding:1rem 0;border-top:1px solid var(--ca-admin-border);overflow-wrap:anywhere}.cedros-academy-admin form{width:100%;max-width:var(--cd-container-settings, 45rem)}.cedros-academy-admin .cedros-data-empty-state__art{width:4.5rem;height:4.5rem;margin-bottom:.25rem;color:var(--ca-admin-muted);animation:ca-empty-art-in var(--motion-duration-standard, .22s) var(--motion-ease-standard, cubic-bezier(.16, 1, .3, 1)) both,ca-empty-art-float calc(var(--motion-duration-counter, .5s) * 10) ease-in-out var(--motion-duration-standard, .22s) infinite}@keyframes ca-empty-art-in{0%{opacity:0;transform:translateY(4px) scale(.92)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes ca-empty-art-float{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}.cedros-academy-admin .cedros-dropdown-menu__separator{height:1px;margin:.25rem -.25rem;background:var(--ca-admin-border)}.cedros-academy-admin .cedros-data-empty-state__art svg{display:block;width:100%;height:100%}.cedros-academy-admin .cedros-data-empty-state__art-accent{color:var(--cd-chart-5, var(--ca-admin-muted))}.cedros-academy .ca-card-grid>.ca-card{margin-top:0}.cedros-academy.ca-public-stack>.ca-button{min-height:44px}@container cedros-academy (max-width: 760px){.cedros-academy.ca-public .ca-card-grid,.cedros-academy.ca-public .ca-card-grid--compact,.cedros-academy.ca-public .ca-course-layout,.cedros-academy.ca-public .ca-player-layout,.cedros-academy.ca-public .ca-lookup-form,.cedros-academy.ca-public .ca-open-course{grid-template-columns:minmax(0,1fr)}.cedros-academy.ca-public .ca-lesson{border-left:0;border-top:1px solid var(--ca5ss4b-runtime-border, #d0d5dd);padding:16px 0 0}.cedros-academy.ca-public .ca-card-header{flex-wrap:wrap}.cedros-academy.ca-public .ca-public-actions{width:100%;justify-content:flex-start}.cedros-academy.ca-public .ca-public-actions>.ca-button{flex:1 1 auto}.cedros-academy.ca-public .ca-button{max-width:100%;white-space:normal;text-align:center}.cedros-academy.ca-public .ca-course-card{padding:20px}.cedros-academy.ca-public .ca-open-outline .ca-course-artwork{max-height:180px}.cedros-academy.ca-public .ca-open-course .ca-lesson{padding:16px}}.cedros-academy.ca-public .ca-skeleton--media{width:100%;height:auto;aspect-ratio:16 / 10;border-radius:var(--ca-radius-sm)}.cedros-academy.ca-public .ca-skeleton--field{width:100%;height:44px}.cedros-academy.ca-public .ca-loading-reader .ca-player-layout{min-height:20rem}.cedros-academy.ca-public .ca-loading-outline{display:grid;gap:16px;align-content:start}.cedros-academy.ca-public .ca-loading-form{width:min(100%,720px)}.cedros-academy.ca-public .ca-loading-reader .ca-inline-stack{align-content:start}@container cedros-academy (max-width: 680px){.cedros-academy.ca-public .ca-loading-outline{display:none}}.cedros-academy.ca-public .ca-catalog-search{border:0;padding:0;max-width:720px;align-items:end}.cedros-academy.ca-public .ca-catalog-search .ca-field{margin:0}.cedros-academy.ca-public .ca-search-context{margin:0;overflow-wrap:anywhere}.cedros-academy.ca-public .ca-course-detail-link{display:inline-flex;align-items:center;gap:8px;min-height:44px;color:var(--ca5ss4b-runtime-accent, #2f6c7d);font-weight:600;text-decoration:none}.cedros-academy.ca-public .ca-course-detail-link:is(:hover,:focus-visible){text-decoration:underline;text-underline-offset:3px}.cedros-academy.ca-public .ca-course-detail-link:focus-visible{outline:2px solid var(--ca5ss4b-runtime-text, #171717);outline-offset:3px;border-radius:var(--ca-radius-sm)}.cedros-academy.ca-public .ca-discovery-card{gap:12px;padding:20px}.cedros-academy.ca-public:is(.ca-discovery-surface,.ca-learning-surface) .ca-public-head{gap:8px;padding-block:0}.cedros-academy.ca-public:is(.ca-discovery-surface,.ca-learning-surface) .ca-public-head>.ca-kicker{display:none}.cedros-academy.ca-public:is(.ca-discovery-surface,.ca-learning-surface) .ca-public-head h2{font-size:clamp(28px,3cqi,36px)}.cedros-academy.ca-public .ca-discovery-card h3{font-size:21px}.cedros-academy.ca-public .ca-course-title-link{text-decoration:none}.cedros-academy.ca-public .ca-course-title-link:is(:hover,:focus-visible){text-decoration:underline;text-underline-offset:3px}.cedros-academy.ca-public .ca-course-title-link:focus-visible{outline:2px solid var(--ca5ss4b-runtime-text, #171717);outline-offset:3px}.cedros-academy.ca-public .ca-discovery-card>p.ca-muted{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.cedros-academy.ca-public .ca-course-artwork{aspect-ratio:16 / 10;object-fit:cover;height:auto;max-height:none}.cedros-academy.ca-public .ca-discovery-card .ca-course-artwork{aspect-ratio:16 / 10;max-height:none}.cedros-academy.ca-public .ca-discovery-card .ca-course-artwork--missing{background:var(--ca5ss4b-runtime-accent-soft, #edf4f5)}.cedros-academy.ca-public .ca-course-artwork--missing{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;color:var(--ca5ss4b-runtime-muted, #667085);background:var(--ca5ss4b-runtime-accent-soft, #edf4f5);font-size:14px;padding:20px}.cedros-academy.ca-public .ca-course-category{font-size:13px}.cedros-academy.ca-public .ca-course-summary{display:flex;flex-wrap:wrap;gap:8px 16px;font-size:13px;line-height:1.5;color:var(--ca5ss4b-runtime-muted, #667085)}.cedros-academy.ca-public .ca-course-summary>span:first-child{font-weight:600;color:var(--ca5ss4b-runtime-text, #171717)}@container cedros-academy (min-width: 1000px){.cedros-academy.ca-public .ca-card-grid:has(.ca-discovery-card){grid-template-columns:repeat(3,minmax(0,1fr))}}.cedros-academy.ca-public.ca-detail-surface .ca-public-head{padding-block:0;gap:12px}.cedros-academy.ca-public.ca-detail-surface .ca-public-head h2{font-size:clamp(28px,3cqi,36px);line-height:1.25}.cedros-academy.ca-public.ca-detail-surface .ca-description-preview>p,.cedros-academy.ca-public .ca-outline-long-title{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.cedros-academy.ca-public .ca-course-extent{margin:0;color:var(--ca5ss4b-runtime-muted, #667085);font-size:14px}.cedros-academy.ca-public .ca-course-overview{margin:0}.cedros-academy.ca-public .ca-course-primary{display:grid;gap:24px;padding:0;background:transparent}.cedros-academy.ca-public .ca-course-support{display:grid;grid-column:1;gap:24px;min-width:0}.cedros-academy.ca-public .ca-course-support:empty{display:none}.cedros-academy.ca-public .ca-course-support>.ca-course-artwork{max-height:240px;object-fit:contain;background:var(--ca5ss4b-runtime-accent-soft, #edf4f5)}.cedros-academy.ca-public .ca-course-outline h3{font-size:22px}.cedros-academy.ca-public .ca-course-outline .ca-curriculum{gap:24px}.cedros-academy.ca-public .ca-course-outline .ca-curriculum ol{margin:0;padding-left:24px}.cedros-academy.ca-public .ca-course-outline .ca-curriculum li{padding:12px 0 12px 8px;border-bottom:1px solid var(--ca5ss4b-runtime-border, #d0d5dd)}.cedros-academy.ca-public .ca-course-outline .ca-curriculum li::marker{color:var(--ca5ss4b-runtime-muted, #667085);font-size:13px;font-variant-numeric:tabular-nums}.cedros-academy.ca-public .ca-course-secondary{display:grid;grid-column:2;grid-row:1 / span 2;gap:16px;margin:0}.cedros-academy.ca-public .ca-course-secondary h3{font-size:20px;margin:0}.cedros-academy.ca-public .ca-course-secondary .ca-notice{margin:0}.cedros-academy.ca-public .ca-course-secondary .ca-button{width:100%}.cedros-academy.ca-public .ca-course-secondary .ca-enrollment-explanation{margin:0;line-height:1.6}.cedros-academy.ca-public .ca-course-secondary .ca-meta-list div{border-radius:0}.cedros-academy.ca-public .ca-learning-list,.cedros-academy.ca-public .ca-learning-group{display:grid;gap:16px}.cedros-academy.ca-public .ca-learning-list{gap:32px;max-width:56rem}.cedros-academy.ca-public.ca-learning-surface>.ca-notice{max-width:45rem}.cedros-academy.ca-public.ca-learning-surface>.ca-notice>.ca-button{justify-self:start}.cedros-academy.ca-public .ca-learning-group>h3{font-size:20px;margin:0}.cedros-academy.ca-public .ca-enrollment-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:24px;padding:20px 0;margin:0;align-items:center;border-top:1px solid var(--ca5ss4b-runtime-border, #d0d5dd)}.cedros-academy.ca-public .ca-enrollment-row:has(.ca-course-artwork){grid-template-columns:96px minmax(0,1fr) auto}.cedros-academy.ca-public .ca-enrollment-actions{margin:0}.cedros-academy.ca-public .ca-learning-browse{justify-self:start}.cedros-academy.ca-public .ca-learning-complete{margin:0}.cedros-academy.ca-public .ca-enrollment-row .ca-course-artwork{aspect-ratio:1}.cedros-academy.ca-public .ca-enrollment-row .ca-course-artwork--missing{padding:12px}.cedros-academy.ca-public .ca-enrollment-row .ca-course-artwork--missing span{display:none}.cedros-academy.ca-public .ca-enrollment-content{display:grid;gap:12px;min-width:0}.cedros-academy.ca-public .ca-enrollment-content .ca-card-header{margin:0}.cedros-academy.ca-public .ca-enrollment-content h3{font-size:20px;margin:0}.cedros-academy.ca-public .ca-enrollment-content .ca-progress{max-width:440px;margin:0}.cedros-academy.ca-public.ca-reading-surface{gap:16px;padding-top:16px}.cedros-academy.ca-public.ca-reading-surface .ca-public-head{gap:8px;padding-block:0;max-width:100%}.cedros-academy.ca-public.ca-reading-surface .ca-public-head h2{font-size:clamp(20px,2cqi,24px);line-height:1.35}.cedros-academy.ca-public.ca-reading-surface .ca-public-head p{font-size:15px}.cedros-academy.ca-public .ca-lesson-outline{min-width:0}.cedros-academy.ca-public .ca-lesson-outline>summary{cursor:pointer;font-weight:600;padding:12px 0;margin-bottom:12px}.cedros-academy.ca-public .ca-lesson-outline>summary:focus-visible{outline:2px solid var(--ca5ss4b-runtime-text, #171717);outline-offset:4px}.cedros-academy.ca-public .ca-player-layout{grid-template-columns:minmax(220px,280px) minmax(0,1fr);gap:24px}.cedros-academy.ca-public .ca-player>.ca-card-header h3{font-size:16px}.cedros-academy.ca-public .ca-player{padding:24px}.cedros-academy.ca-public .ca-lesson>h4{font-size:28px;line-height:1.3}.cedros-academy.ca-public .ca-player-lesson{border:0;border-radius:var(--ca-radius-sm);display:flex;align-items:start;gap:12px}.cedros-academy.ca-public .ca-lesson-number{flex:none;font-size:12px;line-height:1.75;font-variant-numeric:tabular-nums;color:var(--ca5ss4b-runtime-muted, #667085)}.cedros-academy.ca-public .ca-lesson-name{flex:1;min-width:0;overflow-wrap:anywhere}.cedros-academy.ca-public .ca-lesson-completion{flex:none;min-width:16px}.cedros-academy.ca-public .ca-button--quiet{border-color:transparent;background:transparent;color:var(--ca5ss4b-runtime-muted, #667085)}.cedros-academy.ca-public .ca-tool-summary{display:block;margin-top:4px;font-weight:400}.cedros-academy.ca-public .ca-verification-reference p{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px}.cedros-academy.ca-public.ca-submission-surface{max-width:45rem}.cedros-academy.ca-public.ca-submission-surface .ca-public-head{padding-block:0;gap:12px}.cedros-academy.ca-public.ca-submission-surface .ca-public-head h2{font-size:clamp(28px,3cqi,36px)}.cedros-academy.ca-public.ca-submission-surface .ca-card-grid{grid-template-columns:minmax(0,1fr)}.cedros-academy.ca-public .ca-player-nav{padding:0;border:0}.cedros-academy.ca-public .ca-outline-context{min-width:0}.cedros-academy.ca-public .ca-outline-context>.ca-progress{margin:0}.cedros-academy.ca-public .ca-lesson{min-width:0}.cedros-academy.ca-public .ca-lesson>.ca-lesson-body{max-width:60ch}.cedros-academy.ca-public .ca-player-nav h4{color:var(--ca5ss4b-runtime-muted, #667085);font-size:13px}.cedros-academy.ca-public .ca-open-outline{background:transparent;padding:0}.cedros-academy.ca-public .ca-lesson-body{overflow-wrap:anywhere}.cedros-academy.ca-public.ca-verification-surface{width:min(100%,720px)}.cedros-academy.ca-public .ca-verification-result{padding:24px}.cedros-academy.ca-public .ca-verification-heading{display:flex;align-items:center;gap:12px}.cedros-academy.ca-public .ca-verification-heading>svg{flex:none}.cedros-academy.ca-public .ca-verification-result .ca-verified-course{font-size:22px;font-weight:600;line-height:1.4}.cedros-academy.ca-public .ca-verification-result p{overflow-wrap:anywhere}.cedros-academy.ca-public.ca-profile-surface{width:min(100%,760px)}.cedros-academy.ca-public.ca-profile-surface .ca-public-head p{white-space:pre-wrap}.cedros-academy.ca-public .ca-submission-form{width:min(100%,720px);padding:24px}.cedros-academy.ca-public .ca-submission-form h3{margin:0;font-size:20px}.cedros-academy.ca-public .ca-submission-form h3:not(:first-child){padding-top:16px;border-top:1px solid var(--ca5ss4b-runtime-border, #d0d5dd)}.cedros-academy.ca-public .ca-submission-form p{margin:0}.cedros-academy.ca-public .ca-submission-form .ca-button{justify-self:start}.cedros-academy.ca-public .ca-submission-history{display:grid;gap:16px}.cedros-academy.ca-public .ca-submission-history>h3{font-size:20px;margin:0}.cedros-academy.ca-public .ca-new-submission{width:min(100%,720px)}.cedros-academy.ca-public .ca-new-submission>.ca-submission-form{border:0;margin:0}.cedros-academy-admin .ca-overview-inventory{max-width:45rem;margin-top:1rem}.cedros-academy-admin .ca-overview-inventory .ca-metric{border:0;border-radius:0;padding:.75rem 0;background:transparent;box-shadow:none}.cedros-academy-admin .ca-review-quiet{margin:0}.cedros-academy-admin .ca-courses-table{table-layout:fixed}.cedros-academy-admin .ca-courses-table :is(th,td):first-child{width:40%}.cedros-academy-admin .ca-courses-table :is(th,td):nth-child(2){width:16%}.cedros-academy-admin .ca-courses-table :is(th,td):nth-child(3){width:16%}.cedros-academy-admin .ca-course-description{max-width:40ch;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.cedros-academy-admin .ca-create-course,.cedros-academy-admin .ca-profile-editor,.cedros-academy-admin .ca-drafting-surface{max-width:var(--cd-container-settings, 45rem)}.cedros-academy-admin .ca-course-editor-grid{grid-template-columns:minmax(0,.85fr) minmax(0,1.4fr)}@container cedros-academy-admin (min-width: 761px){.cedros-academy-admin .ca-course-editor-grid>.ca-curriculum-editor{grid-column:2;grid-row:1}.cedros-academy-admin .ca-course-editor-grid>.ca-course-details{grid-column:1;grid-row:1}}.cedros-academy-admin .ca-readiness-summary{border-bottom:1px solid var(--ca-admin-border);padding-bottom:1rem}.cedros-academy-admin .ca-readiness-summary .ca-card-header{margin-bottom:.5rem}.cedros-academy-admin details.ca-readiness-evidence>summary{font-weight:400}.cedros-academy-admin .ca-readiness-evidence .ca-checklist{margin-top:.75rem}.cedros-academy-admin .ca-course-workspace-actions{position:sticky;top:0;z-index:var(--z-dropdown, 50);margin:0;padding:.5rem 0;align-items:center;background:var(--ca-admin-bg);border-bottom:1px solid var(--ca-admin-border)}.cedros-academy-admin .ca-course-open{display:flex;align-items:center;gap:.5rem;min-height:2rem;width:100%;padding:0;border:0;background:transparent;color:var(--ca-admin-fg);font:inherit;font-weight:600;text-align:left;cursor:pointer}.cedros-academy-admin .ca-course-open>span{min-width:0;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.cedros-academy-admin .ca-course-open>svg{flex:none;color:var(--ca-admin-muted)}.cedros-academy-admin .ca-course-open:is(:hover,:focus-visible)>span{text-decoration:underline}.cedros-academy-admin .ca-course-open:focus-visible{outline:2px solid var(--ca-admin-ring);outline-offset:2px;border-radius:var(--ca-radius-sm);box-shadow:0 0 0 3px color-mix(in srgb,var(--ca-admin-ring) 14%,transparent)}.cedros-academy-admin .ca-cover-preview{display:flex;align-items:center;gap:.75rem;margin:0}.cedros-academy-admin .ca-cover-preview .ca-course-artwork{flex:none;display:block;width:6rem;height:4rem;object-fit:cover;border:1px solid var(--ca-admin-border);border-radius:var(--ca-radius-sm);background:var(--ca-admin-muted-bg)}.cedros-academy-admin .ca-cover-preview .ca-course-artwork--missing{display:flex;align-items:center;justify-content:center;color:var(--ca-admin-muted)}.cedros-academy-admin .ca-cover-preview .ca-course-artwork--missing svg{width:20px;height:20px}.cedros-academy-admin .ca-cover-preview .ca-course-artwork--missing span{display:none}.cedros-academy-admin .ca-cover-preview figcaption{min-width:0;line-height:1.5}.cedros-academy-admin .ca-announcement-receipt,.cedros-academy-admin .ca-feedback--empty{border-top:1px solid var(--ca-admin-border);padding-top:1rem}.cedros-academy-admin .ca-announcement-receipt .ca-card-header,.cedros-academy-admin .ca-feedback--empty .ca-card-header{align-items:center;margin-bottom:.25rem}.cedros-academy-admin .ca-announcement-receipt h3,.cedros-academy-admin .ca-feedback--empty h3{margin:0;font-size:.875rem;font-weight:600}.cedros-academy-admin .ca-announcement-receipt p{margin:0}.cedros-academy-admin .ca-course-workspace-actions>[role=status]{margin-right:auto}.cedros-academy-admin .ca-access-filters{grid-template-columns:minmax(10rem,16rem) minmax(0,18rem);margin-bottom:.75rem}.cedros-academy-admin .ca-draft-result{border-top:1px solid var(--ca-admin-border);margin-top:1rem;padding-top:1rem;max-width:60ch}.cedros-academy-admin .ca-course-filters{display:flex;flex-wrap:wrap;justify-content:flex-start;gap:.75rem;align-items:center}.cedros-academy-admin .ca-course-filters>.ca-field{width:min(100%,18rem);margin:0}.cedros-academy-admin .ca-course-filters>.ca-field:last-child{width:min(100%,14rem)}.cedros-academy-admin .ca-toolbar-field{position:relative}.cedros-academy-admin .ca-toolbar-field>svg{position:absolute;top:.625rem;left:.75rem;width:1rem;height:1rem;color:var(--ca-admin-muted);pointer-events:none}.cedros-academy-admin .ca-toolbar-field>input{padding-left:2.25rem}.cedros-academy-admin .ca-toolbar-field>input[type=search]{padding-right:2.5rem}.cedros-academy-admin .ca-toolbar-field>input[type=search]::-webkit-search-cancel-button{-webkit-appearance:none;-moz-appearance:none;appearance:none}.cedros-academy-admin .ca-search-clear{position:absolute;top:.125rem;right:.125rem;width:2rem;padding:0}.cedros-academy-admin .ca-access-filters>.ca-field{margin-bottom:0}.cedros-academy-admin .ca-access-summary>summary .ca-muted{flex-basis:100%;padding-left:1.5rem;line-height:1.5;font-weight:400}.cedros-academy-admin details.ca-lesson-edit-disclosure>summary{flex-wrap:nowrap;padding-block:.25rem}.cedros-academy-admin .ca-lesson-edit-disclosure>summary>span:first-of-type{flex:1;min-width:0;overflow-wrap:anywhere}.cedros-academy-admin .ca-lesson-edit-disclosure>summary>.ca-muted{flex:none;font-weight:400;font-size:.75rem}.cedros-academy-admin .ca-lesson-edit-fields{padding-top:.75rem}.cedros-academy-admin .ca-lesson-editor{gap:.25rem}.cedros-academy-admin .ca-lesson-editor>.ca-card-header{margin-bottom:0;align-items:center}.cedros-academy-admin .ca-lesson-edit-fields textarea{min-height:12rem}.cedros-academy-admin .ca-instructor-bio-preview{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}.cedros-academy-admin .ca-outcome-summary{max-width:var(--cd-container-settings, 45rem)}.cedros-academy-admin .ca-outcome-summary .ca-metric{border:0;box-shadow:none;padding:.75rem 0;background:transparent}@container cedros-academy (max-width: 680px){.cedros-academy.ca-public .ca-course-layout,.cedros-academy.ca-public .ca-player-layout,.cedros-academy.ca-public .ca-open-course{grid-template-columns:minmax(0,1fr)}.cedros-academy.ca-public .ca-course-secondary{grid-column:1;grid-row:2;padding:20px}.cedros-academy.ca-public .ca-course-support{grid-row:3}.cedros-academy.ca-public .ca-course-secondary .ca-meta-list{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.cedros-academy.ca-public .ca-enrollment-row{grid-template-columns:minmax(0,1fr);padding:16px 0;gap:16px;align-items:start}.cedros-academy.ca-public .ca-enrollment-row:has(.ca-course-artwork){grid-template-columns:64px minmax(0,1fr)}.cedros-academy.ca-public .ca-enrollment-actions{grid-column:1 / -1;width:100%}.cedros-academy.ca-public .ca-enrollment-row .ca-course-artwork--missing span{display:none}.cedros-academy.ca-public .ca-enrollment-row .ca-course-artwork--missing{padding:12px}.cedros-academy.ca-public .ca-enrollment-content .ca-public-actions{width:auto}.cedros-academy.ca-public .ca-player{padding:16px}.cedros-academy.ca-public .ca-submission-form{padding:20px}.cedros-academy.ca-public .ca-submission-form .ca-button{justify-self:stretch}}@container cedros-academy-admin (max-width: 760px){.cedros-academy-admin .ca-notice{grid-template-columns:1rem minmax(0,1fr)}.cedros-academy-admin .ca-notice .cedros-data-status__actions{grid-column:2;justify-self:start}.cedros-academy-admin .ca-course-open{min-height:2.75rem}}@media(max-width:760px){.cedros-academy-admin .ca-course-editor-grid,.cedros-academy-admin .ca-access-filters{grid-template-columns:minmax(0,1fr)}}.cedros-academy.ca-public .ca-discovery-card h3,.cedros-academy.ca-public .ca-enrollment-content h3,.cedros-academy.ca-public .ca-long-identity{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden}.cedros-academy.ca-public .ca-long-identity{-webkit-line-clamp:4}.cedros-academy.ca-public .ca-full-copy{margin-block:8px;color:var(--ca5ss4b-runtime-muted, #667085)}.cedros-academy.ca-public .ca-full-copy summary{cursor:pointer;min-height:44px;display:flex;align-items:center;font-size:14px}.cedros-academy.ca-public .ca-full-copy p{overflow-wrap:anywhere;max-width:72ch}.cedros-academy-admin :is(.cedros-data-input,.cedros-data-select){height:2.25rem}.cedros-academy-admin .ca-table tbody tr:hover{background:color-mix(in srgb,var(--ca-admin-accent) 52%,transparent)}.cedros-academy-admin .ca-table a:not(.ca-button){color:var(--ca-admin-fg);text-decoration:none}.cedros-academy-admin .ca-table a:not(.ca-button):is(:hover,:focus-visible){text-decoration:underline}.cedros-academy-admin .cedros-data-pagination{justify-content:space-between;font-variant-numeric:tabular-nums}.cedros-academy-admin .cedros-data-pagination .cedros-data-actions{margin-left:auto}.cedros-academy-admin .cedros-data-empty-state p{max-width:38ch}.cedros-academy-admin .ca-profile-editor .ca-edit-fields{display:grid;gap:.75rem}.cedros-academy-admin .ca-profile-editor .ca-field{margin-bottom:0}.cedros-academy-admin .ca-ai-draft-fields{display:grid;gap:.75rem}.cedros-academy-admin .ca-ai-draft-fields .ca-field{margin-bottom:0}.cedros-academy-admin .ca-ai-draft-fields>.ca-button{justify-self:start}.cedros-academy-admin.ca-settings-surface,.cedros-academy-admin.ca-instructors-surface,.cedros-academy-admin.ca-overview-surface{max-width:var(--cd-container-settings, 45rem)}.cedros-academy-admin .ca-contribution-list{display:grid;gap:1rem}.cedros-academy-admin .ca-contribution{padding-top:1rem;border-top:1px solid var(--ca-admin-border)}.cedros-academy-admin .ca-contribution>h4{font-size:.875rem;margin-bottom:.25rem}.cedros-academy-admin .ca-contribution>p{margin-bottom:.75rem}.cedros-academy-admin .ca-submission-preview{max-width:var(--cd-container-settings, 45rem)}.cedros-academy-admin .ca-contribution-decision{display:grid;gap:.75rem;border-top:1px solid var(--ca-admin-border);padding-top:1rem}.cedros-academy-admin .ca-contribution-decision .ca-field{margin:0}.cedros-academy-admin .ca-reply-editor{max-width:var(--cd-container-settings, 45rem)}.cedros-academy-admin .ca-confirmed-reply{margin-block:.75rem;padding-left:1rem;border-left:2px solid var(--ca-admin-border)}.cedros-academy-admin .ca-policy-edit>summary{display:flex;align-items:center;justify-content:space-between;gap:1rem;min-height:2rem;cursor:pointer;font-weight:600}.cedros-academy-admin .ca-policy-edit>summary .ca-muted{font-weight:400}.cedros-academy-admin .ca-policy-edit__body{padding-top:.75rem;max-width:18rem}.cedros-academy-admin .ca-form-switch{display:flex;justify-content:space-between;gap:.75rem;align-items:center;padding-block:.55rem}.cedros-academy-admin .ca-form-switch__copy{display:grid;gap:.25rem;min-width:0;max-width:60ch}.cedros-academy-admin .ca-form-switch__copy .cedros-data-field__description{line-height:1.5}.cedros-academy-admin .ca-form-switch input{-webkit-appearance:none;-moz-appearance:none;appearance:none;position:relative;flex:none;margin:0;width:2.35rem;height:1.3rem;border:1px solid var(--ca-admin-border);border-radius:var(--ca-radius-pill);background:var(--ca-admin-muted-bg);cursor:pointer;transition:background-color var(--motion-duration-fast, .16s) var(--motion-ease-standard, cubic-bezier(.16, 1, .3, 1)),border-color var(--motion-duration-fast, .16s) var(--motion-ease-standard, cubic-bezier(.16, 1, .3, 1))}.cedros-academy-admin .ca-form-switch input:before{content:\"\";position:absolute;top:1px;left:1px;width:1.1rem;height:1.1rem;box-sizing:border-box;border:1px solid var(--ca-admin-border);border-radius:var(--ca-radius-pill);background:var(--ca-admin-card-bg);box-shadow:var(--ca-admin-shadow);transition:transform var(--motion-duration-fast, .16s) var(--motion-ease-standard, cubic-bezier(.16, 1, .3, 1))}.cedros-academy-admin .ca-form-switch input:checked{background:var(--ca-admin-primary);border-color:var(--ca-admin-primary)}.cedros-academy-admin .ca-form-switch input:checked:before{border-color:transparent;transform:translate(1.02rem)}.cedros-academy-admin .ca-form-switch input:focus-visible{outline:2px solid var(--ca-admin-ring);outline-offset:3px}.cedros-academy-admin .ca-form-switch input:disabled{opacity:.5;cursor:not-allowed}@media(forced-colors:active){.cedros-academy-admin .ca-form-switch input{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto;width:1.3rem}.cedros-academy-admin .ca-form-switch input:before{content:none}}.cedros-academy-admin .cedros-dropdown-menu__content:popover-open{animation:ca-menu-in calc(var(--motion-duration-fast, .16s) * 1.125) var(--motion-ease-standard, cubic-bezier(.16, 1, .3, 1))}@keyframes ca-menu-in{0%{opacity:0;transform:scale(.97) translateY(-4px)}to{opacity:1;transform:scale(1) translateY(0)}}@container cedros-academy-admin (max-width: 760px){.cedros-academy-admin .ca-course-editor-grid,.cedros-academy-admin .ca-access-filters,.cedros-academy-admin .ca-preview-layout{grid-template-columns:minmax(0,1fr)}.cedros-academy-admin .ca-card-header{flex-wrap:wrap}.cedros-academy-admin .ca-preview-lesson{border-left:0;border-top:1px solid var(--ca-admin-border);padding:1rem 0 0}}.cedros-academy .ca-button:not(:disabled):active{background:color-mix(in srgb,var(--ca5ss4b-runtime-text, #171717) 12%,var(--ca5ss4b-runtime-panel, #fff))}.cedros-academy .ca-button-primary:not(:disabled):active{background:color-mix(in srgb,var(--ca5ss4b-runtime-action-bg, #18181b) 80%,var(--ca5ss4b-runtime-action-fg, #fff))}.cedros-academy .ca-button:disabled:hover{background:var(--ca5ss4b-runtime-panel, #fff)}.cedros-academy .ca-button-primary:disabled:hover{background:var(--ca5ss4b-runtime-action-bg, #18181b)}.cedros-academy .ca-button[aria-pressed=true]{border-color:var(--ca5ss4b-runtime-action-bg, #18181b);background:var(--ca5ss4b-runtime-accent-soft, #f4f4f5)}@media(max-width:767px){.cedros-academy-admin .cedros-data-row-actions .cedros-data-btn{min-height:2.75rem}.cedros-academy-admin :is(.cedros-data-input,.cedros-data-select){height:2.75rem;min-height:2.75rem}.cedros-academy-admin .ca-toolbar-field>svg{top:.875rem}.cedros-academy-admin .ca-search-clear{top:0;right:0;width:2.75rem}.cedros-academy-admin .cedros-row-actions__trigger,.cedros-academy-admin .cedros-data-dialog__close{width:2.75rem;min-height:2.75rem}.cedros-academy-admin .cedros-data-dialog__heading{padding-right:3.25rem}.cedros-academy-admin .cedros-dropdown-menu__item,.cedros-academy-admin .cedros-back-breadcrumb,.cedros-academy-admin details>summary,.cedros-academy-admin details:not(.ca-policy-edit)>summary,.cedros-academy-admin .ca-form-switch{min-height:2.75rem}}.cedros-academy-admin .ca-icon-button{width:2rem;padding:0}.cedros-academy-admin .ca-icon-button>svg,.cedros-academy-admin .cedros-row-actions__trigger>svg{flex:none}.cedros-academy-admin .ca-add-lesson{justify-self:start}.cedros-academy-admin .cedros-data-setup-notice{display:grid;gap:.75rem;border:1px solid var(--ca-admin-border);border-radius:var(--ca-admin-radius);padding:1rem;background:var(--ca-admin-card-bg);box-shadow:var(--ca-admin-shadow)}.cedros-academy-admin .cedros-data-setup-notice__body{display:grid;gap:.25rem;max-width:60ch}.cedros-academy-admin .cedros-data-setup-notice__body :is(h3,strong){font-size:.875rem;font-weight:600}.cedros-academy-admin .cedros-data-setup-notice .cedros-data-actions{justify-content:flex-start}.cedros-academy-admin code{border:1px solid var(--ca-admin-border);border-radius:4px;padding:0 .3em;background:var(--ca-admin-muted-bg);color:var(--ca-admin-fg);font-family:var(--cd-font-mono, ui-monospace, SFMono-Regular, Menlo, monospace);font-size:.75rem;overflow-wrap:anywhere;justify-self:start}.cedros-academy-admin .cedros-data-table-summary{display:grid;gap:.125rem;min-width:0}.cedros-academy-admin .ca-table .ca-row-end{width:1%;text-align:right;white-space:nowrap}.cedros-academy-admin .ca-instructors-table{min-width:30rem}@media(max-width:767px){.cedros-academy-admin .ca-icon-button{width:2.75rem}}.cedros-academy details>summary{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;list-style:none;cursor:pointer}.cedros-academy details>summary::-webkit-details-marker{display:none}.cedros-academy details>summary:before{content:\"\";flex:none;width:16px;height:16px;background-color:currentColor;mask:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m9 18 6-6-6-6'/%3E%3C/svg%3E\") center / 16px no-repeat;transition:transform var(--motion-duration-fast, .16s) var(--motion-ease-standard, cubic-bezier(.16, 1, .3, 1))}.cedros-academy details[open]>summary:before{transform:rotate(90deg)}.cedros-academy .ca-disclosure>summary .ca-tool-summary{flex-basis:100%;margin:0;padding-left:24px}.cedros-academy.ca-public .ca-learning-tools{gap:0}.cedros-academy.ca-public .ca-learning-tools>.ca-disclosure{border:0;border-top:1px solid var(--ca5ss4b-runtime-border, #d0d5dd);border-radius:0;background:transparent;overflow:visible}.cedros-academy.ca-public .ca-learning-tools>.ca-disclosure>summary{padding:16px 0;min-height:44px}.cedros-academy.ca-public .ca-learning-tools>.ca-disclosure>.ca-disclosure__body{padding:0 0 20px}\n"},{"path":"workspace/react/dist/styles.css.js","kind":"module","text":"const a = `.cedros-academy{--ca-radius-sm: 7px;--ca-radius-md: 8px;--ca-radius-lg: 12px;--ca-radius-pill: 999px;color:var(--ca5ss4b-runtime-text, #171717);font:inherit;width:100%;max-width:100%;min-width:0;contain:inline-size;container:cedros-academy / inline-size;overflow-wrap:break-word}.cedros-academy *{box-sizing:border-box}.cedros-academy>*,.cedros-academy .ca-card-grid,.cedros-academy .ca-card,.cedros-academy .ca-notice{max-width:100%;min-width:0}.cedros-academy a{color:inherit}.cedros-academy p,.cedros-academy h2,.cedros-academy h3,.cedros-academy h4{margin-top:0;letter-spacing:0}.cedros-academy p{line-height:1.55}.cedros-academy .ca-muted{color:var(--ca5ss4b-runtime-muted, #667085);font-size:13px}.cedros-academy .ca-card{border:1px solid var(--ca5ss4b-runtime-border, #d0d5dd);border-radius:var(--ca-radius-md);padding:14px;background:var(--ca5ss4b-runtime-panel, #ffffff);box-shadow:none}.cedros-academy .ca-card+.ca-card,.cedros-academy .ca-notice+.ca-card,.cedros-academy .ca-card+.ca-notice{margin-top:12px}.cedros-academy .ca-card-header{display:flex;gap:10px;align-items:flex-start;justify-content:space-between;margin-bottom:10px}.cedros-academy .ca-card h3,.cedros-academy .ca-card h4{margin-bottom:6px;font-size:16px;line-height:1.3;font-weight:650}.cedros-academy .ca-button{display:inline-flex;min-height:34px;align-items:center;justify-content:center;gap:6px;border:1px solid var(--ca5ss4b-runtime-border, #cbd5e1);border-radius:var(--ca-radius-sm);background:var(--ca5ss4b-runtime-panel, #ffffff);color:inherit;padding:7px 11px;cursor:pointer;font:inherit;font-weight:550;text-decoration:none;white-space:nowrap}.cedros-academy .ca-button-primary{background:var(--ca5ss4b-runtime-action-bg, #18181b);color:var(--ca5ss4b-runtime-action-fg, #ffffff);border-color:var(--ca5ss4b-runtime-action-bg, #18181b)}.cedros-academy .ca-button:focus-visible,.cedros-academy a.ca-button:focus-visible,.cedros-academy .ca-field input:focus-visible,.cedros-academy .ca-field textarea:focus-visible,.cedros-academy .ca-field select:focus-visible{outline:2px solid var(--ca5ss4b-runtime-text, #171717);outline-offset:2px}.cedros-academy .ca-button[disabled]{cursor:not-allowed;opacity:.55}.cedros-academy .ca-field{display:grid;gap:5px;margin-bottom:11px}.cedros-academy .ca-field label,.cedros-academy .ca-field>span:first-child{font-size:12px;font-weight:650;color:var(--ca5ss4b-runtime-muted, #667085)}.cedros-academy .ca-field input,.cedros-academy .ca-field textarea,.cedros-academy .ca-field select{width:100%;min-height:36px;border:1px solid var(--ca5ss4b-runtime-muted, #667085);border-radius:var(--ca-radius-sm);padding:8px 10px;background:var(--ca5ss4b-runtime-panel, #ffffff);color:inherit;font:inherit}.cedros-academy .ca-field textarea{min-height:92px;resize:vertical}.cedros-academy .ca-learning-tools{display:grid;gap:12px;align-items:stretch;margin-top:24px}.cedros-academy .ca-learner-reviews{display:grid;gap:12px}.cedros-academy .ca-disclosure{border:1px solid var(--ca5ss4b-runtime-border, #d0d5dd);border-radius:var(--ca-radius-md);background:var(--ca5ss4b-runtime-panel, #ffffff);overflow:hidden}.cedros-academy .ca-disclosure>summary{padding:18px 20px;cursor:pointer;font-weight:650}.cedros-academy .ca-disclosure>summary:focus-visible{outline:3px solid var(--ca5ss4b-runtime-text, #171717);outline-offset:-3px}.cedros-academy .ca-disclosure__body{display:grid;gap:16px;padding:0 20px 20px}.cedros-academy .ca-feedback-item{padding:16px 0;border-top:1px solid var(--ca5ss4b-runtime-border, var(--ca-admin-border, #d0d5dd));overflow-wrap:anywhere}.cedros-academy .ca-feedback-item p,.cedros-academy-admin .ca-feedback-item p{white-space:pre-wrap}.cedros-academy .ca-field-error{color:var(--ca5ss4b-runtime-error, #b42318);font-size:12px}.cedros-academy .ca-status{display:inline-flex;min-height:22px;align-items:center;border-radius:var(--ca-radius-pill);padding:2px 8px;background:var(--ca5ss4b-runtime-accent-soft, #f2f4f7);color:var(--ca5ss4b-runtime-muted, #667085);font-size:12px;line-height:1.2;white-space:nowrap}.cedros-academy .ca-status--success{background:color-mix(in srgb,var(--ca5ss4b-runtime-text, #027a48) 12%,transparent);color:var(--ca5ss4b-runtime-text, #05603a)}.cedros-academy .ca-status--warning{background:color-mix(in srgb,var(--ca5ss4b-runtime-warning, #b54708) 14%,transparent);color:var(--ca5ss4b-runtime-text, #93370d)}.cedros-academy .ca-status--error{background:color-mix(in srgb,var(--ca5ss4b-runtime-error, #b42318) 12%,transparent);color:var(--ca5ss4b-runtime-text, #7a271a)}.cedros-academy .ca-status--info{background:color-mix(in srgb,var(--ca5ss4b-runtime-text, #175cd3) 10%,transparent);color:var(--ca5ss4b-runtime-text, #1849a9)}.cedros-academy .ca-notice{display:grid;gap:4px;border:1px solid var(--ca5ss4b-runtime-border, #d0d5dd);border-radius:var(--ca-radius-md);padding:12px;margin-bottom:12px;background:var(--ca5ss4b-runtime-accent-soft, #f8fafc)}.cedros-academy .ca-notice p{margin:0}.cedros-academy .ca-notice--success{border-color:color-mix(in srgb,var(--ca5ss4b-runtime-text, #027a48) 35%,var(--ca5ss4b-runtime-border, #d0d5dd))}.cedros-academy .ca-notice--warning{border-color:color-mix(in srgb,var(--ca5ss4b-runtime-warning, #b54708) 40%,var(--ca5ss4b-runtime-border, #d0d5dd))}.cedros-academy .ca-notice--error{border-color:var(--ca5ss4b-runtime-error, #b42318)}.cedros-academy.ca-public{color:var(--ca5ss4b-runtime-text, #171717)}.cedros-academy.ca-public .ca-muted,.cedros-academy.ca-public .ca-kicker{color:var(--ca5ss4b-runtime-muted, #667085)}.cedros-academy.ca-public .ca-status--success{background:color-mix(in srgb,var(--ca5ss4b-runtime-text, #171717) 6%,transparent);color:var(--ca5ss4b-runtime-text, #171717)}.cedros-academy.ca-public .ca-status--warning{background:color-mix(in srgb,var(--ca5ss4b-runtime-warning, #b54708) 16%,transparent);color:var(--ca5ss4b-runtime-text, #171717)}.cedros-academy.ca-public .ca-status--error{background:color-mix(in srgb,var(--ca5ss4b-runtime-error, #b42318) 14%,transparent);color:var(--ca5ss4b-runtime-text, #171717)}.cedros-academy.ca-public .ca-notice--success{border-color:color-mix(in srgb,var(--ca5ss4b-runtime-border, #d0d5dd) 100%,var(--ca5ss4b-runtime-border, #d0d5dd))}.cedros-academy.ca-public .ca-notice--warning{border-color:color-mix(in srgb,var(--ca5ss4b-runtime-warning, #b54708) 45%,var(--ca5ss4b-runtime-border, #d0d5dd))}.cedros-academy.ca-public .ca-notice--error{border-color:var(--ca5ss4b-runtime-error, #b42318)}.cedros-academy.ca-public .ca-public-shell,.cedros-academy.ca-public.ca-public-shell{display:grid;gap:16px;width:min(100%,1120px);margin:0 auto;padding:clamp(20px,4vw,44px) 0}.cedros-academy.ca-public .ca-public-head{display:grid;gap:8px;max-width:760px}.cedros-academy.ca-public .ca-public-head h2{margin:0;font-size:clamp(28px,4vw,44px);line-height:1.08;font-weight:700}.cedros-academy .ca-kicker{color:var(--ca5ss4b-runtime-muted, #667085);font-size:12px;font-weight:700;letter-spacing:0;text-transform:uppercase}.cedros-academy .ca-card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));gap:14px}.cedros-academy .ca-card-grid--compact{grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr))}.cedros-academy .ca-skeleton-card{min-height:156px;align-content:start}.cedros-academy .ca-skeleton{display:block;height:12px;border-radius:var(--ca-radius-pill);background:color-mix(in srgb,var(--ca5ss4b-runtime-muted, #667085) 22%,transparent);background-image:linear-gradient(90deg,transparent,color-mix(in srgb,var(--ca5ss4b-runtime-panel, #ffffff) 55%,transparent),transparent);background-size:220% 100%;background-repeat:no-repeat;animation:ca-shimmer var(--motion-duration-skeleton, 1.4s) var(--motion-ease-standard, cubic-bezier(.16, 1, .3, 1)) infinite}.cedros-academy .ca-skeleton--title{width:54%;height:18px;margin-bottom:10px}.cedros-academy .ca-skeleton--line{width:88%;margin-bottom:8px}.cedros-academy .ca-skeleton--short{width:62%}.cedros-academy .ca-course-layout{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(260px,.8fr);gap:14px;align-items:start}.cedros-academy .ca-course-card,.cedros-academy .ca-course-primary,.cedros-academy .ca-course-secondary,.cedros-academy .ca-player{background:var(--ca5ss4b-runtime-panel, #ffffff);border-color:var(--ca5ss4b-runtime-border, #d0d5dd)}.cedros-academy .ca-player{border-radius:var(--ca-radius-lg)}.cedros-academy .ca-meta-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:8px;margin:12px 0}.cedros-academy .ca-meta-list div{display:grid;gap:2px;border:1px solid var(--ca5ss4b-runtime-border, #d0d5dd);border-radius:var(--ca-radius-sm);padding:8px}.cedros-academy .ca-meta-list dt{color:var(--ca5ss4b-runtime-muted, #667085);font-size:12px}.cedros-academy .ca-meta-list dd{margin:0;font-weight:650}.cedros-academy .ca-public-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.cedros-academy .ca-progress{position:relative;display:grid;gap:6px;margin:10px 0}.cedros-academy .ca-progress:before,.cedros-academy .ca-progress>span{display:block;height:8px;border-radius:var(--ca-radius-pill)}.cedros-academy .ca-progress:before{content:\"\";background:var(--ca5ss4b-runtime-accent-soft, #f2f4f7)}.cedros-academy .ca-progress>span{position:absolute;top:0;left:0;background:var(--ca5ss4b-runtime-action-bg, #18181b);transition:width var(--motion-duration-modal, .24s) var(--motion-ease-standard, cubic-bezier(.16, 1, .3, 1))}.cedros-academy .ca-progress strong{font-size:12px;color:var(--ca5ss4b-runtime-muted, #667085)}.cedros-academy .ca-curriculum{display:grid;gap:10px}.cedros-academy .ca-curriculum ul{display:grid;gap:6px;margin:0;padding-left:18px}.cedros-academy .ca-curriculum li span{color:var(--ca5ss4b-runtime-muted, #667085);font-size:12px}.cedros-academy .ca-instructor-list,.cedros-academy .ca-instructor-summary{display:grid;gap:6px}.cedros-academy .ca-instructor-list{border-top:1px solid var(--ca5ss4b-runtime-border, #d0d5dd);padding-top:12px}.cedros-academy .ca-instructor-summary p{margin-bottom:8px}.cedros-academy .ca-player-layout{display:grid;grid-template-columns:minmax(200px,.65fr) minmax(0,1.35fr);gap:16px;align-items:start;margin-top:16px}.cedros-academy .ca-player-nav{display:grid;gap:12px}.cedros-academy .ca-player-nav ol{display:grid;gap:6px;margin:0;padding:0;list-style:none}.cedros-academy .ca-player-lesson{position:relative;display:grid;gap:3px;width:100%;border:1px solid var(--ca5ss4b-runtime-border, #d0d5dd);border-radius:var(--ca-radius-sm);padding:9px 10px;background:transparent;color:inherit;cursor:pointer;font:inherit;text-align:left;transition:background-color var(--motion-duration-fast, .16s) var(--motion-ease-standard, cubic-bezier(.16, 1, .3, 1)),border-color var(--motion-duration-fast, .16s) var(--motion-ease-standard, cubic-bezier(.16, 1, .3, 1))}.cedros-academy .ca-player-lesson:before{content:\"\";position:absolute;top:8px;bottom:8px;left:-1px;width:3px;border-radius:var(--ca-radius-pill);background:var(--ca5ss4b-runtime-action-bg, #18181b);transform:scaleY(0);transition:transform var(--motion-duration-modal, .24s) var(--motion-ease-standard, cubic-bezier(.16, 1, .3, 1))}.cedros-academy .ca-player-lesson[aria-current=step]{border-color:var(--ca5ss4b-runtime-action-bg, #18181b);background:var(--ca5ss4b-runtime-accent-soft, #f2f4f7)}.cedros-academy .ca-player-lesson[aria-current=step]:before{transform:scaleY(1)}.cedros-academy .ca-player-lesson span:last-child{color:var(--ca5ss4b-runtime-muted, #667085);font-size:12px}.cedros-academy .ca-player-lesson:focus-visible{outline:2px solid var(--ca5ss4b-runtime-action-bg, var(--ca5ss4b-runtime-accent, #2f6c7d));outline-offset:2px}.cedros-academy .ca-lesson{min-width:0;border-left:1px solid var(--ca5ss4b-runtime-border, #d0d5dd);padding-left:16px}.cedros-academy .ca-lesson-body{display:grid;gap:10px;margin:14px 0 18px}.cedros-academy .ca-lesson-body>*{margin:0}.cedros-academy .ca-lesson-body p{white-space:pre-wrap}.cedros-academy .ca-lesson-body :is(h4,h5,h6){font-weight:600;line-height:1.4}.cedros-academy .ca-lesson-body h4{font-size:20px}.cedros-academy .ca-lesson-body h5{font-size:18px}.cedros-academy .ca-lesson-body h6{font-size:16px}.cedros-academy .ca-certificate{display:grid;gap:16px;border-radius:var(--ca-radius-lg);width:min(100%,760px);margin:0 auto;padding:clamp(24px,5vw,56px);border-width:2px;text-align:center}.cedros-academy .ca-certificate-heading{display:flex;gap:16px;align-items:flex-start;justify-content:space-between;text-align:left}.cedros-academy .ca-certificate-heading h3{margin:5px 0 0;font-size:clamp(24px,4vw,38px)}.cedros-academy .ca-certificate-statement{margin:0;color:var(--ca5ss4b-runtime-muted, #667085)}.cedros-academy .ca-certificate-holder{font-size:clamp(28px,5vw,48px);line-height:1.1}.cedros-academy .ca-certificate-details{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,180px),1fr));gap:10px;margin:8px 0 0;text-align:left}.cedros-academy .ca-certificate-details div{display:grid;gap:4px;min-width:0;padding-top:10px;border-top:1px solid var(--ca5ss4b-runtime-border, #d0d5dd)}.cedros-academy .ca-certificate-details dt{color:var(--ca5ss4b-runtime-muted, #667085);font-size:12px}.cedros-academy .ca-certificate-details dd{margin:0;overflow-wrap:anywhere;font-weight:650}.cedros-academy .ca-certificate-actions{justify-content:center}.cedros-academy.ca-public-stack{display:grid;gap:12px}.cedros-academy.ca-public-stack>.ca-button{justify-self:start}.cedros-academy .ca-lookup-form{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:end}@media(max-width:760px){.cedros-academy .ca-card-grid,.cedros-academy .ca-card-grid--compact,.cedros-academy .ca-course-layout,.cedros-academy .ca-player-layout,.cedros-academy .ca-lookup-form{grid-template-columns:1fr}.cedros-academy .ca-lesson{border-left:0;border-top:1px solid var(--ca5ss4b-runtime-border, #d0d5dd);padding:16px 0 0}.cedros-academy .ca-button{width:fit-content;max-width:100%;white-space:normal;text-align:center}}@media print{.cedros-academy *,.cedros-academy *:before,.cedros-academy *:after{animation:none!important;transition:none!important}.cedros-academy .ca-check path{stroke-dashoffset:0}body[data-ca5ss4b-academy-print-certificate] *{visibility:hidden!important}body[data-ca5ss4b-academy-print-certificate] .ca-certificate,body[data-ca5ss4b-academy-print-certificate] .ca-certificate *{visibility:visible!important}body[data-ca5ss4b-academy-print-certificate] .ca-certificate{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;max-width:none;border-color:currentColor;box-shadow:none}body[data-ca5ss4b-academy-print-certificate] .ca-certificate-actions,body[data-ca5ss4b-academy-print-certificate] .ca-certificate>.ca-muted{display:none!important}}.cedros-academy-admin{--ca-admin-bg: var(--cd-bg, oklch(1 0 0));--ca-admin-fg: var(--cd-fg, oklch(.145 0 0));--ca-admin-card-bg: var(--cd-card-bg, oklch(1 0 0));--ca-admin-muted: var(--cd-muted, oklch(.556 0 0));--ca-admin-muted-bg: var(--cd-muted-bg, oklch(.97 0 0));--ca-admin-accent: var(--cd-accent, oklch(.97 0 0));--ca-admin-border: var(--cd-border, oklch(.922 0 0));--ca-admin-primary: var(--cd-primary, oklch(.205 0 0));--ca-admin-primary-fg: var(--cd-primary-fg, oklch(.985 0 0));--ca-admin-ring: var(--cd-ring, oklch(.708 0 0));--ca-admin-success: var(--cd-success, oklch(.627 .194 149.214));--ca-admin-warning: var(--cd-warning, oklch(.769 .188 70.08));--ca-admin-warning-fg: var(--cd-warning-fg, oklch(.52 .12 75));--ca-admin-error: var(--cd-error, oklch(.577 .245 27.325));--ca-admin-danger-bg: var(--cd-danger-bg, oklch(.5 .22 27.325));--ca-admin-danger-fg: var(--cd-danger-fg, oklch(.985 0 0));--ca-admin-info: var(--cd-info, oklch(.546 .215 262.881));--ca-admin-input-bg: var(--cd-input-bg, transparent);--ca-radius-sm: var(--cd-radius-control, calc(var(--cd-radius, 8px) - 1px));--ca-radius-md: var(--cd-radius, 8px);--ca-radius-lg: var(--admin-radius, 12px);--ca-radius-pill: 999px;--ca-admin-radius: var(--ca-radius-md);--ca-admin-dialog-radius: var(--admin-radius, 12px);--ca-admin-shadow: var(--cd-shadow, 0 1px 2px color-mix(in srgb, var(--ca-admin-fg) 8%, transparent));color:var(--ca-admin-fg);display:grid;gap:1rem;width:100%;max-width:var(--cd-container-page, min(100%, 1360px));min-width:0;container:cedros-academy-admin / inline-size;overflow-wrap:anywhere;font:inherit;font-size:.875rem}.cedros-academy-admin,.cedros-academy-admin *{box-sizing:border-box}.cedros-academy-admin>*,.cedros-academy-admin .ca-grid,.cedros-academy-admin .ca-card-grid,.cedros-academy-admin .cedros-data-table-wrap{max-width:100%;min-width:0}.cedros-academy-admin p,.cedros-academy-admin h2,.cedros-academy-admin h3,.cedros-academy-admin h4{margin:0;letter-spacing:0}.cedros-academy-admin p{line-height:1.5}.cedros-academy-admin .ca-muted,.cedros-academy-admin .cedros-data-card__subtitle{color:var(--ca-admin-muted);font-size:.8125rem}.cedros-academy-admin .ca-page-header{display:flex;gap:.75rem;align-items:flex-start;justify-content:space-between;flex-wrap:wrap}.cedros-academy-admin .cedros-data__header-text{display:grid;gap:.25rem;max-width:60ch;min-width:min(100%,18rem)}.cedros-academy-admin .cedros-data__title{font-size:1.15rem;line-height:1.25;font-weight:600}.cedros-academy-admin .cedros-data-actions,.cedros-academy-admin .ca-row-actions{display:flex;gap:.5rem;align-items:center;justify-content:flex-end;flex-wrap:wrap}.cedros-academy-admin .ca-grid,.cedros-academy-admin .cedros-data-grid,.cedros-academy-admin .cedros-data-summary-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,14rem),1fr));gap:.75rem}.cedros-academy-admin .ca-grid--two{grid-template-columns:repeat(auto-fit,minmax(min(100%,17.5rem),1fr))}.cedros-academy-admin .ca-grid--metrics{grid-template-columns:repeat(auto-fit,minmax(min(100%,10rem),1fr))}.cedros-academy-admin .ca-settings-column{display:grid;gap:1rem;width:min(100%,var(--cd-container-settings, 45rem))}.cedros-academy-admin .ca-access-operations>.cedros-data-card__header{flex-wrap:wrap}.cedros-academy-admin .ca-access-operations,.cedros-academy-admin .ca-access-filters{min-width:0}.cedros-academy-admin .ca-card,.cedros-academy-admin .cedros-data-card,.cedros-academy-admin.cedros-data-card{border:1px solid var(--ca-admin-border);border-radius:var(--ca-admin-radius);background:var(--ca-admin-card-bg);box-shadow:var(--ca-admin-shadow)}.cedros-academy-admin .ca-card,.cedros-academy-admin.ca-card,.cedros-academy-admin .cedros-data-card__body{padding:.9rem 1rem}.cedros-academy-admin .ca-card+.ca-card,.cedros-academy-admin .ca-notice+.ca-card,.cedros-academy-admin .ca-card+.ca-notice{margin-top:0}.cedros-academy-admin .ca-card-header,.cedros-academy-admin .cedros-data-card__header{display:flex;gap:.75rem;align-items:flex-start;justify-content:space-between;margin-bottom:.75rem}.cedros-academy-admin .ca-card h3,.cedros-academy-admin .ca-card h4,.cedros-academy-admin .cedros-data-card__title{font-size:.875rem;line-height:1.25;font-weight:600}.cedros-academy-admin .ca-button,.cedros-academy-admin .cedros-data-btn{display:inline-flex;min-height:2rem;align-items:center;justify-content:center;gap:.5rem;border:1px solid var(--ca-admin-border);border-radius:var(--ca-radius-sm);background:transparent;color:var(--ca-admin-fg);padding:0 .75rem;cursor:pointer;font:inherit;font-size:.8125rem;font-weight:500;line-height:1;text-decoration:none;white-space:nowrap;transition:background-color var(--motion-duration-fast, .16s) var(--motion-ease-standard, cubic-bezier(.16, 1, .3, 1)),border-color var(--motion-duration-fast, .16s) var(--motion-ease-standard, cubic-bezier(.16, 1, .3, 1)),color var(--motion-duration-fast, .16s) var(--motion-ease-standard, cubic-bezier(.16, 1, .3, 1)),box-shadow var(--motion-duration-fast, .16s) var(--motion-ease-standard, cubic-bezier(.16, 1, .3, 1)),transform var(--motion-duration-micro, .1s) var(--motion-ease-standard, cubic-bezier(.16, 1, .3, 1))}.cedros-academy-admin .cedros-data-btn--sm,.cedros-academy-admin .ca-button--sm,.cedros-academy-admin .cedros-data-row-actions .cedros-data-btn{min-height:2rem;padding-inline:.5rem}.cedros-academy-admin .ca-button:hover,.cedros-academy-admin .cedros-data-btn:hover{background:var(--ca-admin-accent);transform:translateY(-1px)}.cedros-academy-admin .ca-button:active,.cedros-academy-admin .cedros-data-btn:active{transform:scale(.98);transition:transform var(--motion-duration-micro, .1s) var(--motion-ease-standard, cubic-bezier(.16, 1, .3, 1))}.cedros-academy-admin .ca-button-primary,.cedros-academy-admin .cedros-data-btn--primary{border-color:var(--ca-admin-primary);background:var(--ca-admin-primary);color:var(--ca-admin-primary-fg)}.cedros-academy-admin .ca-button-primary:hover,.cedros-academy-admin .cedros-data-btn--primary:hover{background:color-mix(in srgb,var(--ca-admin-primary) 90%,var(--ca-admin-primary-fg));color:var(--ca-admin-primary-fg)}.cedros-academy-admin .ca-button-danger,.cedros-academy-admin .cedros-data-btn--danger{border-color:var(--ca-admin-danger-bg);background:var(--ca-admin-danger-bg);color:var(--ca-admin-danger-fg)}.cedros-academy-admin .ca-button-danger:hover,.cedros-academy-admin .cedros-data-btn--danger:hover{background:color-mix(in srgb,var(--ca-admin-danger-bg) 90%,var(--ca-admin-fg));color:var(--ca-admin-danger-fg)}.cedros-academy-admin .cedros-data-btn--ghost{border-color:transparent;background:transparent}.cedros-academy-admin .ca-button:focus-visible,.cedros-academy-admin a.ca-button:focus-visible,.cedros-academy-admin .cedros-data-btn:focus-visible,.cedros-academy-admin .cedros-data-input:focus-visible,.cedros-academy-admin .cedros-data-select:focus-visible,.cedros-academy-admin .cedros-data-textarea:focus-visible{outline:none;border-color:var(--ca-admin-ring);box-shadow:0 0 0 3px color-mix(in srgb,var(--ca-admin-ring) 14%,transparent)}.cedros-academy-admin .ca-button[disabled],.cedros-academy-admin .cedros-data-btn[disabled]{cursor:not-allowed;opacity:.5;transform:none}.cedros-academy-admin .ca-field,.cedros-academy-admin .cedros-data-field{display:grid;gap:.25rem;align-content:start;margin:0 0 .75rem}.cedros-academy-admin .cedros-data-label{color:var(--ca-admin-fg);font-size:.8125rem;font-weight:500}.cedros-academy-admin .cedros-data-input,.cedros-academy-admin .cedros-data-select,.cedros-academy-admin .cedros-data-textarea{width:100%;min-height:2.25rem;border:1px solid var(--ca-admin-border);border-radius:var(--ca-radius-sm);padding:0 .75rem;background:var(--ca-admin-input-bg);color:var(--ca-admin-fg);font:inherit;font-size:.8125rem}.cedros-academy-admin .cedros-data-textarea{min-height:5.5rem;padding-block:.5rem;resize:vertical}.cedros-academy-admin .cedros-data-field__description,.cedros-academy-admin .ca-field-error{color:var(--ca-admin-muted);font-size:.75rem}.cedros-academy-admin .ca-field-error{color:var(--ca-admin-error)}.cedros-academy-admin .cedros-data-table-wrap{position:relative;container:cedros-academy-table / inline-size;overflow-x:auto;overscroll-behavior-x:contain;border:1px solid var(--ca-admin-border);border-radius:var(--ca-radius-sm);background-color:var(--ca-admin-card-bg);background-image:linear-gradient(to right,var(--ca-admin-card-bg),transparent),linear-gradient(to left,var(--ca-admin-card-bg),transparent),radial-gradient(farthest-side at 0 50%,color-mix(in srgb,var(--ca-admin-fg) 14%,transparent),transparent),radial-gradient(farthest-side at 100% 50%,color-mix(in srgb,var(--ca-admin-fg) 14%,transparent),transparent);background-position:0 0,100% 0,0 0,100% 0;background-size:2.5rem 100%,2.5rem 100%,.75rem 100%,.75rem 100%;background-repeat:no-repeat;background-attachment:local,local,scroll,scroll}.cedros-academy-admin .ca-table{width:100%;min-width:45rem;border-collapse:collapse;font-size:.8125rem}.cedros-academy-admin .ca-table th,.cedros-academy-admin .ca-table td{border-bottom:1px solid var(--ca-admin-border);padding:.5rem .75rem;text-align:left;vertical-align:top}.cedros-academy-admin .ca-table th{background:color-mix(in srgb,var(--ca-admin-bg) 90%,var(--ca-admin-accent) 10%);color:var(--ca-admin-muted);font-size:.6875rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase}.cedros-academy-admin .ca-table tr:last-child td{border-bottom:0}.cedros-academy-admin .ca-table td:nth-child(n+3){font-variant-numeric:tabular-nums}.cedros-academy-admin .ca-status,.cedros-academy-admin .cedros-data-pill{display:inline-flex;min-height:1.375rem;align-items:center;border-radius:var(--ca-radius-pill);padding:.125rem .5rem;border:1px solid color-mix(in srgb,var(--ca-admin-muted) 24%,transparent);background:var(--ca-admin-muted-bg);color:var(--ca-admin-fg);font-size:.6875rem;font-weight:600;line-height:1.2;white-space:nowrap}.cedros-academy-admin .ca-status--success{background:color-mix(in srgb,var(--ca-admin-success) 14%,var(--ca-admin-bg));color:var(--ca-admin-fg)}.cedros-academy-admin .ca-status--warning{background:color-mix(in srgb,var(--ca-admin-warning) 18%,var(--ca-admin-bg));color:var(--ca-admin-warning-fg)}.cedros-academy-admin .ca-status--error{background:color-mix(in srgb,var(--ca-admin-error) 12%,var(--ca-admin-bg));color:var(--ca-admin-fg)}.cedros-academy-admin .ca-status--info{background:color-mix(in srgb,var(--ca-admin-info) 12%,var(--ca-admin-bg));color:var(--ca-admin-fg)}.cedros-academy-admin .ca-notice,.cedros-academy-admin .cedros-data-status{display:grid;grid-template-columns:1rem minmax(0,1fr) auto;gap:.75rem;align-items:flex-start;justify-content:space-between;border:1px solid var(--ca-admin-border);border-radius:var(--ca-admin-radius);padding:.75rem;background:var(--ca-admin-muted-bg)}.cedros-academy-admin .ca-notice strong{font-size:.875rem;font-weight:600}.cedros-academy-admin .ca-notice p{color:var(--ca-admin-fg);font-size:.8125rem}.cedros-academy-admin .ca-notice__icon{margin-top:.125rem}.cedros-academy-admin .ca-notice__copy{min-width:0}.cedros-academy-admin .ca-notice--success{background:color-mix(in srgb,var(--ca-admin-success) 14%,var(--ca-admin-bg));border-color:color-mix(in srgb,var(--ca-admin-success) 34%,transparent)}.cedros-academy-admin .ca-notice--warning{background:color-mix(in srgb,var(--ca-admin-warning) 18%,var(--ca-admin-bg));border-color:color-mix(in srgb,var(--ca-admin-warning) 34%,transparent)}.cedros-academy-admin .ca-notice--error{background:color-mix(in srgb,var(--ca-admin-error) 12%,var(--ca-admin-bg));border-color:color-mix(in srgb,var(--ca-admin-error) 34%,transparent)}.cedros-academy-admin .ca-empty,.cedros-academy-admin .cedros-data-empty{color:var(--ca-admin-muted);font-size:.8125rem}.cedros-academy-admin .cedros-data-empty-state{display:grid;place-items:center;gap:.5rem;min-height:9rem;border:1px dashed color-mix(in srgb,var(--ca-admin-border) 72%,var(--ca-admin-muted));border-radius:var(--ca-admin-radius);padding:1.5rem 1rem;text-align:center}.cedros-academy-admin .cedros-data-empty-state strong{font-size:.875rem;font-weight:600}.cedros-academy-admin .cedros-data-empty-state p{max-width:32rem;color:var(--ca-admin-muted);font-size:.8125rem}.cedros-academy-admin .ca-skeleton-block{display:grid;gap:.5rem;min-height:6rem;padding:.9rem 1rem}.cedros-academy-admin .ca-skeleton{display:block;height:.75rem;border-radius:var(--ca-radius-pill);background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--ca-admin-muted) 18%,transparent),transparent);background-size:220% 100%;animation:ca-admin-shimmer var(--motion-duration-skeleton, 1.4s) var(--motion-ease-standard, cubic-bezier(.16, 1, .3, 1)) infinite}.cedros-academy-admin .ca-skeleton--title{width:54%;height:1rem}.cedros-academy-admin .ca-skeleton--line{width:88%}.cedros-academy-admin .ca-skeleton--short{width:62%}.cedros-academy-admin .ca-lesson-body :is(h4,h5,h6){margin:0;font-size:.875rem;line-height:1.5;font-weight:600}.cedros-academy-admin .ca-metric,.cedros-academy-admin .cedros-data-metric{display:grid;gap:.25rem;min-height:6rem;border:1px solid var(--ca-admin-border);border-radius:var(--ca-admin-radius);padding:.75rem;background:var(--ca-admin-card-bg)}.cedros-academy-admin .cedros-data-metric__label{color:var(--ca-admin-muted);font-size:.6875rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase}.cedros-academy-admin .cedros-data-metric__value{font-size:1.5rem;line-height:1;font-weight:700;font-variant-numeric:tabular-nums}.cedros-academy-admin .ca-code{max-width:100%;overflow:auto;overscroll-behavior:contain;border:1px solid var(--ca-admin-border);border-radius:var(--ca-admin-radius);padding:.75rem;background:var(--ca-admin-muted-bg);color:var(--ca-admin-fg);font-family:var(--cd-font-mono, ui-monospace, SFMono-Regular, Menlo, monospace);font-size:.75rem;white-space:pre-wrap}.cedros-academy-admin .ca-checklist{display:grid;gap:.5rem;margin:0;padding:0;list-style:none}.cedros-academy-admin .ca-checklist li{display:grid;gap:.125rem;border-left:3px solid var(--ca-admin-success);padding:.25rem 0 .25rem .625rem}.cedros-academy-admin .ca-checklist li[data-state=blocked]{border-left-color:var(--ca-admin-warning)}.cedros-academy-admin .ca-checklist span{color:var(--ca-admin-muted);font-size:.8125rem}.cedros-academy-admin .cedros-autosave-status{display:inline-flex;min-height:1.5rem;align-items:center;border:1px solid var(--ca-admin-border);border-radius:var(--ca-radius-pill);padding:.125rem .625rem;background:var(--ca-admin-muted-bg);color:var(--ca-admin-fg);font-size:.75rem}.cedros-academy-admin .cedros-autosave-status--failed,.cedros-academy-admin .cedros-autosave-status--conflict,.cedros-academy-admin .cedros-autosave-status--offline{background:color-mix(in srgb,var(--ca-admin-error) 12%,var(--ca-admin-bg));color:var(--ca-admin-fg)}.cedros-academy-admin .cedros-autosave-banner{display:flex;gap:.5rem;align-items:center;justify-content:space-between;border:1px solid var(--ca-admin-border);border-radius:var(--ca-admin-radius);padding:.75rem;margin-bottom:.75rem;background:var(--ca-admin-muted-bg)}.cedros-academy-admin .cedros-data-dialog__overlay{width:100%;height:100%;max-width:none;max-height:none;margin:0;border:0;color:inherit;position:fixed;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:1rem;background:#00000073;z-index:var(--z-modal, 1000)}.cedros-academy-admin .cedros-data-dialog{max-height:min(85dvh,44rem);overflow:hidden;display:grid;grid-template-rows:auto minmax(0,1fr) auto;gap:1rem;width:min(100%,420px);border:1px solid var(--ca-admin-border);border-radius:var(--ca-admin-dialog-radius);padding:1.25rem;background:var(--ca-admin-card-bg);box-shadow:0 10px 25px -4px color-mix(in srgb,var(--ca-admin-fg) 12%,transparent),0 4px 6px -1px color-mix(in srgb,var(--ca-admin-fg) 10%,transparent);animation:ca-admin-dialog-in var(--motion-duration-modal, .24s) var(--motion-ease-standard, cubic-bezier(.16, 1, .3, 1))}.cedros-academy-admin .cedros-data-dialog__heading{position:relative;display:grid;gap:.25rem;padding-right:2rem}.cedros-academy-admin .cedros-data-dialog__close{position:absolute;top:0;right:0;width:2rem;min-height:2rem;padding:0}.cedros-academy-admin .cedros-data-dialog__title{font-size:1.15rem;line-height:1.25;font-weight:600}.cedros-academy-admin .cedros-data-dialog__description{color:var(--ca-admin-muted);font-size:.8125rem}.cedros-academy-admin .cedros-data-dialog__body{min-height:0;overflow:auto;display:grid;gap:1rem;padding:2px}.cedros-academy-admin .ca-filtered-empty{position:sticky;inset-inline-start:.75rem;inline-size:calc(100cqw - 1.5rem);display:grid;justify-items:center;gap:.5rem;padding:1rem;color:var(--ca-admin-muted)}.cedros-academy-admin .ca-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.cedros-academy-admin .cedros-data-table-wrap:focus-visible{outline:2px solid var(--ca-admin-ring);outline-offset:2px}.cedros-academy-admin .ca-dialog-impact{display:grid;gap:.25rem;margin:0;padding-left:1rem;color:var(--ca-admin-muted);font-size:.8125rem}.cedros-academy-admin .ca-dialog-actions{display:flex;gap:.5rem;justify-content:flex-end;flex-wrap:wrap}.cedros-academy-admin.ca-dashboard-card{display:grid;gap:.75rem}.cedros-academy-admin .cedros-back-breadcrumb{width:fit-content;border:0;padding:0;background:transparent;color:var(--ca-admin-primary);cursor:pointer;font:inherit;font-size:.8125rem;font-weight:600}.cedros-academy-admin .ca-course-workspace,.cedros-academy-admin .ca-curriculum-sections,.cedros-academy-admin .ca-disclosure__body{display:grid;gap:1rem}.cedros-academy-admin .ca-course-editor-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,22rem),1fr));gap:1rem;align-items:start}.cedros-academy-admin .ca-curriculum-section{display:grid;gap:.75rem;border-top:1px solid var(--ca-admin-border);padding-top:1rem}.cedros-academy-admin .ca-curriculum-section:first-child{border-top:0;padding-top:0}.cedros-academy-admin .ca-lesson-editor{display:grid;gap:.75rem;border-top:1px solid var(--ca-admin-border);padding-top:.75rem}.cedros-academy-admin .ca-learner-preview{margin-top:1rem}.cedros-academy-admin .ca-submission-preview{min-width:18rem;max-width:36rem}.cedros-academy-admin .ca-submission-section,.cedros-academy-admin .ca-submission-lesson{display:grid;gap:.5rem}.cedros-academy-admin .ca-submission-lesson{border-top:1px solid var(--ca-admin-border);padding-top:.75rem}.cedros-academy-admin .ca-submission-lesson h5{margin:0}.cedros-academy-admin .ca-submission-lesson .ca-lesson-body{line-height:1.6;overflow-wrap:anywhere}.cedros-academy-admin .ca-preview-layout{display:grid;grid-template-columns:minmax(9rem,.35fr) minmax(0,1fr);gap:1rem}.cedros-academy-admin .ca-preview-nav{display:grid;align-content:start;gap:.25rem}.cedros-academy-admin .ca-preview-nav .ca-button{position:relative;justify-content:flex-start;padding-left:.75rem;text-align:left}.cedros-academy-admin .ca-preview-nav .ca-button:before{content:\"\";position:absolute;top:.3rem;bottom:.3rem;left:0;width:2px;border-radius:var(--ca-radius-pill);background:var(--ca-admin-primary);transform:scaleY(0);transition:transform var(--motion-duration-modal, .24s) var(--motion-ease-standard, cubic-bezier(.16, 1, .3, 1))}.cedros-academy-admin .ca-preview-nav [aria-current=page]{background:var(--ca-admin-muted-bg);color:var(--ca-admin-primary)}.cedros-academy-admin .ca-preview-nav [aria-current=page]:before{transform:scaleY(1)}.cedros-academy-admin .ca-preview-lesson{min-width:0;border-left:1px solid var(--ca-admin-border);padding-left:1rem}.cedros-academy-admin .ca-preview-lesson h4{margin:.25rem 0 1rem}.cedros-academy-admin .ca-preview-lesson .ca-lesson-body{line-height:1.65;overflow-wrap:anywhere}.cedros-academy-admin .ca-course-workspace-actions,.cedros-academy-admin .ca-lifecycle-actions,.cedros-academy-admin .ca-create-course__row{display:flex;gap:.75rem;align-items:end;flex-wrap:wrap}.cedros-academy-admin .ca-lifecycle-actions{align-items:flex-start}.cedros-academy-admin .ca-optional-review{padding:.5rem .75rem}.cedros-academy-admin .ca-create-course__row>.ca-field{flex:1 1 18rem}.cedros-academy-admin .ca-disclosure{border-top:1px solid var(--ca-admin-border);padding-top:.75rem}.cedros-academy-admin .ca-disclosure.ca-secondary-work{border:1px solid var(--ca-admin-border);border-radius:var(--ca-admin-radius);padding:.75rem 1rem;background:var(--ca-admin-card-bg);box-shadow:var(--ca-admin-shadow)}.cedros-academy-admin .ca-disclosure[open]>summary{margin-bottom:.75rem}.cedros-academy-admin details:not(.ca-policy-edit)>summary{display:flex;flex-wrap:wrap;align-items:center;gap:.25rem .5rem;min-height:2rem;list-style:none;cursor:pointer;color:var(--ca-admin-muted);font-size:.8125rem;font-weight:600;transition:color var(--motion-duration-fast, .16s) var(--motion-ease-standard, cubic-bezier(.16, 1, .3, 1))}.cedros-academy-admin details>summary::-webkit-details-marker{display:none}.cedros-academy-admin details:not(.ca-policy-edit)>summary:before{content:\"\";flex:none;width:1rem;height:1rem;background-color:currentColor;mask:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m9 18 6-6-6-6'/%3E%3C/svg%3E\") center / 1rem no-repeat;transition:transform var(--motion-duration-fast, .16s) var(--motion-ease-standard, cubic-bezier(.16, 1, .3, 1))}.cedros-academy-admin details[open]:not(.ca-policy-edit)>summary:before{transform:rotate(90deg)}.cedros-academy-admin details>summary:hover,.cedros-academy-admin details[open]>summary{color:var(--ca-admin-fg)}@keyframes ca-admin-dialog-in{0%{opacity:0;transform:scale(.98) translateY(8px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes ca-admin-shimmer{0%{background-position:120% 0}to{background-position:-120% 0}}@keyframes ca-shimmer{0%{background-position:120% 0}to{background-position:-120% 0}}@keyframes ca-spin{to{transform:rotate(360deg)}}.cedros-academy .ca-progress-mark{display:inline-grid;place-items:center;width:1rem;height:1rem;flex:none}.cedros-academy .ca-progress-mark>*{grid-area:1 / 1}.cedros-academy .ca-spinner{width:1rem;height:1rem;border:2px solid color-mix(in srgb,currentColor 30%,transparent);border-top-color:currentColor;border-radius:var(--ca-radius-pill);animation:ca-spin calc(var(--motion-duration-modal, .24s) * 3) linear infinite}.cedros-academy .ca-check{width:1rem;height:1rem}.cedros-academy-admin .ca-view-stack{display:grid;gap:1rem;min-width:0}.cedros-academy-admin .ca-view-stack>*{max-width:100%;min-width:0}@media(prefers-reduced-motion:reduce){.cedros-academy *,.cedros-academy *:before,.cedros-academy *:after,.cedros-academy-admin *,.cedros-academy-admin *:before,.cedros-academy-admin *:after,.cedros-academy-admin .ca-skeleton,.cedros-academy-admin .cedros-data-dialog{animation:none!important;transition:none!important}.cedros-academy-admin .ca-disclosure::details-content{transition:none!important}.cedros-academy .ca-player-lesson[aria-current=step]:before,.cedros-academy-admin .ca-preview-nav [aria-current=page]:before{transform:scaleY(1)}.cedros-academy .ca-check path{stroke-dashoffset:0}.cedros-academy-admin .ca-button:hover,.cedros-academy-admin .cedros-data-btn:hover,.cedros-academy .ca-course-card:hover{transform:none}}@media(max-width:767px){.cedros-academy .ca-public-head,.cedros-academy .ca-card-header,.cedros-academy-admin .ca-card-header,.cedros-academy-admin .cedros-data-card__header,.cedros-academy-admin .ca-dialog-actions{flex-wrap:wrap}.cedros-academy .ca-public-actions,.cedros-academy .ca-certificate-actions,.cedros-academy-admin .ca-row-actions,.cedros-academy-admin .ca-course-workspace-actions,.cedros-academy-admin .ca-lifecycle-actions{width:100%;justify-content:flex-start}.cedros-academy .ca-public-actions>.ca-button,.cedros-academy-admin .ca-course-workspace-actions>.ca-button,.cedros-academy-admin .ca-lifecycle-actions>.ca-button{flex:1 1 auto}.cedros-academy .ca-field input,.cedros-academy .ca-field textarea{font-size:16px}.cedros-academy-admin .ca-submission-preview{min-width:0;width:100%}.cedros-academy-admin .ca-grid,.cedros-academy-admin .ca-grid--two,.cedros-academy-admin .ca-grid--metrics,.cedros-academy-admin .cedros-data-summary-grid,.cedros-academy-admin .ca-course-editor-grid,.cedros-academy-admin .ca-preview-layout{grid-template-columns:1fr}.cedros-academy-admin .ca-preview-lesson{border-top:1px solid var(--ca-admin-border);border-left:0;padding-top:1rem;padding-left:0}.cedros-academy-admin .ca-page-header,.cedros-academy-admin .cedros-data-actions{align-items:stretch;justify-content:flex-start}.cedros-academy-admin .ca-button,.cedros-academy-admin .cedros-data-btn{min-height:2.75rem;max-width:100%;white-space:normal;text-align:center}.cedros-academy-admin .ca-table{min-width:42.5rem;font-size:.8125rem}}.cedros-academy-admin fieldset.ca-edit-fields{min-width:0;margin:0}.cedros-academy-admin fieldset.ca-ai-draft-fields,.cedros-academy-admin fieldset.ca-course-editor-grid,.cedros-academy-admin fieldset.ca-settings-column,.cedros-academy-admin fieldset.ca-create-course__row,.cedros-academy-admin fieldset.ca-grant-fields{padding:0;border:0}.cedros-academy-admin .ca-grant-fields{display:grid;gap:1rem;width:min(100%,var(--cd-container-settings, 45rem))}.cedros-academy-admin .ca-curriculum-editor .cedros-data-field{max-width:var(--cd-container-settings, 45rem)}.cedros-academy.ca-public{font-family:inherit}.cedros-academy.ca-public.ca-public-shell{gap:28px;padding-block:28px 48px}.cedros-academy.ca-public .ca-public-head{gap:14px;padding-block:12px}.cedros-academy.ca-public .ca-public-head h2{font-size:clamp(32px,4cqi,48px);line-height:1.12}.cedros-academy.ca-public .ca-public-head p{color:var(--ca5ss4b-runtime-muted, #667085);font-size:17px;margin:0;max-width:640px}.cedros-academy.ca-public .ca-card-grid{width:100%;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}.cedros-academy.ca-public .ca-course-card{display:flex;flex-direction:column;padding:28px;border-radius:var(--ca-radius-lg);gap:16px;margin:0}.cedros-academy.ca-public .ca-course-card h3{font-size:24px;line-height:1.25}.cedros-academy.ca-public .ca-course-card>p{font-size:15px;line-height:1.7;margin:0;color:var(--ca5ss4b-runtime-muted, #667085)}.cedros-academy.ca-public .ca-course-card .ca-card-header{margin:0;align-items:center}.cedros-academy.ca-public .ca-course-card .ca-public-actions{margin-top:auto;padding-top:8px}.cedros-academy.ca-public .ca-meta-list{gap:16px;grid-template-columns:repeat(2,minmax(0,1fr));margin:4px 0}.cedros-academy.ca-public .ca-meta-list div{border:0;border-top:1px solid var(--ca5ss4b-runtime-border, #d0d5dd);border-radius:var(--ca-radius-sm);padding:12px 0 0;gap:5px}.cedros-academy.ca-public .ca-meta-list dd{font-size:14px;text-transform:capitalize}.cedros-academy.ca-public .ca-lookup-form{padding:20px;gap:16px;border-radius:var(--ca-radius-lg)}.cedros-academy.ca-public .ca-lookup-form .ca-field{margin-bottom:0}.cedros-academy.ca-public .ca-field input,.cedros-academy.ca-public .ca-field select{min-height:46px;border-radius:var(--ca-radius-md);color:var(--ca5ss4b-runtime-text, #171717);background:var(--ca5ss4b-runtime-panel, #fff);border-color:var(--ca5ss4b-runtime-muted, #667085)}.cedros-academy.ca-public .ca-button{min-height:44px;padding:10px 18px;border-radius:var(--ca-radius-md)}.cedros-academy.ca-public .ca-course-primary,.cedros-academy.ca-public .ca-course-secondary{padding:24px;border-radius:var(--ca-radius-lg)}.cedros-academy.ca-public .ca-course-layout{gap:24px}.cedros-academy.ca-public .ca-lesson-body{font-size:17px;line-height:1.75;max-width:70ch}@media(max-width:680px){.cedros-academy.ca-public .ca-card-grid{grid-template-columns:1fr}.cedros-academy.ca-public .ca-course-card{padding:20px}.cedros-academy.ca-public.ca-public-shell{gap:20px;padding-block:20px 32px}}.cedros-academy.ca-public .ca-course-artwork{display:block;width:100%;height:auto;aspect-ratio:1;object-fit:contain;border-radius:var(--ca-radius-sm)}.cedros-academy.ca-public .ca-course-card{grid-template-columns:minmax(0,1fr)}.cedros-academy.ca-public .ca-course-card .ca-course-artwork{max-height:260px;background:var(--ca5ss4b-runtime-bg, #fff)}.cedros-academy.ca-public .ca-open-course{align-items:start;grid-template-columns:minmax(220px,300px) minmax(0,1fr);gap:24px}.cedros-academy.ca-public .ca-open-outline{display:grid;min-width:0;padding:16px;gap:24px;border-radius:var(--ca-radius-lg)}.cedros-academy.ca-public .ca-open-outline .ca-course-artwork{width:100%;max-width:220px;margin-inline:auto}.cedros-academy.ca-public .ca-open-outline .ca-player-nav{display:grid;gap:20px;border:0;padding:0}.cedros-academy.ca-public .ca-open-outline .ca-player-nav section{display:grid;gap:8px;min-width:0}.cedros-academy.ca-public .ca-open-outline h3{margin:0;padding:0 12px;color:var(--ca5ss4b-runtime-muted, #667085);font-size:12px;line-height:1.5;font-weight:500}.cedros-academy.ca-public .ca-open-outline .ca-player-nav ol{display:grid;gap:4px;margin:0;padding:0;list-style:none}.cedros-academy.ca-public .ca-open-course .ca-player-lesson{display:flex;align-items:center;gap:12px;min-height:44px;width:100%;padding:8px 12px;border:0;background:transparent;border-radius:var(--ca-radius-sm);color:inherit;font:inherit;font-size:14px;line-height:1.5;text-align:left}.cedros-academy.ca-public .ca-open-course .ca-player-lesson:hover{background:color-mix(in srgb,currentColor 5%,transparent)}.cedros-academy.ca-public .ca-open-course .ca-player-lesson[aria-current=step]{background:color-mix(in srgb,currentColor 8%,transparent);font-weight:600}.cedros-academy.ca-public .ca-open-course .ca-player-lesson:before{left:0;width:2px;background:currentColor}.cedros-academy.ca-public .ca-open-course .ca-open-lesson-number{flex:0 0 20px;color:var(--ca5ss4b-runtime-muted, #667085);font-size:12px;font-weight:400;font-variant-numeric:tabular-nums}.cedros-academy.ca-public .ca-open-course .ca-open-lesson-name{color:inherit;font-size:inherit;overflow-wrap:anywhere}.cedros-academy.ca-public .ca-open-course>.ca-card{margin:0}.cedros-academy.ca-public .ca-open-course .ca-lesson{min-width:0;padding:24px}.cedros-academy.ca-public .ca-open-course .ca-lesson>h3{font-size:24px;line-height:1.3}.cedros-academy.ca-public .ca-open-course .ca-lesson-body{font-size:15px;line-height:1.75;overflow-wrap:anywhere}@media(max-width:760px){.cedros-academy.ca-public .ca-open-course{grid-template-columns:minmax(0,1fr)}.cedros-academy.ca-public .ca-open-outline .ca-course-artwork{max-height:180px}.cedros-academy.ca-public .ca-open-course .ca-lesson{padding:16px}}.cedros-academy .ca-inline-stack,.cedros-academy-admin .ca-inline-stack{display:grid;gap:1rem;min-width:0;width:100%}.cedros-academy-admin span.ca-inline-stack{display:inline-flex;gap:.5rem;width:auto;align-items:center}.cedros-academy .ca-inline-stack>*,.cedros-academy-admin .ca-inline-stack>*{min-width:0;max-width:100%}.cedros-academy .ca-inline-stack>.ca-button,.cedros-academy-admin .ca-inline-stack>.ca-button{justify-self:start}.cedros-academy .ca-button:hover{background:var(--ca5ss4b-runtime-accent-soft, #f4f4f5)}.cedros-academy .ca-button-primary:hover{background:color-mix(in srgb,var(--ca5ss4b-runtime-action-bg, #18181b) 90%,var(--ca5ss4b-runtime-action-fg, #fff))}.cedros-academy .ca-button{transition:background-color var(--motion-duration-fast, .16s) ease}.cedros-academy .ca-field>span:first-child{color:var(--ca5ss4b-runtime-text, #171717);font-size:.875rem;font-weight:500}.cedros-academy .ca-field :is(input,select,textarea):disabled{opacity:.5;cursor:not-allowed}.cedros-academy .ca-field [aria-invalid=true]{border-color:var(--ca5ss4b-runtime-error, #b42318)}.cedros-academy .ca-player-lesson{min-height:44px}.cedros-academy .ca-player-lesson:disabled{opacity:.5;cursor:not-allowed}.cedros-academy .ca-lesson-body a{color:var(--ca5ss4b-runtime-accent, #2f6c7d);text-decoration:underline}.cedros-academy a:focus-visible,.cedros-academy summary:focus-visible{outline:2px solid var(--ca5ss4b-runtime-text, #171717);outline-offset:3px}.cedros-academy .ca-certificate-heading{flex-wrap:wrap}.cedros-academy .ca-card-header>*,.cedros-academy-admin .ca-card-header>*{min-width:0;overflow-wrap:anywhere}.cedros-academy .ca-meta-list div{border-radius:0}.cedros-academy-admin a:not(.ca-button){color:var(--cd-link, #2f6c7d);text-decoration:underline}.cedros-academy-admin .cedros-back-breadcrumb{color:var(--ca-admin-muted);font-weight:500}.cedros-academy-admin :is(a,summary,.cedros-back-breadcrumb):focus-visible{outline:2px solid var(--ca-admin-ring);outline-offset:3px}.cedros-academy-admin .cedros-data-input[aria-invalid=true],.cedros-academy-admin .cedros-data-select[aria-invalid=true],.cedros-academy-admin .cedros-data-textarea[aria-invalid=true]{border-color:color-mix(in srgb,var(--ca-admin-error) 55%,var(--ca-admin-border))}.cedros-academy-admin :is(.cedros-data-input,.cedros-data-select,.cedros-data-textarea):disabled{opacity:.5;cursor:not-allowed}.cedros-academy-admin .cedros-data-dialog__overlay::backdrop{background:transparent}.cedros-academy-admin .ca-table :is(th,td).ca-numeric{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.cedros-academy-admin .ca-table td:first-child{overflow-wrap:anywhere}.cedros-academy-admin .ca-table th,.cedros-academy-admin .ca-table .ca-button{white-space:nowrap}.cedros-academy-admin.ca-dashboard-card .ca-metric{border:0;padding:0;min-height:0;background:transparent;box-shadow:none}.cedros-academy-admin .ca-card .ca-metric{box-shadow:none}.cedros-academy-admin .ca-course-workspace-actions,.cedros-academy-admin .ca-create-course__row{align-items:center}.cedros-academy-admin .ca-create-course__row>.ca-field{margin-bottom:0}.cedros-academy-admin .ca-preview-nav .ca-button{white-space:normal;height:auto;line-height:1.45;padding-block:.5rem}.cedros-academy-admin .ca-row-menu{display:flex;justify-content:flex-end}.cedros-academy-admin .cedros-row-actions__trigger{width:2rem;padding:0}.cedros-academy-admin .cedros-dropdown-menu__content{position:fixed;inset:auto;margin:0;width:max-content;min-width:11rem;max-width:min(20rem,calc(100vw - 1rem));max-height:min(20rem,calc(100dvh - 1rem));overflow:auto;padding:.25rem;border:1px solid var(--ca-admin-border);border-radius:var(--ca-admin-radius);background:var(--ca-admin-card-bg);color:var(--ca-admin-fg);box-shadow:0 4px 6px -1px color-mix(in srgb,var(--ca-admin-fg) 10%,transparent),0 2px 4px -2px color-mix(in srgb,var(--ca-admin-fg) 8%,transparent);z-index:var(--z-dropdown, 50)}.cedros-academy-admin .cedros-dropdown-menu__item{display:block;width:100%;min-height:2rem;border:0;border-radius:calc(var(--cd-radius, 8px) - 4px);padding:0 .5rem;background:transparent;color:inherit;font:inherit;font-size:.8125rem;text-align:left;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cedros-academy-admin .cedros-dropdown-menu__item:hover,.cedros-academy-admin .cedros-dropdown-menu__item:focus-visible{outline:none;background:var(--ca-admin-accent)}.cedros-academy-admin .cedros-dropdown-menu__item--danger{color:var(--ca-admin-error)}.cedros-academy-admin .cedros-dropdown-menu__item[aria-disabled=true]{opacity:.5;cursor:not-allowed}.cedros-academy-admin .ca-feedback-item{padding:1rem 0;border-top:1px solid var(--ca-admin-border);overflow-wrap:anywhere}.cedros-academy-admin form{width:100%;max-width:var(--cd-container-settings, 45rem)}.cedros-academy-admin .cedros-data-empty-state__art{width:4.5rem;height:4.5rem;margin-bottom:.25rem;color:var(--ca-admin-muted);animation:ca-empty-art-in var(--motion-duration-standard, .22s) var(--motion-ease-standard, cubic-bezier(.16, 1, .3, 1)) both,ca-empty-art-float calc(var(--motion-duration-counter, .5s) * 10) ease-in-out var(--motion-duration-standard, .22s) infinite}@keyframes ca-empty-art-in{0%{opacity:0;transform:translateY(4px) scale(.92)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes ca-empty-art-float{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}.cedros-academy-admin .cedros-dropdown-menu__separator{height:1px;margin:.25rem -.25rem;background:var(--ca-admin-border)}.cedros-academy-admin .cedros-data-empty-state__art svg{display:block;width:100%;height:100%}.cedros-academy-admin .cedros-data-empty-state__art-accent{color:var(--cd-chart-5, var(--ca-admin-muted))}.cedros-academy .ca-card-grid>.ca-card{margin-top:0}.cedros-academy.ca-public-stack>.ca-button{min-height:44px}@container cedros-academy (max-width: 760px){.cedros-academy.ca-public .ca-card-grid,.cedros-academy.ca-public .ca-card-grid--compact,.cedros-academy.ca-public .ca-course-layout,.cedros-academy.ca-public .ca-player-layout,.cedros-academy.ca-public .ca-lookup-form,.cedros-academy.ca-public .ca-open-course{grid-template-columns:minmax(0,1fr)}.cedros-academy.ca-public .ca-lesson{border-left:0;border-top:1px solid var(--ca5ss4b-runtime-border, #d0d5dd);padding:16px 0 0}.cedros-academy.ca-public .ca-card-header{flex-wrap:wrap}.cedros-academy.ca-public .ca-public-actions{width:100%;justify-content:flex-start}.cedros-academy.ca-public .ca-public-actions>.ca-button{flex:1 1 auto}.cedros-academy.ca-public .ca-button{max-width:100%;white-space:normal;text-align:center}.cedros-academy.ca-public .ca-course-card{padding:20px}.cedros-academy.ca-public .ca-open-outline .ca-course-artwork{max-height:180px}.cedros-academy.ca-public .ca-open-course .ca-lesson{padding:16px}}.cedros-academy.ca-public .ca-skeleton--media{width:100%;height:auto;aspect-ratio:16 / 10;border-radius:var(--ca-radius-sm)}.cedros-academy.ca-public .ca-skeleton--field{width:100%;height:44px}.cedros-academy.ca-public .ca-loading-reader .ca-player-layout{min-height:20rem}.cedros-academy.ca-public .ca-loading-outline{display:grid;gap:16px;align-content:start}.cedros-academy.ca-public .ca-loading-form{width:min(100%,720px)}.cedros-academy.ca-public .ca-loading-reader .ca-inline-stack{align-content:start}@container cedros-academy (max-width: 680px){.cedros-academy.ca-public .ca-loading-outline{display:none}}.cedros-academy.ca-public .ca-catalog-search{border:0;padding:0;max-width:720px;align-items:end}.cedros-academy.ca-public .ca-catalog-search .ca-field{margin:0}.cedros-academy.ca-public .ca-search-context{margin:0;overflow-wrap:anywhere}.cedros-academy.ca-public .ca-course-detail-link{display:inline-flex;align-items:center;gap:8px;min-height:44px;color:var(--ca5ss4b-runtime-accent, #2f6c7d);font-weight:600;text-decoration:none}.cedros-academy.ca-public .ca-course-detail-link:is(:hover,:focus-visible){text-decoration:underline;text-underline-offset:3px}.cedros-academy.ca-public .ca-course-detail-link:focus-visible{outline:2px solid var(--ca5ss4b-runtime-text, #171717);outline-offset:3px;border-radius:var(--ca-radius-sm)}.cedros-academy.ca-public .ca-discovery-card{gap:12px;padding:20px}.cedros-academy.ca-public:is(.ca-discovery-surface,.ca-learning-surface) .ca-public-head{gap:8px;padding-block:0}.cedros-academy.ca-public:is(.ca-discovery-surface,.ca-learning-surface) .ca-public-head>.ca-kicker{display:none}.cedros-academy.ca-public:is(.ca-discovery-surface,.ca-learning-surface) .ca-public-head h2{font-size:clamp(28px,3cqi,36px)}.cedros-academy.ca-public .ca-discovery-card h3{font-size:21px}.cedros-academy.ca-public .ca-course-title-link{text-decoration:none}.cedros-academy.ca-public .ca-course-title-link:is(:hover,:focus-visible){text-decoration:underline;text-underline-offset:3px}.cedros-academy.ca-public .ca-course-title-link:focus-visible{outline:2px solid var(--ca5ss4b-runtime-text, #171717);outline-offset:3px}.cedros-academy.ca-public .ca-discovery-card>p.ca-muted{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.cedros-academy.ca-public .ca-course-artwork{aspect-ratio:16 / 10;object-fit:cover;height:auto;max-height:none}.cedros-academy.ca-public .ca-discovery-card .ca-course-artwork{aspect-ratio:16 / 10;max-height:none}.cedros-academy.ca-public .ca-discovery-card .ca-course-artwork--missing{background:var(--ca5ss4b-runtime-accent-soft, #edf4f5)}.cedros-academy.ca-public .ca-course-artwork--missing{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;color:var(--ca5ss4b-runtime-muted, #667085);background:var(--ca5ss4b-runtime-accent-soft, #edf4f5);font-size:14px;padding:20px}.cedros-academy.ca-public .ca-course-category{font-size:13px}.cedros-academy.ca-public .ca-course-summary{display:flex;flex-wrap:wrap;gap:8px 16px;font-size:13px;line-height:1.5;color:var(--ca5ss4b-runtime-muted, #667085)}.cedros-academy.ca-public .ca-course-summary>span:first-child{font-weight:600;color:var(--ca5ss4b-runtime-text, #171717)}@container cedros-academy (min-width: 1000px){.cedros-academy.ca-public .ca-card-grid:has(.ca-discovery-card){grid-template-columns:repeat(3,minmax(0,1fr))}}.cedros-academy.ca-public.ca-detail-surface .ca-public-head{padding-block:0;gap:12px}.cedros-academy.ca-public.ca-detail-surface .ca-public-head h2{font-size:clamp(28px,3cqi,36px);line-height:1.25}.cedros-academy.ca-public.ca-detail-surface .ca-description-preview>p,.cedros-academy.ca-public .ca-outline-long-title{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.cedros-academy.ca-public .ca-course-extent{margin:0;color:var(--ca5ss4b-runtime-muted, #667085);font-size:14px}.cedros-academy.ca-public .ca-course-overview{margin:0}.cedros-academy.ca-public .ca-course-primary{display:grid;gap:24px;padding:0;background:transparent}.cedros-academy.ca-public .ca-course-support{display:grid;grid-column:1;gap:24px;min-width:0}.cedros-academy.ca-public .ca-course-support:empty{display:none}.cedros-academy.ca-public .ca-course-support>.ca-course-artwork{max-height:240px;object-fit:contain;background:var(--ca5ss4b-runtime-accent-soft, #edf4f5)}.cedros-academy.ca-public .ca-course-outline h3{font-size:22px}.cedros-academy.ca-public .ca-course-outline .ca-curriculum{gap:24px}.cedros-academy.ca-public .ca-course-outline .ca-curriculum ol{margin:0;padding-left:24px}.cedros-academy.ca-public .ca-course-outline .ca-curriculum li{padding:12px 0 12px 8px;border-bottom:1px solid var(--ca5ss4b-runtime-border, #d0d5dd)}.cedros-academy.ca-public .ca-course-outline .ca-curriculum li::marker{color:var(--ca5ss4b-runtime-muted, #667085);font-size:13px;font-variant-numeric:tabular-nums}.cedros-academy.ca-public .ca-course-secondary{display:grid;grid-column:2;grid-row:1 / span 2;gap:16px;margin:0}.cedros-academy.ca-public .ca-course-secondary h3{font-size:20px;margin:0}.cedros-academy.ca-public .ca-course-secondary .ca-notice{margin:0}.cedros-academy.ca-public .ca-course-secondary .ca-button{width:100%}.cedros-academy.ca-public .ca-course-secondary .ca-enrollment-explanation{margin:0;line-height:1.6}.cedros-academy.ca-public .ca-course-secondary .ca-meta-list div{border-radius:0}.cedros-academy.ca-public .ca-learning-list,.cedros-academy.ca-public .ca-learning-group{display:grid;gap:16px}.cedros-academy.ca-public .ca-learning-list{gap:32px;max-width:56rem}.cedros-academy.ca-public.ca-learning-surface>.ca-notice{max-width:45rem}.cedros-academy.ca-public.ca-learning-surface>.ca-notice>.ca-button{justify-self:start}.cedros-academy.ca-public .ca-learning-group>h3{font-size:20px;margin:0}.cedros-academy.ca-public .ca-enrollment-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:24px;padding:20px 0;margin:0;align-items:center;border-top:1px solid var(--ca5ss4b-runtime-border, #d0d5dd)}.cedros-academy.ca-public .ca-enrollment-row:has(.ca-course-artwork){grid-template-columns:96px minmax(0,1fr) auto}.cedros-academy.ca-public .ca-enrollment-actions{margin:0}.cedros-academy.ca-public .ca-learning-browse{justify-self:start}.cedros-academy.ca-public .ca-learning-complete{margin:0}.cedros-academy.ca-public .ca-enrollment-row .ca-course-artwork{aspect-ratio:1}.cedros-academy.ca-public .ca-enrollment-row .ca-course-artwork--missing{padding:12px}.cedros-academy.ca-public .ca-enrollment-row .ca-course-artwork--missing span{display:none}.cedros-academy.ca-public .ca-enrollment-content{display:grid;gap:12px;min-width:0}.cedros-academy.ca-public .ca-enrollment-content .ca-card-header{margin:0}.cedros-academy.ca-public .ca-enrollment-content h3{font-size:20px;margin:0}.cedros-academy.ca-public .ca-enrollment-content .ca-progress{max-width:440px;margin:0}.cedros-academy.ca-public.ca-reading-surface{gap:16px;padding-top:16px}.cedros-academy.ca-public.ca-reading-surface .ca-public-head{gap:8px;padding-block:0;max-width:100%}.cedros-academy.ca-public.ca-reading-surface .ca-public-head h2{font-size:clamp(20px,2cqi,24px);line-height:1.35}.cedros-academy.ca-public.ca-reading-surface .ca-public-head p{font-size:15px}.cedros-academy.ca-public .ca-lesson-outline{min-width:0}.cedros-academy.ca-public .ca-lesson-outline>summary{cursor:pointer;font-weight:600;padding:12px 0;margin-bottom:12px}.cedros-academy.ca-public .ca-lesson-outline>summary:focus-visible{outline:2px solid var(--ca5ss4b-runtime-text, #171717);outline-offset:4px}.cedros-academy.ca-public .ca-player-layout{grid-template-columns:minmax(220px,280px) minmax(0,1fr);gap:24px}.cedros-academy.ca-public .ca-player>.ca-card-header h3{font-size:16px}.cedros-academy.ca-public .ca-player{padding:24px}.cedros-academy.ca-public .ca-lesson>h4{font-size:28px;line-height:1.3}.cedros-academy.ca-public .ca-player-lesson{border:0;border-radius:var(--ca-radius-sm);display:flex;align-items:start;gap:12px}.cedros-academy.ca-public .ca-lesson-number{flex:none;font-size:12px;line-height:1.75;font-variant-numeric:tabular-nums;color:var(--ca5ss4b-runtime-muted, #667085)}.cedros-academy.ca-public .ca-lesson-name{flex:1;min-width:0;overflow-wrap:anywhere}.cedros-academy.ca-public .ca-lesson-completion{flex:none;min-width:16px}.cedros-academy.ca-public .ca-button--quiet{border-color:transparent;background:transparent;color:var(--ca5ss4b-runtime-muted, #667085)}.cedros-academy.ca-public .ca-tool-summary{display:block;margin-top:4px;font-weight:400}.cedros-academy.ca-public .ca-verification-reference p{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px}.cedros-academy.ca-public.ca-submission-surface{max-width:45rem}.cedros-academy.ca-public.ca-submission-surface .ca-public-head{padding-block:0;gap:12px}.cedros-academy.ca-public.ca-submission-surface .ca-public-head h2{font-size:clamp(28px,3cqi,36px)}.cedros-academy.ca-public.ca-submission-surface .ca-card-grid{grid-template-columns:minmax(0,1fr)}.cedros-academy.ca-public .ca-player-nav{padding:0;border:0}.cedros-academy.ca-public .ca-outline-context{min-width:0}.cedros-academy.ca-public .ca-outline-context>.ca-progress{margin:0}.cedros-academy.ca-public .ca-lesson{min-width:0}.cedros-academy.ca-public .ca-lesson>.ca-lesson-body{max-width:60ch}.cedros-academy.ca-public .ca-player-nav h4{color:var(--ca5ss4b-runtime-muted, #667085);font-size:13px}.cedros-academy.ca-public .ca-open-outline{background:transparent;padding:0}.cedros-academy.ca-public .ca-lesson-body{overflow-wrap:anywhere}.cedros-academy.ca-public.ca-verification-surface{width:min(100%,720px)}.cedros-academy.ca-public .ca-verification-result{padding:24px}.cedros-academy.ca-public .ca-verification-heading{display:flex;align-items:center;gap:12px}.cedros-academy.ca-public .ca-verification-heading>svg{flex:none}.cedros-academy.ca-public .ca-verification-result .ca-verified-course{font-size:22px;font-weight:600;line-height:1.4}.cedros-academy.ca-public .ca-verification-result p{overflow-wrap:anywhere}.cedros-academy.ca-public.ca-profile-surface{width:min(100%,760px)}.cedros-academy.ca-public.ca-profile-surface .ca-public-head p{white-space:pre-wrap}.cedros-academy.ca-public .ca-submission-form{width:min(100%,720px);padding:24px}.cedros-academy.ca-public .ca-submission-form h3{margin:0;font-size:20px}.cedros-academy.ca-public .ca-submission-form h3:not(:first-child){padding-top:16px;border-top:1px solid var(--ca5ss4b-runtime-border, #d0d5dd)}.cedros-academy.ca-public .ca-submission-form p{margin:0}.cedros-academy.ca-public .ca-submission-form .ca-button{justify-self:start}.cedros-academy.ca-public .ca-submission-history{display:grid;gap:16px}.cedros-academy.ca-public .ca-submission-history>h3{font-size:20px;margin:0}.cedros-academy.ca-public .ca-new-submission{width:min(100%,720px)}.cedros-academy.ca-public .ca-new-submission>.ca-submission-form{border:0;margin:0}.cedros-academy-admin .ca-overview-inventory{max-width:45rem;margin-top:1rem}.cedros-academy-admin .ca-overview-inventory .ca-metric{border:0;border-radius:0;padding:.75rem 0;background:transparent;box-shadow:none}.cedros-academy-admin .ca-review-quiet{margin:0}.cedros-academy-admin .ca-courses-table{table-layout:fixed}.cedros-academy-admin .ca-courses-table :is(th,td):first-child{width:40%}.cedros-academy-admin .ca-courses-table :is(th,td):nth-child(2){width:16%}.cedros-academy-admin .ca-courses-table :is(th,td):nth-child(3){width:16%}.cedros-academy-admin .ca-course-description{max-width:40ch;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.cedros-academy-admin .ca-create-course,.cedros-academy-admin .ca-profile-editor,.cedros-academy-admin .ca-drafting-surface{max-width:var(--cd-container-settings, 45rem)}.cedros-academy-admin .ca-course-editor-grid{grid-template-columns:minmax(0,.85fr) minmax(0,1.4fr)}@container cedros-academy-admin (min-width: 761px){.cedros-academy-admin .ca-course-editor-grid>.ca-curriculum-editor{grid-column:2;grid-row:1}.cedros-academy-admin .ca-course-editor-grid>.ca-course-details{grid-column:1;grid-row:1}}.cedros-academy-admin .ca-readiness-summary{border-bottom:1px solid var(--ca-admin-border);padding-bottom:1rem}.cedros-academy-admin .ca-readiness-summary .ca-card-header{margin-bottom:.5rem}.cedros-academy-admin details.ca-readiness-evidence>summary{font-weight:400}.cedros-academy-admin .ca-readiness-evidence .ca-checklist{margin-top:.75rem}.cedros-academy-admin .ca-course-workspace-actions{position:sticky;top:0;z-index:var(--z-dropdown, 50);margin:0;padding:.5rem 0;align-items:center;background:var(--ca-admin-bg);border-bottom:1px solid var(--ca-admin-border)}.cedros-academy-admin .ca-course-open{display:flex;align-items:center;gap:.5rem;min-height:2rem;width:100%;padding:0;border:0;background:transparent;color:var(--ca-admin-fg);font:inherit;font-weight:600;text-align:left;cursor:pointer}.cedros-academy-admin .ca-course-open>span{min-width:0;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.cedros-academy-admin .ca-course-open>svg{flex:none;color:var(--ca-admin-muted)}.cedros-academy-admin .ca-course-open:is(:hover,:focus-visible)>span{text-decoration:underline}.cedros-academy-admin .ca-course-open:focus-visible{outline:2px solid var(--ca-admin-ring);outline-offset:2px;border-radius:var(--ca-radius-sm);box-shadow:0 0 0 3px color-mix(in srgb,var(--ca-admin-ring) 14%,transparent)}.cedros-academy-admin .ca-cover-preview{display:flex;align-items:center;gap:.75rem;margin:0}.cedros-academy-admin .ca-cover-preview .ca-course-artwork{flex:none;display:block;width:6rem;height:4rem;object-fit:cover;border:1px solid var(--ca-admin-border);border-radius:var(--ca-radius-sm);background:var(--ca-admin-muted-bg)}.cedros-academy-admin .ca-cover-preview .ca-course-artwork--missing{display:flex;align-items:center;justify-content:center;color:var(--ca-admin-muted)}.cedros-academy-admin .ca-cover-preview .ca-course-artwork--missing svg{width:20px;height:20px}.cedros-academy-admin .ca-cover-preview .ca-course-artwork--missing span{display:none}.cedros-academy-admin .ca-cover-preview figcaption{min-width:0;line-height:1.5}.cedros-academy-admin .ca-announcement-receipt,.cedros-academy-admin .ca-feedback--empty{border-top:1px solid var(--ca-admin-border);padding-top:1rem}.cedros-academy-admin .ca-announcement-receipt .ca-card-header,.cedros-academy-admin .ca-feedback--empty .ca-card-header{align-items:center;margin-bottom:.25rem}.cedros-academy-admin .ca-announcement-receipt h3,.cedros-academy-admin .ca-feedback--empty h3{margin:0;font-size:.875rem;font-weight:600}.cedros-academy-admin .ca-announcement-receipt p{margin:0}.cedros-academy-admin .ca-course-workspace-actions>[role=status]{margin-right:auto}.cedros-academy-admin .ca-access-filters{grid-template-columns:minmax(10rem,16rem) minmax(0,18rem);margin-bottom:.75rem}.cedros-academy-admin .ca-draft-result{border-top:1px solid var(--ca-admin-border);margin-top:1rem;padding-top:1rem;max-width:60ch}.cedros-academy-admin .ca-course-filters{display:flex;flex-wrap:wrap;justify-content:flex-start;gap:.75rem;align-items:center}.cedros-academy-admin .ca-course-filters>.ca-field{width:min(100%,18rem);margin:0}.cedros-academy-admin .ca-course-filters>.ca-field:last-child{width:min(100%,14rem)}.cedros-academy-admin .ca-toolbar-field{position:relative}.cedros-academy-admin .ca-toolbar-field>svg{position:absolute;top:.625rem;left:.75rem;width:1rem;height:1rem;color:var(--ca-admin-muted);pointer-events:none}.cedros-academy-admin .ca-toolbar-field>input{padding-left:2.25rem}.cedros-academy-admin .ca-toolbar-field>input[type=search]{padding-right:2.5rem}.cedros-academy-admin .ca-toolbar-field>input[type=search]::-webkit-search-cancel-button{-webkit-appearance:none;-moz-appearance:none;appearance:none}.cedros-academy-admin .ca-search-clear{position:absolute;top:.125rem;right:.125rem;width:2rem;padding:0}.cedros-academy-admin .ca-access-filters>.ca-field{margin-bottom:0}.cedros-academy-admin .ca-access-summary>summary .ca-muted{flex-basis:100%;padding-left:1.5rem;line-height:1.5;font-weight:400}.cedros-academy-admin details.ca-lesson-edit-disclosure>summary{flex-wrap:nowrap;padding-block:.25rem}.cedros-academy-admin .ca-lesson-edit-disclosure>summary>span:first-of-type{flex:1;min-width:0;overflow-wrap:anywhere}.cedros-academy-admin .ca-lesson-edit-disclosure>summary>.ca-muted{flex:none;font-weight:400;font-size:.75rem}.cedros-academy-admin .ca-lesson-edit-fields{padding-top:.75rem}.cedros-academy-admin .ca-lesson-editor{gap:.25rem}.cedros-academy-admin .ca-lesson-editor>.ca-card-header{margin-bottom:0;align-items:center}.cedros-academy-admin .ca-lesson-edit-fields textarea{min-height:12rem}.cedros-academy-admin .ca-instructor-bio-preview{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}.cedros-academy-admin .ca-outcome-summary{max-width:var(--cd-container-settings, 45rem)}.cedros-academy-admin .ca-outcome-summary .ca-metric{border:0;box-shadow:none;padding:.75rem 0;background:transparent}@container cedros-academy (max-width: 680px){.cedros-academy.ca-public .ca-course-layout,.cedros-academy.ca-public .ca-player-layout,.cedros-academy.ca-public .ca-open-course{grid-template-columns:minmax(0,1fr)}.cedros-academy.ca-public .ca-course-secondary{grid-column:1;grid-row:2;padding:20px}.cedros-academy.ca-public .ca-course-support{grid-row:3}.cedros-academy.ca-public .ca-course-secondary .ca-meta-list{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.cedros-academy.ca-public .ca-enrollment-row{grid-template-columns:minmax(0,1fr);padding:16px 0;gap:16px;align-items:start}.cedros-academy.ca-public .ca-enrollment-row:has(.ca-course-artwork){grid-template-columns:64px minmax(0,1fr)}.cedros-academy.ca-public .ca-enrollment-actions{grid-column:1 / -1;width:100%}.cedros-academy.ca-public .ca-enrollment-row .ca-course-artwork--missing span{display:none}.cedros-academy.ca-public .ca-enrollment-row .ca-course-artwork--missing{padding:12px}.cedros-academy.ca-public .ca-enrollment-content .ca-public-actions{width:auto}.cedros-academy.ca-public .ca-player{padding:16px}.cedros-academy.ca-public .ca-submission-form{padding:20px}.cedros-academy.ca-public .ca-submission-form .ca-button{justify-self:stretch}}@container cedros-academy-admin (max-width: 760px){.cedros-academy-admin .ca-notice{grid-template-columns:1rem minmax(0,1fr)}.cedros-academy-admin .ca-notice .cedros-data-status__actions{grid-column:2;justify-self:start}.cedros-academy-admin .ca-course-open{min-height:2.75rem}}@media(max-width:760px){.cedros-academy-admin .ca-course-editor-grid,.cedros-academy-admin .ca-access-filters{grid-template-columns:minmax(0,1fr)}}.cedros-academy.ca-public .ca-discovery-card h3,.cedros-academy.ca-public .ca-enrollment-content h3,.cedros-academy.ca-public .ca-long-identity{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden}.cedros-academy.ca-public .ca-long-identity{-webkit-line-clamp:4}.cedros-academy.ca-public .ca-full-copy{margin-block:8px;color:var(--ca5ss4b-runtime-muted, #667085)}.cedros-academy.ca-public .ca-full-copy summary{cursor:pointer;min-height:44px;display:flex;align-items:center;font-size:14px}.cedros-academy.ca-public .ca-full-copy p{overflow-wrap:anywhere;max-width:72ch}.cedros-academy-admin :is(.cedros-data-input,.cedros-data-select){height:2.25rem}.cedros-academy-admin .ca-table tbody tr:hover{background:color-mix(in srgb,var(--ca-admin-accent) 52%,transparent)}.cedros-academy-admin .ca-table a:not(.ca-button){color:var(--ca-admin-fg);text-decoration:none}.cedros-academy-admin .ca-table a:not(.ca-button):is(:hover,:focus-visible){text-decoration:underline}.cedros-academy-admin .cedros-data-pagination{justify-content:space-between;font-variant-numeric:tabular-nums}.cedros-academy-admin .cedros-data-pagination .cedros-data-actions{margin-left:auto}.cedros-academy-admin .cedros-data-empty-state p{max-width:38ch}.cedros-academy-admin .ca-profile-editor .ca-edit-fields{display:grid;gap:.75rem}.cedros-academy-admin .ca-profile-editor .ca-field{margin-bottom:0}.cedros-academy-admin .ca-ai-draft-fields{display:grid;gap:.75rem}.cedros-academy-admin .ca-ai-draft-fields .ca-field{margin-bottom:0}.cedros-academy-admin .ca-ai-draft-fields>.ca-button{justify-self:start}.cedros-academy-admin.ca-settings-surface,.cedros-academy-admin.ca-instructors-surface,.cedros-academy-admin.ca-overview-surface{max-width:var(--cd-container-settings, 45rem)}.cedros-academy-admin .ca-contribution-list{display:grid;gap:1rem}.cedros-academy-admin .ca-contribution{padding-top:1rem;border-top:1px solid var(--ca-admin-border)}.cedros-academy-admin .ca-contribution>h4{font-size:.875rem;margin-bottom:.25rem}.cedros-academy-admin .ca-contribution>p{margin-bottom:.75rem}.cedros-academy-admin .ca-submission-preview{max-width:var(--cd-container-settings, 45rem)}.cedros-academy-admin .ca-contribution-decision{display:grid;gap:.75rem;border-top:1px solid var(--ca-admin-border);padding-top:1rem}.cedros-academy-admin .ca-contribution-decision .ca-field{margin:0}.cedros-academy-admin .ca-reply-editor{max-width:var(--cd-container-settings, 45rem)}.cedros-academy-admin .ca-confirmed-reply{margin-block:.75rem;padding-left:1rem;border-left:2px solid var(--ca-admin-border)}.cedros-academy-admin .ca-policy-edit>summary{display:flex;align-items:center;justify-content:space-between;gap:1rem;min-height:2rem;cursor:pointer;font-weight:600}.cedros-academy-admin .ca-policy-edit>summary .ca-muted{font-weight:400}.cedros-academy-admin .ca-policy-edit__body{padding-top:.75rem;max-width:18rem}.cedros-academy-admin .ca-form-switch{display:flex;justify-content:space-between;gap:.75rem;align-items:center;padding-block:.55rem}.cedros-academy-admin .ca-form-switch__copy{display:grid;gap:.25rem;min-width:0;max-width:60ch}.cedros-academy-admin .ca-form-switch__copy .cedros-data-field__description{line-height:1.5}.cedros-academy-admin .ca-form-switch input{-webkit-appearance:none;-moz-appearance:none;appearance:none;position:relative;flex:none;margin:0;width:2.35rem;height:1.3rem;border:1px solid var(--ca-admin-border);border-radius:var(--ca-radius-pill);background:var(--ca-admin-muted-bg);cursor:pointer;transition:background-color var(--motion-duration-fast, .16s) var(--motion-ease-standard, cubic-bezier(.16, 1, .3, 1)),border-color var(--motion-duration-fast, .16s) var(--motion-ease-standard, cubic-bezier(.16, 1, .3, 1))}.cedros-academy-admin .ca-form-switch input:before{content:\"\";position:absolute;top:1px;left:1px;width:1.1rem;height:1.1rem;box-sizing:border-box;border:1px solid var(--ca-admin-border);border-radius:var(--ca-radius-pill);background:var(--ca-admin-card-bg);box-shadow:var(--ca-admin-shadow);transition:transform var(--motion-duration-fast, .16s) var(--motion-ease-standard, cubic-bezier(.16, 1, .3, 1))}.cedros-academy-admin .ca-form-switch input:checked{background:var(--ca-admin-primary);border-color:var(--ca-admin-primary)}.cedros-academy-admin .ca-form-switch input:checked:before{border-color:transparent;transform:translate(1.02rem)}.cedros-academy-admin .ca-form-switch input:focus-visible{outline:2px solid var(--ca-admin-ring);outline-offset:3px}.cedros-academy-admin .ca-form-switch input:disabled{opacity:.5;cursor:not-allowed}@media(forced-colors:active){.cedros-academy-admin .ca-form-switch input{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto;width:1.3rem}.cedros-academy-admin .ca-form-switch input:before{content:none}}.cedros-academy-admin .cedros-dropdown-menu__content:popover-open{animation:ca-menu-in calc(var(--motion-duration-fast, .16s) * 1.125) var(--motion-ease-standard, cubic-bezier(.16, 1, .3, 1))}@keyframes ca-menu-in{0%{opacity:0;transform:scale(.97) translateY(-4px)}to{opacity:1;transform:scale(1) translateY(0)}}@container cedros-academy-admin (max-width: 760px){.cedros-academy-admin .ca-course-editor-grid,.cedros-academy-admin .ca-access-filters,.cedros-academy-admin .ca-preview-layout{grid-template-columns:minmax(0,1fr)}.cedros-academy-admin .ca-card-header{flex-wrap:wrap}.cedros-academy-admin .ca-preview-lesson{border-left:0;border-top:1px solid var(--ca-admin-border);padding:1rem 0 0}}.cedros-academy .ca-button:not(:disabled):active{background:color-mix(in srgb,var(--ca5ss4b-runtime-text, #171717) 12%,var(--ca5ss4b-runtime-panel, #fff))}.cedros-academy .ca-button-primary:not(:disabled):active{background:color-mix(in srgb,var(--ca5ss4b-runtime-action-bg, #18181b) 80%,var(--ca5ss4b-runtime-action-fg, #fff))}.cedros-academy .ca-button:disabled:hover{background:var(--ca5ss4b-runtime-panel, #fff)}.cedros-academy .ca-button-primary:disabled:hover{background:var(--ca5ss4b-runtime-action-bg, #18181b)}.cedros-academy .ca-button[aria-pressed=true]{border-color:var(--ca5ss4b-runtime-action-bg, #18181b);background:var(--ca5ss4b-runtime-accent-soft, #f4f4f5)}@media(max-width:767px){.cedros-academy-admin .cedros-data-row-actions .cedros-data-btn{min-height:2.75rem}.cedros-academy-admin :is(.cedros-data-input,.cedros-data-select){height:2.75rem;min-height:2.75rem}.cedros-academy-admin .ca-toolbar-field>svg{top:.875rem}.cedros-academy-admin .ca-search-clear{top:0;right:0;width:2.75rem}.cedros-academy-admin .cedros-row-actions__trigger,.cedros-academy-admin .cedros-data-dialog__close{width:2.75rem;min-height:2.75rem}.cedros-academy-admin .cedros-data-dialog__heading{padding-right:3.25rem}.cedros-academy-admin .cedros-dropdown-menu__item,.cedros-academy-admin .cedros-back-breadcrumb,.cedros-academy-admin details>summary,.cedros-academy-admin details:not(.ca-policy-edit)>summary,.cedros-academy-admin .ca-form-switch{min-height:2.75rem}}.cedros-academy-admin .ca-icon-button{width:2rem;padding:0}.cedros-academy-admin .ca-icon-button>svg,.cedros-academy-admin .cedros-row-actions__trigger>svg{flex:none}.cedros-academy-admin .ca-add-lesson{justify-self:start}.cedros-academy-admin .cedros-data-setup-notice{display:grid;gap:.75rem;border:1px solid var(--ca-admin-border);border-radius:var(--ca-admin-radius);padding:1rem;background:var(--ca-admin-card-bg);box-shadow:var(--ca-admin-shadow)}.cedros-academy-admin .cedros-data-setup-notice__body{display:grid;gap:.25rem;max-width:60ch}.cedros-academy-admin .cedros-data-setup-notice__body :is(h3,strong){font-size:.875rem;font-weight:600}.cedros-academy-admin .cedros-data-setup-notice .cedros-data-actions{justify-content:flex-start}.cedros-academy-admin code{border:1px solid var(--ca-admin-border);border-radius:4px;padding:0 .3em;background:var(--ca-admin-muted-bg);color:var(--ca-admin-fg);font-family:var(--cd-font-mono, ui-monospace, SFMono-Regular, Menlo, monospace);font-size:.75rem;overflow-wrap:anywhere;justify-self:start}.cedros-academy-admin .cedros-data-table-summary{display:grid;gap:.125rem;min-width:0}.cedros-academy-admin .ca-table .ca-row-end{width:1%;text-align:right;white-space:nowrap}.cedros-academy-admin .ca-instructors-table{min-width:30rem}@media(max-width:767px){.cedros-academy-admin .ca-icon-button{width:2.75rem}}.cedros-academy details>summary{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;list-style:none;cursor:pointer}.cedros-academy details>summary::-webkit-details-marker{display:none}.cedros-academy details>summary:before{content:\"\";flex:none;width:16px;height:16px;background-color:currentColor;mask:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m9 18 6-6-6-6'/%3E%3C/svg%3E\") center / 16px no-repeat;transition:transform var(--motion-duration-fast, .16s) var(--motion-ease-standard, cubic-bezier(.16, 1, .3, 1))}.cedros-academy details[open]>summary:before{transform:rotate(90deg)}.cedros-academy .ca-disclosure>summary .ca-tool-summary{flex-basis:100%;margin:0;padding-left:24px}.cedros-academy.ca-public .ca-learning-tools{gap:0}.cedros-academy.ca-public .ca-learning-tools>.ca-disclosure{border:0;border-top:1px solid var(--ca5ss4b-runtime-border, #d0d5dd);border-radius:0;background:transparent;overflow:visible}.cedros-academy.ca-public .ca-learning-tools>.ca-disclosure>summary{padding:16px 0;min-height:44px}.cedros-academy.ca-public .ca-learning-tools>.ca-disclosure>.ca-disclosure__body{padding:0 0 20px}`;\nexport {\n  a as default\n};\n","imports":[],"hasUnsupportedDynamicImports":false},{"path":"workspace/react/dist/web/blocks.js","kind":"module","text":"var G = Object.defineProperty;\nvar J = (r, t, n) => t in r ? G(r, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : r[t] = n;\nvar A = (r, t, n) => J(r, typeof t != \"symbol\" ? t + \"\" : t, n);\nimport { jsx as e, jsxs as o, Fragment as U } from \"react/jsx-runtime\";\nimport { useState as m, useRef as H, useEffect as V, useMemo as K, useCallback as X, useId as Z } from \"react\";\nimport { useFormValidation as _ } from \"../shared/formValidation.js\";\nimport { readAcademyResponse as ee } from \"../shared/response.js\";\nimport { Status as te } from \"../shared/ui.js\";\nimport { ensureAcademyStyles as re } from \"../shared/styles.js\";\nimport { courseSlugFromSearch as z } from \"../shared/links.js\";\nimport { hasOpenLessons as D } from \"../shared/courseAccess.js\";\nimport { OpenCourseView as ne } from \"./openCourse.js\";\nimport { PlayerView as ie } from \"./learnerPlayer.js\";\nimport { publicSetupCopy as ce, coursePayReadiness as j, isPaidCourse as F, publicErrorCopy as ae } from \"./publicState.js\";\nimport { PublicShell as v, Notice as L, PublicStateBlock as k, PublicStack as x, EnrollmentGrid as oe, PublicPageControls as Y, CourseGrid as Q, CourseMeta as se, InstructorList as le, ProgressMark as ue } from \"./publicUi.js\";\nimport { CourseArtwork as de } from \"../shared/courseArtwork.js\";\nimport { CertificateCredential as he } from \"./certificateCredential.js\";\nimport { formatCertificateDate as me } from \"./certificateState.js\";\nfunction qe(r) {\n  var p, R, S, E, T, N;\n  const [n, i] = m(we), [a, s] = m(\"\"), [c, l] = m(\"\"), [u, b] = m(0), f = H(null), w = $(r), d = P(\n    () => w.get(`/public/v1/catalog?limit=${c ? 100 : 12}&offset=${c ? 0 : u}${c ? `&q=${encodeURIComponent(c)}` : \"\"}`, !1).then((h) => ({ ...h, searchQuery: c })),\n    [w, u, c]\n  );\n  V(() => {\n    if (typeof window > \"u\") return;\n    const h = () => {\n      const M = z(window.location.search);\n      i(M);\n    };\n    return window.addEventListener(\"popstate\", h), () => window.removeEventListener(\"popstate\", h);\n  }, []);\n  function y(h) {\n    const M = (h == null ? void 0 : h.slug) || (h == null ? void 0 : h.courseId) || \"\";\n    if (i(M), typeof window > \"u\") return;\n    const I = new URL(window.location.href);\n    I.searchParams.delete(\"lesson\"), M ? I.searchParams.set(\"course\", M) : I.searchParams.delete(\"course\"), window.history.pushState(null, \"\", `${I.pathname}${I.search}${I.hash}`);\n  }\n  function C() {\n    var h;\n    s(\"\"), b(0), l(\"\"), (h = f.current) == null || h.focus();\n  }\n  const g = !d.loading && !d.error && u === 0 && ((p = d.data) == null ? void 0 : p.searchQuery) === \"\" && d.data.courses.length === 0 && !d.data.hasMore;\n  return n ? /* @__PURE__ */ o(x, { children: [\n    /* @__PURE__ */ e(\"button\", { className: \"ca-button\", type: \"button\", onClick: () => y(null), children: \"Back to catalog\" }),\n    /* @__PURE__ */ e(fe, { ...r, courseSlug: n })\n  ] }) : /* @__PURE__ */ o(v, { title: \"Course catalog\", eyebrow: \"Learn\", description: \"Find your next course and start learning.\", className: \"ca-discovery-surface\", children: [\n    !g || c ? /* @__PURE__ */ o(\"form\", { className: \"ca-catalog-search ca-lookup-form\", onSubmit: (h) => {\n      h.preventDefault(), b(0), l(a.trim());\n    }, children: [\n      /* @__PURE__ */ o(\"label\", { className: \"ca-field\", children: [\n        /* @__PURE__ */ e(\"span\", { children: \"Search courses\" }),\n        /* @__PURE__ */ e(\"input\", { ref: f, type: \"search\", maxLength: 200, value: a, onChange: (h) => s(h.target.value) })\n      ] }),\n      /* @__PURE__ */ o(\"div\", { className: \"ca-public-actions\", children: [\n        /* @__PURE__ */ e(\"button\", { className: \"ca-button\", type: \"submit\", children: \"Search\" }),\n        c ? /* @__PURE__ */ e(\"button\", { className: \"ca-button ca-button--quiet\", type: \"button\", onClick: C, children: \"Clear search\" }) : null\n      ] })\n    ] }) : null,\n    !d.loading && !d.error && ((R = d.data) == null ? void 0 : R.searchQuery) === c && c ? /* @__PURE__ */ o(\"p\", { className: \"ca-muted ca-search-context\", role: \"status\", children: [\n      d.data.courses.length.toLocaleString(),\n      d.data.truncated ? \"+\" : \"\",\n      \" \",\n      d.data.courses.length === 1 ? \"course\" : \"courses\",\n      \" for \",\n      /* @__PURE__ */ o(\"strong\", { children: [\n        \"“\",\n        c,\n        \"”\"\n      ] })\n    ] }) : null,\n    /* @__PURE__ */ e(\n      k,\n      {\n        state: d,\n        empty: u === 0 && ((S = d.data) == null ? void 0 : S.courses.length) === 0 && !((E = d.data) != null && E.hasMore),\n        emptyTitle: ((T = d.data) == null ? void 0 : T.catalogEnabled) === !1 ? \"The public catalog is turned off\" : c ? \"No courses match your search\" : \"No courses are published yet\",\n        emptyMessage: c ? \"Try a different title or learning outcome, or clear your search.\" : ((N = d.data) == null ? void 0 : N.catalogEnabled) === !1 ? \"The site team has paused public course discovery. Existing learners can continue in My Learning.\" : \"New courses will appear here when the site team publishes them. Already enrolled? Continue in My Learning.\",\n        emptyAction: c ? void 0 : { href: \"/academy/dashboard\", label: \"Open My Learning\" },\n        children: (h) => /* @__PURE__ */ o(\"div\", { className: \"ca-inline-stack\", children: [\n          h.truncated ? /* @__PURE__ */ e(L, { copy: { tone: \"warning\", title: \"Refine this catalog view\", message: \"More matching courses exist than this bounded view can show. Search with a more specific title or learning outcome.\" } }) : null,\n          /* @__PURE__ */ e(Q, { courses: h.courses, onSelect: y }),\n          c ? null : /* @__PURE__ */ e(Y, { hasMore: !!h.hasMore, label: \"Catalog\", offset: u, pageSize: 12, onChange: b })\n        ] })\n      }\n    )\n  ] });\n}\nfunction Oe(r) {\n  var i, a;\n  const t = $(r), n = P(() => t.get(\"/public/v1/catalog?limit=3&offset=0\", !1), [t]);\n  return /* @__PURE__ */ e(v, { title: \"Course highlights\", eyebrow: \"Current learning\", description: \"Explore a selection of current courses.\", className: \"ca-discovery-surface\", children: /* @__PURE__ */ e(k, { state: n, empty: ((i = n.data) == null ? void 0 : i.courses.length) === 0, emptyTitle: ((a = n.data) == null ? void 0 : a.catalogEnabled) === !1 ? \"The public catalog is turned off\" : \"Course highlights are not available\", children: (s) => /* @__PURE__ */ e(Q, { courses: s.courses.slice(0, 3), compact: !0 }) }) });\n}\nfunction fe(r) {\n  var a, s, c;\n  const t = $(r), n = String(r.courseSlug ?? B(r).courseSlug ?? r.courseId ?? \"\"), i = P(\n    () => n ? t.get(`/public/v1/courses/${encodeURIComponent(n)}`, !1) : Promise.reject(new Error(\"Course slug is required.\")),\n    [t, n]\n  );\n  return n ? /* @__PURE__ */ e(v, { title: ((a = i.data) == null ? void 0 : a.course.title) ?? \"Course details\", eyebrow: ((s = i.data) == null ? void 0 : s.course.category) || \"Learn\", description: ((c = i.data) == null ? void 0 : c.course.description) ?? \"Explore the course and its lessons.\", descriptionDisclosure: !!(i.data && D(i.data.course)), className: i.data && D(i.data.course) ? \"ca-reading-surface\" : \"ca-detail-surface\", children: /* @__PURE__ */ e(k, { state: i, loadingLayout: \"detail\", loadingTitle: \"Loading course details\", children: (l) => /* @__PURE__ */ e(pe, { api: t, detail: l }) }) }) : /* @__PURE__ */ e(v, { title: \"Course details\", eyebrow: \"Setup required\", description: \"This course block needs a published course slug or course id before it can render.\", children: /* @__PURE__ */ e(L, { copy: ce(\"course\") }) });\n}\nfunction Ve(r) {\n  const t = B(r), n = String(t.displayName ?? \"Academy instructor\"), i = String(t.bio ?? \"\");\n  return /* @__PURE__ */ e(v, { title: n, eyebrow: \"Instructor\", description: i || \"This instructor has not added a biography yet.\", className: \"ca-profile-surface\" });\n}\nfunction ze(r) {\n  var C;\n  const [n, i] = m(\"\"), [a, s] = m(\"\"), [c, l] = m(!1), [u, b] = m(0), [f, w] = m(0), d = $(r), y = P(\n    () => d.get(`/me/v1/dashboard?limit=12&offset=${f}`, !0),\n    [d, u, f]\n  );\n  return n ? /* @__PURE__ */ o(x, { children: [\n    /* @__PURE__ */ e(\"button\", { className: \"ca-button\", type: \"button\", disabled: c, onClick: () => {\n      i(\"\");\n    }, children: \"Back to My Learning\" }),\n    /* @__PURE__ */ e(\n      ge,\n      {\n        ...r,\n        enrollmentId: n,\n        onLearningChanged: () => b((g) => g + 1),\n        onDraftChange: l\n      }\n    )\n  ] }) : a ? /* @__PURE__ */ o(x, { children: [\n    /* @__PURE__ */ e(\"button\", { className: \"ca-button\", type: \"button\", onClick: () => {\n      s(\"\");\n    }, children: \"Back to My Learning\" }),\n    /* @__PURE__ */ e(v, { title: \"Your certificate\", eyebrow: \"Completed learning\", description: \"Present this credential and share its privacy-safe verification link.\", children: /* @__PURE__ */ e(k, { state: y, loadingLayout: \"form\", loadingTitle: \"Loading your certificate\", children: (g) => {\n      var E, T;\n      const p = g.certificates.find((N) => N.certificateId === a);\n      if (!p) return /* @__PURE__ */ e(L, { copy: { tone: \"warning\", title: \"Certificate unavailable\", message: \"This certificate is no longer available in your Academy records.\" } });\n      const R = g.courses.find((N) => N.courseId === p.courseId), S = g.enrollments.find((N) => N.courseId === p.courseId);\n      return /* @__PURE__ */ e(he, { certificate: p, course: R, holderName: ((T = (E = g.student) == null ? void 0 : E.name) == null ? void 0 : T.trim()) || (S == null ? void 0 : S.studentName) });\n    } }) })\n  ] }) : /* @__PURE__ */ e(v, { title: \"My Learning\", eyebrow: \"Your courses\", description: \"Pick up where you left off, review your progress, or view your certificates.\", className: \"ca-learning-surface\", children: /* @__PURE__ */ e(\n    k,\n    {\n      state: y,\n      loadingLayout: \"learning\",\n      loadingTitle: \"Loading your courses\",\n      empty: f === 0 && ((C = y.data) == null ? void 0 : C.enrollments.length) === 0,\n      emptyTitle: \"No enrollments yet\",\n      emptyMessage: \"Browse published courses and enroll to start learning.\",\n      emptyAction: { href: \"/courses\", label: \"Browse courses\" },\n      children: (g) => /* @__PURE__ */ o(\"div\", { className: \"ca-inline-stack\", children: [\n        /* @__PURE__ */ e(oe, { certificates: g.certificates, courses: g.courses, enrollments: g.enrollments, onCertificateSelect: (p) => {\n          s(p);\n        }, onSelect: (p) => {\n          i(p);\n        } }),\n        /* @__PURE__ */ e(Y, { hasMore: !!g.hasMore, label: \"Learning\", offset: f, pageSize: 12, onChange: w }),\n        /* @__PURE__ */ o(\"a\", { className: \"ca-course-detail-link ca-learning-browse\", href: \"/courses\", children: [\n          \"Browse more courses \",\n          /* @__PURE__ */ e(\"span\", { \"aria-hidden\": \"true\", children: \"→\" })\n        ] })\n      ] })\n    }\n  ) });\n}\nfunction ge(r) {\n  var a;\n  const t = $(r), n = String(r.enrollmentId ?? B(r).enrollmentId ?? \"\"), i = P(\n    () => n ? t.get(`/me/v1/enrollments/${encodeURIComponent(n)}/player`, !0) : Promise.reject(new Error(\"Enrollment ID is required.\")),\n    [t, n]\n  );\n  return n ? /* @__PURE__ */ e(v, { title: ((a = i.data) == null ? void 0 : a.course.title) ?? \"Your course\", eyebrow: \"My Learning\", description: \"\", className: \"ca-reading-surface\", children: /* @__PURE__ */ e(k, { state: i, loadingLayout: \"reading\", loadingTitle: \"Loading your lesson\", children: (s) => /* @__PURE__ */ e(ie, { detail: s, onDraftChange: r.onDraftChange, tools: {\n    saveNote: async (c, l, u) => (await t.put(`/me/v1/notes/${encodeURIComponent(`${n}:${c}`)}`, { enrollmentId: n, lessonId: c, body: l, expectedBody: u })).record,\n    reloadNotes: async () => (await t.get(`/me/v1/enrollments/${encodeURIComponent(n)}/player`, !0)).notes ?? [],\n    bookmark: async (c, l) => (await t.put(`/me/v1/bookmarks/${encodeURIComponent(`${n}:${c}`)}`, { enrollmentId: n, lessonId: c, bookmarked: l })).record,\n    ask: async (c, l, u) => (await t.post(`/public/v1/courses/${encodeURIComponent(s.course.courseId)}/questions`, { title: c, body: l }, { \"idempotency-key\": u })).question,\n    reloadReview: async () => (await t.get(`/me/v1/enrollments/${encodeURIComponent(n)}/player`, !0)).review ?? null,\n    review: async (c, l, u) => (await t.post(`/public/v1/courses/${encodeURIComponent(s.course.courseId)}/reviews`, { rating: c, body: l, expectedReview: u })).review\n  }, onComplete: async (c) => {\n    var u;\n    const l = await t.post(\"/me/v1/progress\", { enrollmentId: s.enrollment.enrollmentId, lessonId: c });\n    return (u = r.onLearningChanged) == null || u.call(r), l;\n  } }, s.enrollment.enrollmentId) }) }) : /* @__PURE__ */ e(v, { title: \"Course player\", eyebrow: \"Your learning\", description: \"Choose a course to start or continue a lesson.\", children: /* @__PURE__ */ e(L, { copy: { tone: \"neutral\", title: \"Choose a course\", message: \"Open My Learning to continue one of your enrolled courses.\", action: { href: \"/academy/dashboard\", label: \"Open My Learning\" } } }) });\n}\nfunction je(r) {\n  const t = $(r), n = typeof window > \"u\" ? \"\" : new URLSearchParams(window.location.search).get(\"certificateId\") ?? \"\", i = String(r.certificateId ?? B(r).certificateId ?? n);\n  return i ? /* @__PURE__ */ e(W, { api: t, certificateId: i }) : /* @__PURE__ */ e(be, { api: t });\n}\nfunction pe({ api: r, detail: t }) {\n  var l, u, b, f;\n  const [n, i] = m(!1), a = t.course, s = ((u = (l = t.curriculum) == null ? void 0 : l.sections) == null ? void 0 : u.reduce((w, d) => {\n    var y;\n    return w + (((y = d.lessons) == null ? void 0 : y.length) ?? 0);\n  }, 0)) ?? 0;\n  if (D(a)) return /* @__PURE__ */ o(U, { children: [\n    /* @__PURE__ */ e(ne, { course: a, curriculum: t.curriculum }, a.courseId),\n    /* @__PURE__ */ e(q, { reviews: t.reviews })\n  ] });\n  const c = j(a);\n  return /* @__PURE__ */ o(\"div\", { className: \"ca-course-layout\", children: [\n    /* @__PURE__ */ e(\"article\", { className: \"ca-course-primary\", children: /* @__PURE__ */ o(\"section\", { className: \"ca-course-outline\", children: [\n      /* @__PURE__ */ e(\"h3\", { children: \"What you'll learn\" }),\n      /* @__PURE__ */ e(ve, { curriculum: t.curriculum })\n    ] }) }),\n    /* @__PURE__ */ o(\"aside\", { className: \"ca-card ca-course-secondary\", children: [\n      /* @__PURE__ */ e(\"h3\", { children: n ? \"You're enrolled\" : \"Join this course\" }),\n      (f = (b = t.curriculum) == null ? void 0 : b.sections) != null && f.length ? /* @__PURE__ */ o(\"p\", { className: \"ca-course-extent\", children: [\n        s.toLocaleString(),\n        \" text \",\n        s === 1 ? \"lesson\" : \"lessons\"\n      ] }) : null,\n      n ? null : /* @__PURE__ */ o(U, { children: [\n        /* @__PURE__ */ e(se, { course: a }),\n        c.ready ? /* @__PURE__ */ e(\"p\", { className: \"ca-muted ca-enrollment-explanation\", children: c.message }) : /* @__PURE__ */ e(L, { copy: { tone: \"warning\", title: a.enrollmentStatus === \"closed\" ? \"Enrollment closed\" : F(a) ? \"Checkout unavailable\" : \"Enrollment unavailable\", message: c.message } })\n      ] }),\n      /* @__PURE__ */ e(ye, { api: r, course: a, onEnrolled: () => i(!0) })\n    ] }),\n    /* @__PURE__ */ o(\"div\", { className: \"ca-course-support\", children: [\n      /* @__PURE__ */ e(de, { course: a, hideWhenUnavailable: !0 }),\n      /* @__PURE__ */ e(le, { instructors: t.instructors ?? [] }),\n      /* @__PURE__ */ e(q, { reviews: t.reviews })\n    ] })\n  ] });\n}\nfunction q({ reviews: r }) {\n  return r != null && r.length ? /* @__PURE__ */ o(\"section\", { className: \"ca-learner-reviews\", children: [\n    /* @__PURE__ */ e(\"h3\", { children: \"Learner reviews\" }),\n    r.map((t, n) => /* @__PURE__ */ o(\"article\", { className: \"ca-feedback-item\", children: [\n      /* @__PURE__ */ o(\"strong\", { children: [\n        t.rating,\n        \" of 5\"\n      ] }),\n      /* @__PURE__ */ e(\"p\", { children: t.body })\n    ] }, n))\n  ] }) : null;\n}\nfunction ye({ api: r, course: t, onEnrolled: n }) {\n  const [i, a] = m(null), [s, c] = m(!1), [l, u] = m(!1), b = j(t), f = F(t);\n  async function w() {\n    var y;\n    u(!0), a(null);\n    try {\n      const C = f ? \"checkout\" : \"enroll\", p = (y = (await r.post(`/public/v1/courses/${encodeURIComponent(t.courseId)}/${C}`, {\n        successUrl: \"/academy/dashboard\"\n      })).checkout) == null ? void 0 : y.url;\n      p && typeof window < \"u\" && window.location.assign(p), f || (c(!0), n()), a({ tone: \"success\", title: f ? \"Checkout created\" : \"Enrollment active\", message: f ? \"Cedros Pay is opening the checkout handoff.\" : \"The course is now available in My Learning.\" });\n    } catch (C) {\n      a(ae(C instanceof Error ? C.message : void 0));\n    } finally {\n      u(!1);\n    }\n  }\n  const d = l ? \"Working...\" : f ? \"Continue to Cedros Pay\" : \"Enroll\";\n  return /* @__PURE__ */ o(\"div\", { className: \"ca-inline-stack\", children: [\n    s || !b.ready ? null : /* @__PURE__ */ o(\"button\", { className: \"ca-button ca-button-primary\", disabled: !b.ready || l, onClick: () => w(), children: [\n      l ? /* @__PURE__ */ e(ue, { state: \"busy\" }) : null,\n      /* @__PURE__ */ e(\"span\", { className: \"ca-swap\", children: d }, d)\n    ] }),\n    t.enrollmentStatus === \"closed\" ? /* @__PURE__ */ e(\"a\", { className: \"ca-button\", href: \"/academy/dashboard\", children: \"Open My Learning\" }) : null,\n    i ? /* @__PURE__ */ e(L, { copy: i }) : null,\n    s ? /* @__PURE__ */ e(\"a\", { className: \"ca-button ca-button-primary\", href: \"/academy/dashboard\", children: \"Open My Learning\" }) : null\n  ] });\n}\nfunction be({ api: r }) {\n  const [t, n] = m(\"\"), [i, a] = m(\"\"), s = _(), c = s.errors.reference, l = Z();\n  return /* @__PURE__ */ o(v, { title: \"Verify Certificate\", eyebrow: \"Public verification\", description: \"Confirm a course completion certificate using its reference.\", className: \"ca-verification-surface\", children: [\n    /* @__PURE__ */ o(\"form\", { ref: s.ref, noValidate: !0, className: \"ca-card ca-lookup-form\", onSubmit: (u) => {\n      u.preventDefault(), s.validate({ reference: t.trim().length < 6 ? \"Enter at least 6 characters from the certificate reference.\" : \"\" }) && a(t.trim());\n    }, children: [\n      /* @__PURE__ */ o(\"label\", { className: \"ca-field\", children: [\n        /* @__PURE__ */ o(\"span\", { children: [\n          \"Certificate reference \",\n          /* @__PURE__ */ e(\"span\", { className: \"ca-muted\", children: \"(required)\" })\n        ] }),\n        /* @__PURE__ */ e(\n          \"input\",\n          {\n            \"aria-label\": \"Certificate ID\",\n            \"aria-describedby\": c ? l : void 0,\n            \"aria-invalid\": c ? !0 : void 0,\n            value: t,\n            onChange: (u) => n(u.target.value),\n            required: !0\n          }\n        ),\n        c ? /* @__PURE__ */ e(\"span\", { id: l, className: \"ca-field-error\", children: c }) : null\n      ] }),\n      /* @__PURE__ */ e(\"button\", { className: \"ca-button ca-button-primary\", type: \"submit\", children: \"Verify\" })\n    ] }),\n    i ? /* @__PURE__ */ e(W, { api: r, certificateId: i, embedded: !0 }) : null\n  ] });\n}\nfunction W(r) {\n  const t = P(\n    () => r.api.get(`/public/v1/certificates/${encodeURIComponent(r.certificateId)}/verify`, !1),\n    [r.api, r.certificateId]\n  ), n = /* @__PURE__ */ e(k, { state: t, loadingLayout: \"form\", loadingTitle: \"Checking the certificate\", children: (i) => {\n    var a;\n    return /* @__PURE__ */ o(\"article\", { className: \"ca-card ca-verification-result\", children: [\n      /* @__PURE__ */ o(\"div\", { className: \"ca-card-header\", children: [\n        /* @__PURE__ */ o(\"h3\", { className: \"ca-verification-heading\", children: [\n          i.valid ? /* @__PURE__ */ o(\"svg\", { width: \"24\", height: \"24\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: \"2\", strokeLinecap: \"round\", strokeLinejoin: \"round\", \"aria-hidden\": \"true\", children: [\n            /* @__PURE__ */ e(\"circle\", { cx: \"12\", cy: \"12\", r: \"9\" }),\n            /* @__PURE__ */ e(\"path\", { d: \"m8 12 3 3 5-6\" })\n          ] }) : null,\n          i.valid ? \"Certificate verified\" : \"Certificate not valid\"\n        ] }),\n        i.valid ? null : /* @__PURE__ */ e(te, { value: String(i.certificate.status ?? \"invalid\") })\n      ] }),\n      /* @__PURE__ */ e(\"p\", { children: i.valid ? \"This record confirms completion of the course below.\" : \"This certificate does not confirm completion. Ask the issuing course team to check the record.\" }),\n      /* @__PURE__ */ e(\"p\", { className: \"ca-verified-course\", children: String(((a = i.course) == null ? void 0 : a.title) ?? i.certificate.courseId ?? \"Course unavailable\") }),\n      /* @__PURE__ */ o(\"p\", { className: \"ca-muted\", children: [\n        \"Issued \",\n        me(typeof i.certificate.issuedAt == \"string\" || typeof i.certificate.issuedAt == \"number\" ? i.certificate.issuedAt : null)\n      ] }),\n      /* @__PURE__ */ o(\"details\", { className: \"ca-full-copy ca-verification-reference\", children: [\n        /* @__PURE__ */ e(\"summary\", { children: \"Certificate reference\" }),\n        /* @__PURE__ */ e(\"p\", { children: String(i.certificate.certificateId ?? r.certificateId) })\n      ] }),\n      r.embedded ? null : /* @__PURE__ */ e(\"a\", { className: \"ca-button\", href: \"/academy/certificates/verify\", children: \"Check another certificate\" })\n    ] });\n  } });\n  return r.embedded ? n : /* @__PURE__ */ e(v, { title: \"Verify Certificate\", eyebrow: \"Public verification\", description: \"Confirm this course completion and its current status.\", className: \"ca-verification-surface\", children: n });\n}\nfunction ve({ curriculum: r }) {\n  const t = (r == null ? void 0 : r.sections) ?? [];\n  return t.length === 0 ? /* @__PURE__ */ e(\"p\", { className: \"ca-muted\", children: \"Curriculum outline is not published yet.\" }) : /* @__PURE__ */ e(\"div\", { className: \"ca-curriculum\", children: t.map((n, i) => {\n    var a;\n    return /* @__PURE__ */ o(\"section\", { children: [\n      /* @__PURE__ */ e(\"h4\", { children: n.title }),\n      /* @__PURE__ */ e(\"ol\", { children: (n.lessons ?? []).slice(0, 6).map((s, c) => /* @__PURE__ */ e(\"li\", { children: /* @__PURE__ */ e(O, { title: s.title }) }, s.lessonId ?? `${s.title}-${c}`)) }),\n      (((a = n.lessons) == null ? void 0 : a.length) ?? 0) > 6 ? /* @__PURE__ */ o(\"details\", { className: \"ca-full-copy\", children: [\n        /* @__PURE__ */ o(\"summary\", { children: [\n          (n.lessons ?? []).length - 6,\n          \" more lessons\"\n        ] }),\n        /* @__PURE__ */ e(\"ol\", { start: 7, children: (n.lessons ?? []).slice(6).map((s, c) => /* @__PURE__ */ e(\"li\", { children: /* @__PURE__ */ e(O, { title: s.title }) }, s.lessonId ?? `${s.title}-${c}`)) })\n      ] }) : null\n    ] }, n.sectionId ?? `${n.title}-${i}`);\n  }) });\n}\nfunction O({ title: r }) {\n  return r.length > 160 ? /* @__PURE__ */ o(U, { children: [\n    /* @__PURE__ */ e(\"span\", { className: \"ca-outline-long-title\", children: r }),\n    /* @__PURE__ */ o(\"details\", { className: \"ca-full-copy\", children: [\n      /* @__PURE__ */ e(\"summary\", { children: \"Full lesson title\" }),\n      /* @__PURE__ */ e(\"p\", { children: r })\n    ] })\n  ] }) : /* @__PURE__ */ e(U, { children: r });\n}\nclass Ce {\n  constructor(t) {\n    A(this, \"baseUrl\");\n    A(this, \"getAccessToken\");\n    const n = t.serverUrl ?? (typeof window > \"u\" ? \"\" : window.location.origin);\n    this.baseUrl = `${n.replace(/\\/$/, \"\")}/extensions/cedros-academy`, this.getAccessToken = t.getAccessToken ?? (() => null);\n  }\n  get(t, n) {\n    return this.request(\"GET\", t, void 0, n);\n  }\n  post(t, n, i) {\n    return this.request(\"POST\", t, n, !0, i);\n  }\n  put(t, n) {\n    return this.request(\"PUT\", t, n, !0);\n  }\n  async request(t, n, i, a, s) {\n    const c = this.getAccessToken(), l = await fetch(`${this.baseUrl}${n}`, {\n      method: t,\n      credentials: a ? \"same-origin\" : \"omit\",\n      headers: {\n        \"content-type\": \"application/json\",\n        ...s,\n        ...a && c ? { authorization: `Bearer ${c}` } : {}\n      },\n      body: i === void 0 ? void 0 : JSON.stringify(i)\n    });\n    return ee(l);\n  }\n}\nfunction $(r) {\n  return re(), K(() => new Ce(r), [r.serverUrl, r.getAccessToken]);\n}\nfunction P(r, t) {\n  const [n, i] = m({ loading: !0 }), [a, s] = m(0), c = X(() => s((l) => l + 1), []);\n  return V(() => {\n    let l = !1;\n    return i({ loading: !0 }), r().then((u) => {\n      l || i({ loading: !1, data: u });\n    }).catch((u) => {\n      l || i({ loading: !1, error: u.message });\n    }), () => {\n      l = !0;\n    };\n  }, [...t, a]), { ...n, retry: c };\n}\nfunction B(r) {\n  var t;\n  return ((t = r.block) == null ? void 0 : t.props) ?? r.props ?? {};\n}\nfunction we() {\n  return typeof window > \"u\" ? \"\" : z(window.location.search);\n}\nexport {\n  je as CertificateVerificationBlock,\n  qe as CourseCatalogBlock,\n  fe as CourseLandingBlock,\n  ge as CoursePlayerBlock,\n  Oe as FeaturedCoursesBlock,\n  Ve as InstructorProfileBlock,\n  Ce as PublicApi,\n  ze as StudentDashboardBlock,\n  $ as usePublicApi,\n  P as usePublicData\n};\n","imports":[{"dynamic":false,"end":277,"specifier":"react/jsx-runtime","start":260},{"dynamic":false,"end":389,"specifier":"react","start":384},{"dynamic":false,"end":459,"specifier":"../shared/formValidation.js","start":432},{"dynamic":false,"end":526,"specifier":"../shared/response.js","start":505},{"dynamic":false,"end":574,"specifier":"../shared/ui.js","start":559},{"dynamic":false,"end":639,"specifier":"../shared/styles.js","start":620},{"dynamic":false,"end":703,"specifier":"../shared/links.js","start":685},{"dynamic":false,"end":768,"specifier":"../shared/courseAccess.js","start":743},{"dynamic":false,"end":824,"specifier":"./openCourse.js","start":809},{"dynamic":false,"end":879,"specifier":"./learnerPlayer.js","start":861},{"dynamic":false,"end":1004,"specifier":"./publicState.js","start":988},{"dynamic":false,"end":1232,"specifier":"./publicUi.js","start":1219},{"dynamic":false,"end":1298,"specifier":"../shared/courseArtwork.js","start":1272},{"dynamic":false,"end":1372,"specifier":"./certificateCredential.js","start":1346},{"dynamic":false,"end":1441,"specifier":"./certificateState.js","start":1420}],"hasUnsupportedDynamicImports":false},{"path":"workspace/react/dist/web/certificateCredential.js","kind":"module","text":"import { jsxs as c, jsx as e } from \"react/jsx-runtime\";\nimport { useState as b, useId as p } from \"react\";\nimport { Status as v } from \"../shared/ui.js\";\nimport { Notice as f } from \"./publicUi.js\";\nimport { certificateVerificationUrl as y, formatCertificateDate as N, absoluteCertificateVerificationUrl as g } from \"./certificateState.js\";\nfunction T(t) {\n  var o, d, s;\n  const [i, a] = b(\"idle\"), r = p(), n = ((o = t.certificate.studentName) == null ? void 0 : o.trim()) || ((d = t.holderName) == null ? void 0 : d.trim()) || \"\", u = y(t.certificate.certificateId), m = t.certificate.status === \"revoked\";\n  async function h() {\n    var l;\n    a(\"idle\");\n    try {\n      if (typeof navigator > \"u\" || !((l = navigator.clipboard) != null && l.writeText))\n        throw new Error(\"Clipboard access is unavailable.\");\n      await navigator.clipboard.writeText(g(t.certificate.certificateId)), a(\"copied\");\n    } catch {\n      a(\"failed\");\n    }\n  }\n  return /* @__PURE__ */ c(\"article\", { className: \"ca-card ca-certificate\", \"aria-labelledby\": r, children: [\n    /* @__PURE__ */ c(\"div\", { className: \"ca-certificate-heading\", children: [\n      /* @__PURE__ */ c(\"div\", { children: [\n        /* @__PURE__ */ e(\"span\", { className: \"ca-kicker\", children: \"Certificate of completion\" }),\n        /* @__PURE__ */ e(\"h3\", { id: r, children: ((s = t.course) == null ? void 0 : s.title) ?? \"Academy course\" })\n      ] }),\n      /* @__PURE__ */ e(v, { value: t.certificate.status })\n    ] }),\n    /* @__PURE__ */ e(\"p\", { className: \"ca-certificate-statement\", children: \"This certifies that\" }),\n    n ? /* @__PURE__ */ e(\"strong\", { className: \"ca-certificate-holder\", children: n }) : /* @__PURE__ */ e(f, { copy: {\n      tone: \"warning\",\n      title: \"Learner name unavailable\",\n      message: \"This older certificate can still be verified, but the learner should contact the site team before presenting it.\"\n    } }),\n    /* @__PURE__ */ e(\"p\", { className: \"ca-certificate-statement\", children: \"completed the course shown above.\" }),\n    m ? /* @__PURE__ */ e(f, { copy: { tone: \"warning\", title: \"Certificate revoked\", message: \"This credential is no longer valid. Its public verification page shows the current status.\" } }) : null,\n    /* @__PURE__ */ c(\"dl\", { className: \"ca-certificate-details\", children: [\n      /* @__PURE__ */ c(\"div\", { children: [\n        /* @__PURE__ */ e(\"dt\", { children: \"Issued\" }),\n        /* @__PURE__ */ e(\"dd\", { children: N(t.certificate.issuedAt) })\n      ] }),\n      /* @__PURE__ */ c(\"div\", { children: [\n        /* @__PURE__ */ e(\"dt\", { children: \"Certificate reference\" }),\n        /* @__PURE__ */ e(\"dd\", { children: t.certificate.certificateId })\n      ] })\n    ] }),\n    /* @__PURE__ */ e(\"p\", { className: \"ca-muted\", children: \"The public verification page confirms the reference, course, issue date, and current status without exposing the learner's account identity.\" }),\n    /* @__PURE__ */ c(\"div\", { className: \"ca-public-actions ca-certificate-actions\", children: [\n      /* @__PURE__ */ e(\"a\", { className: \"ca-button ca-button-primary\", href: u, children: \"Verify certificate\" }),\n      /* @__PURE__ */ e(\"button\", { className: \"ca-button\", type: \"button\", onClick: () => void h(), children: \"Copy verification link\" }),\n      /* @__PURE__ */ e(\"button\", { className: \"ca-button\", type: \"button\", onClick: () => w(t.certificate.certificateId), children: \"Print or save as PDF\" })\n    ] }),\n    i === \"copied\" ? /* @__PURE__ */ e(\"p\", { className: \"ca-muted\", role: \"status\", children: \"Verification link copied.\" }) : null,\n    i === \"failed\" ? /* @__PURE__ */ e(\"p\", { className: \"ca-field-error\", role: \"alert\", children: \"Copying is unavailable. Open Verify certificate and copy the address from the browser.\" }) : null\n  ] });\n}\nfunction w(t) {\n  if (typeof window > \"u\" || typeof document > \"u\") return;\n  const i = \"data-ca5ss4b-academy-print-certificate\", a = document.body.getAttribute(i), r = () => {\n    a === null ? document.body.removeAttribute(i) : document.body.setAttribute(i, a);\n  };\n  document.body.setAttribute(i, t), window.addEventListener(\"afterprint\", r, { once: !0 }), window.print();\n}\nexport {\n  T as CertificateCredential\n};\n","imports":[{"dynamic":false,"end":54,"specifier":"react/jsx-runtime","start":37},{"dynamic":false,"end":105,"specifier":"react","start":100},{"dynamic":false,"end":152,"specifier":"../shared/ui.js","start":137},{"dynamic":false,"end":197,"specifier":"./publicUi.js","start":184},{"dynamic":false,"end":339,"specifier":"./certificateState.js","start":318}],"hasUnsupportedDynamicImports":false},{"path":"workspace/react/dist/web/certificateState.js","kind":"module","text":"function n(t) {\n  return `/academy/certificates/verify?certificateId=${encodeURIComponent(t)}`;\n}\nfunction r(t) {\n  const e = n(t);\n  return typeof window > \"u\" ? e : new URL(e, window.location.origin).toString();\n}\nfunction o(t) {\n  if (t == null || t === \"\") return \"Date unavailable\";\n  const e = Number(t), i = Number.isFinite(e) ? new Date(e * 1e3) : new Date(String(t));\n  return Number.isNaN(i.getTime()) ? String(t) : i.toLocaleDateString();\n}\nexport {\n  r as absoluteCertificateVerificationUrl,\n  n as certificateVerificationUrl,\n  o as formatCertificateDate\n};\n","imports":[],"hasUnsupportedDynamicImports":false},{"path":"workspace/react/dist/web/courseSubmission.js","kind":"module","text":"import { jsx as e, Fragment as z, jsxs as a } from \"react/jsx-runtime\";\nimport { useState as n, useId as j } from \"react\";\nimport { useFormValidation as K } from \"../shared/formValidation.js\";\nimport { courseCatalogUrl as M } from \"../shared/links.js\";\nimport { usePublicApi as _, usePublicData as G } from \"./blocks.js\";\nimport { PublicShell as $, PublicStateBlock as q, PublicPageControls as H, Notice as F } from \"./publicUi.js\";\nconst P = { title: \"\", slug: \"\", description: \"\", lessonTitle: \"Introduction\", lessonBody: \"\" }, p = 10;\nfunction se(t) {\n  var B, D, U;\n  const i = _(t), [r, d] = n(P), [A, v] = n(y), [l, w] = n(!1), [E, C] = n(!1), [g, N] = n(\"\"), [S, T] = n(\"\"), [L, O] = n(0), [m, x] = n(0), c = K(), u = G(\n    () => i.get(`/me/v1/course-submissions?limit=${p}&offset=${m}`, !0),\n    [i, m, L]\n  );\n  if (u.loading || u.error)\n    return /* @__PURE__ */ e($, { title: \"Submit a course\", eyebrow: \"Cedros Login required\", description: \"Sign in before sending a course to the site team for review.\", children: /* @__PURE__ */ e(q, { state: u, loadingLayout: \"form\", loadingTitle: \"Checking your Cedros Login session\", children: () => /* @__PURE__ */ e(z, {}) }) });\n  async function R() {\n    if (c.validate({ title: r.title.trim().length < 3 ? \"Enter a course title of at least 3 characters.\" : \"\", slug: k(r.slug || r.title) ? \"\" : \"Enter a title or slug containing letters or numbers.\", lessonTitle: r.lessonTitle.trim() ? \"\" : \"Enter the first lesson title.\", lessonBody: r.lessonBody.trim() ? \"\" : \"Add content for the first lesson.\" })) {\n      w(!0), N(\"\"), T(\"\");\n      try {\n        const s = k(r.slug || r.title);\n        if (!s) throw new Error(\"Enter a title and a lowercase URL slug.\");\n        const o = {\n          schemaVersion: 1,\n          courses: [{\n            title: r.title.trim(),\n            slug: s,\n            description: r.description.trim(),\n            listed: !0,\n            pricing: { type: \"free\", amountCents: 0, currency: \"USD\" },\n            sections: [{\n              sectionId: \"section:introduction\",\n              title: \"Introduction\",\n              lessons: [{\n                lessonId: \"lesson:introduction\",\n                title: r.lessonTitle.trim(),\n                type: \"text\",\n                body: r.lessonBody.trim()\n              }]\n            }]\n          }]\n        };\n        await i.post(\"/me/v1/course-submissions\", o, { \"idempotency-key\": A }), d(P), C(!1), v(y()), T(\"Your course was submitted. It will remain private until the site team accepts and publishes it.\"), x(0), O((Y) => Y + 1);\n      } catch (s) {\n        N(s instanceof Error ? s.message : \"The course could not be submitted.\");\n      } finally {\n        w(!1);\n      }\n    }\n  }\n  const f = !!((B = u.data) != null && B.submissions.length) || m > 0, V = /* @__PURE__ */ a(\"section\", { className: \"ca-submission-history\", children: [\n    /* @__PURE__ */ e(\"h3\", { children: \"Your submissions\" }),\n    /* @__PURE__ */ e(q, { state: u, empty: m === 0 && ((D = u.data) == null ? void 0 : D.submissions.length) === 0, emptyTitle: \"No course submissions yet\", emptyMessage: \"Your submitted courses and review status will appear here.\", children: (s) => /* @__PURE__ */ e(\"div\", { className: \"ca-card-grid\", children: s.submissions.map((o) => /* @__PURE__ */ a(\"article\", { className: \"ca-card\", children: [\n      /* @__PURE__ */ e(\"h4\", { children: o.course.title }),\n      /* @__PURE__ */ e(J, { submission: o }),\n      o.reviewNote ? /* @__PURE__ */ a(\"p\", { className: \"ca-muted\", children: [\n        \"Review note: \",\n        o.reviewNote\n      ] }) : null\n    ] }, o.submissionId)) }) }),\n    /* @__PURE__ */ e(H, { hasMore: (((U = u.data) == null ? void 0 : U.submissions.length) ?? 0) === p, label: \"Submission\", offset: m, pageSize: p, onChange: x })\n  ] }), I = /* @__PURE__ */ a(\"form\", { ref: c.ref, noValidate: !0, className: \"ca-card ca-inline-stack ca-submission-form\", onSubmit: (s) => {\n    s.preventDefault(), R();\n  }, children: [\n    /* @__PURE__ */ e(\"h3\", { children: \"Your course idea\" }),\n    /* @__PURE__ */ e(b, { disabled: l, label: \"Course title\", required: !0, error: c.errors.title, value: r.title, onChange: (s) => h({ title: s }) }),\n    /* @__PURE__ */ e(b, { disabled: l, label: \"Course description\", value: r.description, onChange: (s) => h({ description: s }), textarea: !0 }),\n    /* @__PURE__ */ e(\"h3\", { children: \"A sample lesson\" }),\n    /* @__PURE__ */ e(\"p\", { className: \"ca-muted\", children: \"Give the site team a complete text lesson to review.\" }),\n    /* @__PURE__ */ e(b, { disabled: l, label: \"First lesson title\", required: !0, error: c.errors.lessonTitle, value: r.lessonTitle, onChange: (s) => h({ lessonTitle: s }) }),\n    /* @__PURE__ */ e(b, { disabled: l, label: \"First lesson content\", required: !0, error: c.errors.lessonBody, value: r.lessonBody, onChange: (s) => h({ lessonBody: s }), textarea: !0 }),\n    /* @__PURE__ */ a(\"details\", { className: \"ca-disclosure\", open: c.errors.slug ? !0 : void 0, children: [\n      /* @__PURE__ */ e(\"summary\", { children: \"Custom course URL\" }),\n      /* @__PURE__ */ e(\"div\", { className: \"ca-disclosure__body\", children: /* @__PURE__ */ e(b, { disabled: l, label: \"URL slug\", error: c.errors.slug, value: r.slug, onChange: (s) => h({ slug: s }), help: \"Optional; generated from the title when blank.\" }) })\n    ] }),\n    /* @__PURE__ */ e(\"button\", { className: \"ca-button ca-button-primary\", disabled: l, type: \"submit\", children: l ? \"Submitting…\" : \"Submit for review\" })\n  ] });\n  return /* @__PURE__ */ a($, { title: f ? \"Your course submissions\" : \"Submit a course\", eyebrow: \"\", description: f ? \"Check the site team's decisions or propose your next course.\" : \"Share a free text course and a complete sample lesson for the site team to review.\", className: \"ca-submission-surface\", children: [\n    S ? /* @__PURE__ */ e(F, { copy: { tone: \"success\", title: \"Course submitted\", message: S } }) : null,\n    g ? /* @__PURE__ */ e(F, { copy: { tone: \"error\", title: \"Submission failed\", message: g } }) : null,\n    f ? V : null,\n    f ? /* @__PURE__ */ a(\"details\", { className: \"ca-disclosure ca-new-submission\", open: E || !!g, onToggle: (s) => C(s.currentTarget.open), children: [\n      /* @__PURE__ */ e(\"summary\", { children: \"Propose a new course\" }),\n      I\n    ] }) : I\n  ] });\n  function h(s) {\n    d((o) => ({ ...o, ...s })), v(y());\n  }\n}\nfunction J({ submission: t }) {\n  if (t.status === \"submitted\") return /* @__PURE__ */ e(\"p\", { className: \"ca-muted\", children: \"Awaiting a decision from the site team.\" });\n  if (t.status === \"rejected\") return /* @__PURE__ */ e(\"p\", { className: \"ca-muted\", children: \"The site team did not accept this course.\" });\n  const i = t.acceptedCourse;\n  return !i || [\"draft\", \"needs_review\", \"approved\"].includes(i.status) ? /* @__PURE__ */ e(\"p\", { className: \"ca-muted\", children: \"Accepted as an owner-controlled draft. The site team is preparing the learner experience.\" }) : i.status === \"published\" && i.slug ? /* @__PURE__ */ a(\"p\", { className: \"ca-muted\", children: [\n    \"The course is now public. \",\n    /* @__PURE__ */ e(\"a\", { href: M(i.slug), children: \"Open course\" })\n  ] }) : i.status === \"private\" ? /* @__PURE__ */ e(\"p\", { className: \"ca-muted\", children: \"The site team launched this course for invited learners only.\" }) : [\"archived\", \"retired\", \"suspended\"].includes(i.status) ? /* @__PURE__ */ e(\"p\", { className: \"ca-muted\", children: \"The accepted course is not currently available to new learners.\" }) : /* @__PURE__ */ e(\"p\", { className: \"ca-muted\", children: \"Accepted by the site team. Current publication status is unavailable.\" });\n}\nfunction b(t) {\n  const i = j(), r = { disabled: t.disabled, required: t.required, \"aria-label\": t.label, \"aria-invalid\": t.error ? !0 : void 0, \"aria-describedby\": t.error ? `${i}-error` : t.help ? `${i}-help` : void 0 };\n  return /* @__PURE__ */ a(\"label\", { className: \"ca-field\", children: [\n    /* @__PURE__ */ a(\"span\", { children: [\n      t.label,\n      t.required ? /* @__PURE__ */ e(\"span\", { className: \"ca-muted\", children: \" (required)\" }) : null\n    ] }),\n    t.textarea ? /* @__PURE__ */ e(\"textarea\", { ...r, rows: 5, value: t.value, onChange: (d) => t.onChange(d.target.value) }) : /* @__PURE__ */ e(\"input\", { ...r, value: t.value, onChange: (d) => t.onChange(d.target.value) }),\n    t.error ? /* @__PURE__ */ e(\"small\", { id: `${i}-error`, className: \"ca-field-error\", children: t.error }) : t.help ? /* @__PURE__ */ e(\"small\", { id: `${i}-help`, className: \"ca-muted\", children: t.help }) : null\n  ] });\n}\nfunction k(t) {\n  return t.trim().toLowerCase().replace(/[^a-z0-9]+/g, \"-\").replace(/^-|-$/g, \"\").slice(0, 96);\n}\nfunction y() {\n  var t;\n  return typeof ((t = globalThis.crypto) == null ? void 0 : t.randomUUID) == \"function\" ? globalThis.crypto.randomUUID() : `academy-${Date.now()}-${Math.random().toString(36).slice(2)}`;\n}\nexport {\n  se as CourseSubmissionBlock\n};\n","imports":[{"dynamic":false,"end":69,"specifier":"react/jsx-runtime","start":52},{"dynamic":false,"end":120,"specifier":"react","start":115},{"dynamic":false,"end":190,"specifier":"../shared/formValidation.js","start":163},{"dynamic":false,"end":250,"specifier":"../shared/links.js","start":232},{"dynamic":false,"end":319,"specifier":"./blocks.js","start":308},{"dynamic":false,"end":430,"specifier":"./publicUi.js","start":417}],"hasUnsupportedDynamicImports":false},{"path":"workspace/react/dist/web/learnerPlayer.js","kind":"module","text":"import { jsx as s, jsxs as c } from \"react/jsx-runtime\";\nimport { useId as G, useState as d, useMemo as J, useRef as K, useCallback as Q } from \"react\";\nimport { Status as U } from \"../shared/ui.js\";\nimport { LearnerLessonBody as W } from \"../shared/lessonContent.js\";\nimport { enrollmentAccessCopy as X, publicErrorCopy as Z } from \"./publicState.js\";\nimport { Notice as C, LessonOutline as _, ProgressMark as v } from \"./publicUi.js\";\nimport { CertificateCredential as ee } from \"./certificateCredential.js\";\nimport { LearningTools as se } from \"./learningTools.js\";\nfunction de(a) {\n  var D, w, A, B, M;\n  const t = a.detail, L = G(), [h, Y] = d(t.enrollment.status), x = X(h), o = J(\n    () => {\n      var e;\n      return (((e = t.curriculum) == null ? void 0 : e.sections) ?? []).flatMap(\n        (l) => (l.lessons ?? []).filter((n) => !!n.lessonId).map((n) => ({ ...n, sectionTitle: l.title }))\n      );\n    },\n    [t.curriculum]\n  ), P = ((D = t.progress) == null ? void 0 : D.completedLessonIds) ?? t.enrollment.completedLessonIds ?? [], b = o.find((e) => !P.includes(e.lessonId)) ?? o[0], [$, y] = d((b == null ? void 0 : b.lessonId) ?? \"\"), [f, E] = d(P), [F, j] = d(((w = t.progress) == null ? void 0 : w.progressPercent) ?? t.enrollment.progressPercent ?? 0), g = K(null), [u, S] = d(!1), [k, m] = d(null), [T, O] = d(null), [N, H] = d(!1), R = Q((e) => {\n    var l;\n    H(e), (l = a.onDraftChange) == null || l.call(a, e);\n  }, [a.onDraftChange]);\n  if (!x.canOpen) return /* @__PURE__ */ s(C, { copy: x });\n  if (o.length === 0) return /* @__PURE__ */ s(C, { copy: { tone: \"neutral\", title: \"No lessons available\", message: \"The course curriculum has not been published yet.\" } });\n  const I = Math.max(0, o.findIndex((e) => e.lessonId === $)), i = o[I], p = f.includes(i.lessonId);\n  async function V() {\n    S(!0), m(null);\n    try {\n      const e = await a.onComplete(i.lessonId);\n      Y(e.enrollment.status), E(e.progress.completedLessonIds ?? []), j(e.progress.progressPercent ?? 0), O(e.certificate ?? null);\n      const l = e.progress.progressPercent === 100, n = o.find((r) => !(e.progress.completedLessonIds ?? []).includes(r.lessonId));\n      !l && n && (y(n.lessonId), requestAnimationFrame(() => {\n        var r;\n        return (r = g.current) == null ? void 0 : r.focus();\n      })), m(l ? { tone: \"success\", title: \"Course completed\", message: e.certificate ? \"Your certificate is ready to present and share.\" : \"You have completed every lesson. Your learning progress has been saved.\" } : { tone: \"success\", title: \"Lesson completed\", message: \"Your learning progress has been saved.\" });\n    } catch (e) {\n      m(Z(e instanceof Error ? e.message : void 0));\n    } finally {\n      S(!1);\n    }\n  }\n  const z = o.filter((e) => !f.includes(e.lessonId)).length, q = u ? \"Saving…\" : p ? \"Completed\" : z === 1 ? \"Complete course\" : \"Complete and continue\";\n  return /* @__PURE__ */ c(\"article\", { className: \"ca-card ca-player\", children: [\n    /* @__PURE__ */ c(\"div\", { className: \"ca-card-header\", children: [\n      /* @__PURE__ */ s(\"div\", { children: /* @__PURE__ */ c(\"h3\", { children: [\n        \"Lesson \",\n        I + 1,\n        \" of \",\n        o.length\n      ] }) }),\n      h !== \"active\" ? /* @__PURE__ */ s(U, { value: h }) : null\n    ] }),\n    /* @__PURE__ */ c(\"div\", { className: \"ca-player-layout\", children: [\n      /* @__PURE__ */ s(_, { progress: F, children: /* @__PURE__ */ s(\"nav\", { className: \"ca-player-nav\", \"aria-label\": \"Course lessons\", children: (((A = t.curriculum) == null ? void 0 : A.sections) ?? []).map((e, l) => /* @__PURE__ */ c(\"section\", { children: [\n        /* @__PURE__ */ s(\"h4\", { children: e.title }),\n        /* @__PURE__ */ s(\"ol\", { children: (e.lessons ?? []).filter((n) => !!n.lessonId).map((n) => /* @__PURE__ */ s(\"li\", { children: /* @__PURE__ */ c(\n          \"button\",\n          {\n            \"aria-current\": n.lessonId === i.lessonId ? \"step\" : void 0,\n            className: \"ca-player-lesson\",\n            disabled: u || N,\n            onClick: () => {\n              y(n.lessonId), m(null), requestAnimationFrame(() => {\n                var r;\n                return (r = g.current) == null ? void 0 : r.focus();\n              });\n            },\n            type: \"button\",\n            children: [\n              /* @__PURE__ */ s(\"span\", { className: \"ca-lesson-number\", \"aria-hidden\": \"true\", children: String(o.findIndex((r) => r.lessonId === n.lessonId) + 1).padStart(2, \"0\") }),\n              /* @__PURE__ */ s(\"span\", { className: \"ca-lesson-name\", children: n.title }),\n              /* @__PURE__ */ s(\"span\", { className: \"ca-lesson-completion\", role: \"img\", \"aria-label\": f.includes(n.lessonId) ? \"Completed\" : \"Not completed\", children: f.includes(n.lessonId) ? /* @__PURE__ */ s(v, { state: \"done\" }) : null })\n            ]\n          }\n        ) }, n.lessonId)) })\n      ] }, e.sectionId ?? `${e.title}-${l}`)) }) }),\n      /* @__PURE__ */ c(\"section\", { className: \"ca-lesson\", \"aria-labelledby\": L, children: [\n        /* @__PURE__ */ s(\"span\", { className: \"ca-kicker\", children: i.sectionTitle }),\n        /* @__PURE__ */ s(\"h4\", { id: L, ref: g, tabIndex: -1, children: i.title }),\n        i.body ? /* @__PURE__ */ s(W, { body: i.body, headingLevel: 5 }) : /* @__PURE__ */ s(\"p\", { className: \"ca-muted\", children: \"This lesson does not include readable text content.\" }),\n        k ? /* @__PURE__ */ s(C, { copy: k }) : null,\n        T ? /* @__PURE__ */ s(ee, { certificate: T, course: t.course, holderName: ((M = (B = t.student) == null ? void 0 : B.name) == null ? void 0 : M.trim()) || t.enrollment.studentName }) : null,\n        /* @__PURE__ */ c(\"div\", { className: \"ca-public-actions\", children: [\n          /* @__PURE__ */ c(\"button\", { className: `ca-button${p ? \"\" : \" ca-button-primary\"}`, disabled: u || p || N, onClick: () => void V(), type: \"button\", children: [\n            u ? /* @__PURE__ */ s(v, { state: \"busy\" }) : p ? /* @__PURE__ */ s(v, { state: \"done\" }) : null,\n            /* @__PURE__ */ s(\"span\", { className: \"ca-swap\", children: q }, q)\n          ] }),\n          I < o.length - 1 ? /* @__PURE__ */ s(\"button\", { className: `ca-button ${p ? \"ca-button-primary\" : \"ca-button--quiet\"}`, disabled: u || N, onClick: () => {\n            y(o[I + 1].lessonId), m(null), requestAnimationFrame(() => {\n              var e;\n              return (e = g.current) == null ? void 0 : e.focus();\n            });\n          }, type: \"button\", children: \"Next lesson\" }) : null\n        ] }),\n        a.tools ? /* @__PURE__ */ s(se, { lessonId: i.lessonId, completed: h === \"completed\", notes: t.notes, questions: t.questions, review: t.review, actions: a.tools, onDirty: R }) : null\n      ] })\n    ] })\n  ] });\n}\nexport {\n  de as PlayerView\n};\n","imports":[{"dynamic":false,"end":54,"specifier":"react/jsx-runtime","start":37},{"dynamic":false,"end":150,"specifier":"react","start":145},{"dynamic":false,"end":197,"specifier":"../shared/ui.js","start":182},{"dynamic":false,"end":266,"specifier":"../shared/lessonContent.js","start":240},{"dynamic":false,"end":350,"specifier":"./publicState.js","start":334},{"dynamic":false,"end":434,"specifier":"./publicUi.js","start":421},{"dynamic":false,"end":508,"specifier":"./certificateCredential.js","start":482},{"dynamic":false,"end":566,"specifier":"./learningTools.js","start":548}],"hasUnsupportedDynamicImports":false},{"path":"workspace/react/dist/web/learningTools.js","kind":"module","text":"import { jsxs as n, jsx as a, Fragment as J } from \"react/jsx-runtime\";\nimport { useState as l, useId as M, useEffect as P } from \"react\";\nimport { useFormValidation as O } from \"../shared/formValidation.js\";\nimport { LearnerLessonBody as X } from \"../shared/lessonContent.js\";\nimport { Notice as Z } from \"./publicUi.js\";\nimport { publicErrorCopy as ee } from \"./publicState.js\";\nfunction se(o) {\n  const [E, Q] = l(o.notes ?? []), [u, z] = l(o.questions ?? []), [t, T] = l(o.review), w = u.filter((e) => e.reply).length, _ = u.length - w, i = E.find((e) => e.kind === \"note\" && e.lessonId === o.lessonId), m = E.some((e) => e.kind === \"bookmark\" && e.lessonId === o.lessonId && e.bookmarked !== !1), [G, C] = l({}), k = G[o.lessonId] ?? (i == null ? void 0 : i.body) ?? \"\", L = k !== ((i == null ? void 0 : i.body) ?? \"\"), [v, S] = l(\"\"), [g, R] = l(\"\"), [H, N] = l(() => crypto.randomUUID()), [f, D] = l(String((t == null ? void 0 : t.rating) ?? 5)), [h, Y] = l((t == null ? void 0 : t.body) ?? \"\"), [s, j] = l(\"\"), [W, q] = l(null), [x, p] = l(\"\"), [U, B] = l(\"\"), r = O(), b = M();\n  P(() => p(\"\"), [o.lessonId]);\n  const I = L || !!(v || g) || o.completed && (h !== ((t == null ? void 0 : t.body) ?? \"\") || f !== String((t == null ? void 0 : t.rating) ?? 5));\n  P(() => {\n    if (o.onDirty(I || !!s), !I) return;\n    const e = (d) => {\n      d.preventDefault(), d.returnValue = \"\";\n    };\n    return window.addEventListener(\"beforeunload\", e), () => window.removeEventListener(\"beforeunload\", e);\n  }, [I, s, o.onDirty]);\n  async function y(e, d, c) {\n    j(e), q(null);\n    try {\n      await d(), q({ tone: \"success\", title: e.startsWith(\"reload-\") ? \"Reloaded\" : \"Saved\", message: c });\n    } catch (K) {\n      const $ = K instanceof Error ? K.message : void 0, V = e === \"note\" && /changed|conflict/i.test($ ?? \"\"), A = e === \"review\" && /changed|conflict/i.test($ ?? \"\");\n      V && p(\"reload\"), A && B(\"reload\"), q(ee(V ? \"This note changed in another session.\" : A ? \"This review changed in another session.\" : $));\n    } finally {\n      j(\"\");\n    }\n  }\n  function F(e) {\n    Q((d) => [e, ...d.filter((c) => c.recordId !== e.recordId && !(c.lessonId === e.lessonId && c.kind === e.kind))]);\n  }\n  return /* @__PURE__ */ n(\"div\", { ref: r.ref, className: \"ca-learning-tools\", children: [\n    W ? /* @__PURE__ */ a(Z, { copy: W }) : null,\n    /* @__PURE__ */ n(\"details\", { className: \"ca-disclosure\", children: [\n      /* @__PURE__ */ n(\"summary\", { children: [\n        /* @__PURE__ */ a(\"span\", { children: \"Personal notes and bookmark\" }),\n        i != null && i.body || m ? /* @__PURE__ */ a(\"span\", { className: \"ca-tool-summary ca-muted\", children: [i != null && i.body ? \"Saved note\" : \"\", m ? \"Bookmarked\" : \"\"].filter(Boolean).join(\" · \") }) : null\n      ] }),\n      /* @__PURE__ */ n(\"div\", { className: \"ca-disclosure__body\", children: [\n        /* @__PURE__ */ a(\"p\", { className: \"ca-muted\", children: \"These notes are private to your account.\" }),\n        /* @__PURE__ */ n(\"label\", { className: \"ca-field\", children: [\n          /* @__PURE__ */ a(\"span\", { children: \"Lesson note\" }),\n          /* @__PURE__ */ a(\"textarea\", { \"aria-label\": \"Lesson note\", maxLength: 2e4, rows: 4, value: k, disabled: !!s, onChange: (e) => C((d) => ({ ...d, [o.lessonId]: e.target.value })) })\n        ] }),\n        /* @__PURE__ */ n(\"div\", { className: \"ca-public-actions\", children: [\n          /* @__PURE__ */ a(\"button\", { className: \"ca-button\", type: \"button\", disabled: !!s || !L || x === \"reload\", onClick: () => void y(\"note\", async () => {\n            F(await o.actions.saveNote(o.lessonId, k, (i == null ? void 0 : i.body) ?? \"\")), p(\"\");\n          }, \"Your private lesson note is saved.\"), children: \"Save note\" }),\n          /* @__PURE__ */ a(\"button\", { className: \"ca-button\", type: \"button\", disabled: !!s || !L, onClick: () => {\n            C((e) => ({ ...e, [o.lessonId]: (i == null ? void 0 : i.body) ?? \"\" })), p(\"\"), q({ tone: \"neutral\", title: \"Draft discarded\", message: \"Your unsaved note draft was discarded.\" });\n          }, children: \"Discard note changes\" }),\n          x ? /* @__PURE__ */ a(\"button\", { className: \"ca-button\", type: \"button\", disabled: !!s, onClick: () => void y(\"reload-notes\", async () => {\n            const e = await o.actions.reloadNotes();\n            C((d) => ({ ...d, [o.lessonId]: k })), Q(e), p(\"review\");\n          }, \"Saved notes reloaded. Your draft is kept; compare it with the latest saved note before saving or discarding.\"), children: \"Reload saved notes\" }) : null,\n          /* @__PURE__ */ a(\"button\", { className: \"ca-button\", type: \"button\", \"aria-pressed\": m, disabled: !!s, onClick: () => void y(\"bookmark\", async () => F(await o.actions.bookmark(o.lessonId, !m)), m ? \"Bookmark removed.\" : \"Lesson bookmarked.\"), children: m ? \"Remove bookmark\" : \"Bookmark lesson\" })\n        ] }),\n        x === \"review\" ? /* @__PURE__ */ n(\"div\", { className: \"ca-feedback-item\", children: [\n          /* @__PURE__ */ a(\"h4\", { children: \"Latest saved note\" }),\n          /* @__PURE__ */ a(\"p\", { children: (i == null ? void 0 : i.body) || \"No note has been saved for this lesson.\" })\n        ] }) : null\n      ] })\n    ] }),\n    /* @__PURE__ */ n(\"details\", { className: \"ca-disclosure\", children: [\n      /* @__PURE__ */ n(\"summary\", { children: [\n        /* @__PURE__ */ a(\"span\", { children: \"Ask your course team\" }),\n        u.length ? /* @__PURE__ */ a(\"span\", { className: \"ca-tool-summary ca-muted\", children: [w ? `${w.toLocaleString()} ${w === 1 ? \"reply\" : \"replies\"}` : \"\", _ ? `${_.toLocaleString()} waiting` : \"\"].filter(Boolean).join(\" · \") }) : null\n      ] }),\n      /* @__PURE__ */ n(\"div\", { className: \"ca-disclosure__body\", children: [\n        /* @__PURE__ */ a(\"p\", { className: \"ca-muted\", children: \"Your question and the team's reply appear here when you return to the course.\" }),\n        u.length ? /* @__PURE__ */ a(\"h4\", { children: \"Your recent questions\" }) : /* @__PURE__ */ a(\"p\", { className: \"ca-muted\", children: \"No questions sent yet.\" }),\n        u.map((e) => /* @__PURE__ */ n(\"article\", { className: \"ca-feedback-item\", children: [\n          /* @__PURE__ */ a(\"h4\", { children: e.title }),\n          /* @__PURE__ */ a(\"p\", { children: e.body }),\n          e.reply ? /* @__PURE__ */ n(\"div\", { children: [\n            /* @__PURE__ */ a(\"strong\", { children: \"Course team reply\" }),\n            /* @__PURE__ */ a(X, { body: e.reply, headingLevel: 5 })\n          ] }) : /* @__PURE__ */ a(\"p\", { className: \"ca-muted\", children: \"Waiting for the course team.\" })\n        ] }, e.questionId)),\n        u.length ? /* @__PURE__ */ a(\"h4\", { children: \"New question\" }) : null,\n        /* @__PURE__ */ n(\"label\", { className: \"ca-field\", children: [\n          /* @__PURE__ */ n(\"span\", { children: [\n            \"Question title \",\n            /* @__PURE__ */ a(\"span\", { className: \"ca-muted\", children: \"(required)\" })\n          ] }),\n          /* @__PURE__ */ a(\"input\", { \"aria-label\": \"Question title\", required: !0, \"aria-invalid\": r.errors.title ? !0 : void 0, \"aria-describedby\": r.errors.title ? `${b}-title` : void 0, maxLength: 200, value: v, disabled: !!s, onChange: (e) => {\n            S(e.target.value), N(crypto.randomUUID());\n          } }),\n          r.errors.title ? /* @__PURE__ */ a(\"span\", { id: `${b}-title`, className: \"ca-field-error\", children: r.errors.title }) : null\n        ] }),\n        /* @__PURE__ */ n(\"label\", { className: \"ca-field\", children: [\n          /* @__PURE__ */ n(\"span\", { children: [\n            \"Your question \",\n            /* @__PURE__ */ a(\"span\", { className: \"ca-muted\", children: \"(required)\" })\n          ] }),\n          /* @__PURE__ */ a(\"textarea\", { \"aria-label\": \"Your question\", required: !0, \"aria-invalid\": r.errors.question ? !0 : void 0, \"aria-describedby\": r.errors.question ? `${b}-question` : void 0, maxLength: 1e4, rows: 4, value: g, disabled: !!s, onChange: (e) => {\n            R(e.target.value), N(crypto.randomUUID());\n          } }),\n          r.errors.question ? /* @__PURE__ */ a(\"span\", { id: `${b}-question`, className: \"ca-field-error\", children: r.errors.question }) : null\n        ] }),\n        /* @__PURE__ */ n(\"div\", { className: \"ca-public-actions\", children: [\n          /* @__PURE__ */ a(\"button\", { className: \"ca-button ca-button-primary\", type: \"button\", disabled: !!s, onClick: () => {\n            r.validate({ title: v.trim() ? \"\" : \"Enter a question title.\", question: g.trim() ? \"\" : \"Enter your question for the course team.\" }) && y(\"question\", async () => {\n              const e = await o.actions.ask(v.trim(), g.trim(), H);\n              z((d) => [e, ...d.filter((c) => c.questionId !== e.questionId)]), S(\"\"), R(\"\"), N(crypto.randomUUID());\n            }, \"Question sent. Your course team can now respond.\");\n          }, children: \"Send question\" }),\n          /* @__PURE__ */ a(\"button\", { className: \"ca-button\", type: \"button\", disabled: !!s || !(v || g), onClick: () => {\n            S(\"\"), R(\"\"), N(crypto.randomUUID()), r.validate({});\n          }, children: \"Discard question\" })\n        ] })\n      ] })\n    ] }),\n    o.completed ? /* @__PURE__ */ n(\"details\", { className: \"ca-disclosure\", children: [\n      /* @__PURE__ */ a(\"summary\", { children: \"Review this course\" }),\n      /* @__PURE__ */ n(\"div\", { className: \"ca-disclosure__body\", children: [\n        /* @__PURE__ */ a(\"p\", { className: \"ca-muted\", children: \"Reviews appear anonymously on the course page after the site team approves them.\" }),\n        t ? /* @__PURE__ */ a(\"p\", { role: \"status\", children: t.status === \"approved\" ? \"Your review is published.\" : t.status === \"rejected\" ? \"The site team declined this review. You can revise it and submit again.\" : \"Your review is awaiting approval.\" }) : null,\n        /* @__PURE__ */ n(\"label\", { className: \"ca-field\", children: [\n          /* @__PURE__ */ a(\"span\", { children: \"Course rating\" }),\n          /* @__PURE__ */ a(\"select\", { \"aria-label\": \"Course rating\", value: f, disabled: !!s, onChange: (e) => D(e.target.value), children: [5, 4, 3, 2, 1].map((e) => /* @__PURE__ */ n(\"option\", { value: e, children: [\n            e,\n            \" of 5\"\n          ] }, e)) })\n        ] }),\n        /* @__PURE__ */ n(\"label\", { className: \"ca-field\", children: [\n          /* @__PURE__ */ n(\"span\", { children: [\n            \"Your review \",\n            /* @__PURE__ */ a(\"span\", { className: \"ca-muted\", children: \"(required)\" })\n          ] }),\n          /* @__PURE__ */ a(\"textarea\", { \"aria-label\": \"Your review\", required: !0, \"aria-invalid\": r.errors.review ? !0 : void 0, \"aria-describedby\": r.errors.review ? `${b}-review` : void 0, maxLength: 5e3, rows: 4, value: h, disabled: !!s, onChange: (e) => Y(e.target.value) }),\n          r.errors.review ? /* @__PURE__ */ a(\"span\", { id: `${b}-review`, className: \"ca-field-error\", children: r.errors.review }) : null\n        ] }),\n        /* @__PURE__ */ n(\"div\", { className: \"ca-public-actions\", children: [\n          /* @__PURE__ */ a(\"button\", { className: \"ca-button\", type: \"button\", disabled: !!s || U === \"reload\" || h === (t == null ? void 0 : t.body) && f === String(t.rating), onClick: () => {\n            r.validate({ review: h.trim() ? \"\" : \"Write a review before submitting it.\" }) && y(\"review\", async () => {\n              const e = await o.actions.review(Number(f), h.trim(), t ? { rating: t.rating, body: t.body } : null);\n              T(e), Y(e.body), D(String(e.rating)), B(\"\");\n            }, \"Review submitted for approval.\");\n          }, children: \"Submit review\" }),\n          /* @__PURE__ */ a(\"button\", { className: \"ca-button\", type: \"button\", disabled: !!s || h === ((t == null ? void 0 : t.body) ?? \"\") && f === String((t == null ? void 0 : t.rating) ?? 5), onClick: () => {\n            Y((t == null ? void 0 : t.body) ?? \"\"), D(String((t == null ? void 0 : t.rating) ?? 5)), B(\"\"), r.validate({});\n          }, children: \"Discard review changes\" }),\n          U ? /* @__PURE__ */ a(\"button\", { className: \"ca-button\", type: \"button\", disabled: !!s, onClick: () => void y(\"reload-review\", async () => {\n            T(await o.actions.reloadReview()), B(\"review\");\n          }, \"Saved review reloaded. Your draft is kept; compare it with the latest saved review before submitting or discarding.\"), children: \"Reload saved review\" }) : null\n        ] }),\n        U === \"review\" ? /* @__PURE__ */ n(\"div\", { className: \"ca-feedback-item\", children: [\n          /* @__PURE__ */ a(\"h4\", { children: \"Latest saved review\" }),\n          t ? /* @__PURE__ */ n(J, { children: [\n            /* @__PURE__ */ n(\"strong\", { children: [\n              t.rating,\n              \" of 5\"\n            ] }),\n            /* @__PURE__ */ a(\"p\", { children: t.body })\n          ] }) : /* @__PURE__ */ a(\"p\", { children: \"No review has been saved for this course.\" })\n        ] }) : null\n      ] })\n    ] }) : null,\n    I ? /* @__PURE__ */ a(\"p\", { className: \"ca-muted\", role: \"status\", children: \"Save or discard your changes before leaving this lesson.\" }) : null\n  ] });\n}\nexport {\n  se as LearningTools\n};\n","imports":[{"dynamic":false,"end":69,"specifier":"react/jsx-runtime","start":52},{"dynamic":false,"end":136,"specifier":"react","start":131},{"dynamic":false,"end":206,"specifier":"../shared/formValidation.js","start":179},{"dynamic":false,"end":275,"specifier":"../shared/lessonContent.js","start":249},{"dynamic":false,"end":320,"specifier":"./publicUi.js","start":307},{"dynamic":false,"end":378,"specifier":"./publicState.js","start":362}],"hasUnsupportedDynamicImports":false},{"path":"workspace/react/dist/web/openCourse.js","kind":"module","text":"import { jsx as e, jsxs as l } from \"react/jsx-runtime\";\nimport { useState as u, useRef as y, useId as I, useEffect as w } from \"react\";\nimport { LearnerLessonBody as N } from \"../shared/lessonContent.js\";\nimport { Notice as v, LessonOutline as x } from \"./publicUi.js\";\nfunction E({ course: L, curriculum: o }) {\n  const t = ((o == null ? void 0 : o.sections) ?? []).flatMap((n) => n.lessons ?? []), r = () => typeof window > \"u\" ? \"\" : new URLSearchParams(window.location.search).get(\"lesson\") ?? \"\", [b, h] = u(r), p = y(null), m = I(), a = Math.max(0, t.findIndex((n) => n.lessonId === b)), d = t[a];\n  w(() => {\n    const n = () => h(r());\n    return window.addEventListener(\"popstate\", n), () => window.removeEventListener(\"popstate\", n);\n  }, []);\n  function c(n) {\n    const i = new URL(window.location.href);\n    i.searchParams.set(\"lesson\", n), window.history.pushState({}, \"\", i), h(n), requestAnimationFrame(() => {\n      var s;\n      return (s = p.current) == null ? void 0 : s.focus();\n    });\n  }\n  return d ? /* @__PURE__ */ l(\"div\", { className: \"ca-open-course ca-player-layout\", children: [\n    /* @__PURE__ */ e(x, { children: /* @__PURE__ */ e(\"aside\", { className: \"ca-open-outline\", children: /* @__PURE__ */ e(\"nav\", { className: \"ca-player-nav\", \"aria-label\": \"Course lessons\", children: ((o == null ? void 0 : o.sections) ?? []).map((n, i) => /* @__PURE__ */ l(\"section\", { children: [\n      /* @__PURE__ */ e(\"h3\", { children: n.title }),\n      /* @__PURE__ */ e(\"ol\", { children: (n.lessons ?? []).map((s) => /* @__PURE__ */ e(\"li\", { children: /* @__PURE__ */ l(\n        \"button\",\n        {\n          type: \"button\",\n          className: \"ca-player-lesson\",\n          \"aria-current\": s.lessonId === d.lessonId ? \"step\" : void 0,\n          onClick: () => c(s.lessonId),\n          children: [\n            /* @__PURE__ */ e(\"span\", { className: \"ca-open-lesson-number\", \"aria-hidden\": \"true\", children: String(t.findIndex((f) => f.lessonId === s.lessonId) + 1).padStart(2, \"0\") }),\n            /* @__PURE__ */ e(\"span\", { className: \"ca-open-lesson-name\", children: s.title })\n          ]\n        }\n      ) }, s.lessonId)) })\n    ] }, n.sectionId ?? i)) }) }) }),\n    /* @__PURE__ */ l(\"article\", { className: \"ca-card ca-lesson\", \"aria-labelledby\": m, children: [\n      /* @__PURE__ */ l(\"span\", { className: \"ca-kicker\", children: [\n        \"Lesson \",\n        a + 1,\n        \" of \",\n        t.length\n      ] }),\n      /* @__PURE__ */ e(\"h3\", { id: m, ref: p, tabIndex: -1, children: d.title }),\n      d.body ? /* @__PURE__ */ e(N, { body: d.body }) : /* @__PURE__ */ e(\"p\", { children: \"This lesson does not include readable text content.\" }),\n      /* @__PURE__ */ l(\"div\", { className: \"ca-public-actions\", children: [\n        a > 0 ? /* @__PURE__ */ e(\"button\", { type: \"button\", className: \"ca-button\", onClick: () => c(t[a - 1].lessonId), children: \"Previous lesson\" }) : null,\n        a < t.length - 1 ? /* @__PURE__ */ e(\"button\", { type: \"button\", className: \"ca-button ca-button-primary\", onClick: () => c(t[a + 1].lessonId), children: \"Next lesson\" }) : null\n      ] })\n    ] })\n  ] }) : /* @__PURE__ */ e(v, { copy: { tone: \"neutral\", title: \"No lessons available\", message: \"The course curriculum has not been published yet.\" } });\n}\nexport {\n  E as OpenCourseView\n};\n","imports":[{"dynamic":false,"end":54,"specifier":"react/jsx-runtime","start":37},{"dynamic":false,"end":134,"specifier":"react","start":129},{"dynamic":false,"end":203,"specifier":"../shared/lessonContent.js","start":177},{"dynamic":false,"end":268,"specifier":"./publicUi.js","start":255}],"hasUnsupportedDynamicImports":false},{"path":"workspace/react/dist/web/publicState.js","kind":"module","text":"function c(t) {\n  var e;\n  return ((e = t.pricing) == null ? void 0 : e.type) === \"free\" && t.pricing.amountCents === 0;\n}\nfunction s(t) {\n  var e;\n  return ((e = t.pricing) == null ? void 0 : e.type) === \"one_time\" && (t.pricing.amountCents ?? 0) > 0;\n}\nfunction u(t) {\n  var e;\n  return t.enrollmentStatus === \"closed\" ? {\n    ready: !1,\n    message: \"New enrollment is currently closed. Existing learners can continue from My Learning.\"\n  } : c(t) ? { ready: !0, message: \"Sign in with Cedros Login to enroll for free and start learning.\" } : s(t) && ((e = t.payProductRef) != null && e.trim()) ? {\n    ready: !1,\n    message: \"Paid enrollment is not available yet. Contact the course team for access.\"\n  } : s(t) ? {\n    ready: !1,\n    message: \"Paid enrollment is not available yet. Contact the course team for access.\"\n  } : {\n    ready: !1,\n    message: \"Enrollment is temporarily unavailable. Contact the course team for help.\"\n  };\n}\nfunction m(t) {\n  switch ((t ?? \"\").toLowerCase()) {\n    case \"active\":\n    case \"completed\":\n      return {\n        canOpen: !0,\n        tone: \"success\",\n        title: \"Access active\",\n        message: \"Cedros Login identity and current access state allow this course.\"\n      };\n    case \"pending_payment\":\n    case \"payment_pending\":\n    case \"checkout_pending\":\n      return {\n        canOpen: !1,\n        tone: \"warning\",\n        title: \"Payment pending\",\n        message: \"Cedros Pay has not confirmed the checkout or entitlement yet.\"\n      };\n    case \"payment_failed\":\n    case \"failed\":\n    case \"cancelled\":\n    case \"expired_checkout\":\n      return {\n        canOpen: !1,\n        tone: \"error\",\n        title: \"Payment failed\",\n        message: \"Start checkout again from the course page when the payment method is ready.\"\n      };\n    case \"refunded\":\n    case \"refund_settled\":\n      return {\n        canOpen: !1,\n        tone: \"warning\",\n        title: \"Access refunded\",\n        message: \"The Pay entitlement was revoked after refund settlement.\"\n      };\n    case \"disputed\":\n    case \"chargeback\":\n    case \"chargeback_opened\":\n      return {\n        canOpen: !1,\n        tone: \"error\",\n        title: \"Access under review\",\n        message: \"Cedros Pay marked this purchase disputed, so Academy access is locked.\"\n      };\n    case \"revoked\":\n    case \"expired\":\n    case \"past_due\":\n      return {\n        canOpen: !1,\n        tone: \"warning\",\n        title: \"Access locked\",\n        message: \"This enrollment is not currently active.\"\n      };\n    default:\n      return {\n        canOpen: !1,\n        tone: \"neutral\",\n        title: \"Access unavailable\",\n        message: \"Your course access could not be confirmed. Try again or contact the course team.\"\n      };\n  }\n}\nfunction g(t) {\n  const n = (t ?? \"Academy data is unavailable.\").toLowerCase();\n  return n.includes(\"note changed in another session\") ? {\n    tone: \"warning\",\n    title: \"Note changed in another session\",\n    message: \"Your draft is kept. Reload saved notes, compare the latest note, then save your draft or discard your changes.\"\n  } : n.includes(\"review changed in another session\") ? {\n    tone: \"warning\",\n    title: \"Review changed in another session\",\n    message: \"Your draft is kept. Reload the saved review, compare it with your draft, then submit or discard your changes.\"\n  } : n.includes(\"slug is required\") || n.includes(\"enrollment id is required\") ? d(\"block\") : n.includes(\"sign in\") || n.includes(\"authentication\") || n.includes(\"cedros login account\") ? {\n    tone: \"warning\",\n    title: \"Sign in required\",\n    message: \"Use Cedros Login to continue.\",\n    action: { href: \"/login\", label: \"Sign in with Cedros Login\" }\n  } : n.includes(\"pay\") || n.includes(\"checkout\") || n.includes(\"entitlement\") ? {\n    tone: \"warning\",\n    title: \"Payment access unavailable\",\n    message: \"Cedros Pay could not confirm checkout or entitlement state. Access remains locked.\"\n  } : n.includes(\"reactivation\") || n.includes(\"administrator must review\") ? {\n    tone: \"warning\",\n    title: \"Enrollment needs review\",\n    message: \"This course already has an inactive access record. Contact the site team to review and reactivate it.\"\n  } : n.includes(\"permission\") || n.includes(\"forbidden\") ? {\n    tone: \"error\",\n    title: \"Permission denied\",\n    message: \"This account does not have access to that Academy record.\"\n  } : n.includes(\"not found\") ? {\n    tone: \"warning\",\n    title: \"Academy record not found\",\n    message: \"The requested Academy item is not available on this site.\"\n  } : {\n    tone: \"error\",\n    title: \"Academy unavailable\",\n    message: \"Academy data is unavailable right now. Try again or contact the site owner.\"\n  };\n}\nfunction p(t) {\n  return t.map((e, n) => ({ enrollment: e, index: n })).sort((e, n) => {\n    const r = i(e.enrollment.status) - i(n.enrollment.status);\n    if (r) return r;\n    if (e.enrollment.status === \"active\" && n.enrollment.status === \"active\") {\n      const a = +((n.enrollment.progressPercent ?? 0) > 0) - +((e.enrollment.progressPercent ?? 0) > 0);\n      if (a) return a;\n    }\n    return o(n.enrollment.updatedAt) - o(e.enrollment.updatedAt) || e.index - n.index;\n  }).map(({ enrollment: e }) => e);\n}\nfunction i(t) {\n  const e = t.toLowerCase();\n  return e === \"active\" ? 0 : [\n    \"pending_payment\",\n    \"payment_pending\",\n    \"checkout_pending\",\n    \"payment_failed\",\n    \"failed\",\n    \"cancelled\",\n    \"expired_checkout\",\n    \"disputed\",\n    \"chargeback\",\n    \"chargeback_opened\"\n  ].includes(e) ? 1 : e === \"completed\" ? 2 : 3;\n}\nfunction o(t) {\n  if (!t) return 0;\n  const e = Number(t);\n  if (Number.isFinite(e)) return e * 1e3;\n  const n = Date.parse(t);\n  return Number.isNaN(n) ? 0 : n;\n}\nfunction d(t) {\n  return {\n    tone: \"warning\",\n    title: t === \"course\" ? \"Course block needs setup\" : \"Academy block needs setup\",\n    message: \"The site owner needs to connect this block to a published Academy record before visitors can use it.\"\n  };\n}\nexport {\n  u as coursePayReadiness,\n  m as enrollmentAccessCopy,\n  c as isFreeCourse,\n  s as isPaidCourse,\n  p as prioritizeLearning,\n  g as publicErrorCopy,\n  d as publicSetupCopy\n};\n","imports":[],"hasUnsupportedDynamicImports":false},{"path":"workspace/react/dist/web/publicUi.js","kind":"module","text":"import { jsxs as n, jsx as a, Fragment as y } from \"react/jsx-runtime\";\nimport { useRef as p, useEffect as C, useState as x } from \"react\";\nimport { CourseArtwork as w } from \"../shared/courseArtwork.js\";\nimport { hasOpenLessons as I } from \"../shared/courseAccess.js\";\nimport { courseCatalogUrl as b } from \"../shared/links.js\";\nimport { focusViewHeading as k, Status as L, Money as A } from \"../shared/ui.js\";\nimport { publicErrorCopy as O, prioritizeLearning as $, enrollmentAccessCopy as g } from \"./publicState.js\";\nfunction q(e) {\n  const t = p(null);\n  return C(() => {\n    const l = t.current, c = l == null ? void 0 : l.parentElement, s = c && l ? Array.from(c.children).indexOf(l) : -1;\n    return k((l == null ? void 0 : l.querySelector(\"h2\")) ?? null), () => {\n      const i = c == null ? void 0 : c.children[s];\n      i instanceof HTMLElement && i.matches(\".cedros-academy\") && k(i.querySelector(\"h2\"));\n    };\n  }, []), /* @__PURE__ */ a(\"div\", { ref: t, className: \"cedros-academy ca-public-stack\", children: e.children });\n}\nfunction F(e) {\n  return /* @__PURE__ */ n(\"section\", { className: [\"cedros-academy\", \"ca-public\", \"ca-public-shell\", e.className].filter(Boolean).join(\" \"), children: [\n    /* @__PURE__ */ n(\"header\", { className: \"ca-public-head\", children: [\n      e.eyebrow ? /* @__PURE__ */ a(\"span\", { className: \"ca-kicker\", children: e.eyebrow }) : null,\n      /* @__PURE__ */ a(\"h2\", { className: e.title.length > 160 ? \"ca-long-identity\" : void 0, children: e.title }),\n      e.title.length > 160 ? /* @__PURE__ */ n(\"details\", { className: \"ca-full-copy\", children: [\n        /* @__PURE__ */ a(\"summary\", { children: \"Full title\" }),\n        /* @__PURE__ */ a(\"p\", { children: e.title })\n      ] }) : null,\n      e.descriptionDisclosure && e.description ? /* @__PURE__ */ n(\"details\", { className: \"ca-full-copy ca-course-overview\", children: [\n        /* @__PURE__ */ a(\"summary\", { children: \"Course overview\" }),\n        /* @__PURE__ */ a(\"p\", { children: e.description })\n      ] }) : e.description.length > 360 ? /* @__PURE__ */ n(\"div\", { className: \"ca-description-preview\", children: [\n        /* @__PURE__ */ n(\"p\", { children: [\n          e.description.slice(0, 320).replace(/\\s+\\S*$/, \"\"),\n          \"…\"\n        ] }),\n        /* @__PURE__ */ n(\"details\", { className: \"ca-full-copy\", children: [\n          /* @__PURE__ */ a(\"summary\", { children: \"Read full overview\" }),\n          /* @__PURE__ */ a(\"p\", { children: e.description })\n        ] })\n      ] }) : e.description ? /* @__PURE__ */ a(\"p\", { children: e.description }) : null\n    ] }),\n    e.children\n  ] });\n}\nfunction G(e) {\n  return e.state.loading ? /* @__PURE__ */ a(R, { title: e.loadingTitle ?? \"Loading Academy data\", layout: e.loadingLayout }) : e.state.error ? /* @__PURE__ */ n(\"div\", { className: \"ca-inline-stack\", children: [\n    /* @__PURE__ */ a(v, { copy: O(e.state.error) }),\n    e.state.retry ? /* @__PURE__ */ a(\"button\", { className: \"ca-button\", type: \"button\", onClick: e.state.retry, children: \"Retry\" }) : null\n  ] }) : !e.state.data || e.empty ? /* @__PURE__ */ a(\n    v,\n    {\n      copy: {\n        tone: \"neutral\",\n        title: e.emptyTitle ?? \"No Academy data\",\n        message: e.emptyMessage ?? \"There is no public Academy content to show yet.\",\n        action: e.emptyAction\n      }\n    }\n  ) : e.children(e.state.data);\n}\nfunction v({ copy: e }) {\n  return /* @__PURE__ */ n(\"div\", { className: `ca-notice ca-notice--${e.tone}`, role: e.tone === \"error\" ? \"alert\" : \"status\", children: [\n    /* @__PURE__ */ n(\"div\", { children: [\n      /* @__PURE__ */ a(\"strong\", { children: e.title }),\n      /* @__PURE__ */ a(\"p\", { children: e.message })\n    ] }),\n    e.action ? /* @__PURE__ */ a(\"a\", { className: \"ca-button\", href: e.action.href, children: e.action.label }) : null\n  ] });\n}\nfunction H(e) {\n  return e.offset === 0 && !e.hasMore ? /* @__PURE__ */ a(y, {}) : /* @__PURE__ */ n(\"div\", { className: \"ca-public-actions\", \"aria-label\": `${e.label} pagination`, children: [\n    /* @__PURE__ */ a(\"button\", { className: \"ca-button\", disabled: e.offset === 0, type: \"button\", onClick: () => e.onChange(Math.max(0, e.offset - e.pageSize)), children: \"Previous\" }),\n    /* @__PURE__ */ n(\"span\", { className: \"ca-muted\", children: [\n      \"Page \",\n      Math.floor(e.offset / e.pageSize) + 1\n    ] }),\n    /* @__PURE__ */ a(\"button\", { className: \"ca-button\", disabled: !e.hasMore, type: \"button\", onClick: () => e.onChange(e.offset + e.pageSize), children: \"Next\" })\n  ] });\n}\nfunction U({ course: e }) {\n  var t, l;\n  return /* @__PURE__ */ n(\"dl\", { className: \"ca-meta-list\", children: [\n    I(e) ? null : /* @__PURE__ */ n(\"div\", { children: [\n      /* @__PURE__ */ a(\"dt\", { children: \"Price\" }),\n      /* @__PURE__ */ a(\"dd\", { children: /* @__PURE__ */ a(A, { amountCents: (t = e.pricing) == null ? void 0 : t.amountCents, currency: (l = e.pricing) == null ? void 0 : l.currency }) })\n    ] }),\n    /* @__PURE__ */ n(\"div\", { children: [\n      /* @__PURE__ */ a(\"dt\", { children: \"Level\" }),\n      /* @__PURE__ */ a(\"dd\", { children: M(e.level) })\n    ] }),\n    /* @__PURE__ */ n(\"div\", { children: [\n      /* @__PURE__ */ a(\"dt\", { children: \"Language\" }),\n      /* @__PURE__ */ a(\"dd\", { children: P(e.language) })\n    ] })\n  ] });\n}\nfunction M(e) {\n  return !e || e === \"all\" ? \"All levels\" : e.charAt(0).toUpperCase() + e.slice(1);\n}\nfunction P(e) {\n  const t = (e == null ? void 0 : e.trim()) || \"en\";\n  try {\n    return new Intl.DisplayNames([\"en\"], { type: \"language\" }).of(t) || t;\n  } catch {\n    return t;\n  }\n}\nfunction W({ instructors: e }) {\n  return e.length === 0 ? /* @__PURE__ */ a(y, {}) : /* @__PURE__ */ n(\"div\", { className: \"ca-instructor-list\", children: [\n    /* @__PURE__ */ a(\"h3\", { children: e.length === 1 ? \"Instructor\" : \"Instructors\" }),\n    e.map((t) => /* @__PURE__ */ n(\"section\", { className: \"ca-instructor-summary\", children: [\n      /* @__PURE__ */ a(\"h4\", { children: t.displayName || \"Academy instructor\" }),\n      t.bio ? /* @__PURE__ */ a(\"p\", { className: \"ca-muted\", children: t.bio }) : null\n    ] }, t.instructorId))\n  ] });\n}\nfunction S({ value: e }) {\n  const t = Math.max(0, Math.min(100, e));\n  return /* @__PURE__ */ n(\"div\", { className: \"ca-progress\", \"aria-label\": `${t}% complete`, \"aria-valuemax\": 100, \"aria-valuemin\": 0, \"aria-valuenow\": t, role: \"progressbar\", children: [\n    /* @__PURE__ */ a(\"span\", { style: { width: `${t}%` } }),\n    /* @__PURE__ */ a(\"strong\", { children: /* @__PURE__ */ n(\"span\", { className: \"ca-swap\", children: [\n      t,\n      \"% complete\"\n    ] }, t) })\n  ] });\n}\nfunction J({ state: e }) {\n  return /* @__PURE__ */ a(\"span\", { className: \"ca-progress-mark\", \"aria-hidden\": \"true\", children: e === \"busy\" ? /* @__PURE__ */ a(\"span\", { className: \"ca-spinner\" }) : /* @__PURE__ */ a(\"svg\", { className: \"ca-check\", viewBox: \"0 0 16 16\", fill: \"none\", stroke: \"currentColor\", strokeWidth: \"2\", strokeLinecap: \"round\", strokeLinejoin: \"round\", children: /* @__PURE__ */ a(\"path\", { d: \"M3 8.5 6.5 12 13 4.5\" }) }) });\n}\nfunction R({ title: e, layout: t = \"courses\" }) {\n  const l = /* @__PURE__ */ n(y, { children: [\n    /* @__PURE__ */ a(\"span\", { className: \"ca-skeleton ca-skeleton--title\" }),\n    /* @__PURE__ */ a(\"span\", { className: \"ca-skeleton ca-skeleton--line\" }),\n    /* @__PURE__ */ a(\"span\", { className: \"ca-skeleton ca-skeleton--line ca-skeleton--short\" })\n  ] });\n  return t === \"reading\" ? /* @__PURE__ */ a(\"div\", { className: \"ca-card ca-player ca-loading-reader\", role: \"status\", \"aria-label\": e, children: /* @__PURE__ */ n(\"div\", { className: \"ca-player-layout\", \"aria-hidden\": \"true\", children: [\n    /* @__PURE__ */ a(\"div\", { className: \"ca-loading-outline\", children: l }),\n    /* @__PURE__ */ n(\"div\", { className: \"ca-inline-stack\", children: [\n      l,\n      l\n    ] })\n  ] }) }) : t === \"learning\" ? /* @__PURE__ */ n(\"div\", { className: \"ca-learning-list\", role: \"status\", \"aria-label\": e, children: [\n    /* @__PURE__ */ a(\"span\", { className: \"ca-skeleton ca-skeleton--title\", \"aria-hidden\": \"true\" }),\n    [0, 1, 2].map((c) => /* @__PURE__ */ n(\"div\", { className: \"ca-enrollment-row\", \"aria-hidden\": \"true\", children: [\n      /* @__PURE__ */ a(\"span\", { className: \"ca-course-artwork ca-skeleton\" }),\n      /* @__PURE__ */ a(\"div\", { className: \"ca-enrollment-content\", children: l })\n    ] }, c))\n  ] }) : t === \"detail\" ? /* @__PURE__ */ n(\"div\", { className: \"ca-course-layout\", role: \"status\", \"aria-label\": e, children: [\n    /* @__PURE__ */ n(\"div\", { className: \"ca-course-primary\", \"aria-hidden\": \"true\", children: [\n      l,\n      l\n    ] }),\n    /* @__PURE__ */ n(\"div\", { className: \"ca-card ca-course-secondary\", \"aria-hidden\": \"true\", children: [\n      l,\n      /* @__PURE__ */ a(\"span\", { className: \"ca-skeleton ca-skeleton--line\" })\n    ] })\n  ] }) : t === \"form\" ? /* @__PURE__ */ a(\"div\", { className: \"ca-card ca-inline-stack ca-loading-form\", role: \"status\", \"aria-label\": e, children: /* @__PURE__ */ n(\"div\", { className: \"ca-inline-stack\", \"aria-hidden\": \"true\", children: [\n    l,\n    [0, 1, 2].map((c) => /* @__PURE__ */ a(\"span\", { className: \"ca-skeleton ca-skeleton--field\" }, c))\n  ] }) }) : /* @__PURE__ */ a(\"div\", { className: \"ca-card-grid ca-skeleton-grid\", role: \"status\", \"aria-label\": e, children: [0, 1, 2].map((c) => /* @__PURE__ */ n(\"div\", { className: \"ca-card ca-skeleton-card\", \"aria-hidden\": \"true\", children: [\n    /* @__PURE__ */ a(\"span\", { className: \"ca-skeleton ca-skeleton--media\" }),\n    /* @__PURE__ */ a(\"span\", { className: \"ca-skeleton ca-skeleton--title\" }),\n    /* @__PURE__ */ a(\"span\", { className: \"ca-skeleton ca-skeleton--line\" }),\n    /* @__PURE__ */ a(\"span\", { className: \"ca-skeleton ca-skeleton--line ca-skeleton--short\" })\n  ] }, c)) });\n}\nfunction K({ courses: e, compact: t = !1, onSelect: l }) {\n  return /* @__PURE__ */ a(\"div\", { className: t ? \"ca-card-grid ca-card-grid--compact\" : \"ca-card-grid\", children: e.map((c) => {\n    var s, i;\n    return /* @__PURE__ */ n(\"article\", { className: \"ca-card ca-course-card ca-discovery-card\", children: [\n      /* @__PURE__ */ a(w, { course: c }),\n      c.category && c.category !== \"general\" ? /* @__PURE__ */ a(\"span\", { className: \"ca-muted ca-course-category\", children: c.category }) : null,\n      /* @__PURE__ */ n(\"div\", { className: \"ca-card-header\", children: [\n        /* @__PURE__ */ a(\"h3\", { title: c.title, children: /* @__PURE__ */ a(\"a\", { className: \"ca-course-title-link\", href: b(c.slug || c.courseId), onClick: l ? (r) => {\n          r.preventDefault(), l(c);\n        } : void 0, children: c.title }) }),\n        c.enrollmentStatus === \"closed\" ? /* @__PURE__ */ a(L, { value: \"closed\" }) : null\n      ] }),\n      /* @__PURE__ */ a(\"p\", { className: \"ca-muted\", children: c.description ?? c.subtitle ?? \"Course details are being prepared.\" }),\n      /* @__PURE__ */ n(\"p\", { className: \"ca-course-summary\", children: [\n        /* @__PURE__ */ a(\"span\", { children: I(c) ? \"Open lessons\" : /* @__PURE__ */ a(A, { amountCents: (s = c.pricing) == null ? void 0 : s.amountCents, currency: (i = c.pricing) == null ? void 0 : i.currency }) }),\n        /* @__PURE__ */ a(\"span\", { children: M(c.level) }),\n        c.lessonCount ? /* @__PURE__ */ n(\"span\", { children: [\n          c.lessonCount.toLocaleString(),\n          \" \",\n          c.lessonCount === 1 ? \"lesson\" : \"lessons\"\n        ] }) : null,\n        /* @__PURE__ */ a(\"span\", { children: P(c.language) })\n      ] }),\n      /* @__PURE__ */ a(\"div\", { className: \"ca-public-actions\", children: /* @__PURE__ */ n(\n        \"a\",\n        {\n          className: \"ca-course-detail-link\",\n          href: b(c.slug || c.courseId),\n          onClick: l ? (r) => {\n            r.preventDefault(), l(c);\n          } : void 0,\n          children: [\n            \"View course \",\n            /* @__PURE__ */ a(\"span\", { \"aria-hidden\": \"true\", children: \"→\" })\n          ]\n        }\n      ) })\n    ] }, c.courseId);\n  }) });\n}\nfunction Q(e) {\n  var s;\n  const t = $(e.enrollments), l = [\n    { title: \"Continue learning\", rows: t.filter((i) => i.status !== \"completed\" && g(i.status).canOpen) },\n    { title: \"Completed courses\", rows: t.filter((i) => i.status === \"completed\") },\n    { title: \"Access needs attention\", rows: t.filter((i) => i.status !== \"completed\" && !g(i.status).canOpen) }\n  ], c = (s = l[1].rows.find((i) => e.certificates.some((r) => r.courseId === i.courseId))) == null ? void 0 : s.courseId;\n  return /* @__PURE__ */ a(\"div\", { className: \"ca-learning-list\", children: l.filter((i) => i.rows.length).map((i) => /* @__PURE__ */ n(\"section\", { className: \"ca-learning-group\", children: [\n    /* @__PURE__ */ a(\"h3\", { children: i.title }),\n    i.rows.map((r, m) => {\n      const d = e.courses.find((u) => u.courseId === r.courseId), h = e.certificates.filter((u) => u.courseId === r.courseId), o = h.find((u) => u.status === \"issued\") ?? h[0], f = g(r.status), N = r.status === \"completed\";\n      return /* @__PURE__ */ n(\"article\", { className: \"ca-enrollment-row\", children: [\n        /* @__PURE__ */ a(w, { course: d ?? {} }),\n        /* @__PURE__ */ n(\"div\", { className: \"ca-enrollment-content\", children: [\n          /* @__PURE__ */ n(\"div\", { className: \"ca-card-header\", children: [\n            /* @__PURE__ */ a(\"h3\", { title: d == null ? void 0 : d.title, children: (d == null ? void 0 : d.title) ?? \"Academy course\" }),\n            f.canOpen ? null : /* @__PURE__ */ a(L, { value: r.status })\n          ] }),\n          N ? /* @__PURE__ */ a(\"p\", { className: \"ca-muted ca-learning-complete\", children: \"Completed\" }) : /* @__PURE__ */ a(S, { value: r.progressPercent ?? 0 }),\n          f.canOpen ? null : /* @__PURE__ */ a(v, { copy: f })\n        ] }),\n        /* @__PURE__ */ n(\"div\", { className: \"ca-public-actions ca-enrollment-actions\", children: [\n          o ? /* @__PURE__ */ a(\"button\", { className: `ca-button${N && l[0].rows.length === 0 && r.courseId === c ? \" ca-button-primary\" : \"\"}`, type: \"button\", onClick: () => e.onCertificateSelect(o.certificateId), children: \"View certificate\" }) : null,\n          f.canOpen ? /* @__PURE__ */ a(\"button\", { className: `ca-button${!N && m === 0 ? \" ca-button-primary\" : \"\"}`, type: \"button\", onClick: () => e.onSelect(r.enrollmentId), children: N ? \"Review course\" : \"Continue\" }) : null\n        ] })\n      ] }, r.enrollmentId);\n    })\n  ] }, i.title)) });\n}\nfunction X(e) {\n  const t = p(null), [l, c] = x(!0);\n  C(() => {\n    var d;\n    const i = (d = t.current) == null ? void 0 : d.closest(\".ca-public\");\n    if (!i) return;\n    let r;\n    const m = new ResizeObserver(([h]) => {\n      const o = h.contentRect.width < 680;\n      o !== r && (r = o, c(!o));\n    });\n    return m.observe(i), () => m.disconnect();\n  }, []);\n  const s = /* @__PURE__ */ n(\"details\", { ref: t, className: \"ca-lesson-outline\", open: l, onToggle: (i) => c(i.currentTarget.open), children: [\n    /* @__PURE__ */ a(\"summary\", { children: \"Course lessons\" }),\n    e.children\n  ] });\n  return e.progress === void 0 ? s : /* @__PURE__ */ n(\"div\", { className: \"ca-outline-context\", children: [\n    /* @__PURE__ */ a(S, { value: e.progress }),\n    s\n  ] });\n}\nexport {\n  K as CourseGrid,\n  U as CourseMeta,\n  Q as EnrollmentGrid,\n  W as InstructorList,\n  X as LessonOutline,\n  v as Notice,\n  S as Progress,\n  J as ProgressMark,\n  H as PublicPageControls,\n  F as PublicShell,\n  q as PublicStack,\n  G as PublicStateBlock\n};\n","imports":[{"dynamic":false,"end":69,"specifier":"react/jsx-runtime","start":52},{"dynamic":false,"end":137,"specifier":"react","start":132},{"dynamic":false,"end":202,"specifier":"../shared/courseArtwork.js","start":176},{"dynamic":false,"end":267,"specifier":"../shared/courseAccess.js","start":242},{"dynamic":false,"end":327,"specifier":"../shared/links.js","start":309},{"dynamic":false,"end":409,"specifier":"../shared/ui.js","start":394},{"dynamic":false,"end":518,"specifier":"./publicState.js","start":502}],"hasUnsupportedDynamicImports":false},{"path":"workspace/react/dist/web/register.js","kind":"module","text":"import { createElement as u } from \"react\";\nimport { extensionBootstrap as y } from \"../bootstrap.js\";\nimport { generatedContentTemplates as l } from \"../generated-templates.js\";\nimport { extensionManifest as p } from \"../manifest.js\";\nimport { ensureAcademyStyles as f } from \"../shared/styles.js\";\nimport { CertificateVerificationBlock as o, CoursePlayerBlock as c, StudentDashboardBlock as t, InstructorProfileBlock as a, CourseLandingBlock as s, FeaturedCoursesBlock as d, CourseCatalogBlock as n } from \"./blocks.js\";\nimport { CourseSubmissionBlock as i } from \"./courseSubmission.js\";\nconst B = {\n  \"cedros-academy:course-catalog\": n,\n  \"cedros-academy:featured-courses\": d,\n  \"cedros-academy:course-landing\": s,\n  \"cedros-academy:instructor-profile\": a,\n  \"cedros-academy:student-dashboard\": t,\n  \"cedros-academy:course-player\": c,\n  \"cedros-academy:certificate-verification\": o,\n  \"cedros-academy:course-submission\": i\n}, k = (p.contentBlocks ?? []).map((r) => ({\n  ...r,\n  Component: B[r.type]\n})), C = [\n  { type: \"cedros-academy:course-catalog\", render: e(n) },\n  { type: \"cedros-academy:featured-courses\", render: e(d) },\n  { type: \"cedros-academy:course-landing\", render: e(s) },\n  { type: \"cedros-academy:instructor-profile\", render: e(a) },\n  { type: \"cedros-academy:student-dashboard\", render: e(t) },\n  { type: \"cedros-academy:course-player\", render: e(c) },\n  { type: \"cedros-academy:certificate-verification\", render: e(o) },\n  { type: \"cedros-academy:course-submission\", render: e(i) }\n];\nf();\nfunction T() {\n  return { ...y, contentBlocks: k, contentBlockRenderers: C, contentTemplates: l };\n}\nfunction e(r) {\n  return (m) => u(r, m);\n}\nexport {\n  T as default,\n  T as registerCedrosWebSurface\n};\n","imports":[{"dynamic":false,"end":41,"specifier":"react","start":36},{"dynamic":false,"end":100,"specifier":"../bootstrap.js","start":85},{"dynamic":false,"end":176,"specifier":"../generated-templates.js","start":151},{"dynamic":false,"end":233,"specifier":"../manifest.js","start":219},{"dynamic":false,"end":297,"specifier":"../shared/styles.js","start":278},{"dynamic":false,"end":520,"specifier":"./blocks.js","start":509},{"dynamic":false,"end":588,"specifier":"./courseSubmission.js","start":567}],"hasUnsupportedDynamicImports":false}]}