PageSourceSearch

https://chemillusion.com/pricing/roles

html chemillusion.com collected 2026-10-08 23:52:15 UTC 9,407 bytes, 154 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en">
3  <head>
4    <!-- Google Analytics / Ads is NOT loaded here.
5
6         It used to be: a gtag.js 
6<script src> plus an inline gtag() bootstrap,
7         both running on every route for every visitor. Two problems, one fix.
8
9         1. Consent. AnalyticsContext gates analytics behind a stored consent
10            choice, but a tag in the entry document runs before any of that,
11            so GA was measuring people who had not opted in.
12         2. CSP. An inline block and a third-party executable origin are the
13            two things `script-src 'self'` exists to stop, and confidential
14            (/eln, /notebook) and native surfaces must not load them at all.
15
16         Loading now happens in initAnalytics() (src/utils/analytics.ts), which
17         AnalyticsContext calls only after consent and never on a confidential
18         or native surface. Every gtag() call site in src/ was already guarded
19         with `typeof gtag !== "function"` / `?.`, so nothing breaks while the
20         tag is absent. See docs/chemillusion_csp_web_lti_native_app_prd.md FR-4. -->
21    
21<script type="application/ld+json">
22    {
23      "@context": "https://schema.org",
24      "@graph": [
25        {
26          "@type": "Organization",
27          "name": "ChemIllusion",
28          "url": "https://chemillusion.com",
29          "logo": "https://chemillusion.com/android-chrome-512x512.png",
30          "description": "AI-powered platform for generating artistic images from chemical compounds and molecules.",
31          "sameAs": ["https://twitter.com/chemillusion"]
32        },
33        {
34          "@type": "WebSite",
35          "name": "ChemIllusion",
36          "url": "https://chemillusion.com",
37          "potentialAction": {
38            "@type": "SearchAction",
39            "target": {
40              "@type": "EntryPoint",
41              "urlTemplate": "https://chemillusion.com/gallery?search={search_term_string}"
42            },
43            "query-input": "required name=search_term_string"
44          }
45        },
46        {
47          "@type": "Product",
48          "name": "CourseForge by ChemIllusion",
49          "description": "ChemIllusion's CourseForge turns expert concept maps — or an author's own manuscript — into complete interactive course ecosystems: readers, online homework with grading, question banks, AI tutors, decks, and labs.",
50          "url": "https://chemillusion.com/course-forge",
51          "brand": {
52            "@type": "Brand",
53            "name": "ChemIllusion"
54          },
55          "offers": {
56            "@type": "AggregateOffer",
57            "priceCurrency": "USD",
58            "availability": "https://schema.org/PreOrder",
59            "description": "Fall pilot pricing coming soon. Two paths: one-time downloadable static assets, or interactive license for live drawing and LMS embed."
60          },
61          "audience": {
62            "@type": "EducationalAudience",
63            "educationalRole": "teacher"
64          }
65        }
66      ]
67    }
68    </script>
68
69    <meta charset="UTF-8" />
70    <!-- Canonical favicon assets live under `/favicon_io/`; keep a root `/favicon.ico` fallback for browser heuristics and stale production caches. -->
71    <link rel="apple-touch-icon" sizes="180x180" href="/favicon_io/apple-touch-icon.png" />
72    <link rel="icon" type="image/png" sizes="32x32" href="/favicon_io/favicon-32x32.png" />
73    <link rel="icon" type="image/png" sizes="16x16" href="/favicon_io/favicon-16x16.png" />
74    <link rel="shortcut icon" href="/favicon.ico" />
75    <link rel="icon" href="/favicon.ico" />
76    <meta name="theme-color" content="#1a202c" />
77    <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
78    <!-- Mobile browser chrome polish only — deliberately NO web-app manifest or
79         service worker (site-wide PWA was rolled back; public/sw.js is a
80         kill-switch, see docs/superpowers/specs/2026-06-02-chemillusion-pwa-reader-design.md) -->
81    <meta name="mobile-web-app-capable" content="yes" />
82    <meta name="apple-mobile-web-app-capable" content="yes" />
83    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
84    <meta name="apple-mobile-web-app-title" content="ChemIllusion" />
85    <link integrity="sha384-hbOWllRBPOa0RdEwaL5r6UTexha/lvLCDUTxtf32SQeKP3f2sKwTuiPi1sX424GS" crossorigin="anonymous" href="/fonts/app-fonts.css" rel="stylesheet" />
86    <!-- Hide skip link until focused; must be inline so it applies before the JS bundle loads. -->
87    <style>
88      .skip-link {
89        position: absolute;
90        left: -999px;
91        top: auto;
92        width: 1px;
93        height: 1px;
94        overflow: hidden;
95      }
96      .skip-link:focus {
97        left: 0;
98        top: 0;
99        width: auto;
100        height: auto;
101        padding: 0.5rem 1rem;
102        /* blue.600: 5.5:1 with white text (blue.500 was 4.0:1). */
103        background: #2b6cb0;
104        color: white;
105        /* Above the generator's fixed header (z-index 1400), so the focused
106           link is never covered (WCAG 2.4.11). */
107        z-index: 2000;
108      }
109    </style>
110<!-- Pre-React bootstrap: Node globals, colour mode, scroll restoration.
111         Externalised so `script-src 'self'` can be enforced; a classic (not
112         module) script because all three must run before first paint. -->
113    
113<script type="module" src="/bootstrap.js" integrity="sha384-KA5D5i3qgPjXeCFqgq4hl+14wX/+kK7WOmdxjqCLDIes5jHszinXvR0uVa/tLHJb" crossorigin="anonymous"></script>
113
114    
114<script type="module" src="/assets/index-DN2b6gf5.js" integrity="sha384-oJgc1XP2uwVSUXVdPa7OXrn+Jh3e4XuByDfxEwkw6poNxkB8goVYs8hJZW4cLSHR" crossorigin="anonymous"></script>
114
115    <link rel="modulepreload" crossorigin href="/assets/react-vendor-DRshJiK8.js">
116    <link integrity="sha384-DBRTqORyfLxxSGaAza5FrDQFaCY2ZTJt6mHhZe1DX2LU4vRJQrnb8LSfbm7Y4IYM" crossorigin="anonymous" rel="stylesheet" crossorigin href="/assets/index-o94X5qU7.css">
117      <title data-rh="true">ChemIllusion — The best way to learn chemistry</title>
118    <meta data-rh="true" name="description" content="The best way to learn chemistry — and tools for every chemist. Adopt our organic chemistry course, build slides and full courses, or draw and create with Chem Assistant in one browser workspace." />
119    <link data-rh="true" rel="canonical" href="https://chemillusion.com/" />
120    <meta data-rh="true" name="robots" content="index, follow" />
121    <meta data-rh="true" property="og:title" content="ChemIllusion — The best way to learn chemistry" />
122    <meta data-rh="true" property="og:description" content="The best way to learn chemistry — and tools for every chemist. Adopt our organic chemistry course, build slides and full courses, or draw and create with Chem Assistant in one browser workspace." />
123    <meta data-rh="true" property="og:url" content="https://chemillusion.com/" />
124    <meta data-rh="true" property="og:type" content="website" />
125    <meta data-rh="true" property="og:site_name" content="ChemIllusion" />
126    <meta data-rh="true" property="og:image" content="https://chemillusion.com/og/logo.png" />
127    <meta data-rh="true" name="twitter:card" content="summary_large_image" />
128    <meta data-rh="true" name="twitter:title" content="ChemIllusion — The best way to learn chemistry" />
129    <meta data-rh="true" name="twitter:description" content="The best way to learn chemistry — and tools for every chemist. Adopt our organic chemistry course, build slides and full courses, or draw and create with Chem Assistant in one browser workspace." />
130    <meta data-rh="true" name="twitter:image" content="https://chemillusion.com/og/logo.png" />
131    <link data-rh="true" rel="alternate" hreflang="en" href="https://chemillusion.com/" />
132    <link data-rh="true" rel="alternate" hreflang="es" href="https://chemillusion.com/es/inicio" />
133    <link data-rh="true" rel="alternate" hreflang="de" href="https://chemillusion.com/de/startseite" />
134    <link data-rh="true" rel="alternate" hreflang="x-default" href="https://chemillusion.com/" />
135    
135<script data-rh="true" type="application/ld+json">{"@context":"https://schema.org","@type":"WebPage","headline":"ChemIllusion — The best way to learn chemistry","description":"The best way to learn chemistry — and tools for every chemist. Adopt our organic chemistry course, build slides and full courses, or draw and create with Chem Assistant in one browser workspace.","url":"https://chemillusion.com/"}</script>
135
136    <style data-prerender-fallback-style>[data-prerender-fallback]{display:none !important}</style>
137  </head>
138  <body>
139    <a href="#main-content" class="skip-link">Skip to main content</a>
140    <div id="root"><div data-prerender-fallback><main data-search-fallback="true">
141  <h1>ChemIllusion — The best way to learn chemistry</h1>
142  <p>The best way to learn chemistry — and tools for every chemist. Adopt our organic chemistry course, build slides and full courses, or draw and create with Chem Assistant in one browser workspace.</p>
143  <nav aria-label="Related ChemIllusion pages">
144    <ul>
145      <li><a href="/">ChemIllusion home</a></li>
146      <li><a href="/generator">generator</a></li>
147      <li><a href="/gallery">gallery</a></li>
148      <li><a href="/pricing/roles">pricing roles</a></li>
149      <li><a href="https://coursehouse.org/">https:  coursehouse.org </a></li>
150    </ul>
151  </nav>
152</main></div></div>
153  </body>
154</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.