{"id":11796,"date":"2026-10-20T10:56:08","date_gmt":"2026-10-20T14:56:08","guid":{"rendered":"https:\/\/crassulapharma.com\/?page_id=11796"},"modified":"2026-10-23T16:13:13","modified_gmt":"2026-10-23T20:13:13","slug":"home","status":"publish","type":"page","link":"https:\/\/crassulapharma.com\/es\/","title":{"rendered":"Home"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"11796\" class=\"elementor elementor-11796\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6539097 e-con-full e-flex e-con e-parent\" data-id=\"6539097\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c75142b elementor-widget elementor-widget-html\" data-id=\"c75142b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!-- =========================================================\n     CRASSULA \u00b7 home \u00b7 contenido para el widget HTML de Elementor\n     Pegar TODO este archivo en un widget HTML (contenedor a ancho\n     completo, sin padding; p\u00e1gina \"Elementor Full Width\" o \"Canvas\").\n     Incluye todo: SEO, fuentes, CSS, datos estructurados, contenido y JS.\n     ========================================================= -->\n\n<!-- SEO \u00b7 el script de abajo mueve estas etiquetas al <head> y reemplaza\n     las que traiga Rank Math\/Yoast o el tema. -->\n<title>Crassula Pharmaceuticals | Technology-Driven CDMO<\/title>\n<meta name=\"description\" content=\"Technology-driven CDMO for finished-dose pharmaceutical and nutraceutical manufacturing, from formulation and delivery technologies to GMP scale-up.\">\n<meta name=\"robots\" content=\"index, follow, max-image-preview:large\">\n<link rel=\"canonical\" href=\"https:\/\/crassulapharma.com\/\">\n<meta name=\"theme-color\" content=\"#101A42\">\n<meta property=\"og:type\" content=\"website\">\n<meta property=\"og:site_name\" content=\"Crassula Pharmaceuticals\">\n<meta property=\"og:locale\" content=\"en_US\">\n<meta property=\"og:title\" content=\"Crassula Pharmaceuticals | Technology-Driven CDMO\">\n<meta property=\"og:description\" content=\"Technology-driven CDMO for finished-dose pharmaceutical and nutraceutical manufacturing, from formulation and delivery technologies to GMP scale-up.\">\n<meta property=\"og:url\" content=\"https:\/\/crassulapharma.com\/\">\n<meta property=\"og:image\" content=\"https:\/\/crassulapharma.com\/wp-content\/uploads\/2025\/09\/Crassula_Happy_Customersv2-scaled.jpg\">\n<meta property=\"og:image:alt\" content=\"Crassula Pharmaceuticals portfolio lineup\">\n<meta name=\"twitter:card\" content=\"summary_large_image\">\n<meta name=\"twitter:site\" content=\"@crassula_llc\">\n<meta name=\"twitter:title\" content=\"Crassula Pharmaceuticals | Technology-Driven CDMO\">\n<meta name=\"twitter:description\" content=\"Technology-driven CDMO for finished-dose pharmaceutical and nutraceutical manufacturing, from formulation and delivery technologies to GMP scale-up.\">\n<meta name=\"twitter:image\" content=\"https:\/\/crassulapharma.com\/wp-content\/uploads\/2025\/09\/Crassula_Happy_Customersv2-scaled.jpg\">\n<script>\n\/* Move this page's SEO tags into <head>; replace any duplicate set by the theme or SEO plugin *\/\n(function () {\n  var head = document.head, me = document.currentScript, el = me.previousElementSibling, tags = [];\n  while (el && \/^(META|LINK|TITLE)$\/.test(el.tagName)) { tags.unshift(el); el = el.previousElementSibling; }\n  tags.forEach(function (t) {\n    var sel = t.tagName === 'TITLE' ? 'title'\n      : t.tagName === 'LINK' ? 'link[rel=\"' + t.getAttribute('rel') + '\"]'\n      : t.hasAttribute('property') ? 'meta[property=\"' + t.getAttribute('property') + '\"]'\n      : 'meta[name=\"' + t.getAttribute('name') + '\"]';\n    [].slice.call(head.querySelectorAll(sel)).forEach(function (old) { old.parentNode.removeChild(old); });\n    head.appendChild(t);\n  });\n})();\n<\/script>\n\n<!-- Fuentes: Poppins 100\u2013900 + it\u00e1licas -->\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n<link rel=\"stylesheet\" href=\"https:\/\/fonts.googleapis.com\/css2?family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&amp;display=swap\">\n\n<!-- Estilos incluidos para que la p\u00e1gina funcione sola (widget o navegador) -->\n<style>\nbody { margin: 0; }\n\/* =========================================================\n   CRASSULA PHARMACEUTICALS \u2014 about.css \u00b7 PALETTE v2 (navy #101A42 \u00b7 white \u00b7 green #5BA044 \u00b7 grey #ECECEC)\n   Base design system (tokens, components, motion) + About Us page.\n   Load FIRST on every page. Page add-ons (facilities.css, social.css, \u2026) load after it.\n   Palette: #5BA044 \u00b7 #5BA044 \u00b7 #FFFFFF \u00b7 #ECECEC + derived ink\n   Type: Poppins 100\u2013900 + italics (Google Fonts)\n\n   CONTENTS\n   00  WordPress \/ theme guard\n   01  Tokens\n   02  Base\n   03  Layout & surfaces\n   04  Typography\n   05  Components\n       05.1 Buttons            05.6 Figures\n       05.2 Page hero          05.7 Markers (pending \/ review)\n       05.3 Breadcrumbs        05.8 Cursor follower\n       05.4 Scroll cue         05.9 Page transition\n       05.5 Sub navigation\n   06  Sections (shared blocks)\n   07  Pages\n       07.1 About Us  (\/about-us\/)          \u2014 APPROVED v1.3\n       07.2 Facilities \u2192 facilities.css (separate file)\n       07.3 Social Responsibility \u2192 social.css (separate file)\n       07.4 Team \u00b7 07.5 Pharma\n       07.6 Supplements \u00b7 07.8 Media Releases\n       07.9 Contact \u00b7 07.10 Home\n   08  Motion system (reveals, keyframes, reduced motion)\n   09  Responsive\n   ========================================================= *\/\n\n\/* =========================================================\n   00  WORDPRESS \/ THEME GUARD\n   The Hello theme and Elementor kit style every <a>, <button> and\n   [type=button|submit] (magenta #c36 hover background, white text,\n   nowrap, border). These rules neutralise them inside .cr-page;\n   component rules below re-apply our own states.\n   ========================================================= *\/\n.cr-page a:hover, .cr-page a:focus, .cr-page a:active { color: inherit; }\n.cr-page button, .cr-page [type=\"button\"], .cr-page [type=\"submit\"] { white-space: normal; text-transform: none; font-family: inherit; letter-spacing: inherit; box-shadow: none; }\n.cr-page button:hover, .cr-page button:focus, .cr-page button:active { background-color: transparent; color: inherit; text-decoration: none; }\n\n\/* =========================================================\n   01  TOKENS\n   ========================================================= *\/\n:root {\n  \/* Palette *\/\n  --cr-green: #5BA044;\n  --cr-green-text: #3E7A2C;   \/* derived: brand green for text on white\/grey *\/        \/* primary \u00b7 CTAs \u00b7 impact sections (cream text 4.91:1) *\/\n  --cr-lime: #5BA044;         \/* accents \u00b7 hover \u00b7 data \u2014 never text on light *\/\n  --cr-cream: #FFFFFF;        \/* main light background *\/\n  --cr-peach: #ECECEC;        \/* alternate surfaces *\/\n  --cr-ink: #101A42;          \/* derived near-black green \u00b7 text + dark sections (15.4:1 on cream) *\/\n  --cr-ink-70: #454D6B;       \/* derived muted ink (7.97:1 on cream, 7.0:1 on peach) *\/\n  --cr-line: rgba(16, 26, 66, 0.16);\n  --cr-line-dark: rgba(255, 255, 255, 0.2);\n\n  \/* Type *\/\n  --cr-font: \"Poppins\", \"Segoe UI\", system-ui, sans-serif;\n  --cr-fs-display: clamp(2.4rem, 10.5vw, 9.5rem);\n  --cr-fs-h2: clamp(2.25rem, 1.2rem + 3.6vw, 4.5rem);\n  --cr-fs-h3: clamp(1.375rem, 1.1rem + 0.9vw, 1.875rem);\n  --cr-fs-quote: clamp(2rem, 1rem + 3.6vw, 4.25rem);\n  --cr-fs-lead: clamp(1.0625rem, 0.95rem + 0.45vw, 1.3125rem);\n  --cr-fs-body: 1rem;\n  --cr-fs-small: 0.875rem;\n  --cr-fs-label: 0.75rem;\n  --cr-tracking-label: 0.18em;\n\n  \/* Space *\/\n  --cr-s1: 4px; --cr-s2: 8px; --cr-s3: 12px; --cr-s4: 16px; --cr-s5: 24px; --cr-s6: 32px; --cr-s7: 48px; --cr-s8: 64px; --cr-s9: 96px; --cr-s10: 144px;\n  --cr-container: 1360px;\n  --cr-gutter: clamp(20px, 4.5vw, 64px);\n\n  \/* Shape & motion *\/\n  --cr-r-pill: 999px;\n  --cr-r-card: 20px;\n  --cr-ease: cubic-bezier(0.22, 1, 0.36, 1);\n  --cr-ease-io: cubic-bezier(0.65, 0, 0.35, 1);\n  --cr-t-fast: 300ms;\n  --cr-t-med: 560ms;\n  --cr-t-slow: 900ms;\n}\n\n\/* =========================================================\n   02  BASE\n   ========================================================= *\/\n.cr-page, .cr-page * { box-sizing: border-box; }\n.cr-page { margin: 0; background: var(--cr-cream); color: var(--cr-ink); font-family: var(--cr-font); font-size: var(--cr-fs-body); line-height: 1.65; -webkit-font-smoothing: antialiased; }\n.cr-page img { max-width: 100%; display: block; }\n.cr-page a { color: inherit; }\n.cr-page :focus-visible { outline: 2px solid var(--cr-green); outline-offset: 3px; border-radius: 4px; }\n.cr-dark :focus-visible, .cr-green-bg :focus-visible { outline-color: var(--cr-lime); }\n.cr-wrap { max-width: var(--cr-container); margin: 0 auto; padding: 0 var(--cr-gutter); }\n.cr-section { position: relative; padding: var(--cr-s10) 0; }\n.cr-sr { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }\n\n\/* =========================================================\n   03  LAYOUT & SURFACES\n   ========================================================= *\/\n.cr-cream { background: var(--cr-cream); }\n.cr-peach { background: var(--cr-peach); }\n.cr-dark { background: var(--cr-ink); color: var(--cr-cream); }\n.cr-green-bg { background: var(--cr-green); color: var(--cr-cream); }\n\n\/* =========================================================\n   04  TYPOGRAPHY\n   ========================================================= *\/\n.cr-label {\n  display: inline-flex; align-items: center; gap: var(--cr-s3);\n  font-weight: 500; font-size: var(--cr-fs-label); letter-spacing: var(--cr-tracking-label); text-transform: uppercase; line-height: 1.4;\n}\n.cr-label__idx { font-variant-numeric: tabular-nums; }\n.cr-label__bar { width: 40px; height: 1px; background: currentColor; opacity: .5; }\n.cr-h2 { font-weight: 600; font-size: var(--cr-fs-h2); line-height: 1.02; letter-spacing: -0.035em; margin: var(--cr-s5) 0 0; }\n.cr-h2 .t-200 { font-weight: 200; }\n.cr-h2 em, .cr-display em { font-style: italic; }\n.cr-h3 { font-weight: 600; font-size: var(--cr-fs-h3); line-height: 1.2; letter-spacing: -0.015em; margin: 0; }\n.cr-lead { font-size: var(--cr-fs-lead); line-height: 1.6; font-weight: 400; margin: var(--cr-s5) 0 0; max-width: 60ch; }\n.cr-muted { color: var(--cr-ink-70); }\n.cr-dark .cr-muted, .cr-green-bg .cr-muted { color: rgba(255, 255, 255, 0.86); }\n.t-100 { font-weight: 100; } .t-200 { font-weight: 200; } .t-300 { font-weight: 300; } .t-800 { font-weight: 800; }\n\n\/* Line-split reveal: lines are pre-marked in HTML (text always in DOM) *\/\n.cr-ln { display: block; overflow: hidden; padding-bottom: 0.06em; }\n.cr-ln > span { display: block; }\n\n\/* =========================================================\n   05  COMPONENTS\n   ========================================================= *\/\n\/* 05.1 Buttons *\/\n.cr-btn {\n  position: relative; display: inline-flex; align-items: center; gap: var(--cr-s3);\n  min-height: 52px; padding: 0 10px 0 26px; border-radius: var(--cr-r-pill);\n  font-family: var(--cr-font); font-weight: 500; font-size: 0.9375rem; letter-spacing: 0.01em; text-decoration: none;\n  border: 1.5px solid transparent; overflow: hidden; isolation: isolate;\n  transition: color var(--cr-t-med) var(--cr-ease), border-color var(--cr-t-med) var(--cr-ease);\n}\n.cr-btn__icon { width: 34px; height: 34px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; transition: transform 700ms var(--cr-ease), background-color var(--cr-t-med) var(--cr-ease), color var(--cr-t-med) var(--cr-ease); }\n.cr-btn::before { content: \"\"; position: absolute; inset: 0; z-index: -1; border-radius: inherit; transform: scaleX(0); transform-origin: left; transition: transform 700ms var(--cr-ease); }\n.cr-btn--primary { background: var(--cr-green); color: var(--cr-cream); }\n.cr-btn--primary .cr-btn__icon { background: var(--cr-cream); color: var(--cr-green-text); }\n.cr-btn--primary::before { background: var(--cr-ink); }\n.cr-btn--ghost { background: transparent; color: var(--cr-cream); border-color: rgba(255, 255, 255, 0.6); }\n.cr-btn--ghost .cr-btn__icon { background: var(--cr-cream); color: var(--cr-ink); }\n.cr-btn--ghost::before { background: var(--cr-cream); }\n@media (hover: hover) {\n  .cr-btn:hover::before { transform: scaleX(1); }\n  .cr-btn:hover .cr-btn__icon { transform: rotate(-45deg); }\n  .cr-btn--ghost:hover { color: var(--cr-ink); border-color: var(--cr-cream); }\n  .cr-btn--ghost:hover .cr-btn__icon { background: var(--cr-ink); color: var(--cr-cream); }\n}\n\n\/* 05.2 Page hero (shared pattern) *\/\n.cr-hero { position: relative; isolation: isolate; overflow: hidden; min-height: min(100svh, 980px); display: flex; align-items: flex-end; color: var(--cr-cream); background: var(--cr-ink); }\n.cr-hero__media { position: absolute; inset: -10% 0; z-index: -2; }\n.cr-hero__media img { width: 100%; height: 100%; object-fit: cover; }\n.cr-hero::before { content: \"\"; position: absolute; inset: 0; z-index: -1;\n  background: linear-gradient(180deg, rgba(16, 26, 66,.62) 0%, rgba(16, 26, 66,.78) 55%, rgba(16, 26, 66,.94) 100%); }\n.cr-hero__grid { position: absolute; inset: 0; z-index: -1; pointer-events: none;\n  background-image: linear-gradient(to right, rgba(255, 255, 255,.07) 1px, transparent 1px);\n  background-size: calc((min(100vw, var(--cr-container)) - 2 * var(--cr-gutter)) \/ 12) 100%; background-position: center; }\n.cr-hero__inner { width: 100%; padding-top: calc(var(--cr-s10) + var(--cr-s6)); padding-bottom: var(--cr-s9); }\n.cr-hero__top { display: flex; justify-content: space-between; gap: var(--cr-s5); flex-wrap: wrap; }\n\/* 05.3 Breadcrumbs *\/\n.cr-crumbs ol { list-style: none; display: flex; flex-wrap: wrap; gap: var(--cr-s2); margin: 0; padding: 0; font-size: var(--cr-fs-label); letter-spacing: var(--cr-tracking-label); text-transform: uppercase; font-weight: 500; }\n.cr-crumbs li + li::before { content: \"\/\"; margin-right: var(--cr-s2); opacity: .6; }\n.cr-crumbs a { text-decoration: none; border-bottom: 1px solid rgba(255, 255, 255,.5); }\n.cr-crumbs [aria-current] { color: var(--cr-lime); }\n\/* Hero display title *\/\n.cr-display { font-size: var(--cr-fs-display); line-height: 0.9; letter-spacing: -0.055em; margin: var(--cr-s7) 0 0; font-weight: 200; }\n.cr-display .t-800 { letter-spacing: -0.06em; }\n.cr-display__pre { display: block; font-size: var(--cr-fs-label); letter-spacing: var(--cr-tracking-label); text-transform: uppercase; font-weight: 500; margin-bottom: var(--cr-s5); color: var(--cr-lime); }\n.cr-hero__foot { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: var(--cr-s7); margin-top: var(--cr-s8); align-items: end; }\n.cr-answer { font-size: var(--cr-fs-lead); line-height: 1.6; margin: 0; max-width: 54ch; color: var(--cr-cream); }\n.cr-specs { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); border-top: 1px solid var(--cr-line-dark); margin: 0; }\n.cr-specs div { padding: var(--cr-s4) var(--cr-s4) 0 0; }\n.cr-specs dt { font-size: var(--cr-fs-label); letter-spacing: var(--cr-tracking-label); text-transform: uppercase; font-weight: 500; color: var(--cr-lime); }\n.cr-specs dd { margin: var(--cr-s2) 0 0; font-weight: 500; }\n\/* 05.4 Scroll cue *\/\n.cr-scroll { position: absolute; left: 50%; bottom: var(--cr-s5); transform: translateX(-50%); width: 48px; height: 64px; display: flex; align-items: center; justify-content: center; color: var(--cr-cream); }\n.cr-scroll__mouse { width: 26px; height: 40px; border: 2px solid rgba(255, 255, 255,.85); border-radius: 14px; position: relative; }\n.cr-scroll__wheel { position: absolute; left: 50%; top: 8px; width: 4px; height: 8px; margin-left: -2px; border-radius: 2px; background: var(--cr-lime); }\n\n\/* Hero: display size inside heroes (moderate, max ~100px) *\/\n.cr-hero .cr-display { font-size: clamp(2.25rem, 1rem + 5.2vw, 6.25rem); line-height: .95; }\n\n\/* Hero variant: centered content *\/\n.cr-hero--center { align-items: center; text-align: center; }\n.cr-hero--center::before { background: linear-gradient(180deg, rgba(16, 26, 66,.55) 0%, rgba(16, 26, 66,.66) 50%, rgba(16, 26, 66,.82) 100%); }\n.cr-hero--center .cr-hero__inner { padding-top: var(--cr-s10); padding-bottom: calc(var(--cr-s10) + var(--cr-s5)); }\n.cr-hero--center .cr-hero__top { justify-content: center; }\n.cr-hero--center .cr-crumbs ol { justify-content: center; }\n.cr-hero--center .cr-display { margin-left: auto; margin-right: auto; }\n.cr-hero--center .cr-hero__foot { grid-template-columns: 1fr; justify-items: center; gap: var(--cr-s6); margin-top: var(--cr-s7); }\n.cr-hero--center .cr-answer { margin: 0 auto; max-width: 62ch; }\n.cr-hero--center .cr-specs { width: min(100%, 760px); }\n.cr-hero--center .cr-specs div { padding: var(--cr-s4) var(--cr-s3) 0; }\n\n\/* 05.5 Sub navigation (in-page) *\/\n.cr-subnav { position: sticky; top: var(--cr-sticky-offset, 0px); z-index: 30; background: rgba(255, 255, 255, 0.9); backdrop-filter: blur(10px) saturate(1.2); border-bottom: 1px solid var(--cr-line); }\n.cr-subnav ol { list-style: none; margin: 0 auto; padding: 0 var(--cr-gutter); max-width: var(--cr-container); display: flex; gap: var(--cr-s6); overflow-x: auto; scrollbar-width: none; }\n.cr-subnav ol::-webkit-scrollbar { display: none; }\n.cr-subnav a { position: relative; display: inline-flex; align-items: center; gap: var(--cr-s2); min-height: 56px; white-space: nowrap; text-decoration: none; font-size: var(--cr-fs-small); font-weight: 500; color: var(--cr-ink-70); transition: color var(--cr-t-fast) var(--cr-ease); }\n.cr-subnav a span { font-size: var(--cr-fs-label); letter-spacing: .1em; }\n.cr-subnav a::after { content: \"\"; position: absolute; left: 0; right: 0; bottom: -1px; height: 2px; background: var(--cr-green); transform: scaleX(0); transform-origin: left; transition: transform var(--cr-t-med) var(--cr-ease); }\n.cr-subnav a:hover, .cr-subnav a[aria-current=\"true\"] { color: var(--cr-ink); }\n.cr-subnav a[aria-current=\"true\"]::after { transform: scaleX(1); }\n.cr-progress { position: absolute; left: 0; bottom: -1px; height: 2px; width: 100%; background: var(--cr-lime); transform-origin: left; transform: scaleX(0); }\n\n\/* 05.6 Figures (official images, parallax inside frame) *\/\n.cr-figure { margin: var(--cr-s8) 0 0; }\n.cr-figure__frame { position: relative; overflow: hidden; border-radius: var(--cr-r-card); background: var(--cr-peach); }\n.cr-figure__frame img { width: 100%; height: 118%; object-fit: cover; will-change: transform; transition: scale 1.2s var(--cr-ease); }\n.cr-figure--wide .cr-figure__frame { aspect-ratio: 21 \/ 9; }\n.cr-figure--banner .cr-figure__frame { aspect-ratio: 1024 \/ 328; background: var(--cr-cream); }\n.cr-figure--split .cr-figure__frame { aspect-ratio: 16 \/ 7; }\n.cr-figure__cap { display: flex; gap: var(--cr-s4); align-items: center; margin-top: var(--cr-s3); font-size: var(--cr-fs-small); color: var(--cr-ink-70); }\n.cr-figure__cap .cr-label { color: var(--cr-green-text); }\n.cr-peach .cr-figure__cap .cr-label { color: var(--cr-ink); } \/* green on peach < 4.5:1 *\/\n@media (hover: hover) { .cr-figure:hover .cr-figure__frame img { scale: 1.04; } }\n\n\/* =========================================================\n   06  SECTIONS (shared blocks)\n   ========================================================= *\/\n\/* Section head: label + H2 left, intro right *\/\n.cr-head { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 8fr); gap: var(--cr-s7); align-items: start; }\n.cr-dark .cr-label, .cr-green-bg .cr-label { color: var(--cr-lime); }\n.cr-green-bg .cr-label { color: var(--cr-cream); }\n\n\/* =========================================================\n   07  PAGES\n   ========================================================= *\/\n\n\/* ---------------------------------------------------------\n   07.1 ABOUT US  (\/about-us\/) \u2014 APPROVED v1.3\n   --------------------------------------------------------- *\/\n\/* Who we are *\/\n.cr-quote { font-size: var(--cr-fs-quote); line-height: 1.04; letter-spacing: -0.04em; font-weight: 200; font-style: italic; margin: 0; color: var(--cr-green-text); }\n.cr-quote strong { font-weight: 700; font-style: normal; color: var(--cr-ink); }\n.cr-facts { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); margin: var(--cr-s8) 0 0; border-top: 1px solid var(--cr-line); }\n.cr-facts div { padding: var(--cr-s5) var(--cr-s5) 0 0; border-right: 1px solid var(--cr-line); }\n.cr-facts div:last-child { border-right: 0; padding-left: var(--cr-s5); }\n.cr-facts div:nth-child(2) { padding-left: var(--cr-s5); }\n.cr-facts dt { font-size: var(--cr-fs-label); letter-spacing: var(--cr-tracking-label); text-transform: uppercase; font-weight: 500; color: var(--cr-ink-70); }\n.cr-facts dd { margin: var(--cr-s3) 0 0; font-size: var(--cr-fs-h3); font-weight: 600; letter-spacing: -0.02em; line-height: 1.2; }\n.cr-facts dd small { display: block; font-size: var(--cr-fs-small); font-weight: 400; letter-spacing: 0; color: var(--cr-ink-70); margin-top: var(--cr-s2); }\n\n\/* What we do *\/\n.cr-tags { list-style: none; margin: var(--cr-s6) 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: var(--cr-s2); }\n.cr-tags li { padding: 10px 18px; border: 1px solid var(--cr-ink); border-radius: var(--cr-r-pill); font-weight: 500; font-size: var(--cr-fs-small); transition: background-color var(--cr-t-med) var(--cr-ease), color var(--cr-t-med) var(--cr-ease); }\n@media (hover: hover) { .cr-tags li:hover { background: var(--cr-ink); color: var(--cr-cream); } }\n.cr-chain { list-style: none; margin: var(--cr-s9) 0 0; padding: 0; display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); position: relative; }\n.cr-chain::before { content: \"\"; position: absolute; left: 0; right: 0; top: 11px; height: 1px; background: var(--cr-ink); transform-origin: left; transform: scaleX(var(--cr-draw, 1)); transition: transform 1.4s var(--cr-ease-io); }\n.cr-chain li { position: relative; padding-right: var(--cr-s4); }\n.cr-chain__dot { display: block; width: 23px; height: 23px; border-radius: 50%; background: var(--cr-peach); border: 1.5px solid var(--cr-ink); position: relative; transition: background-color var(--cr-t-med) var(--cr-ease), transform var(--cr-t-slow) var(--cr-ease); }\n.cr-chain__dot::after { content: \"\"; position: absolute; inset: 5px; border-radius: 50%; background: var(--cr-green); }\n.cr-chain li:hover .cr-chain__dot { transform: scale(1.15); background: var(--cr-lime); }\n.cr-chain__n { display: block; margin-top: var(--cr-s5); font-size: var(--cr-fs-label); letter-spacing: var(--cr-tracking-label); font-weight: 500; color: var(--cr-ink-70); }\n.cr-chain__t { display: block; margin-top: var(--cr-s2); font-size: var(--cr-fs-h3); font-weight: 600; letter-spacing: -0.02em; line-height: 1.15; }\n.cr-channels { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--cr-s5); margin-top: var(--cr-s9); }\n.cr-channel { background: var(--cr-cream); border-radius: var(--cr-r-card); padding: var(--cr-s6); display: flex; gap: var(--cr-s5); align-items: flex-start; transition: transform 700ms var(--cr-ease), box-shadow 700ms var(--cr-ease); }\n.cr-channel__k { font-size: clamp(2.5rem, 1.5rem + 3vw, 4rem); font-weight: 800; letter-spacing: -0.05em; line-height: .9; color: var(--cr-green-text); }\n@media (hover: hover) { .cr-channel:hover { transform: translateY(-3px); box-shadow: 0 18px 40px -26px rgba(16, 26, 66,.5); } }\n\n\/* Platforms & brands (dark) *\/\n.cr-sub { margin-top: var(--cr-s9); }\n.cr-sub__head { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: end; gap: var(--cr-s4); padding-bottom: var(--cr-s5); border-bottom: 1px solid var(--cr-line-dark); }\n.cr-sub__head p { margin: 0; max-width: 48ch; }\n.cr-table { list-style: none; margin: 0; padding: 0; }\n.cr-table li { position: relative; display: grid; grid-template-columns: 80px minmax(0, 4fr) minmax(0, 6fr); gap: var(--cr-s5); align-items: baseline; padding: var(--cr-s6) 0; border-bottom: 1px solid var(--cr-line-dark); transition: background-color var(--cr-t-med) var(--cr-ease); }\n.cr-table li > * { transition: transform var(--cr-t-med) var(--cr-ease); }\n.cr-table li::before { content: \"\"; position: absolute; left: 0; top: -1px; height: 2px; width: 100%; background: var(--cr-lime); transform: scaleX(0); transform-origin: left; transition: transform 700ms var(--cr-ease); }\n.cr-table__i { font-size: var(--cr-fs-label); letter-spacing: var(--cr-tracking-label); font-weight: 500; color: var(--cr-lime); }\n.cr-table__n { font-size: var(--cr-fs-h3); font-weight: 600; letter-spacing: -0.02em; }\n.cr-table__d { color: rgba(255, 255, 255,.86); }\n@media (hover: hover) {\n  .cr-table li:hover > * { transform: translateX(12px); }\n  .cr-table li:hover::before { transform: scaleX(1); }\n}\n\/* Product families (category column turns green when active; image swaps per product) *\/\n.cr-families { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--cr-s3); }\n.cr-family { padding: var(--cr-s6) var(--cr-s6) var(--cr-s4); border: 1px solid var(--cr-line-dark); border-radius: var(--cr-r-card); transition: background-color 600ms var(--cr-ease), color 600ms var(--cr-ease); }\n.cr-family h4 { margin: 0; font-size: var(--cr-fs-label); letter-spacing: var(--cr-tracking-label); text-transform: uppercase; font-weight: 500; color: var(--cr-lime); }\n.cr-family__img { margin: var(--cr-s5) 0 0; aspect-ratio: 4 \/ 3; border-radius: 14px; background: #FFFFFF; overflow: hidden; }\n.cr-family__img img { width: 100%; height: 100%; object-fit: contain; padding: var(--cr-s4); transition: opacity 450ms var(--cr-ease); }\n.cr-family__img img.is-swap { opacity: 0; }\n.cr-family ul { list-style: none; margin: var(--cr-s5) 0 0; padding: 0; }\n.cr-family li { border-bottom: 1px solid var(--cr-line-dark); }\n.cr-family a, .cr-family span.cr-plain { display: flex; justify-content: space-between; align-items: center; gap: var(--cr-s3); padding: var(--cr-s3) 0; text-decoration: none; font-size: 1.0625rem; font-weight: 500; transition: color var(--cr-t-med) var(--cr-ease); }\n.cr-family a svg { opacity: 0; transform: translateX(-8px); transition: opacity var(--cr-t-med) var(--cr-ease), transform 600ms var(--cr-ease); color: var(--cr-lime); }\n.cr-family a:hover svg, .cr-family a:focus-visible svg { opacity: 1; transform: none; }\n.cr-family a:hover { color: var(--cr-lime); }\n.cr-family .cr-note { display: block; font-size: var(--cr-fs-small); font-weight: 400; color: rgba(255, 255, 255,.86); }\n.cr-family.is-active { background: var(--cr-green); }\n.cr-family.is-active h4 { color: var(--cr-cream); }\n.cr-family.is-active li { border-bottom-color: rgba(255, 255, 255,.3); }\n.cr-family.is-active a:hover { color: var(--cr-cream); }\n.cr-family.is-active a svg { color: var(--cr-cream); }\n.cr-services { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--cr-s4); }\n.cr-service { height: 100%; padding: var(--cr-s6) var(--cr-s5); border: 1px solid var(--cr-line-dark); border-radius: var(--cr-r-card); position: relative; overflow: hidden; transition: border-color 700ms var(--cr-ease), transform 700ms var(--cr-ease); }\n.cr-service::after { content: \"\"; position: absolute; left: 0; top: 0; height: 3px; width: 100%; background: var(--cr-lime); transform: scaleX(0); transform-origin: left; transition: transform 700ms var(--cr-ease); }\n.cr-service h4 { margin: var(--cr-s7) 0 0; font-size: 1.25rem; font-weight: 600; letter-spacing: -0.015em; line-height: 1.25; }\n.cr-service p { margin: var(--cr-s3) 0 0; color: rgba(255, 255, 255,.86); font-size: 0.9375rem; }\n.cr-service__i { font-size: var(--cr-fs-label); letter-spacing: var(--cr-tracking-label); font-weight: 500; color: var(--cr-lime); }\n@media (hover: hover) { .cr-service:hover { transform: translateY(-3px); border-color: rgba(255, 255, 255,.45); } .cr-service:hover::after { transform: scaleX(1); } }\n\n\/* Quality & compliance *\/\n.cr-quality { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--cr-s5); margin-top: var(--cr-s8); }\n.cr-qcard { border-top: 1px solid var(--cr-ink); padding-top: var(--cr-s5); }\n.cr-qcard__n { display: block; font-size: clamp(4rem, 2rem + 6vw, 8rem); font-weight: 100; line-height: .9; letter-spacing: -0.06em; color: var(--cr-green-text); transform-origin: left bottom; transition: transform var(--cr-t-slow) var(--cr-ease), opacity var(--cr-t-slow) var(--cr-ease); }\n.cr-qcard h3 { margin-top: var(--cr-s5); }\n.cr-qcard p { margin: var(--cr-s3) 0 0; color: var(--cr-ink-70); }\n@media (hover: hover) { .cr-qcard:hover .cr-qcard__n { transform: translateY(-6px) scale(1.06); } }\n.cr-seal { width: 132px; height: 132px; border-radius: 50%; background: #fff; border: 1px solid var(--cr-line); display: flex; align-items: center; justify-content: center; padding: 16px; box-shadow: 0 10px 24px -18px rgba(16, 26, 66,.6); transition: transform var(--cr-t-med) var(--cr-ease); }\n.cr-seal img { width: 100%; height: auto; }\n@media (hover: hover) { .cr-seal:hover { transform: scale(1.06); } }\n\n\/* R&D + Medical affairs (green) *\/\n.cr-rd { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--cr-s9); margin-top: var(--cr-s8); }\n.cr-rd__col { border-top: 1px solid var(--cr-line-dark); padding-top: var(--cr-s6); }\n.cr-rd__col .cr-lead { font-style: italic; font-weight: 300; font-size: clamp(1.25rem, 1rem + 1vw, 1.75rem); line-height: 1.4; max-width: none; }\n.cr-points { list-style: none; margin: var(--cr-s6) 0 0; padding: 0; display: grid; gap: var(--cr-s4); }\n.cr-points li { display: grid; grid-template-columns: 14px 1fr; gap: var(--cr-s4); align-items: start; }\n.cr-points li::before { content: \"\"; width: 10px; height: 10px; border-radius: 50%; background: var(--cr-lime); margin-top: 9px; }\n\n\/* Locations *\/\n.cr-locs > li { min-width: 0; }\n.cr-locs { list-style: none; margin: var(--cr-s8) 0 0; padding: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--cr-s5); }\n.cr-loc { height: 100%; display: flex; flex-direction: column; gap: var(--cr-s5); padding: var(--cr-s6); background: var(--cr-peach); border-radius: var(--cr-r-card); position: relative; overflow: hidden; transition: transform 700ms var(--cr-ease), background-color 700ms var(--cr-ease); }\n.cr-loc__country { font-size: clamp(2.5rem, 1.5rem + 3.2vw, 4.5rem); font-weight: 800; letter-spacing: -0.06em; line-height: .9; color: var(--cr-green-text); margin: 0; }\n.cr-loc address { font-style: normal; color: var(--cr-ink-70); }\n.cr-loc__contact { margin-top: auto; display: grid; gap: var(--cr-s2); padding-top: var(--cr-s4); border-top: 1px solid var(--cr-line); font-weight: 500; font-size: 0.9375rem; }\n.cr-loc__contact a { overflow-wrap: anywhere; text-decoration: none; border-bottom: 1px solid transparent; width: fit-content; transition: border-color var(--cr-t-fast) var(--cr-ease); }\n.cr-loc__contact a:hover { border-color: currentColor; }\n@media (hover: hover) { .cr-loc:hover { transform: translateY(-4px); } }\n\n\/* ---------------------------------------------------------\n   07.4 TEAM \u00b7 07.5 PHARMA \u00b7 07.6 SUPPLEMENTS\n   07.8 MEDIA RELEASES \u00b7 07.9 CONTACT \u00b7 07.10 HOME\n   (each page adds its own block here, reusing 05\/06 first)\n   --------------------------------------------------------- *\/\n\n\/* Shared closing CTA band (06) *\/\n.cr-cta { padding: var(--cr-s10) 0; }\n.cr-cta .cr-display { margin: 0; font-size: clamp(3rem, 1rem + 7vw, 8rem); }\n.cr-cta__row { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: end; gap: var(--cr-s6); margin-top: var(--cr-s7); }\n.cr-cta__row p { margin: 0; max-width: 46ch; }\n.cr-cta__actions { display: flex; flex-wrap: wrap; gap: var(--cr-s3); }\n\n\/* 05.7 Markers (pending content \/ review) *\/\n.cr-pending { display: inline-block; font-size: 0.8125rem; font-weight: 500; color: #6B3E00; background: #FFE9B8; border: 1px dashed #B97A12; border-radius: 4px; padding: 2px 8px; }\n\n\/* 05.8 Cursor follower (decorative, pointer devices) *\/\n.cr-cursor { position: fixed; left: 0; top: 0; width: 36px; height: 36px; margin: -18px 0 0 -18px; border: 1.5px solid var(--cr-green); border-radius: 50%; pointer-events: none; z-index: 90; opacity: 0; transition: width 600ms var(--cr-ease), height 600ms var(--cr-ease), margin 600ms var(--cr-ease), background-color 600ms var(--cr-ease), border-color 600ms var(--cr-ease), opacity 400ms var(--cr-ease); mix-blend-mode: multiply; }\n.cr-cursor.is-on { opacity: 1; }\n.cr-cursor.is-hover { width: 72px; height: 72px; margin: -36px 0 0 -36px; background: rgba(91, 160, 68,.35); border-color: var(--cr-lime); }\n.cr-cursor.is-dark { border-color: var(--cr-lime); mix-blend-mode: normal; }\n\n\/* 05.9 Page transition *\/\n.cr-transition { position: fixed; inset: 0; z-index: 100; background: var(--cr-green); transform: scaleY(0); transform-origin: bottom; pointer-events: none; }\n.cr-transition.is-enter { animation: cr-wipe-out 900ms var(--cr-ease-io) forwards; }\n.cr-transition.is-leave { transform-origin: bottom; animation: cr-wipe-in 600ms var(--cr-ease-io) forwards; }\n@keyframes cr-wipe-out { from { transform: scaleY(1); transform-origin: top; } to { transform: scaleY(0); transform-origin: top; } }\n@keyframes cr-wipe-in { from { transform: scaleY(0); } to { transform: scaleY(1); } }\n\n\/* =========================================================\n   08  MOTION SYSTEM (JS adds .cr-js on <html>)\n   ========================================================= *\/\n@media (prefers-reduced-motion: no-preference) {\n  .cr-js [data-reveal] { opacity: 0; transform: translateY(32px); transition: opacity 900ms var(--cr-ease), transform 900ms var(--cr-ease); transition-delay: var(--cr-d, 0ms); }\n  .cr-js [data-reveal].is-in { opacity: 1; transform: none; }\n  .cr-js [data-lines] .cr-ln > span { transform: translateY(105%); transition: transform 1100ms var(--cr-ease); }\n  .cr-js [data-lines] .cr-ln:nth-child(2) > span { transition-delay: 90ms; }\n  .cr-js [data-lines] .cr-ln:nth-child(3) > span { transition-delay: 180ms; }\n  .cr-js [data-lines].is-in .cr-ln > span { transform: none; }\n  .cr-js .cr-chain { --cr-draw: 0; }\n  .cr-js .cr-chain.is-in { --cr-draw: 1; }\n  .cr-scroll__wheel { animation: cr-wheel 1.6s var(--cr-ease) infinite; }\n}\n@keyframes cr-wheel { 0% { opacity: 0; transform: translateY(0); } 20% { opacity: 1; } 70% { opacity: 1; transform: translateY(12px); } 100% { opacity: 0; transform: translateY(14px); } }\n@media (prefers-reduced-motion: reduce) {\n  .cr-page *, .cr-page *::before, .cr-page *::after { transition-duration: 0.01ms !important; animation: none !important; }\n  .cr-cursor, .cr-transition { display: none; }\n}\n\n\/* =========================================================\n   09  RESPONSIVE\n   ========================================================= *\/\n@media (max-width: 1100px) {\n  .cr-services { grid-template-columns: repeat(2, minmax(0, 1fr)); }\n  .cr-hero__foot { grid-template-columns: 1fr; gap: var(--cr-s6); }\n}\n@media (max-width: 900px) {\n  .cr-section { padding: var(--cr-s9) 0; }\n  .cr-head, .cr-rd { grid-template-columns: 1fr; gap: var(--cr-s5); }\n  .cr-rd { gap: var(--cr-s7); }\n  .cr-families, .cr-quality, .cr-locs { grid-template-columns: 1fr; }\n  .cr-family { padding: var(--cr-s5); }\n  .cr-chain { grid-template-columns: 1fr; gap: var(--cr-s5); padding-left: 40px; }\n  .cr-chain::before { left: 11px; right: auto; top: 0; bottom: 0; width: 1px; height: auto; transform-origin: top; transform: scaleY(var(--cr-draw, 1)); }\n  .cr-chain__dot { position: absolute; left: -40px; top: 4px; }\n  .cr-chain__n { margin-top: 0; }\n  .cr-channels { grid-template-columns: 1fr; }\n  .cr-table li { grid-template-columns: 48px 1fr; }\n  .cr-table__d { grid-column: 2; }\n}\n@media (max-width: 600px) {\n  .cr-figure--wide .cr-figure__frame, .cr-figure--split .cr-figure__frame { aspect-ratio: 4 \/ 3; }\n  .cr-figure--banner .cr-figure__frame { aspect-ratio: 16 \/ 9; }\n  .cr-hero__inner { padding-top: var(--cr-s10); padding-bottom: calc(var(--cr-s9) + 24px); }\n  .cr-specs, .cr-facts { grid-template-columns: 1fr; }\n  .cr-facts div, .cr-facts div:nth-child(2), .cr-facts div:last-child { border-right: 0; padding-left: 0; border-bottom: 1px solid var(--cr-line); padding-bottom: var(--cr-s4); }\n  .cr-services { grid-template-columns: 1fr; }\n  .cr-subnav ol { gap: var(--cr-s5); }\n  .cr-cta__actions, .cr-cta__actions .cr-btn { width: 100%; }\n  .cr-cta__actions .cr-btn { justify-content: space-between; }\n}\n\n\n\/* =========================================================\n   BUTTON STATES \u2014 protected against the theme guard and the\n   Elementor kit link colors (text never matches the hover fill)\n   ========================================================= *\/\n.cr-page a.cr-btn, .cr-page a.cr-btn:hover, .cr-page a.cr-btn:focus { text-decoration: none !important; }\n.cr-page a.cr-btn--primary, .cr-page a.cr-btn--primary:visited, .cr-page a.cr-btn--primary:focus, .cr-page a.cr-btn--primary:active { color: var(--cr-cream) !important; }\n.cr-page a.cr-btn--ghost, .cr-page a.cr-btn--ghost:visited, .cr-page a.cr-btn--ghost:focus, .cr-page a.cr-btn--ghost:active { color: var(--cr-cream) !important; }\n@media (hover: hover) {\n  .cr-page a.cr-btn--primary:hover { color: var(--cr-cream) !important; }\n  .cr-page a.cr-btn--ghost:hover { color: var(--cr-ink) !important; }\n}\n\n\/* PALETTE v2 \u2014 contrast fixes (white on #5BA044 is 3.1:1 \u2192 green surfaces carry navy text) *\/\n.cr-green-bg { color: var(--cr-ink); }\n.cr-green-bg .cr-muted { color: rgba(16, 26, 66, 0.86); }\n.cr-green-bg .cr-label, .cr-green-bg .cr-label__idx { color: var(--cr-ink); }\n.cr-green-bg :focus-visible { outline-color: var(--cr-ink); }\n.cr-btn--primary { color: var(--cr-ink); }\n.cr-btn--primary .cr-btn__icon { background: var(--cr-ink); color: #FFFFFF; }\n.cr-btn--primary:hover .cr-btn__icon { background: #FFFFFF; color: var(--cr-ink); }\n.cr-page a.cr-btn--primary, .cr-page a.cr-btn--primary:visited, .cr-page a.cr-btn--primary:focus, .cr-page a.cr-btn--primary:active { color: var(--cr-ink) !important; }\n@media (hover: hover) { .cr-page a.cr-btn--primary:hover { color: #FFFFFF !important; } }\n.cr-family.is-active, .cr-family.is-active h4, .cr-family.is-active a, .cr-family.is-active a:hover, .cr-family.is-active a svg, .cr-family.is-active .cr-note { color: var(--cr-ink); }\n.cr-family.is-active li { border-bottom-color: rgba(16, 26, 66, 0.25); }\n.cr-page .cr-green-bg a.cr-btn--ghost, .cr-page .cr-green-bg a.cr-btn--ghost:visited, .cr-page .cr-green-bg a.cr-btn--ghost:focus { color: var(--cr-ink) !important; border-color: var(--cr-ink) !important; }\n.cr-green-bg .cr-btn--ghost .cr-btn__icon { background: var(--cr-ink); color: #FFFFFF; }\n.cr-green-bg .cr-btn--ghost::before { background: var(--cr-ink); }\n@media (hover: hover) { .cr-page .cr-green-bg a.cr-btn--ghost:hover { color: #FFFFFF !important; } .cr-green-bg .cr-btn--ghost:hover .cr-btn__icon { background: #FFFFFF; color: var(--cr-ink); } }\n.cr-dark .cr-quote, .cr-dark .cr-qcard__n, .cr-dark .cr-channel__k, .cr-dark .cr-loc__country { color: var(--cr-lime); }\n\n\/* Product families: Pharma (wide, two-column list) + Dietary supplements *\/\n.cr-families--2 { grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); }\n.cr-family--wide ul { columns: 2; column-gap: var(--cr-s6); }\n.cr-family--wide li { break-inside: avoid; }\n.cr-family--wide .cr-family__img { aspect-ratio: 16 \/ 7; }\n@media (max-width: 900px) { .cr-families--2 { grid-template-columns: 1fr; } }\n@media (max-width: 600px) { .cr-family--wide ul { columns: 1; } }\n\n\/* =========================================================\n   CRASSULA PHARMACEUTICALS \u2014 home.css\n   Home page (\/) add-on. Requires about.css.\n   ========================================================= *\/\n\/* Hero extras: video + CTAs + operations line *\/\n.cr-hero__video { position: absolute; inset: 0; z-index: -2; overflow: hidden; pointer-events: none; opacity: 0; transition: opacity 1.2s var(--cr-ease); }\n.cr-hero__video.is-ready { opacity: 1; }\n.cr-hero__video iframe { position: absolute; top: 50%; left: 50%; width: max(100%, 177.78vh); height: max(100%, 56.25vw); transform: translate(-50%, -50%); border: 0; }\n.cr-hero__toggle { position: absolute; right: var(--cr-gutter); bottom: var(--cr-s5); width: 44px; height: 44px; border-radius: 50%; border: 1.5px solid rgba(255, 255, 255,.7); background: rgba(16, 26, 66,.35); color: var(--cr-cream); display: inline-flex; align-items: center; justify-content: center; cursor: pointer; transition: background-color var(--cr-t-med) var(--cr-ease), border-color var(--cr-t-med) var(--cr-ease); }\nbutton.cr-hero__toggle:hover, button.cr-hero__toggle:focus { background: rgba(16, 26, 66,.7); border-color: var(--cr-lime); color: var(--cr-cream); }\n.cr-hero__toggle[hidden] { display: none; }\n.cr-display--long { font-size: clamp(2rem, 0.9rem + 3.6vw, 4.5rem) !important; line-height: 1.02 !important; max-width: 20ch; }\n.cr-hero__ctas { display: flex; flex-wrap: wrap; justify-content: center; gap: var(--cr-s3); margin-top: var(--cr-s6); }\n.cr-hero .cr-btn--ghost { color: var(--cr-cream); border-color: rgba(255, 255, 255,.7); }\n.cr-hero .cr-btn--ghost .cr-btn__icon { background: var(--cr-cream); color: var(--cr-ink); }\n.cr-hero .cr-btn--ghost:hover { color: var(--cr-ink); }\n.cr-hero .cr-btn--ghost::before { background: var(--cr-cream); }\n.cr-ops { margin-top: var(--cr-s5); font-size: var(--cr-fs-label); letter-spacing: var(--cr-tracking-label); text-transform: uppercase; font-weight: 500; color: rgba(255, 255, 255,.9); }\n\n\/* 01 Positioning *\/\n.cr-pos { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: var(--cr-s8); align-items: start; margin-top: var(--cr-s8); }\n.cr-pos .cr-figure { margin: 0; position: sticky; top: calc(var(--cr-sticky-offset, 0px) + 88px); }\n.cr-pos .cr-figure__frame { aspect-ratio: 4 \/ 5; }\n.cr-pillars3 { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--cr-ink); }\n.cr-pillars3 li { display: grid; grid-template-columns: 80px 1fr; gap: var(--cr-s5); padding: var(--cr-s6) 0; border-bottom: 1px solid var(--cr-line); }\n.cr-pillars3 .n { font-size: clamp(2.5rem, 1.8rem + 2vw, 3.75rem); font-weight: 100; letter-spacing: -0.05em; line-height: .9; color: var(--cr-green-text); transition: transform 700ms var(--cr-ease); transform-origin: left bottom; display: inline-block; }\n.cr-pillars3 h3 { margin: 0; font-size: var(--cr-fs-h3); font-weight: 600; letter-spacing: -0.02em; }\n.cr-pillars3 p { margin: var(--cr-s3) 0 0; color: var(--cr-ink-70); }\n@media (hover: hover) { .cr-pillars3 li:hover .n { transform: translateY(-4px) scale(1.06); } }\n\n\/* 02 Business areas: expanding panels *\/\n.cr-areas { display: flex; gap: var(--cr-s3); margin-top: var(--cr-s8); min-height: 560px; }\n.cr-area { position: relative; flex: 1 1 0; min-width: 0; border-radius: var(--cr-r-card); overflow: hidden; isolation: isolate; color: var(--cr-cream); transition: flex-grow 900ms var(--cr-ease); }\n.cr-area.is-open { flex-grow: 2.2; }\n.cr-area__img { position: absolute; inset: 0; z-index: -2; }\n.cr-area__img img { width: 100%; height: 100%; object-fit: cover; transition: transform 1.4s var(--cr-ease); }\n.cr-area::before { content: \"\"; position: absolute; inset: 0; z-index: -1; background: linear-gradient(180deg, rgba(16, 26, 66,.35) 0%, rgba(16, 26, 66,.88) 70%, rgba(16, 26, 66,.94) 100%); }\n.cr-area.is-open .cr-area__img img { transform: scale(1.04); }\n.cr-area__body { position: absolute; left: 0; right: 0; bottom: 0; padding: var(--cr-s6); }\n.cr-area .cr-label { color: var(--cr-lime); }\n.cr-area h3 { margin: var(--cr-s3) 0 0; font-size: clamp(1.5rem, 1.1rem + 1.2vw, 2.25rem); font-weight: 600; letter-spacing: -0.025em; line-height: 1.1; }\n.cr-area__more { display: grid; grid-template-rows: 0fr; opacity: 0; transition: grid-template-rows 800ms var(--cr-ease), opacity 600ms var(--cr-ease); }\n.cr-area.is-open .cr-area__more { grid-template-rows: 1fr; opacity: 1; }\n.cr-area__more > div { overflow: hidden; }\n.cr-area p { margin: var(--cr-s3) 0 0; color: rgba(255, 255, 255,.92); max-width: 52ch; }\n.cr-area ul { margin: var(--cr-s3) 0 0; padding: 0; list-style: none; display: flex; flex-wrap: wrap; gap: 6px; }\n.cr-area ul li { padding: 5px 12px; border-radius: var(--cr-r-pill); border: 1px solid rgba(255, 255, 255,.5); font-size: .8125rem; font-weight: 500; }\n.cr-area__links { display: flex; flex-wrap: wrap; gap: var(--cr-s3); margin-top: var(--cr-s4); }\n.cr-area__links a { color: var(--cr-cream); font-weight: 500; text-underline-offset: 4px; text-decoration-color: var(--cr-lime); }\n.cr-area__links a:hover { color: var(--cr-lime); }\n.cr-area__toggle { position: absolute; inset: 0; z-index: 0; background: transparent; border: 0; cursor: pointer; }\n.cr-area__toggle:focus-visible { outline: 3px solid var(--cr-lime); outline-offset: -3px; border-radius: var(--cr-r-card); }\n.cr-area__body { z-index: 1; pointer-events: none; }\n.cr-area__body a { pointer-events: auto; }\n\n\/* 04 Featured products *\/\n.cr-feat { list-style: none; margin: var(--cr-s8) 0 0; padding: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--cr-s5); }\n.cr-fp { position: relative; height: 100%; display: flex; flex-direction: column; background: #fff; border: 1px solid var(--cr-line); border-radius: var(--cr-r-card); overflow: hidden; transition: transform 700ms var(--cr-ease), box-shadow 700ms var(--cr-ease), border-color 700ms var(--cr-ease); }\n.cr-fp__img { aspect-ratio: 4 \/ 3; overflow: hidden; border-bottom: 1px solid var(--cr-line); }\n.cr-fp__img img { width: 100%; height: 100%; object-fit: contain; padding: var(--cr-s4); transition: transform 1.2s var(--cr-ease); }\n.cr-fp__body { padding: var(--cr-s5) var(--cr-s5) var(--cr-s6); display: flex; flex-direction: column; gap: var(--cr-s2); flex: 1; }\n.cr-fp__tag { font-size: var(--cr-fs-label); letter-spacing: var(--cr-tracking-label); text-transform: uppercase; font-weight: 500; color: var(--cr-ink-70); }\n.cr-fp h3 { margin: 0; font-size: var(--cr-fs-h3); font-weight: 600; letter-spacing: -0.02em; }\n.cr-fp h3 a { color: inherit; text-decoration: none; }\n.cr-fp h3 a::after { content: \"\"; position: absolute; inset: 0; }\n.cr-fp h3 a:focus-visible { outline: none; }\n.cr-fp:has(a:focus-visible) { box-shadow: 0 0 0 3px var(--cr-green); }\n.cr-fp p { margin: 0; color: var(--cr-ink-70); font-size: .9375rem; line-height: 1.55; }\n.cr-fp__more { margin-top: auto; padding-top: var(--cr-s4); display: inline-flex; align-items: center; gap: 6px; font-weight: 500; font-size: .9375rem; color: var(--cr-green-text); }\n.cr-fp__more svg { transition: transform 600ms var(--cr-ease); }\n@media (hover: hover) { .cr-fp:hover { transform: translateY(-4px); border-color: transparent; box-shadow: 0 26px 48px -30px rgba(16, 26, 66,.55); } .cr-fp:hover .cr-fp__img img { transform: scale(1.05); } .cr-fp:hover .cr-fp__more svg { transform: translateX(4px); } }\n.cr-links { display: flex; flex-wrap: wrap; gap: var(--cr-s3); margin-top: var(--cr-s6); }\n\n\/* 05 Manufacturing *\/\n.cr-mfg { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: var(--cr-s8); align-items: center; margin-top: var(--cr-s8); }\n.cr-mfg .cr-figure { margin: 0; }\n.cr-mfg .cr-figure__frame { aspect-ratio: 3 \/ 2; }\n.cr-mfg dl { margin: 0; display: grid; gap: 0; border-top: 1px solid var(--cr-line-dark); }\n.cr-mfg dl div { padding: var(--cr-s5) 0; border-bottom: 1px solid var(--cr-line-dark); }\n.cr-mfg dt { font-size: var(--cr-fs-label); letter-spacing: var(--cr-tracking-label); text-transform: uppercase; font-weight: 500; color: var(--cr-lime); }\n.cr-mfg dd { margin: var(--cr-s2) 0 0; font-size: clamp(1.5rem, 1.1rem + 1.2vw, 2.25rem); font-weight: 200; letter-spacing: -0.03em; line-height: 1.1; }\n.cr-mfg dd strong { font-weight: 700; }\n.cr-dark .cr-figure__cap { color: rgba(255, 255, 255,.86); }\n.cr-dark .cr-figure__cap .cr-label { color: var(--cr-lime); }\n\n\/* 06 Global presence *\/\n.cr-world { list-style: none; margin: var(--cr-s8) 0 0; padding: 0; border-top: 1px solid var(--cr-ink); }\n.cr-world li { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 4fr) minmax(0, 3fr); gap: var(--cr-s5); align-items: baseline; padding: var(--cr-s4) 0; border-bottom: 1px solid var(--cr-line); }\n.cr-world li > * { transition: transform var(--cr-t-med) var(--cr-ease), color var(--cr-t-med) var(--cr-ease); }\n.cr-world strong { font-size: clamp(1.75rem, 1.1rem + 2vw, 3rem); font-weight: 600; letter-spacing: -0.035em; line-height: 1; }\n.cr-world span { color: var(--cr-ink-70); }\n.cr-world em { font-style: normal; font-size: var(--cr-fs-label); letter-spacing: var(--cr-tracking-label); text-transform: uppercase; font-weight: 500; text-align: right; }\n@media (hover: hover) { .cr-world li:hover strong { transform: translateX(12px); color: var(--cr-green-text); } }\n\n\/* 07 News *\/\n.cr-news { list-style: none; margin: var(--cr-s8) 0 0; padding: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--cr-s5); }\n.cr-nc { position: relative; height: 100%; display: flex; flex-direction: column; background: var(--cr-cream); border-radius: var(--cr-r-card); overflow: hidden; transition: transform 700ms var(--cr-ease); }\n.cr-nc__img { aspect-ratio: 16 \/ 10; overflow: hidden; background: #fff; }\n.cr-nc__img img { width: 100%; height: 100%; object-fit: cover; transition: transform 1.2s var(--cr-ease); }\n.cr-nc__body { padding: var(--cr-s5); display: flex; flex-direction: column; gap: var(--cr-s2); }\n.cr-nc__meta { font-size: var(--cr-fs-label); letter-spacing: var(--cr-tracking-label); text-transform: uppercase; font-weight: 500; color: var(--cr-ink-70); }\n.cr-nc h3 { margin: 0; font-size: 1.1875rem; font-weight: 600; letter-spacing: -0.01em; line-height: 1.3; }\n.cr-nc h3 a { color: inherit; text-decoration: none; }\n.cr-nc h3 a::after { content: \"\"; position: absolute; inset: 0; }\n.cr-nc h3 a:focus-visible { outline: none; }\n.cr-nc:has(a:focus-visible) { box-shadow: 0 0 0 3px var(--cr-green); }\n@media (hover: hover) { .cr-nc:hover { transform: translateY(-4px); } .cr-nc:hover .cr-nc__img img { transform: scale(1.05); } }\n\n\/* 08 Certifications *\/\n.cr-cert { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: var(--cr-s8); align-items: center; margin-top: var(--cr-s7); }\n.cr-cert__card { background: #fff; border-radius: var(--cr-r-card); padding: var(--cr-s6); box-shadow: 0 24px 48px -36px rgba(16, 26, 66,.55); }\n.cr-cert__card img { width: 100%; height: auto; }\n.cr-cert__chips { list-style: none; margin: var(--cr-s5) 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: var(--cr-s2); }\n.cr-cert__chips li { padding: 10px 18px; border-radius: var(--cr-r-pill); border: 1px solid var(--cr-ink); font-weight: 500; font-size: var(--cr-fs-small); transition: background-color var(--cr-t-med) var(--cr-ease), color var(--cr-t-med) var(--cr-ease); }\n@media (hover: hover) { .cr-cert__chips li:hover { background: var(--cr-ink); color: var(--cr-cream); } }\n.cr-cert__seal { display: flex; align-items: center; gap: var(--cr-s5); margin-top: var(--cr-s6); }\n\n@media (max-width: 1024px) { .cr-feat, .cr-news { grid-template-columns: repeat(2, minmax(0, 1fr)); } }\n@media (max-width: 900px) {\n  .cr-pos, .cr-mfg, .cr-cert { grid-template-columns: 1fr; gap: var(--cr-s6); }\n  .cr-pos .cr-figure { position: static; }\n  .cr-pos .cr-figure__frame { aspect-ratio: 16 \/ 10; }\n  .cr-areas { flex-direction: column; min-height: 0; }\n  .cr-area { min-height: 420px; flex: none; }\n  .cr-area .cr-area__more { grid-template-rows: 1fr; opacity: 1; }\n  .cr-world li { grid-template-columns: 1fr; gap: 4px; }\n  .cr-world em { text-align: left; }\n}\n@media (max-width: 600px) { .cr-feat, .cr-news{ grid-template-columns: minmax(0, 1fr); } .cr-pillars3 li { grid-template-columns: 56px 1fr; } }\n\n\/* v1.1 \u2014 buttons readable in WordPress (theme\/kit link colors can't override them) *\/\n.cr-page a.cr-btn, .cr-page a.cr-btn:visited { text-decoration: none !important; }\n.cr-page a.cr-btn--primary, .cr-page a.cr-btn--primary:visited, .cr-page a.cr-btn--primary:focus { color: var(--cr-cream) !important; }\n.cr-page a.cr-btn--primary:hover { color: var(--cr-cream) !important; }\n.cr-page a.cr-btn--primary .cr-btn__icon { background: var(--cr-cream) !important; color: var(--cr-green) !important; }\n\/* Ghost button on light sections (cream \/ peach): ink outline + ink text, fills ink on hover *\/\n.cr-cream a.cr-btn--ghost, .cr-peach a.cr-btn--ghost, .cr-cream a.cr-btn--ghost:visited, .cr-peach a.cr-btn--ghost:visited { color: var(--cr-ink) !important; border-color: var(--cr-ink) !important; }\n.cr-cream a.cr-btn--ghost .cr-btn__icon, .cr-peach a.cr-btn--ghost .cr-btn__icon { background: var(--cr-ink) !important; color: var(--cr-cream) !important; }\n.cr-cream a.cr-btn--ghost::before, .cr-peach a.cr-btn--ghost::before { background: var(--cr-ink); }\n.cr-cream a.cr-btn--ghost:hover, .cr-peach a.cr-btn--ghost:hover { color: var(--cr-cream) !important; }\n.cr-cream a.cr-btn--ghost:hover .cr-btn__icon, .cr-peach a.cr-btn--ghost:hover .cr-btn__icon { background: var(--cr-cream) !important; color: var(--cr-ink) !important; }\n\/* Ghost on dark sections and hero *\/\n.cr-dark a.cr-btn--ghost, .cr-hero a.cr-btn--ghost { color: var(--cr-cream) !important; }\n.cr-dark a.cr-btn--ghost:hover, .cr-hero a.cr-btn--ghost:hover { color: var(--cr-ink) !important; }\n\n\/* v1.1 \u2014 images shown whole, at their natural proportions (no crop, no white bands) *\/\n.cr-pos .cr-figure__frame{ aspect-ratio: auto !important; background: transparent; }\n.cr-pos .cr-figure__frame img{ height: auto !important; object-fit: initial; transform: none !important; display: block; }\n.cr-pos .cr-figure { max-width: 520px; }\n\n\/* theme guard: area toggles stay invisible in every state *\/\nbutton.cr-area__toggle, button.cr-area__toggle:hover, button.cr-area__toggle:focus, button.cr-area__toggle:active { background: transparent !important; border: 0 !important; padding: 0 !important; color: transparent !important; }\n\n<\/style>\n\n<!-- GEO \/ AIO \u00b7 datos estructurados -->\n<script type=\"application\/ld+json\">\n{\"@context\": \"https:\/\/schema.org\", \"@graph\": [{\"@type\": \"WebSite\", \"@id\": \"https:\/\/crassulapharma.com\/#website\", \"url\": \"https:\/\/crassulapharma.com\/\", \"name\": \"Crassula Pharmaceuticals\", \"inLanguage\": \"en\", \"publisher\": {\"@id\": \"https:\/\/crassulapharma.com\/#organization\"}}, {\"@type\": \"WebPage\", \"@id\": \"https:\/\/crassulapharma.com\/#webpage\", \"url\": \"https:\/\/crassulapharma.com\/\", \"name\": \"Crassula Pharmaceuticals | Technology-Driven CDMO\", \"description\": \"Technology-driven CDMO for finished-dose pharmaceutical and nutraceutical manufacturing, from formulation and delivery technologies to GMP scale-up.\", \"isPartOf\": {\"@id\": \"https:\/\/crassulapharma.com\/#website\"}, \"about\": {\"@id\": \"https:\/\/crassulapharma.com\/#organization\"}, \"inLanguage\": \"en\", \"primaryImageOfPage\": \"https:\/\/crassulapharma.com\/wp-content\/uploads\/2025\/09\/Crassula_Happy_Customersv2-scaled.jpg\"}, {\"@type\": [\"Organization\", \"Corporation\"], \"@id\": \"https:\/\/crassulapharma.com\/#organization\", \"name\": \"Crassula Pharmaceuticals\", \"legalName\": \"CRASSULA LLC\", \"url\": \"https:\/\/crassulapharma.com\/\", \"logo\": \"https:\/\/crassulapharma.com\/wp-content\/uploads\/2022\/04\/cropped-CRASSULA-LIFE-SCIENCE-02.png\", \"description\": \"Technology-driven CDMO for finished-dose pharmaceutical and nutraceutical manufacturing, from formulation design and delivery technologies to GMP manufacturing and scale-up.\", \"email\": \"info@crassulapharma.com\", \"telephone\": \"+1-954-676-7060\", \"address\": {\"@type\": \"PostalAddress\", \"streetAddress\": \"3301 N. University Dr., Suite 100\", \"addressLocality\": \"Coral Springs\", \"addressRegion\": \"FL\", \"postalCode\": \"33065\", \"addressCountry\": \"US\"}, \"areaServed\": [\"US\", \"IN\", \"HN\", \"CR\", \"GT\", \"PE\", \"CO\"], \"knowsAbout\": [\"Contract development and manufacturing (CDMO)\", \"Finished-dose pharmaceuticals\", \"Nutraceuticals\", \"Cosmeceuticals\", \"Phospholipid-based delivery systems\", \"GMP manufacturing\"], \"sameAs\": [\"https:\/\/www.facebook.com\/Crassulapharmaceuticals\/\", \"https:\/\/www.linkedin.com\/company\/crassula-pharmaceuticals\", \"https:\/\/www.youtube.com\/@CrassulaPharmaceuticals\", \"https:\/\/x.com\/crassula_llc\"]}, {\"@type\": \"ItemList\", \"@id\": \"https:\/\/crassulapharma.com\/#featured\", \"name\": \"Featured products\", \"itemListElement\": [{\"@type\": \"ListItem\", \"position\": 1, \"name\": \"Estarol\u00ae\", \"url\": \"https:\/\/crassulapharma.com\/estarol\/\"}, {\"@type\": \"ListItem\", \"position\": 2, \"name\": \"Glycedil\u00ae\", \"url\": \"https:\/\/crassulapharma.com\/glycedil\/\"}, {\"@type\": \"ListItem\", \"position\": 3, \"name\": \"Boulactis\u00ae\", \"url\": \"https:\/\/crassulapharma.com\/boulactis\/\"}]}]}\n<\/script>\n\n<!-- Contenido -->\n<div class=\"cr-transition\" aria-hidden=\"true\"><\/div>\n\n<main id=\"content\" class=\"cr-page\" data-page=\"home\">\n\n  <!-- ===== HERO ===== -->\n  <section class=\"cr-section cr-hero cr-hero--center\" aria-labelledby=\"hm-title\" style=\"padding:0\">\n    <div class=\"cr-hero__media\" data-parallax=\"0.18\"><img fetchpriority=\"high\" decoding=\"async\" src=\"https:\/\/crassulapharma.com\/wp-content\/uploads\/2025\/09\/Crassula_Happy_Customersv2-scaled.jpg\" alt=\"\" width=\"2560\" height=\"1440\" fetchpriority=\"high\" title=\"\"><\/div>\n    <div class=\"cr-hero__grid\" aria-hidden=\"true\"><\/div>\n    <div class=\"cr-wrap cr-hero__inner\">\n      <p class=\"cr-label\" style=\"justify-content:center;color:var(--cr-lime)\" data-reveal>Crassula Pharmaceuticals<\/p>\n      <h1 class=\"cr-display cr-display--long\" id=\"hm-title\" data-lines style=\"margin-top:24px\">\n        <span class=\"cr-ln\"><span>Technology-driven CDMO<\/span><\/span>\n        <span class=\"cr-ln\"><span class=\"t-800\">for finished-dose pharmaceutical<\/span><\/span>\n        <span class=\"cr-ln\"><span class=\"t-800\">&amp; nutraceutical manufacturing<\/span><\/span>\n      <\/h1>\n      <div class=\"cr-hero__foot\">\n        <p class=\"cr-answer\" data-reveal>Crassula Pharmaceuticals is a technology-driven CDMO for finished-dose pharmaceutical and nutraceutical manufacturing. From formulation design and delivery technologies to GMP manufacturing and scale-up, it supports the full lifecycle of regulated pharmaceutical and nutraceutical products, with operations in the United States, India and Latin America.<\/p>\n        <div class=\"cr-hero__ctas\" data-reveal style=\"--cr-d:120ms\">\n          <a class=\"cr-btn cr-btn--primary\" href=\"\/contact\/\">Partner with Crassula <span class=\"cr-btn__icon\" aria-hidden=\"true\"><svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M5 12h14M13 6l6 6-6 6\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><\/span><\/a>\n          <a class=\"cr-btn cr-btn--ghost\" href=\"\/facilities\/\">Explore our facilities <span class=\"cr-btn__icon\" aria-hidden=\"true\"><svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M5 12h14M13 6l6 6-6 6\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><\/span><\/a>\n        <\/div>\n        <p class=\"cr-ops\" data-reveal style=\"--cr-d:200ms\">Operations \u00b7 United States \u00b7 India \u00b7 Honduras \u00b7 Costa Rica \u00b7 Guatemala \u00b7 Peru \u00b7 Colombia<\/p>\n      <\/div>\n    <\/div>\n    <a class=\"cr-scroll\" href=\"#positioning\" aria-label=\"Scroll to content\"><span class=\"cr-scroll__mouse\" aria-hidden=\"true\"><span class=\"cr-scroll__wheel\"><\/span><\/span><\/a>\n  <\/section>\n\n  <nav class=\"cr-subnav\" aria-label=\"On this page\">\n    <ol>\n      <li><a href=\"#positioning\"><span>01<\/span> Who we are<\/a><\/li>\n      <li><a href=\"#areas\"><span>02<\/span> Business areas<\/a><\/li>\n      <li><a href=\"#products\"><span>03<\/span> Products<\/a><\/li>\n      <li><a href=\"#manufacturing\"><span>04<\/span> Manufacturing<\/a><\/li>\n      <li><a href=\"#presence\"><span>05<\/span> Global presence<\/a><\/li>\n      <li><a href=\"#news\"><span>06<\/span> News<\/a><\/li>\n      <li><a href=\"#certifications\"><span>07<\/span> Certifications<\/a><\/li>\n    <\/ol>\n    <span class=\"cr-progress\" aria-hidden=\"true\"><\/span>\n  <\/nav>\n\n  <!-- ===== 01 POSITIONING ===== -->\n  <section class=\"cr-section cr-cream\" id=\"positioning\" aria-labelledby=\"h1-title\">\n    <div class=\"cr-wrap\">\n      <div class=\"cr-head\">\n        <div data-reveal>\n          <span class=\"cr-label\"><span class=\"cr-label__idx\">01<\/span><span class=\"cr-label__bar\"><\/span>Who we are<\/span>\n          <h2 class=\"cr-h2\" id=\"h1-title\">From formulation <span class=\"t-200\"><em>to scale<\/em><\/span><\/h2>\n        <\/div>\n        <p class=\"cr-lead cr-muted\" data-reveal style=\"--cr-d:120ms;margin-top:0\">We support the full lifecycle of regulated pharmaceutical and nutraceutical products, from formulation design and delivery technologies to GMP manufacturing and scale-up.<\/p>\n      <\/div>\n      <div class=\"cr-pos\">\n        <figure class=\"cr-figure\" data-reveal>\n          <div class=\"cr-figure__frame\"><img decoding=\"async\" src=\"https:\/\/crassulapharma.com\/wp-content\/uploads\/2025\/08\/PQNS_1.jpg\" alt=\"PQNS platform overview\" loading=\"lazy\" title=\"\"><\/div>\n          <figcaption class=\"cr-figure__cap\"><span class=\"cr-label\">Fig. 01<\/span> PQNS platform<\/figcaption>\n        <\/figure>\n        <ol class=\"cr-pillars3\" data-stagger>\n          <li data-reveal><span class=\"n\" aria-hidden=\"true\">01<\/span><div><h3>Formulation &amp; delivery science<\/h3><p>We engineer delivery systems to improve the absorption, stability and performance of finished dosage forms, particularly for lipophilic and complex actives.<\/p><\/div><\/li>\n          <li data-reveal><span class=\"n\" aria-hidden=\"true\">02<\/span><div><h3>Integrated CDMO capabilities<\/h3><p>Formulation development, pharmaceutical-grade ingredient sourcing and GMP manufacturing combine to support reliable scale-up and commercialization.<\/p><\/div><\/li>\n          <li data-reveal><span class=\"n\" aria-hidden=\"true\">03<\/span><div><h3>Built for regulated markets<\/h3><p>Processes, documentation and quality systems are designed to meet the requirements of pharmaceutical and nutraceutical regulatory pathways.<\/p><\/div><\/li>\n        <\/ol>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <!-- ===== 02 BUSINESS AREAS ===== -->\n  <section class=\"cr-section cr-dark\" id=\"areas\" aria-labelledby=\"h2-title\">\n    <div class=\"cr-wrap\">\n      <div class=\"cr-head\">\n        <div data-reveal>\n          <span class=\"cr-label\"><span class=\"cr-label__idx\">02<\/span><span class=\"cr-label__bar\"><\/span>Business areas<\/span>\n          <h2 class=\"cr-h2\" id=\"h2-title\">Three divisions, <span class=\"t-200\"><em>one mission<\/em><\/span><\/h2>\n        <\/div>\n        <p class=\"cr-lead cr-muted\" data-reveal style=\"--cr-d:120ms;margin-top:0\">Integrated solutions in pharmaceuticals, nutraceuticals and cosmeceuticals.<\/p>\n      <\/div>\n      <div class=\"cr-areas\" data-reveal>\n        <article class=\"cr-area is-open\">\n          <div class=\"cr-area__img\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/crassulapharma.com\/wp-content\/uploads\/2025\/09\/Pharma_Crassula.jpg\" alt=\"\" width=\"1200\" height=\"800\" loading=\"lazy\" title=\"\"><\/div>\n          <button class=\"cr-area__toggle\" type=\"button\" aria-expanded=\"true\" aria-controls=\"area-pharma\"><span class=\"cr-sr\">Show Pharmaceuticals details<\/span><\/button>\n          <div class=\"cr-area__body\">\n            <span class=\"cr-label\">01 \u00b7 Pharmaceuticals<\/span>\n            <h3>Prescription therapies aligned to clinical endpoints<\/h3>\n            <div class=\"cr-area__more\" id=\"area-pharma\"><div>\n              <!-- REVIEW: claim -->\n              <p>Evidence-based Rx molecules and combinations for lipid control, glycemia, inflammation, pain and cardiovascular risk, with formulation support, CDMO partnerships and quality documentation.<\/p>\n              <ul><li>Cardiovascular<\/li><li>Type 2 diabetes<\/li><li>Pain &amp; inflammation<\/li><\/ul>\n              <div class=\"cr-area__links\"><a href=\"\/pharmaceutical\/\">Explore Pharma<\/a><a href=\"\/contact\/\">Partnering &amp; licensing<\/a><\/div>\n            <\/div><\/div>\n          <\/div>\n        <\/article>\n        <article class=\"cr-area\">\n          <div class=\"cr-area__img\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/crassulapharma.com\/wp-content\/uploads\/2025\/09\/Nutra_Products-e1759187541756.jpg\" alt=\"\" width=\"1200\" height=\"800\" loading=\"lazy\" title=\"\"><\/div>\n          <button class=\"cr-area__toggle\" type=\"button\" aria-expanded=\"false\" aria-controls=\"area-nutra\"><span class=\"cr-sr\">Show Dietary supplements details<\/span><\/button>\n          <div class=\"cr-area__body\">\n            <span class=\"cr-label\">02 \u00b7 Dietary supplements<\/span>\n            <h3>Dietary supplements<\/h3>\n            <div class=\"cr-area__more\" id=\"area-nutra\"><div>\n              <!-- REVIEW: claim -->\n              <p>Dietary supplements formulated to complement the diet, such as Boulactis\u00ae for intestinal microbiota balance and Q-Niflex for joint health.<\/p>\n              <ul><li>Boulactis\u00ae<\/li><li>Q-Niflex<\/li><\/ul>\n              <div class=\"cr-area__links\"><a href=\"\/finished-products\/\">Explore dietary supplements<\/a><\/div>\n            <\/div><\/div>\n          <\/div>\n        <\/article>\n        <article class=\"cr-area\">\n          <div class=\"cr-area__img\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/images.unsplash.com\/photo-1556228578-8c89e6adf883?auto=format&amp;fit=crop&amp;w=1200&amp;q=70\" alt=\"\" width=\"1200\" height=\"800\" loading=\"lazy\" data-source=\"unsplash\" title=\"\"><\/div>\n          <button class=\"cr-area__toggle\" type=\"button\" aria-expanded=\"false\" aria-controls=\"area-cosme\"><span class=\"cr-sr\">Show Cosmeceuticals details<\/span><\/button>\n          <div class=\"cr-area__body\">\n            <span class=\"cr-label\">03 \u00b7 Cosmeceuticals<\/span>\n            <h3>Science-driven beauty wellness<\/h3>\n            <div class=\"cr-area__more\" id=\"area-cosme\"><div>\n              <p>Science-driven innovations for skin, hair and overall beauty wellness.<\/p>\n              <div class=\"cr-area__links\"><a href=\"\/contact\/\">Talk to our team<\/a><\/div>\n            <\/div><\/div>\n          <\/div>\n        <\/article>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <!-- ===== 03 PRODUCTS ===== -->\n  <section class=\"cr-section cr-cream\" id=\"products\" aria-labelledby=\"h4-title\">\n    <div class=\"cr-wrap\">\n      <div class=\"cr-head\">\n        <div data-reveal>\n          <span class=\"cr-label\"><span class=\"cr-label__idx\">03<\/span><span class=\"cr-label__bar\"><\/span>Featured products<\/span>\n          <h2 class=\"cr-h2\" id=\"h4-title\">Featured <span class=\"t-200\"><em>products<\/em><\/span><\/h2>\n        <\/div>\n        <p class=\"cr-lead cr-muted\" data-reveal style=\"--cr-d:120ms;margin-top:0\">A selection from our prescription and dietary supplement portfolios.<\/p>\n      <\/div>\n      <ul class=\"cr-feat\" data-stagger>\n        <li data-reveal><article class=\"cr-fp\"><div class=\"cr-fp__img\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/crassulapharma.com\/wp-content\/uploads\/2026\/10\/estarol-40mg.png\" alt=\"Estarol packaging\" width=\"800\" height=\"600\" loading=\"lazy\" title=\"\"><\/div><div class=\"cr-fp__body\"><span class=\"cr-fp__tag\">Statin \u00b7 Atorvastatin<\/span><h3><a href=\"https:\/\/crassulapharma.com\/estarol\/\">Estarol\u00ae<\/a><\/h3><p>HMG-CoA reductase inhibitor in 20 mg and 40 mg tablets.<\/p><span class=\"cr-fp__more\" aria-hidden=\"true\">View product <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M5 12h14M13 6l6 6-6 6\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><\/span><\/div><\/article><\/li>\n        <li data-reveal><article class=\"cr-fp\"><div class=\"cr-fp__img\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/crassulapharma.com\/wp-content\/uploads\/2026\/10\/box-glycedil.png\" alt=\"Glycedil packaging\" width=\"800\" height=\"600\" loading=\"lazy\" title=\"\"><\/div><div class=\"cr-fp__body\"><span class=\"cr-fp__tag\">DPP-4 inhibitor \u00b7 Sitagliptin<\/span><h3><a href=\"https:\/\/crassulapharma.com\/glycedil\/\">Glycedil\u00ae<\/a><\/h3><p>Sitagliptin 100 mg for type 2 diabetes mellitus.<\/p><span class=\"cr-fp__more\" aria-hidden=\"true\">View product <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M5 12h14M13 6l6 6-6 6\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><\/span><\/div><\/article><\/li>\n        <li data-reveal><article class=\"cr-fp\"><div class=\"cr-fp__img\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/crassulapharma.com\/wp-content\/uploads\/2026\/10\/box-boulactis.png\" alt=\"Boulactis packaging\" width=\"800\" height=\"600\" loading=\"lazy\" title=\"\"><\/div><div class=\"cr-fp__body\"><span class=\"cr-fp__tag\">Dietary supplement \u00b7 Probiotic yeast<\/span><h3><a href=\"https:\/\/crassulapharma.com\/boulactis\/\">Boulactis\u00ae<\/a><\/h3><p>Saccharomyces boulardii supporting intestinal microbiota balance and digestive well-being.<\/p><span class=\"cr-fp__more\" aria-hidden=\"true\">View product <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M5 12h14M13 6l6 6-6 6\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><\/span><\/div><\/article><\/li>\n      <\/ul>\n      <div class=\"cr-links\" data-reveal><a class=\"cr-btn cr-btn--primary\" href=\"\/pharmaceutical\/\">Pharma portfolio <span class=\"cr-btn__icon\" aria-hidden=\"true\"><svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M5 12h14M13 6l6 6-6 6\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><\/span><\/a><a class=\"cr-btn cr-btn--ghost\" href=\"\/finished-products\/\">Dietary supplements <span class=\"cr-btn__icon\" aria-hidden=\"true\"><svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M5 12h14M13 6l6 6-6 6\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><\/span><\/a><\/div>\n    <\/div>\n  <\/section>\n\n  <!-- ===== 04 MANUFACTURING ===== -->\n  <section class=\"cr-section cr-dark\" id=\"manufacturing\" aria-labelledby=\"h5-title\">\n    <div class=\"cr-wrap\">\n      <div class=\"cr-head\">\n        <div data-reveal>\n          <span class=\"cr-label\"><span class=\"cr-label__idx\">04<\/span><span class=\"cr-label__bar\"><\/span>Manufacturing<\/span>\n          <h2 class=\"cr-h2\" id=\"h5-title\">GMP manufacturing <span class=\"t-200\"><em>at scale<\/em><\/span><\/h2>\n        <\/div>\n        <p class=\"cr-lead cr-muted\" data-reveal style=\"--cr-d:120ms;margin-top:0\">From formulation to scale: CDMO engagements leveraging PQNS and capsule and softgel platforms.<\/p>\n      <\/div>\n      <div class=\"cr-mfg\">\n        <figure class=\"cr-figure\" data-reveal>\n          <div class=\"cr-figure__frame\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/crassulapharma.com\/wp-content\/uploads\/2025\/01\/Blsiter-Machine-1024x684.jpg\" alt=\"High-speed blister packaging machine producing serialized prescription packs\" width=\"1024\" height=\"684\" loading=\"lazy\" data-parallax-img title=\"\"><\/div>\n          <figcaption class=\"cr-figure__cap\"><span class=\"cr-label\">Fig. 03<\/span> Blister packaging line<\/figcaption>\n        <\/figure>\n        <div data-reveal style=\"--cr-d:120ms\">\n          <!-- REVIEW: claim (WHO-GMP, site area) -->\n          <dl>\n            <div><dt>Site<\/dt><dd><strong>20,000<\/strong> m\u00b2 facility<\/dd><\/div>\n            <div><dt>Standard<\/dt><dd><strong>WHO-GMP<\/strong> manufacturing<\/dd><\/div>\n            <div><dt>Lines<\/dt><dd>Tablets, <strong>capsules &amp; softgels<\/strong><\/dd><\/div>\n          <\/dl>\n          <div class=\"cr-links\"><a class=\"cr-btn cr-btn--primary\" href=\"\/facilities\/\">Explore facilities <span class=\"cr-btn__icon\" aria-hidden=\"true\"><svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M5 12h14M13 6l6 6-6 6\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><\/span><\/a><\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <!-- ===== 05 GLOBAL PRESENCE ===== -->\n  <section class=\"cr-section cr-peach\" id=\"presence\" aria-labelledby=\"h6-title\">\n    <div class=\"cr-wrap\">\n      <div class=\"cr-head\">\n        <div data-reveal>\n          <span class=\"cr-label\"><span class=\"cr-label__idx\">05<\/span><span class=\"cr-label__bar\"><\/span>Global presence<\/span>\n          <h2 class=\"cr-h2\" id=\"h6-title\">Where <span class=\"t-200\"><em>we operate<\/em><\/span><\/h2>\n        <\/div>\n        <p class=\"cr-lead cr-muted\" data-reveal style=\"--cr-d:120ms;margin-top:0\">Corporate office in the United States, manufacturing in India and regional companies across Central and South America.<\/p>\n      <\/div>\n      <ul class=\"cr-world\" data-stagger><li data-reveal><strong>United States<\/strong><span>Corporate office \u00b7 Coral Springs, Florida<\/span><em>Crassula LLC<\/em><\/li><li data-reveal><strong>India<\/strong><span>Manufacturing \u00b7 Nagpur, Maharashtra<\/span><em>Manufacturing<\/em><\/li><li data-reveal><strong>Honduras<\/strong><span>San Pedro Sula<\/span><em>Crassula Honduras<\/em><\/li><li data-reveal><strong>Costa Rica<\/strong><span>San Jos\u00e9<\/span><em>Crassula Costa Rica S.A.<\/em><\/li><li data-reveal><strong>Guatemala<\/strong><span>Mixco<\/span><em>Crassula Guatemala S.A.<\/em><\/li><li data-reveal><strong>Peru<\/strong><span>Lima<\/span><em>Crassula Peru S.A.C.<\/em><\/li><li data-reveal><strong>Colombia<\/strong><span>Barranquilla<\/span><em>Crassula Colombia S.A.S.<\/em><\/li><\/ul>\n      <div class=\"cr-links\" data-reveal><a class=\"cr-btn cr-btn--ghost\" href=\"\/contact\/\">All locations <span class=\"cr-btn__icon\" aria-hidden=\"true\"><svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M5 12h14M13 6l6 6-6 6\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><\/span><\/a><\/div>\n    <\/div>\n  <\/section>\n\n  <!-- ===== 06 NEWS ===== -->\n  <section class=\"cr-section cr-cream\" id=\"news\" aria-labelledby=\"h7-title\">\n    <div class=\"cr-wrap\">\n      <div class=\"cr-head\">\n        <div data-reveal>\n          <span class=\"cr-label\"><span class=\"cr-label__idx\">06<\/span><span class=\"cr-label__bar\"><\/span>Latest highlights<\/span>\n          <h2 class=\"cr-h2\" id=\"h7-title\">Latest <span class=\"t-200\"><em>news<\/em><\/span><\/h2>\n        <\/div>\n        <p class=\"cr-lead cr-muted\" data-reveal style=\"--cr-d:120ms;margin-top:0\">Updates from research, partnerships and our communities.<\/p>\n      <\/div>\n      <ul class=\"cr-news\" data-stagger><li data-reveal><article class=\"cr-nc\"><div class=\"cr-nc__img\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/crassulapharma.com\/wp-content\/uploads\/2026\/07\/q-niflex-pqns.jpg\" alt=\"\" width=\"800\" height=\"500\" loading=\"lazy\" title=\"\"><\/div><div class=\"cr-nc__body\"><p class=\"cr-nc__meta\"><time datetime=\"2026-07-16\">16 Jul 2026<\/time> \u00b7 Science & technology<\/p><h3><a href=\"https:\/\/crassulapharma.com\/q-niflex-and-pqns-technology\/\">Q-NiFlex and PQNS\u2122 technology: a multi-target delivery strategy for joint health<\/a><\/h3><\/div><\/article><\/li><li data-reveal><article class=\"cr-nc\"><div class=\"cr-nc__img\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/crassulapharma.com\/wp-content\/uploads\/2025\/12\/QuanticSphere-Launch-scaled.jpg\" alt=\"\" width=\"800\" height=\"500\" loading=\"lazy\" title=\"\"><\/div><div class=\"cr-nc__body\"><p class=\"cr-nc__meta\"><time datetime=\"2025-12-22\">22 Dec 2025<\/time> \u00b7 Science & technology<\/p><h3><a href=\"https:\/\/crassulapharma.com\/crassula-pharmaceuticals-launches-quanticsphere\/\">Crassula launches Q-Niflex, a joint and cartilage-health dietary supplement<\/a><\/h3><\/div><\/article><\/li><li data-reveal><article class=\"cr-nc\"><div class=\"cr-nc__img\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/crassulapharma.com\/wp-content\/uploads\/2024\/05\/Vascutan-Plus-30025--scaled.jpg\" alt=\"\" width=\"800\" height=\"500\" loading=\"lazy\" title=\"\"><\/div><div class=\"cr-nc__body\"><p class=\"cr-nc__meta\"><time datetime=\"2024-05-08\">08 May 2024<\/time> \u00b7 Product launches<\/p><h3><a href=\"https:\/\/crassulapharma.com\/crassula-launches-vascutan-plus-irbesartan-hydrochlorothiazide-in-honduras\/\">Crassula launches Vascutan Plus, Irbesartan\/Hydrochlorothiazide, in Honduras<\/a><\/h3><\/div><\/article><\/li><\/ul>\n      <div class=\"cr-links\" data-reveal><a class=\"cr-btn cr-btn--ghost\" href=\"\/media-releases\/\">All media releases <span class=\"cr-btn__icon\" aria-hidden=\"true\"><svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M5 12h14M13 6l6 6-6 6\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><\/span><\/a><\/div>\n    <\/div>\n  <\/section>\n\n  <!-- ===== 07 CERTIFICATIONS ===== -->\n  <section class=\"cr-section cr-peach\" id=\"certifications\" aria-labelledby=\"h8-title\">\n    <div class=\"cr-wrap\">\n      <div data-reveal>\n        <span class=\"cr-label\"><span class=\"cr-label__idx\">07<\/span><span class=\"cr-label__bar\"><\/span>Certifications<\/span>\n        <h2 class=\"cr-h2\" id=\"h8-title\">Quality <span class=\"t-200\"><em>&amp; certifications<\/em><\/span><\/h2>\n      <\/div>\n      <div class=\"cr-cert\">\n        <figure class=\"cr-cert__card\" data-reveal style=\"margin:0\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/crassulapharma.com\/wp-content\/uploads\/2025\/09\/image.png\" alt=\"Certifications: FDA Registered, GMP, HACCP, ISO 22000, Kosher, Halal\" width=\"800\" height=\"400\" loading=\"lazy\" title=\"\"><\/figure>\n        <div data-reveal style=\"--cr-d:120ms\">\n          <p class=\"cr-lead\" style=\"margin-top:0\">Our facilities and quality systems are certified for regulated pharmaceutical and nutraceutical markets.<\/p>\n          <!-- REVIEW: claim (certifications) -->\n          <ul class=\"cr-cert__chips\" aria-label=\"Certifications\"><li>FDA Registered<\/li><li>GMP<\/li><li>HACCP<\/li><li>ISO 22000<\/li><li>Kosher<\/li><li>Halal<\/li><\/ul>\n          <div class=\"cr-cert__seal\"><div class=\"cr-seal\" style=\"width:96px;height:96px;padding:12px\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/crassulapharma.com\/wp-content\/uploads\/2026\/10\/logo-gmp.png\" alt=\"GMP seal\" width=\"72\" height=\"72\" loading=\"lazy\" title=\"\"><\/div><a href=\"\/facilities\/\" style=\"font-weight:500\">Quality &amp; certifications at our facilities \u2192<\/a><\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <!-- ===== CTA ===== -->\n  <section class=\"cr-section cr-cta cr-dark\" aria-labelledby=\"h9-title\">\n    <div class=\"cr-wrap\">\n      <span class=\"cr-label\" data-reveal>Partnerships<\/span>\n      <h2 class=\"cr-display\" id=\"h9-title\" data-lines style=\"margin-top:24px\">\n        <span class=\"cr-ln\"><span>Partner with<\/span><\/span>\n        <span class=\"cr-ln\"><span class=\"t-800\">Crassula<\/span><\/span>\n      <\/h2>\n      <div class=\"cr-cta__row\">\n        <p class=\"cr-muted cr-lead\" data-reveal style=\"margin:0\">From formulation to scale, let\u2019s build your next product together. Looking to join us? Explore roles in R&amp;D, manufacturing, clinical affairs and more.<\/p>\n        <div class=\"cr-cta__actions\" data-reveal style=\"--cr-d:120ms\">\n          <a class=\"cr-btn cr-btn--primary\" href=\"\/contact\/\">Partnering &amp; licensing <span class=\"cr-btn__icon\" aria-hidden=\"true\"><svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M5 12h14M13 6l6 6-6 6\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><\/span><\/a>\n          <a class=\"cr-btn cr-btn--ghost\" href=\"\/contact\/\">See open roles <span class=\"cr-btn__icon\" aria-hidden=\"true\"><svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M5 12h14M13 6l6 6-6 6\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><\/span><\/a>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n<\/main>\n\n<!-- JS de la p\u00e1gina (main.js) -->\n<script>\n\/* =========================================================\n   CRASSULA PHARMACEUTICALS \u2014 main.js\n   Single script for every page (vanilla, loaded with defer).\n   Rule: animations only change transform\/opacity of content that\n   already exists in the HTML. No content is injected with JS.\n\n   CONTENTS\n   01  Core (flags + module runner)\n   02  Global modules (run on every page; skip if markup is absent)\n       reveal \u00b7 subnav \u00b7 heroParallax \u00b7 figureParallax \u00b7 heroVideo \u00b7 hscroll \u00b7 dialogs \u00b7 countUp \u00b7 cursor \u00b7 pageTransition\n   03  Shared section modules\n       productFamilies\n   04  Page modules (keyed by data-page=\"\u2026\" on <body> or <main>)\n       about \u00b7 facilities \u00b7 social \u00b7 team \u00b7 pharma \u00b7 supplements\n       media \u00b7 contact \u00b7 home\n   05  Boot\n   ========================================================= *\/\n(function () {\n  'use strict';\n\n  \/* ---------- 01 CORE ---------- *\/\n  var html = document.documentElement;\n  var RM = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n  var FINE = window.matchMedia('(hover: hover) and (pointer: fine)').matches;\n  var HAS_IO = 'IntersectionObserver' in window;\n  var $ = function (sel, ctx) { return (ctx || document).querySelector(sel); };\n  var $$ = function (sel, ctx) { return [].slice.call((ctx || document).querySelectorAll(sel)); };\n  var onScroll = function (fn) {\n    var ticking = false;\n    window.addEventListener('scroll', function () {\n      if (ticking) return; ticking = true;\n      requestAnimationFrame(function () { fn(); ticking = false; });\n    }, { passive: true });\n    fn();\n  };\n  html.classList.add('cr-js');\n\n  \/* ---------- 02 GLOBAL MODULES ---------- *\/\n  var Global = {\n\n    \/* Reveal on scroll: [data-reveal], [data-lines], .cr-chain; [data-stagger] staggers children *\/\n    reveal: function () {\n      var els = $$('[data-reveal], [data-lines], .cr-chain');\n      if (!els.length) return;\n      if (RM || !HAS_IO) { els.forEach(function (el) { el.classList.add('is-in'); }); return; }\n      $$('[data-stagger]').forEach(function (group) {\n        [].slice.call(group.children).forEach(function (c, i) { c.style.setProperty('--cr-d', (i * 90) + 'ms'); });\n      });\n      var io = new IntersectionObserver(function (entries) {\n        entries.forEach(function (e) { if (e.isIntersecting) { e.target.classList.add('is-in'); io.unobserve(e.target); } });\n      }, { rootMargin: '0px 0px -10% 0px', threshold: 0.05 });\n      els.forEach(function (el) { io.observe(el); });\n    },\n\n    \/* Sticky in-page navigation: active section + reading progress *\/\n    subnav: function () {\n      var nav = $('.cr-subnav'); if (!nav) return;\n      var links = $$('a[href^=\"#\"]', nav), list = $('ol', nav), bar = $('.cr-progress', nav), map = {};\n      links.forEach(function (a) { map[a.getAttribute('href').slice(1)] = a; });\n      if (HAS_IO) {\n        var io = new IntersectionObserver(function (entries) {\n          entries.forEach(function (e) {\n            if (!e.isIntersecting) return;\n            links.forEach(function (a) { a.removeAttribute('aria-current'); });\n            var a = map[e.target.id]; if (!a) return;\n            a.setAttribute('aria-current', 'true');\n            list.scrollTo({ left: a.offsetLeft - (list.clientWidth - a.offsetWidth) \/ 2, behavior: RM ? 'auto' : 'smooth' });\n          });\n        }, { rootMargin: '-35% 0px -60% 0px' });\n        Object.keys(map).forEach(function (id) { var s = document.getElementById(id); if (s) io.observe(s); });\n      }\n      if (bar) {\n        var main = $('main');\n        onScroll(function () {\n          var r = main.getBoundingClientRect(), h = r.height - window.innerHeight;\n          bar.style.transform = 'scaleX(' + Math.min(1, Math.max(0, -r.top \/ (h || 1))).toFixed(3) + ')';\n        });\n      }\n    },\n\n    \/* Hero background parallax: [data-parallax=\"speed\"] *\/\n    heroParallax: function () {\n      var els = $$('[data-parallax]'); if (!els.length || RM) return;\n      onScroll(function () {\n        els.forEach(function (el) {\n          var speed = parseFloat(el.getAttribute('data-parallax')) || 0.2;\n          var r = el.parentElement.getBoundingClientRect();\n          if (r.bottom > 0 && r.top < window.innerHeight) el.style.transform = 'translate3d(0,' + (-r.top * speed).toFixed(1) + 'px,0)';\n        });\n      });\n    },\n\n    \/* Image parallax inside framed figures: img[data-parallax-img] *\/\n    figureParallax: function () {\n      var imgs = $$('[data-parallax-img]'); if (!imgs.length || RM) return;\n      onScroll(function () {\n        var vh = window.innerHeight;\n        imgs.forEach(function (img) {\n          var r = img.parentElement.getBoundingClientRect();\n          if (r.bottom < 0 || r.top > vh) return;\n          var p = (r.top + r.height \/ 2 - vh \/ 2) \/ vh;\n          img.style.transform = 'translate3d(0,' + (-8 + p * -8).toFixed(2) + '%,0)';\n        });\n      });\n    },\n\n    \/* Hero background video (YouTube): loads only when motion is allowed; pause\/play control (WCAG 2.2.2) *\/\n    heroVideo: function () {\n      var box = $('.cr-hero__video[data-yt]'); if (!box) return;\n      var btn = $('.cr-hero__toggle');\n      if (RM) return; \/* poster image only *\/\n      var id = box.getAttribute('data-yt');\n      var f = document.createElement('iframe');\n      f.src = 'https:\/\/www.youtube-nocookie.com\/embed\/' + id + '?autoplay=1&mute=1&loop=1&playlist=' + id + '&controls=0&rel=0&modestbranding=1&playsinline=1&enablejsapi=1';\n      f.title = box.getAttribute('data-title') || 'Background video';\n      f.setAttribute('allow', 'autoplay; encrypted-media; picture-in-picture');\n      f.setAttribute('tabindex', '-1'); f.setAttribute('aria-hidden', 'true');\n      f.addEventListener('load', function () { setTimeout(function () { box.classList.add('is-ready'); }, 600); });\n      box.appendChild(f);\n      if (!btn) return;\n      btn.hidden = false;\n      var playing = true;\n      btn.addEventListener('click', function () {\n        playing = !playing;\n        f.contentWindow.postMessage(JSON.stringify({ event: 'command', func: playing ? 'playVideo' : 'pauseVideo', args: [] }), '*');\n        btn.setAttribute('aria-pressed', String(!playing));\n        btn.setAttribute('aria-label', playing ? 'Pause background video' : 'Play background video');\n        var ico = $('.cr-ico', btn); ico.setAttribute('d', playing ? 'M8 5v14M16 5v14' : 'M8 5l11 7-11 7z'); ico.setAttribute('fill', playing ? 'none' : 'currentColor');\n      });\n    },\n\n    \/* Horizontal sequence pinned on scroll: section[data-hscroll] (vertical grid on small screens \/ reduced motion) *\/\n    hscroll: function () {\n      $$('[data-hscroll]').forEach(function (root) {\n        var sec = $('.cr-hs__pin', root) || root;\n        var track = $('.cr-hs__track', root), meter = $('.cr-hs__meter span', root);\n        if (!track) return;\n        var mq = window.matchMedia('(min-width: 901px)');\n        var dist = 0;\n        var setup = function () {\n          if (RM || !mq.matches || window.innerHeight < 560) { root.classList.add('cr-hs--static'); sec.style.height = ''; track.style.transform = ''; dist = 0; return; }\n          root.classList.remove('cr-hs--static');\n          dist = Math.max(0, track.scrollWidth - window.innerWidth);\n          sec.style.height = (window.innerHeight + dist) + 'px';\n        };\n        var upd = function () {\n          if (!dist) return;\n          var r = sec.getBoundingClientRect();\n          var p = Math.min(1, Math.max(0, -r.top \/ dist));\n          track.style.transform = 'translate3d(' + (-p * dist).toFixed(1) + 'px,0,0)';\n          if (meter) meter.style.transform = 'scaleX(' + p.toFixed(3) + ')';\n        };\n        setup(); onScroll(upd);\n        window.addEventListener('resize', function () { setup(); upd(); });\n        window.addEventListener('load', function () { setup(); upd(); });\n      });\n    },\n\n    \/* Dialogs: [data-dialog-open=\"id\"] opens <dialog id>; close button, Esc and backdrop click close it *\/\n    dialogs: function () {\n      $$('[data-dialog-open]').forEach(function (btn) {\n        var dlg = document.getElementById(btn.getAttribute('data-dialog-open'));\n        if (!dlg || typeof dlg.showModal !== 'function') return;\n        btn.addEventListener('click', function () { dlg.showModal(); html.style.overflow = 'hidden'; });\n        dlg.addEventListener('close', function () { html.style.overflow = ''; btn.focus(); });\n        dlg.addEventListener('click', function (e) { if (e.target === dlg) dlg.close(); });\n        $$('[data-dialog-close]', dlg).forEach(function (x) { x.addEventListener('click', function () { dlg.close(); }); });\n      });\n    },\n\n    \/* Count-up figures: [data-count=\"N\"] (text already in the HTML; animates from 0 when visible) *\/\n    countUp: function () {\n      var els = $$('[data-count]'); if (!els.length || RM || !HAS_IO) return;\n      var io = new IntersectionObserver(function (entries) {\n        entries.forEach(function (e) {\n          if (!e.isIntersecting) return; io.unobserve(e.target);\n          var el = e.target, to = +el.getAttribute('data-count'), t0 = performance.now();\n          (function step(t) { var p = Math.min(1, (t - t0) \/ 1100); el.textContent = Math.round(to * (1 - Math.pow(1 - p, 3))).toLocaleString('en-US'); if (p < 1) requestAnimationFrame(step); })(t0);\n        });\n      }, { threshold: 0.6 });\n      els.forEach(function (el) { io.observe(el); });\n    },\n\n    \/* Cursor follower ring (decorative; native cursor stays visible) *\/\n    cursor: function () {\n      if (RM || !FINE) return;\n      var c = document.createElement('div'); c.className = 'cr-cursor'; c.setAttribute('aria-hidden', 'true'); document.body.appendChild(c);\n      var x = 0, y = 0, cx = 0, cy = 0;\n      document.addEventListener('mousemove', function (e) { x = e.clientX; y = e.clientY; c.classList.add('is-on'); });\n      document.addEventListener('mouseleave', function () { c.classList.remove('is-on'); });\n      (function loop() { cx += (x - cx) * 0.2; cy += (y - cy) * 0.2; c.style.transform = 'translate3d(' + cx + 'px,' + cy + 'px,0)'; requestAnimationFrame(loop); })();\n      document.addEventListener('mouseover', function (e) {\n        c.classList.toggle('is-hover', !!e.target.closest('a, button, [data-cursor]'));\n        c.classList.toggle('is-dark', !!e.target.closest('.cr-dark, .cr-green-bg, .cr-hero'));\n      });\n    },\n\n    \/* Page transitions (no SPA): wipe in on internal navigation, wipe out on load *\/\n    pageTransition: function () {\n      var tr = $('.cr-transition'); if (!tr || RM) return;\n      tr.classList.add('is-enter');\n      document.addEventListener('click', function (e) {\n        var a = e.target.closest('a[href]'); if (!a) return;\n        var href = a.getAttribute('href');\n        if (!href || href.charAt(0) === '#' || a.target === '_blank' || e.metaKey || e.ctrlKey || e.shiftKey || \/^(mailto:|tel:)\/.test(href)) return;\n        var url = new URL(a.href, location.href); if (url.origin !== location.origin) return;\n        e.preventDefault();\n        tr.classList.remove('is-enter'); tr.classList.add('is-leave');\n        setTimeout(function () { location.href = url.href; }, 560);\n      });\n      window.addEventListener('pageshow', function (ev) { if (ev.persisted) { tr.classList.remove('is-leave'); tr.classList.add('is-enter'); } });\n    }\n  };\n\n  \/* ---------- 03 SHARED SECTION MODULES ---------- *\/\n  var Sections = {\n\n    \/* Product families: active column + product image swap on hover\/focus *\/\n    productFamilies: function () {\n      var fams = $$('.cr-family'); if (!fams.length) return;\n      fams.forEach(function (fam) {\n        var target = $('.cr-family__img img', fam);\n        var activate = function () { fams.forEach(function (f) { f.classList.toggle('is-active', f === fam); }); };\n        fam.addEventListener('mouseenter', activate);\n        fam.addEventListener('focusin', activate);\n        if (!target) return;\n        var show = function (a) {\n          var src = a.getAttribute('data-img'); if (!src || target.getAttribute('src') === src) return;\n          if (RM) { target.src = src; target.alt = a.getAttribute('data-alt'); return; }\n          target.classList.add('is-swap');\n          setTimeout(function () {\n            target.src = src; target.alt = a.getAttribute('data-alt');\n            target.onload = function () { target.classList.remove('is-swap'); };\n            setTimeout(function () { target.classList.remove('is-swap'); }, 400);\n          }, 300);\n        };\n        $$('a[data-img]', fam).forEach(function (a) {\n          a.addEventListener('mouseenter', function () { show(a); });\n          a.addEventListener('focus', function () { show(a); });\n        });\n      });\n    }\n  };\n\n  \/* ---------- 04 PAGE MODULES ([data-page] on <body> or <main>) ---------- *\/\n  var Pages = {\n    about: function () { \/* About Us \u2014 APPROVED v1.3: uses Global + Sections.productFamilies only *\/ },\n    facilities: function () { \/* Facilities \u2014 v1: uses Global.heroVideo + Global.hscroll *\/ },\n    social: function () { \/* Social Responsibility \u2014 v1: Global modules only *\/ },\n    team: function () { \/* Team \u2014 v1: uses Global.dialogs for bios *\/ },\n    pharma: function () { \/* Pharma \u2014 uses Global modules (subnav, countUp, reveal) *\/ },\n    supplements: function () { \/* Supplements \u2014 uses Global modules *\/ },\n    \/* Media Releases: category filter (shows\/hides releases already in the HTML) *\/\n    media: function () {\n      var btns = $$('.cr-filter'); if (!btns.length) return;\n      var rels = $$('.cr-rel'), years = $$('.cr-year');\n      btns.forEach(function (b) {\n        b.addEventListener('click', function () {\n          var cat = b.getAttribute('data-filter');\n          btns.forEach(function (x) { x.setAttribute('aria-pressed', String(x === b)); });\n          rels.forEach(function (r) { r.hidden = !(cat === 'all' || r.getAttribute('data-cat') === cat); });\n          years.forEach(function (y) { y.hidden = !$$('.cr-rel:not([hidden])', y).length; });\n        });\n      });\n    },\n    \/* Contact: route cards preset the form topic; copy-address buttons; visual-only form (no backend) *\/\n    contact: function () {\n      var form = $('#contact-form'), topic = $('#cf-topic'), status = $('.cr-form__status');\n      $$('[data-topic]').forEach(function (b) {\n        b.addEventListener('click', function () {\n          if (topic) topic.value = b.getAttribute('data-topic');\n          var target = $('#form'); if (target) target.scrollIntoView({ behavior: RM ? 'auto' : 'smooth' });\n          setTimeout(function () { var f = $('#cf-first'); if (f) f.focus({ preventScroll: true }); }, RM ? 0 : 700);\n        });\n      });\n      $$('[data-copy]').forEach(function (b) {\n        b.addEventListener('click', function () {\n          var txt = b.getAttribute('data-copy'), label = b.textContent;\n          var done = function () { b.textContent = 'Copied'; setTimeout(function () { b.textContent = label; }, 1800); };\n          if (navigator.clipboard) navigator.clipboard.writeText(txt).then(done, done); else done();\n        });\n      });\n      if (form) form.addEventListener('submit', function (e) {\n        if (form.getAttribute('data-handler') === 'none') { e.preventDefault(); if (status) status.hidden = false; }\n      });\n    },\n    \/* Home: business-area panels expand on hover\/focus\/click (content already in the HTML) *\/\n    home: function () {\n      var areas = $$('.cr-area'); if (!areas.length) return;\n      var open = function (a) { areas.forEach(function (x) { var on = x === a; x.classList.toggle('is-open', on); var b = $('.cr-area__toggle', x); if (b) b.setAttribute('aria-expanded', String(on)); }); };\n      areas.forEach(function (a) {\n        a.addEventListener('mouseenter', function () { open(a); });\n        a.addEventListener('focusin', function () { open(a); });\n        var b = $('.cr-area__toggle', a); if (b) b.addEventListener('click', function () { open(a); });\n      });\n    }\n  };\n\n  \/* ---------- 05 BOOT ---------- *\/\n  Object.keys(Global).forEach(function (k) { Global[k](); });\n  Object.keys(Sections).forEach(function (k) { Sections[k](); });\n  \/* data-page can sit on <body> or on any wrapper (e.g. <main> inside an Elementor HTML widget) *\/\n  var holder = document.querySelector('[data-page]');\n  var page = holder && holder.getAttribute('data-page');\n  if (page && Pages[page]) Pages[page]();\n})();\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Crassula Pharmaceuticals | Technology-Driven CDMO Crassula Pharmaceuticals Technology-driven CDMO for finished-dose pharmaceutical &amp; nutraceutical manufacturing Crassula Pharmaceuticals is a technology-driven CDMO for finished-dose pharmaceutical and nutraceutical manufacturing. From formulation design and delivery technologies to GMP manufacturing and scale-up, it supports the full lifecycle of regulated pharmaceutical and nutraceutical products, with operations in the United States, [&hellip;]<\/p>\n","protected":false},"author":6,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"class_list":["post-11796","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/crassulapharma.com\/es\/wp-json\/wp\/v2\/pages\/11796","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/crassulapharma.com\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/crassulapharma.com\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/crassulapharma.com\/es\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/crassulapharma.com\/es\/wp-json\/wp\/v2\/comments?post=11796"}],"version-history":[{"count":19,"href":"https:\/\/crassulapharma.com\/es\/wp-json\/wp\/v2\/pages\/11796\/revisions"}],"predecessor-version":[{"id":12206,"href":"https:\/\/crassulapharma.com\/es\/wp-json\/wp\/v2\/pages\/11796\/revisions\/12206"}],"wp:attachment":[{"href":"https:\/\/crassulapharma.com\/es\/wp-json\/wp\/v2\/media?parent=11796"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}