{"id":56574,"date":"2026-10-18T11:59:39","date_gmt":"2026-10-18T11:59:39","guid":{"rendered":"https:\/\/carmelcosmeticslabs.com\/?page_id=56574"},"modified":"2026-11-08T14:16:08","modified_gmt":"2026-11-08T14:16:08","slug":"saffron","status":"publish","type":"page","link":"https:\/\/carmelcosmeticslabs.com\/en\/glossary-cosmetic-ingredients\/saffron\/","title":{"rendered":"Saffron in cosmetics: skin benefits and uses"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"56574\" class=\"elementor elementor-56574 elementor-53791 elementor-bc-flex-widget\" data-elementor-post-type=\"page\">\n\t\t\t\t<div data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" class=\"elementor-element elementor-element-bbb4e81 e-flex e-con-full e-con e-parent\" data-id=\"bbb4e81\" data-element_type=\"container\" data-e-type=\"container\" id=\"cm-cat\">\n\t\t\t\t<div class=\"elementor-element elementor-element-9cd936c elementor-widget elementor-widget-html\" data-id=\"9cd936c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<style>body .cm-cat{--bg:#fbfdfc;--paper:#ffffff;--mint:#edf5f2;--mint-2:#dcebe6;--ink:#10292a;--muted:#51686a;--line:#d6e4e0;--teal:#2f7266;--teal-ink:#ffffff;--deep:#0f3a35;--deep-ink:#e9f4f1;--deep-muted:#a9c9c2;--logo-filter:none;--note:#fff4cf;--note-ink:#5f4a0c;--shade:16 58 53;--f-display:\"Proxima Nova\",system-ui,sans-serif;--f-body:\"Lato\",system-ui,sans-serif;--f-mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;--ease-out:cubic-bezier(.23,1,.32,1);--ease-io:cubic-bezier(.77,0,.175,1);--r-lg:28px;--r-md:18px;--r-sm:10px}body .cm-cat *{box-sizing:border-box}body .cm-cat{background:var(--bg);color:var(--ink);font:400 16.5px\/1.6 var(--f-body);-webkit-font-smoothing:antialiased;overflow-x:clip}body .cm-cat ::selection{background:var(--teal);color:var(--teal-ink)}body .cm-cat .wrap{max-width:1280px;margin-inline:auto;padding-inline:clamp(16px,4vw,48px)}body .cm-cat h1,body .cm-cat h2,body .cm-cat h3{font-family:var(--f-display);text-wrap:balance;margin:0;color:var(--ink);font-optical-sizing:auto}body .cm-cat p{margin:0}body .cm-cat a{color:inherit;text-underline-offset:.2em}body .cm-cat .ico{width:1em;height:1em;flex:none;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}body .cm-cat .mono{font-family:var(--f-mono);font-size:12px;letter-spacing:.02em;color:var(--muted);font-variant-numeric:tabular-nums}body .cm-cat .h2{font-size:clamp(32px,4.4vw,60px);line-height:1;letter-spacing:-.035em;font-weight:650}body .cm-cat .sub{color:var(--muted);font-size:17px;max-width:44ch}body .cm-cat .btn{--bg-b:var(--teal);--fg-b:var(--teal-ink);position:relative;display:inline-flex;align-items:center;gap:12px;font:600 15.5px\/1 var(--f-body);text-decoration:none;padding:17px 22px 17px 26px;border-radius:99px;background:var(--bg-b);color:var(--fg-b);border:0;cursor:pointer;transition:transform .16s var(--ease-out),box-shadow .25s ease,background-color .2s ease}body .cm-cat .btn .knob{display:grid;place-items:center;width:28px;height:28px;margin:-6px -8px -6px 0;border-radius:50%;background:var(--fg-b);color:var(--bg-b);overflow:hidden}body .cm-cat .btn .knob .ico{font-size:15px;transition:transform .35s var(--ease-out)}body .cm-cat .btn:active{transform:scale(.97)}body .cm-cat .btn-primary{box-shadow:0 10px 24px -12px rgb(var(--shade)\/.55)}@media (hover:hover) and (pointer:fine){body .cm-cat .btn-primary:hover{box-shadow:0 16px 32px -14px rgb(var(--shade)\/.6)}body .cm-cat .btn:hover .knob .ico{transform:translateX(3px) rotate(-45deg)}}body .cm-cat .btn-ghost{--bg-b:transparent;--fg-b:var(--ink);padding:10px 2px;border-radius:0;gap:8px;background:linear-gradient(currentColor,currentColor)0 100%\/100% 1.5px no-repeat}body .cm-cat .btn-ghost .ico{transition:transform .3s var(--ease-out)}@media (hover:hover) and (pointer:fine){body .cm-cat .btn-ghost:hover{color:var(--teal)}body .cm-cat .btn-ghost:hover .ico{transform:translateX(4px)}}body .cm-cat .hero{padding-block:clamp(32px,4.5vw,64px) clamp(48px,6vw,88px);position:relative;overflow-x:clip}body .cm-cat .hero::before{content:\"\";position:absolute;inset:-12% -12%auto auto;width:min(70vw,900px);aspect-ratio:1;background:radial-gradient(closest-side,var(--mint),transparent 70%);z-index:-1;pointer-events:none}body .cm-cat .hero h1{font-size:clamp(40px,5vw,72px);line-height:.98;letter-spacing:-.042em;font-weight:680;margin-top:14px}@media (prefers-reduced-motion:no-preference){body .cm-cat .hero h1{animation-delay:.08s}}@keyframes rise{0%{opacity:.25;transform:translateY(18px);filter:blur(6px)}}body .cm-cat .section{padding-block:clamp(64px,8vw,120px)}body .cm-cat .ranges{background:var(--mint);border-radius:clamp(28px,4vw,48px) clamp(28px,4vw,48px)0 0}body .cm-cat .add{position:absolute;z-index:2;top:14px;right:14px;display:inline-flex;align-items:center;gap:8px;height:40px;padding:0 14px 0 11px;border-radius:99px;border:0;cursor:pointer;background:rgb(255 255 255\/.9);color:#10292a;font:600 13px var(--f-body);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);box-shadow:0 6px 18px -8px rgb(16 58 53\/.45);transition:transform .16s var(--ease-out),background-color .2s ease,color .2s ease}body .cm-cat .add:active{transform:scale(.95)}body .cm-cat .add .ico{font-size:16px;transition:transform .3s var(--ease-out)}body .cm-cat .add[aria-pressed=true]{background:var(--teal);color:var(--teal-ink)}body .cm-cat .add[aria-pressed=true] .i-p{display:none}body .cm-cat .add[aria-pressed=true] .i-c{display:block}@media (prefers-reduced-motion:no-preference){body .cm-cat .add[aria-pressed=true] .i-c{animation:pop .3s var(--ease-out)}}@keyframes pop{0%{transform:scale(.6);opacity:.4}}body .cm-cat .all{grid-column:span 6;border-radius:var(--r-lg);background:var(--deep);color:var(--deep-ink);padding:clamp(26px,3.4vw,44px);display:flex;flex-direction:column;justify-content:space-between;gap:28px;text-decoration:none;position:relative;overflow:hidden;min-height:300px}body .cm-cat .all h3{color:var(--deep-ink);font-size:clamp(28px,3vw,42px);line-height:1;letter-spacing:-.035em;font-weight:650;max-width:14ch}body .cm-cat .all p{color:var(--deep-muted);max-width:40ch}body .cm-cat .all .btn{--bg-b:var(--deep-ink);--fg-b:var(--deep);align-self:flex-start}body .cm-cat .all .rings{position:absolute;right:-90px;bottom:-90px;width:320px;aspect-ratio:1;border-radius:50%;border:1px solid rgb(255 255 255\/.12);box-shadow:0 0 0 40px rgb(255 255 255\/.03),0 0 0 80px rgb(255 255 255\/.025);pointer-events:none;transition:transform 1.2s var(--ease-out)}@media (hover:hover) and (pointer:fine){body .cm-cat .all:hover .rings{transform:scale(1.12)}}body .cm-cat .box{border-radius:var(--r-lg);padding:clamp(26px,3.5vw,48px);display:flex;flex-direction:column;gap:18px;position:relative;overflow:hidden}body .cm-cat .box h2{font-size:clamp(28px,3vw,40px);line-height:1.02;letter-spacing:-.03em;font-weight:650}body .cm-cat .box p{color:var(--muted);max-width:46ch}@media (prefers-reduced-motion:reduce){body .cm-cat .marquee ul[aria-hidden]{display:none}}body .cm-cat .faq-grid{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:32px 64px;align-items:start}body .cm-cat .faq-grid .sticky{position:sticky;top:32px}body .cm-cat .qa{padding-block:14px;border-top:1px solid var(--line)}body .cm-cat .qa:last-child{border-bottom:1px solid var(--line)}body .cm-cat .qa h3{font-size:19px;font-weight:600;letter-spacing:-.01em;line-height:1.3}body .cm-cat .qa p{color:var(--muted);font-size:15.5px;margin-top:8px;max-width:60ch}body .cm-cat .final{background:var(--deep);color:var(--deep-ink);border-radius:clamp(28px,4vw,48px);padding:clamp(36px,6vw,88px);display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:36px 56px;align-items:end;position:relative;overflow:hidden}body .cm-cat .final::before{content:\"\";position:absolute;inset:auto -20% -60%auto;width:70%;aspect-ratio:1;background:radial-gradient(closest-side,rgb(99 184 167\/.28),transparent);pointer-events:none}body .cm-cat .final h2{color:var(--deep-ink);font-size:clamp(36px,5.4vw,76px);line-height:.95;letter-spacing:-.045em;font-weight:680}body .cm-cat .final p{color:var(--deep-muted);margin-top:18px;max-width:46ch}body .cm-cat .final .actions{display:flex;flex-direction:column;gap:18px;align-items:flex-start;position:relative}body .cm-cat .final .btn{--bg-b:var(--deep-ink);--fg-b:var(--deep)}body .cm-cat .final .btn-wa{--bg-b:rgb(255 255 255\/.1);--fg-b:var(--deep-ink);box-shadow:inset 0 0 0 1px rgb(255 255 255\/.2)}body .cm-cat .final .btn-wa .knob{background:var(--deep-ink);color:var(--deep)}body .cm-cat .wa{display:flex;align-items:center;gap:12px;flex-wrap:wrap}body .cm-cat .wa .num{font:500 16px var(--f-mono);color:var(--deep-ink);user-select:all;letter-spacing:.02em}body .cm-cat .final .mono{color:var(--deep-muted)}body .cm-cat .tray{position:fixed;left:50%;bottom:0;z-index:20;width:min(640px,calc(100% - 24px));margin-bottom:calc(14px + env(safe-area-inset-bottom,0));display:flex;align-items:center;gap:14px;padding:10px 10px 10px 18px;border-radius:99px;background:var(--deep);color:var(--deep-ink);box-shadow:0 24px 50px -20px rgb(0 0 0\/.5);transform:translate(-50%,calc(100% + 40px));opacity:0;transition:transform .45s var(--ease-out),opacity .3s ease;pointer-events:none}body .cm-cat .tray.open{transform:translate(-50%,0);opacity:1;pointer-events:auto}body .cm-cat .tray .count{display:grid;place-items:center;min-width:30px;height:30px;border-radius:99px;background:var(--teal);color:var(--teal-ink);font:600 14px var(--f-mono);font-variant-numeric:tabular-nums}body .cm-cat .tray .names{flex:1;min-width:0;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--deep-muted)}body .cm-cat .tray .names b{color:var(--deep-ink);font-weight:600}body .cm-cat .tray .btn{--bg-b:var(--deep-ink);--fg-b:var(--deep);padding:13px 16px 13px 20px;font-size:14.5px;white-space:nowrap}body .cm-cat .tray .clear{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;border:0;background:0 0;color:var(--deep-muted);cursor:pointer;transition:background-color .2s ease}body .cm-cat .tray .clear:hover{background:rgb(255 255 255\/.1);color:var(--deep-ink)}@media (max-width:1020px){body .cm-cat .all{grid-column:span 6}body .cm-cat .final,body .cm-cat .faq-grid{grid-template-columns:1fr}body .cm-cat .faq-grid .sticky{position:static}}@media (max-width:640px){body .cm-cat .all{grid-column:auto}body .cm-cat .tray{border-radius:22px}body .cm-cat .tray .names{display:none}body .cm-cat .tray .btn{flex:1;justify-content:space-between}}@media (prefers-reduced-motion:reduce){body .cm-cat *,body .cm-cat ::before,body .cm-cat ::after{transition-duration:.01ms!important}}body .cm-cat .qa summary{list-style:none;display:flex;align-items:center;justify-content:space-between;gap:16px;cursor:pointer;min-height:44px}body .cm-cat .qa summary::-webkit-details-marker{display:none}body .cm-cat .qa .pm{position:relative;flex:none;width:32px;height:32px;border-radius:50%;background:var(--mint);transition:background-color .2s ease,transform .3s var(--ease-out)}body .cm-cat .qa .pm::before,body .cm-cat .qa .pm::after{content:\"\";position:absolute;left:50%;top:50%;width:12px;height:1.8px;border-radius:2px;background:var(--ink);transform:translate(-50%,-50%)}body .cm-cat .qa .pm::after{transform:translate(-50%,-50%) rotate(90deg);transition:transform .3s var(--ease-out)}body .cm-cat .qa[open] .pm{background:var(--teal)}body .cm-cat .qa[open] .pm::before,body .cm-cat .qa[open] .pm::after{background:var(--teal-ink)}body .cm-cat .qa[open] .pm::after{transform:translate(-50%,-50%) rotate(0deg)}body .cm-cat .qa summary:active .pm{transform:scale(.92)}body .cm-cat .qa .ans{overflow:hidden}@media (prefers-reduced-motion:no-preference){body .cm-cat .qa[open] .ans{animation:ans .35s var(--ease-out)}}@keyframes ans{0%{opacity:0;transform:translateY(-6px)}}body .cm-cat .wa-dock{display:none}body .cm-cat .tray[data-mode=default] .count,body .cm-cat .tray[data-mode=default] .names,body .cm-cat .tray[data-mode=default] .clear{display:none}body .cm-cat{-webkit-tap-highlight-color:transparent}@media (max-width:640px){body .cm-cat{font-size:16px;padding-bottom:calc(92px + env(safe-area-inset-bottom,0))}body .cm-cat .mono{font-size:12.5px}body .cm-cat .section{padding-block:56px}body .cm-cat .h2{font-size:30px;line-height:1.05;letter-spacing:-.03em}body .cm-cat .sub{font-size:16px}body .cm-cat .hero{padding-block:14px 40px}body .cm-cat .hero::before{display:none}body .cm-cat .hero h1{order:3;font-size:36px;line-height:1.02;letter-spacing:-.04em;margin-top:6px}body .cm-cat .ranges{border-radius:28px 28px 0 0}body .cm-cat .all{grid-column:1\/-1}body .cm-cat .add{top:8px;right:8px;width:46px;height:46px;padding:0;justify-content:center;border-radius:50%}body .cm-cat .add span{display:none}body .cm-cat .add .ico{font-size:18px}body .cm-cat .all{min-height:0;padding:24px;gap:20px;border-radius:18px}body .cm-cat .all h3{font-size:26px}body .cm-cat .all .rings{width:220px;right:-70px;bottom:-70px}body .cm-cat .all .btn{align-self:stretch;justify-content:space-between}body .cm-cat .btn-ghost{min-height:44px}body .cm-cat .box{padding:24px;border-radius:22px;gap:14px}body .cm-cat .box h2{font-size:26px}body .cm-cat .marquee ul[aria-hidden]{display:none}body .cm-cat .faq-grid{gap:18px}body .cm-cat .qa{padding-block:6px}body .cm-cat .qa summary{min-height:64px;padding-block:8px}body .cm-cat .qa h3{font-size:16.5px;line-height:1.3;text-wrap:pretty}body .cm-cat .qa p{font-size:15.5px;margin:0 0 14px;padding-right:44px}body .cm-cat .final{padding:28px 22px;border-radius:24px;gap:22px}body .cm-cat .final h2{font-size:34px}body .cm-cat .final .actions{align-items:stretch}body .cm-cat .final .btn{justify-content:space-between;min-height:54px}body .cm-cat .wa-final{display:flex}body .cm-cat .tray{width:calc(100% - 20px);margin-bottom:calc(10px + env(safe-area-inset-bottom,0));border-radius:22px;padding:8px;gap:8px}body .cm-cat .tray .names{display:none}body .cm-cat .tray .wa-dock{display:inline-flex}body .cm-cat .tray[data-mode=sel] .wa-dock{display:none}body .cm-cat .tray .btn{flex:1;min-width:0;justify-content:space-between;min-height:50px;padding:0 10px 0 18px;font-size:15px;white-space:nowrap}body .cm-cat .tray #tray-label{overflow:hidden;text-overflow:ellipsis}body .cm-cat .tray .count{min-width:36px;height:36px;margin-left:4px}body .cm-cat .tray .clear{width:44px;height:44px}body .cm-cat .wa-dock{align-items:center;justify-content:center;gap:8px;height:50px;padding:0 16px;border-radius:16px;background:rgb(255 255 255\/.1);color:var(--deep-ink);text-decoration:none;font:600 14.5px var(--f-body);flex:none;transition:transform .16s var(--ease-out)}body .cm-cat .wa-dock:active{transform:scale(.96)}body .cm-cat .wa-dock .ico{font-size:19px}}body .cm-cat .fmt{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}body .cm-cat .fmt-card{background:var(--paper);border:1px solid var(--line);border-radius:var(--r-md);padding:24px;display:flex;flex-direction:column;gap:10px}body .cm-cat .fmt-card>.ico{font-size:30px;color:var(--teal)}body .cm-cat .fmt-card h3{font-size:clamp(20px,1.8vw,24px);font-weight:620;letter-spacing:-.015em;line-height:1.15}body .cm-cat .fmt-card p{font-size:15px;color:var(--muted);line-height:1.55}@media (max-width:1020px){body .cm-cat .fmt{grid-template-columns:1fr}}@media (max-width:640px){body .cm-cat .fmt-card{padding:18px}}body .cm-cat .tile{position:relative;display:block;border-radius:var(--r-lg);overflow:hidden;color:#fff;text-decoration:none;background:var(--deep);isolation:isolate}body .cm-cat .tile img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .9s var(--ease-out);z-index:-2}body .cm-cat .tile::after{content:\"\";position:absolute;inset:0;background:linear-gradient(to top,rgb(8 26 24\/.9),rgb(8 26 24\/.55) 40%,rgb(8 26 24\/.08) 75%);z-index:-1}body .cm-cat .tile-body{position:absolute;left:0;right:0;bottom:0;padding:22px 24px;display:flex;flex-direction:column;gap:6px}body .cm-cat .tile .mono{color:rgb(255 255 255\/.75)}body .cm-cat .tile h3{color:#fff;font-size:clamp(22px,2vw,28px);font-weight:650;letter-spacing:-.02em;line-height:1.1}body .cm-cat .tile p{color:rgb(255 255 255\/.85);font-size:14.5px;max-width:40ch;line-height:1.45}body .cm-cat .tile .more{display:inline-flex;align-items:center;gap:8px;font-weight:600;font-size:14px;margin-top:6px;color:#fff}body .cm-cat .tile .more .ico{transition:transform .3s var(--ease-out)}body .cm-cat .tile:active{transform:scale(.99)}@media (hover:hover) and (pointer:fine){body .cm-cat .tile:hover img{transform:scale(1.05)}body .cm-cat .tile:hover .more .ico{transform:translateX(4px)}}body .cm-cat .rail-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:14px 28px;margin-bottom:clamp(24px,3vw,40px)}body .cm-cat .rail{display:flex;gap:14px;overflow-x:auto;scroll-snap-type:x mandatory;padding:0 max(16px,calc((100vw - 1280px)\/2 + 48px)) 8px;scrollbar-width:none;scroll-padding-inline:max(16px,calc((100vw - 1280px)\/2 + 48px))}body .cm-cat .rail::-webkit-scrollbar{display:none}body .cm-cat .rcard{flex:0 0 clamp(220px,22vw,300px);scroll-snap-align:start;position:relative;aspect-ratio:3\/4;border-radius:var(--r-md);overflow:hidden;color:#fff;text-decoration:none;background:var(--mint-2);isolation:isolate}body .cm-cat .rcard img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-2;transition:transform .9s var(--ease-out)}body .cm-cat .rcard::after{content:\"\";position:absolute;inset:0;background:linear-gradient(to top,rgb(8 26 24\/.75),transparent 55%);z-index:-1}body .cm-cat .rcard>span{position:absolute;left:16px;right:16px;bottom:16px;display:flex;flex-direction:column;gap:2px}body .cm-cat .rcard .mono{color:rgb(255 255 255\/.8)}body .cm-cat .rcard b{font-family:var(--f-display);font-size:21px;font-weight:620;letter-spacing:-.01em;color:#fff}@media (hover:hover) and (pointer:fine){body .cm-cat .rcard:hover img{transform:scale(1.05)}}body .cm-cat .rcard:active{transform:scale(.98)}@media (max-width:640px){body .cm-cat .rail{padding-inline:16px;scroll-padding-inline:16px;gap:10px}body .cm-cat .rcard{flex-basis:62vw}}body .cm-cat .hx-pause[aria-pressed=true] .i-pause{display:none}body .cm-cat .hx-pause[aria-pressed=true] .i-play2{display:block}body .cm-cat .faq-help{margin-top:28px;display:flex;flex-direction:column;gap:6px;align-items:flex-start;padding:22px;border-radius:var(--r-md);background:var(--mint);max-width:360px}body .cm-cat .faq-help b{font-family:var(--f-display);font-size:18px;font-weight:640}body .cm-cat .faq-help span{color:var(--muted);font-size:14.5px}body .cm-cat .btn-wa-s{margin-top:10px;display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:10px 16px;border-radius:99px;background:var(--paper);border:1px solid var(--line);color:var(--ink);font-weight:600;font-size:14px;text-decoration:none}body .cm-cat .btn-wa-s .ico{font-size:18px}@media (max-width:640px){body .cm-cat .faq-help{display:none}}body .cm-cat .rq-stars{display:inline-flex;gap:3px}body .cm-cat .rq-stars i{width:18px;height:18px;background:#f5b301;clip-path:polygon(50%0,61.8% 35.3%,100% 35.3%,69.1% 57.1%,80.9% 92.7%,50% 70.6%,19.1% 92.7%,30.9% 57.1%,0 35.3%,38.2% 35.3%)}body .cm-cat .rq{margin:0;position:relative;display:flex;flex-direction:column;gap:22px;padding:clamp(24px,2.6vw,36px);border-radius:26px;background:var(--paper);border:1px solid var(--line)}body .cm-cat .rq-mark{width:34px;height:auto;fill:var(--teal);opacity:.9}body .cm-cat .rq blockquote{margin:0;font-family:var(--f-display);font-weight:520;font-size:clamp(17px,1.35vw,19px);line-height:1.42;letter-spacing:-.01em;color:var(--ink);text-wrap:pretty}body .cm-cat .rq figcaption{margin-top:auto;display:flex;flex-direction:column;gap:10px;padding-top:18px;border-top:1px solid var(--line)}body .cm-cat .rq-stars i{width:14px;height:14px}body .cm-cat .rq-who{display:flex;align-items:baseline;justify-content:space-between;gap:10px;flex-wrap:wrap}body .cm-cat .rq-who b{font-size:14.5px;font-weight:600}body .cm-cat .rq-who .mono{font-size:11.5px;color:var(--muted)}body .cm-cat .rq-lead{background:#0f3a35;border-color:#0f3a35;overflow:hidden;isolation:isolate}body .cm-cat .rq-lead::before{content:\"\";position:absolute;right:-30%;bottom:-50%;width:90%;aspect-ratio:1;background:radial-gradient(closest-side,rgb(47 114 102\/.6),transparent);z-index:-1}body .cm-cat .rq-lead .rq-mark{fill:#8fd1c3}body .cm-cat .rq-lead blockquote{color:#fff;font-size:clamp(22px,2vw,30px);line-height:1.22;letter-spacing:-.02em;font-weight:560}body .cm-cat .rq-lead figcaption{border-top-color:rgb(255 255 255\/.14)}body .cm-cat .rq-lead .rq-who b{color:#fff}body .cm-cat .rq-lead .rq-who .mono{color:rgb(255 255 255\/.65)}@media (max-width:1020px){body .cm-cat .rq-lead{grid-column:1\/-1}}@media (max-width:640px){body .cm-cat .rq{flex:0 0 86%;scroll-snap-align:start;border-radius:22px;padding:22px}body .cm-cat .rq-lead blockquote{font-size:21px}}body .cm-cat .sv-ic[aria-pressed=true] .mx{display:inline}body .cm-cat .sv-ic[aria-pressed=true] .w1,body .cm-cat .sv-ic[aria-pressed=true] .w2{display:none}body .cm-cat .bl{padding:0 clamp(8px,1.2vw,16px)}body .cm-cat .cx{padding-block:clamp(64px,8vw,120px) clamp(24px,3vw,40px)}@media (max-width:640px){body .cm-cat .cx{padding-block:56px 16px}}body .cm-cat .ob-tab[aria-selected=false]{opacity:.62}@media (hover:hover) and (pointer:fine){body .cm-cat .ob-tab[aria-selected=false]:hover{opacity:1}}body .cm-cat .fm-head{display:flex;flex-direction:column;gap:12px;max-width:640px;margin-bottom:clamp(28px,4vw,48px)}body .cm-cat .fm-duo{position:relative;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:14px}body .cm-cat .fm-card{display:flex;flex-direction:column;border-radius:30px;overflow:hidden;background:var(--paper);border:1px solid var(--line)}body .cm-cat .fm-tech{background:#0f2a27;border-color:#0f2a27;color:#fff}body .cm-cat .fm-media{margin:0;aspect-ratio:16\/10;overflow:hidden;background:var(--mint-2)}body .cm-cat .fm-media img{width:100%;height:100%!important;object-fit:cover;display:block;transition:transform 1.2s var(--ease-out)}@media (hover:hover) and (pointer:fine){body .cm-cat .fm-card:hover .fm-media img{transform:scale(1.04)}}body .cm-cat .fm-body{display:flex;flex-direction:column;gap:14px;padding:clamp(22px,2.6vw,34px);flex:1}body .cm-cat .fm-body h3{font-size:clamp(22px,2vw,28px);font-weight:650;letter-spacing:-.025em;line-height:1.1}body .cm-cat .fm-body>p{margin:0;font-size:15.5px;line-height:1.6;color:var(--muted);max-width:46ch}body .cm-cat .fm-tech h3{color:#fff}body .cm-cat .fm-tech .fm-body>p{color:rgb(255 255 255\/.75)}body .cm-cat .fm-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:6px 0 0}body .cm-cat .fm-stats div{display:flex;flex-direction:column-reverse;gap:4px}body .cm-cat .fm-stats dd{margin:0;font-family:var(--f-display);font-weight:660;font-size:clamp(30px,3vw,42px);line-height:1;letter-spacing:-.04em;color:var(--teal);font-variant-numeric:tabular-nums}body .cm-cat .fm-stats dt{font-size:12.5px;line-height:1.3;color:var(--muted)}body .cm-cat .fm-note{font-size:12px;color:var(--muted);margin-top:auto}body .cm-cat .fm-chips{list-style:none;margin:6px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:8px}body .cm-cat .fm-chips li{padding:8px 13px;border-radius:99px;font-size:13.5px;font-weight:500;color:#dff1ec;background:rgb(255 255 255\/.08);border:1px solid rgb(255 255 255\/.16);transition:background-color .2s ease,border-color .2s ease}@media (hover:hover) and (pointer:fine){body .cm-cat .fm-chips li:hover{background:rgb(143 209 195\/.18);border-color:rgb(143 209 195\/.5)}}body .cm-cat .fm-x{position:absolute;left:50%;top:calc(50% - 60px);transform:translate(-50%,-50%);z-index:2;display:grid;place-items:center;width:56px;height:56px;border-radius:50%;background:var(--bg);border:1px solid var(--line);font:500 24px\/1 var(--f-display);color:var(--teal);box-shadow:0 14px 30px -18px rgb(var(--shade)\/.5)}body .cm-cat .fm-links{display:flex;flex-wrap:wrap;align-items:center;gap:12px 22px;margin:clamp(24px,3vw,36px)0 clamp(40px,5vw,64px)}@supports (animation-timeline:view()){@media (prefers-reduced-motion:no-preference){body .cm-cat .fm-nat{animation:fmL linear both;animation-timeline:view();animation-range:entry 0%entry 60%}body .cm-cat .fm-tech{animation:fmR linear both;animation-timeline:view();animation-range:entry 0%entry 60%}}}@keyframes fmL{0%{opacity:0;transform:translateX(-28px)}}@keyframes fmR{0%{opacity:0;transform:translateX(28px)}}@media (max-width:1020px){body .cm-cat .fm-duo{grid-template-columns:1fr}body .cm-cat .fm-x{top:auto;position:relative;left:auto;transform:none;margin:-34px auto;justify-self:center}}@media (max-width:640px){body .cm-cat .fm-card{border-radius:24px}body .cm-cat .fm-stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 10px}body .cm-cat .fm-stats dd{font-size:32px}body .cm-cat .fm-links .btn-primary{width:100%;justify-content:space-between}body .cm-cat .fm-x{width:48px;height:48px;font-size:20px}}@media (max-width:1020px){@supports (animation-timeline:view()){@media (prefers-reduced-motion:no-preference){body .cm-cat .fm-nat,body .cm-cat .fm-tech{animation-name:rise}}}}body .cm-cat .fm-rail-h{font-size:clamp(19px,1.6vw,22px);font-weight:640;letter-spacing:-.015em;margin:0 0 16px}body .cm-cat .tile,body .cm-cat .fm-card,body .cm-cat .rq,body .cm-cat .final{border-radius:28px}body .cm-cat .rcard,body .cm-cat .faq-help{border-radius:20px}@media (max-width:640px){body .cm-cat .tile,body .cm-cat .fm-card,body .cm-cat .rq,body .cm-cat .final{border-radius:22px}body .cm-cat .rcard{border-radius:18px}}body .cm-cat .fm-head{margin-bottom:clamp(28px,4vw,48px)}body .cm-cat .pb{display:flex;align-items:center;justify-content:center;gap:clamp(18px,3vw,40px);padding-block:clamp(18px,2.2vw,26px)0;color:var(--muted)}body .cm-cat .pb-rating{display:inline-flex;align-items:center;gap:8px;text-decoration:none;color:var(--ink);min-height:44px;transition:opacity .2s ease}body .cm-cat .pb-g{width:20px;height:20px;flex:none}body .cm-cat .pb-rating b{font-family:var(--f-display);font-weight:650;font-size:17px;letter-spacing:-.01em}body .cm-cat .pb-stars{display:inline-flex;gap:2px}body .cm-cat .pb-stars i{width:14px;height:14px;background:#f5b301;clip-path:polygon(50%0,61.8% 35.3%,100% 35.3%,69.1% 57.1%,80.9% 92.7%,50% 70.6%,19.1% 92.7%,30.9% 57.1%,0 35.3%,38.2% 35.3%)}body .cm-cat .pb-count{font-size:14px;color:var(--muted);text-decoration:underline;text-decoration-color:transparent;text-underline-offset:.2em;transition:text-decoration-color .2s ease}@media (hover:hover) and (pointer:fine){body .cm-cat .pb-rating:hover .pb-count{text-decoration-color:currentColor}}body .cm-cat .pb-sep{width:1px;height:24px;background:var(--line);flex:none}body .cm-cat .pb-press{display:flex;align-items:center;gap:clamp(14px,2vw,26px)}body .cm-cat .pb-label{font-size:13px;color:var(--muted);white-space:nowrap}body .cm-cat .pb-press ul{list-style:none;margin:0;padding:0;display:flex;align-items:center;gap:clamp(16px,2.2vw,28px);color:var(--ink)}body .cm-cat .pb-press li{display:flex;opacity:.55;filter:grayscale(1);transition:opacity .25s ease}@media (hover:hover) and (pointer:fine){body .cm-cat .pb-press li:hover{opacity:.9}}body .cm-cat .pb-press img{height:20px;width:auto}body .cm-cat .pb-press img.gci{height:28px}body .cm-cat .pb-press .cosmo{height:15px;width:auto;color:var(--ink)}body .cm-cat .pb-press .cosmo *{fill:currentColor}@media (max-width:640px){body .cm-cat .pb{flex-direction:column;gap:10px;padding-top:16px}body .cm-cat .pb-sep{display:none}body .cm-cat .pb-press{gap:14px}body .cm-cat .pb-label{font-size:12px}body .cm-cat .pb-press ul{gap:16px}body .cm-cat .pb-press img{height:16px}body .cm-cat .pb-press img.gci{height:22px}body .cm-cat .pb-press .cosmo{height:12px}}body .cm-cat .fm.section{padding-block:clamp(48px,6vw,88px)}body .cm-cat .fm-head{margin-bottom:clamp(20px,2.6vw,32px)}body .cm-cat .fm-duo{gap:12px}body .cm-cat .fm-card{flex-direction:row;align-items:stretch;border-radius:24px;min-height:0}body .cm-cat .fm-media{flex:0 0 38%;aspect-ratio:auto}body .cm-cat .fm-body{gap:8px;padding:clamp(18px,2vw,26px);justify-content:center}body .cm-cat .fm-body h3{font-size:clamp(18px,1.5vw,21px)}body .cm-cat .fm-body>p{font-size:14.5px;line-height:1.5}body .cm-cat .fm-x{top:50%;width:44px;height:44px;font-size:19px}body .cm-cat .fm-links{margin:clamp(18px,2.2vw,26px)0 clamp(28px,3.4vw,44px)}body .cm-cat .fm-rail-h{font-size:17px;margin-bottom:12px}body .cm-cat .fm .rcard{flex-basis:clamp(170px,15vw,210px);aspect-ratio:4\/5;border-radius:18px}body .cm-cat .fm .rcard b{font-size:17px}body .cm-cat .fm .rcard>span{left:12px;right:12px;bottom:12px}@media (max-width:1020px){body .cm-cat .fm-x{top:auto;margin:-26px auto}}@media (max-width:640px){body .cm-cat .fm-card{border-radius:20px}body .cm-cat .fm-media{flex-basis:34%}body .cm-cat .fm-body{padding:14px 16px}body .cm-cat .fm-body h3{font-size:17px}body .cm-cat .fm-body>p{font-size:13.5px}body .cm-cat .fm-x{width:38px;height:38px;font-size:16px;margin:-22px auto}body .cm-cat .fm .rcard{flex-basis:44vw}}body .cm-cat .fm .rcard{flex-basis:clamp(220px,21vw,290px);aspect-ratio:3\/4;border-radius:20px}body .cm-cat .fm .rcard b{font-size:20px}body .cm-cat .fm .rcard>span{left:16px;right:16px;bottom:16px}body .cm-cat .fm-head{align-items:flex-end}body .cm-cat .fm-ing{margin-top:clamp(40px,5vw,64px)}body .cm-cat .fm-ing-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:8px 20px;margin-bottom:14px}body .cm-cat .fm-ing-head h3{font-size:clamp(17px,1.4vw,19px);font-weight:620;letter-spacing:-.01em;color:var(--ink)}body .cm-cat .fm-ing-link{display:inline-flex;align-items:center;gap:6px;min-height:44px;font-weight:600;font-size:14.5px;color:var(--teal);text-decoration:none}body .cm-cat .fm-ing-link .ico{transition:transform .25s var(--ease-out)}@media (hover:hover) and (pointer:fine){body .cm-cat .fm-ing-link:hover .ico{transform:translateX(3px)}}body .cm-cat .fm-ing .fm-card{border-radius:20px}body .cm-cat .fm-ing .fm-media{flex-basis:26%}body .cm-cat .fm-ing .fm-body{padding:14px 18px;gap:4px}body .cm-cat .fm-ing .fm-body h3{font-size:16.5px}body .cm-cat .fm-ing .fm-body>p{font-size:13.5px}body .cm-cat .fm-ing .fm-x{width:36px;height:36px;font-size:15px}body .cm-cat .fm-links,body .cm-cat .fm-rail-h{display:none}@media (max-width:640px){body .cm-cat .fm-head .btn{width:100%;justify-content:space-between}body .cm-cat .fm .rcard{flex-basis:62vw}body .cm-cat .fm-ing .fm-media{flex-basis:30%}body .cm-cat .fm-ing .fm-x{margin:-20px auto}}body .cm-cat .fm-head.rail-head{flex-direction:row;flex-wrap:wrap;justify-content:space-between;align-items:flex-end;max-width:none;gap:16px 28px}body .cm-cat .fm-head.rail-head>div{display:flex;flex-direction:column;gap:12px;max-width:640px}body .cm-cat .wa .copy{min-height:44px;padding-inline:14px}body .cm-cat .h2{text-wrap:balance}body .cm-cat .dv{padding-block:clamp(18px,2.6vw,40px) clamp(40px,5vw,72px);position:relative;overflow-x:clip}body .cm-cat .dv::before{content:\"\";position:absolute;inset:-25% -10%auto auto;width:min(80vw,980px);aspect-ratio:1;background:radial-gradient(closest-side,var(--mint),transparent 72%);z-index:-1;pointer-events:none}body .cm-cat .dv-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,.92fr);gap:clamp(28px,5vw,84px);align-items:start}body .cm-cat .dv-crumbs{display:flex;gap:8px;align-items:center;margin-bottom:clamp(16px,2.2vw,28px);font-size:12.5px}body .cm-cat .dv-crumbs a{color:var(--muted);text-decoration:none}body .cm-cat .dv-crumbs [aria-current]{color:var(--ink)}body .cm-cat .dv-title{font-size:clamp(34px,4vw,58px);line-height:1.03;letter-spacing:-.045em;font-weight:680;max-width:16ch;text-wrap:balance}body .cm-cat .dv-title .tint{color:var(--teal)}body .cm-cat .dv-lede{margin-top:clamp(16px,1.8vw,24px);font-size:clamp(17px,1.3vw,19px);line-height:1.55;color:var(--muted);max-width:46ch}body .cm-cat .dv-get{list-style:none;margin:clamp(24px,2.8vw,36px)0 0;padding:0;display:grid;gap:16px}body .cm-cat .dv-get li{display:flex;gap:14px;align-items:flex-start}body .cm-cat .dv-get b{display:block;font:650 16.5px\/1.3 var(--f-display);letter-spacing:-.01em;color:var(--ink);margin-bottom:2px}body .cm-cat .dv-get li>span:last-child{color:var(--muted);font-size:15.5px;line-height:1.5}body .cm-cat .dv-ic{flex:none;display:grid;place-items:center;width:42px;height:42px;border-radius:13px;background:var(--mint);color:var(--teal)}body .cm-cat .dv-ic .ico{width:21px;height:21px}body .cm-cat .dv-trust{display:flex;flex-wrap:wrap;align-items:center;gap:14px 20px;margin-top:clamp(26px,3vw,40px);padding-top:clamp(20px,2.4vw,28px);border-top:1px solid var(--line)}body .cm-cat .dv-rating{display:inline-flex;align-items:center;gap:8px;color:var(--ink);text-decoration:none;font-size:14px}body .cm-cat .dv-rating b{font:700 17px\/1 var(--f-display)}body .cm-cat .dv-g{width:20px;height:20px}body .cm-cat .dv-stars{display:inline-flex;gap:2px}body .cm-cat .dv-stars i{width:13px;height:13px;background:#f5b301;clip-path:polygon(50%0,61% 35%,98% 35%,68% 57%,79% 91%,50% 70%,21% 91%,32% 57%,2% 35%,39% 35%)}body .cm-cat .dv-sep{width:1px;height:28px;background:var(--line)}body .cm-cat .dv-iso{display:inline-flex;align-items:center;gap:10px;font:600 13.5px\/1.25 var(--f-body);color:var(--ink)}body .cm-cat .dv-iso img{width:40px;height:40px;object-fit:contain;border-radius:10px;background:var(--paper);padding:4px;box-shadow:0 0 0 1px var(--line)}body .cm-cat .dv-iso small{display:block;font-weight:400;color:var(--muted);font-size:12.5px}body .cm-cat .dv-card{position:sticky;top:96px;background:var(--paper);border-radius:var(--r-lg);padding:clamp(22px,2.4vw,34px);box-shadow:0 1px 0 rgb(var(--shade)\/.04),0 30px 70px -36px rgb(var(--shade)\/.45),0 0 0 1px var(--line)}body .cm-cat .dv-card-head{display:flex;gap:16px;align-items:center;margin-bottom:clamp(16px,1.8vw,22px)}body .cm-cat .dv-avatar{flex:none;width:64px;height:64px;border-radius:20px;object-fit:cover;object-position:30% 30%}body .cm-cat .dv-card-head h2{font:680 clamp(20px,1.7vw,24px)\/1.15 var(--f-display);letter-spacing:-.025em;color:var(--ink)}body .cm-cat .dv-card-head p{margin-top:4px;color:var(--muted);font-size:14.5px;line-height:1.45}body .cm-cat .dv-reassure{display:flex;gap:10px;align-items:flex-start;margin-top:14px;font-size:13px;line-height:1.45;color:var(--muted)}body .cm-cat .dv-reassure .ico{flex:none;width:17px;height:17px;margin-top:1px;color:var(--teal)}body .cm-cat .dv-form .wpforms-container{margin:0!important;max-width:none!important}body .cm-cat .dv-form .wpforms-head-container,body .cm-cat .dv-form .wpforms-title{display:none}body .cm-cat .dv-form .wpforms-field-container{display:grid;gap:14px}body .cm-cat .dv-form .wpforms-field{padding:0!important;margin:0!important;float:none!important;width:auto!important}body .cm-cat .dv-form .wpforms-field-name .wpforms-field-row{display:grid;grid-template-columns:1fr 1fr;gap:12px;max-width:none!important}body .cm-cat .dv-form .choices.wpforms-field-row{display:block!important}body .cm-cat .dv-form .wpforms-field-row-block{width:auto!important;padding:0!important;float:none!important}body .cm-cat .dv-form .wpforms-field-row::before,body .cm-cat .dv-form .wpforms-field-row::after{display:none!important}body .cm-cat .dv-form label.wpforms-field-label,body .cm-cat .dv-form legend.wpforms-field-label{display:block;font:600 13.5px\/1.3 var(--f-body)!important;color:var(--ink)!important;margin:0 0 7px!important;padding:0!important;text-transform:none!important;letter-spacing:normal!important}body .cm-cat .dv-form fieldset{border:0!important;padding:0!important;margin:0!important;min-width:0}body .cm-cat .dv-form .wpforms-label-hide{position:static!important;width:auto!important;height:auto!important;overflow:visible!important;clip:auto!important}body .cm-cat .dv-form .wpforms-sublabel-hide{position:absolute!important;width:1px!important;height:1px!important;overflow:hidden!important;clip:rect(0 0 0 0)!important}body .cm-cat .dv-form .wpforms-required-label{color:var(--teal)!important}body .cm-cat .dv-form input[type=text],body .cm-cat .dv-form input[type=email],body .cm-cat .dv-form input[type=tel],body .cm-cat .dv-form select,body .cm-cat .dv-form textarea{width:100%!important;max-width:none!important;box-sizing:border-box;font:400 15.5px\/1.4 var(--f-body)!important;color:var(--ink)!important;background:var(--bg)!important;border:1px solid var(--line)!important;border-radius:14px!important;padding:13px 15px!important;height:auto!important;min-height:50px;box-shadow:none!important;transition:border-color .2s ease,box-shadow .2s ease,background-color .2s ease}body .cm-cat .dv-form textarea{min-height:120px;resize:vertical}body .cm-cat .dv-form select{appearance:none;-webkit-appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--muted) 50%),linear-gradient(135deg,var(--muted) 50%,transparent 50%)!important;background-position:calc(100% - 22px) 52%,calc(100% - 16px) 52%!important;background-size:6px 6px!important;background-repeat:no-repeat!important;padding-right:40px!important}body .cm-cat .dv-form input:focus,body .cm-cat .dv-form select:focus,body .cm-cat .dv-form textarea:focus{outline:0!important;border-color:var(--teal)!important;background-color:var(--paper)!important;box-shadow:0 0 0 4px rgb(47 114 102\/.14)!important}body .cm-cat .dv-form ::placeholder{color:#8aa09d;opacity:1}body .cm-cat .dv-form .wpforms-submit-container{margin-top:6px!important;padding:0!important}body .cm-cat .dv-form button.wpforms-submit{width:100%!important;display:inline-flex!important;align-items:center;justify-content:center;gap:10px;font:650 16px\/1 var(--f-body)!important;color:#fff!important;background:var(--deep)!important;border:0!important;border-radius:99px!important;padding:19px 26px!important;min-height:58px;cursor:pointer;box-shadow:0 14px 30px -14px rgb(var(--shade)\/.7)!important;transition:transform .16s var(--ease-out),background-color .2s ease}body .cm-cat .dv-form button.wpforms-submit::after{content:\"\";width:18px;height:18px;background:currentColor;-webkit-mask:url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14M13 6l6 6-6 6'\/%3E%3C\/svg%3E\")center\/contain no-repeat;mask:url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14M13 6l6 6-6 6'\/%3E%3C\/svg%3E\")center\/contain no-repeat}@media (hover:hover) and (pointer:fine){body .cm-cat .dv-form button.wpforms-submit:hover{background:var(--teal)!important}}body .cm-cat .dv-form button.wpforms-submit:active{transform:scale(.98)}body .cm-cat .dv-form .wpforms-error,body .cm-cat .dv-form label.wpforms-error,body .cm-cat .dv-form em.wpforms-error{display:block;color:#b3261e!important;font-size:12.5px!important;margin-top:5px!important}body .cm-cat .dv-form input.wpforms-error,body .cm-cat .dv-form select.wpforms-error,body .cm-cat .dv-form textarea.wpforms-error{border-color:#d26a5f!important}body .cm-cat .dv-form .wpforms-confirmation-container-full{background:var(--mint)!important;border:0!important;border-radius:18px!important;color:var(--ink)!important;padding:22px!important}body .cm-cat .dv-form .wpforms-submit-spinner{margin-left:10px}body .cm-cat .dv-steps.section{padding-block:clamp(48px,6vw,96px) clamp(24px,3vw,40px)}body .cm-cat .dv-flow{list-style:none;margin:clamp(26px,3.4vw,44px)0 0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(14px,1.8vw,24px);counter-reset:s;position:relative}body .cm-cat .dv-flow li{position:relative;padding:clamp(22px,2.4vw,32px);border-radius:var(--r-lg);background:var(--paper);box-shadow:0 0 0 1px var(--line)}body .cm-cat .dv-flow .mono{display:inline-grid;place-items:center;width:40px;height:40px;border-radius:12px;background:var(--deep);color:var(--deep-ink);font-size:13px}body .cm-cat .dv-flow h3{margin-top:18px;font:650 clamp(19px,1.6vw,22px)\/1.2 var(--f-display);letter-spacing:-.02em}body .cm-cat .dv-flow p{margin-top:8px;color:var(--muted);font-size:15.5px;line-height:1.55}body .cm-cat .dv-flow li:not(:last-child)::after{content:\"\";position:absolute;top:44px;right:calc(-1*clamp(14px,1.8vw,24px));width:clamp(14px,1.8vw,24px);height:1.5px;background:var(--line)}body .cm-cat .dv-obj.section{padding-block:clamp(40px,5vw,80px)}body .cm-cat .dv-obj .h2{max-width:20ch}body .cm-cat .dv-obj-grid{display:grid;grid-template-columns:1.2fr 1fr 1fr;grid-template-rows:auto auto;gap:clamp(14px,1.6vw,20px);margin-top:clamp(26px,3.4vw,44px)}body .cm-cat .dv-o{display:flex;flex-direction:column;gap:10px;padding:clamp(22px,2.4vw,30px);border-radius:var(--r-lg);background:var(--mint)}body .cm-cat .dv-o h3{font:650 clamp(18px,1.5vw,21px)\/1.25 var(--f-display);letter-spacing:-.02em;color:var(--ink)}body .cm-cat .dv-o p{color:var(--muted);font-size:15.5px;line-height:1.55}body .cm-cat .dv-obj-grid>.dv-o:last-child{grid-column:span 2}body .cm-cat .dv-o-lead{grid-row:span 2;background:var(--deep);color:var(--deep-ink);justify-content:flex-end;min-height:320px;background-image:radial-gradient(120% 80%at 100%0,rgb(255 255 255\/.08),transparent 60%)}body .cm-cat .dv-o-lead h3{color:#fff;font-size:clamp(22px,2vw,28px)}body .cm-cat .dv-o-lead p{color:var(--deep-muted);font-size:16.5px}body .cm-cat .dv-link{margin-top:auto;display:inline-flex;align-items:center;gap:8px;font:600 14.5px\/1.3 var(--f-body);color:var(--teal);text-decoration:none;padding-top:6px}body .cm-cat .dv-o-lead .dv-link{color:#bfe3da}body .cm-cat .dv-link .ico{width:16px;height:16px;transition:transform .2s var(--ease-out)}@media (hover:hover) and (pointer:fine){body .cm-cat .dv-link:hover .ico{transform:translateX(4px)}}body .cm-cat .dv-proof.section{padding-block:clamp(40px,5vw,80px)}body .cm-cat .dv-proof-head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:20px 40px}body .cm-cat .dv-proof-head .h2{max-width:19ch}body .cm-cat .dv-score{display:inline-flex;align-items:center;gap:14px;text-decoration:none;color:var(--ink);padding:14px 20px;border-radius:20px;background:var(--paper);box-shadow:0 0 0 1px var(--line)}body .cm-cat .dv-score>b{font:700 44px\/1 var(--f-display);letter-spacing:-.04em}body .cm-cat .dv-score>span{display:grid;gap:4px;font-size:13.5px;color:var(--muted)}body .cm-cat .dv-quotes{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(14px,1.6vw,20px);margin-top:clamp(24px,3vw,40px)}body .cm-cat .dv-alt{padding-block:clamp(24px,4vw,56px) clamp(48px,7vw,104px)}body .cm-cat .dv-alt-box{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);gap:clamp(24px,4vw,64px);align-items:center;background:var(--deep);color:var(--deep-ink);border-radius:clamp(28px,4vw,44px);padding:clamp(28px,5vw,72px)}body .cm-cat .dv-alt-copy h2{font:680 clamp(28px,3.2vw,44px)\/1.05 var(--f-display);letter-spacing:-.035em;color:#fff;max-width:14ch}body .cm-cat .dv-alt-copy p{margin-top:14px;color:var(--deep-muted);max-width:40ch}body .cm-cat .dv-alt-copy .btn{--bg-b:var(--deep-ink);--fg-b:var(--deep);margin-top:24px}body .cm-cat .dv-alt-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:12px}body .cm-cat .dv-alt-list a{display:flex;gap:14px;align-items:flex-start;height:100%;box-sizing:border-box;padding:18px;border-radius:20px;background:rgb(255 255 255\/.06);box-shadow:inset 0 0 0 1px rgb(255 255 255\/.1);color:var(--deep-ink);text-decoration:none;transition:background-color .2s ease}@media (hover:hover) and (pointer:fine){body .cm-cat .dv-alt-list a:hover{background:rgb(255 255 255\/.11)}}body .cm-cat .dv-alt-list .ico{flex:none;width:22px;height:22px;color:#bfe3da;margin-top:2px}body .cm-cat .dv-alt-list b{display:block;color:#fff;font:650 15px\/1.3 var(--f-body);margin-bottom:3px}body .cm-cat .dv-alt-list span{font-size:14px;line-height:1.45;color:var(--deep-muted);overflow-wrap:anywhere}@media (prefers-reduced-motion:no-preference){body .cm-cat .dv-title{animation:dvrise .9s var(--ease-out) both}body .cm-cat .dv-lede{animation:dvrise .9s var(--ease-out) .06s both}body .cm-cat .dv-get{animation:dvrise .9s var(--ease-out) .12s both}body .cm-cat .dv-card{animation:dvrise 1s var(--ease-out) .1s both}}@keyframes dvrise{0%{opacity:.001;transform:translateY(14px)}}@media (max-width:1020px){body .cm-cat .dv-grid{grid-template-columns:1fr;gap:0}body .cm-cat .dv-copy{display:contents}body .cm-cat .dv-crumbs,body .cm-cat .dv-title,body .cm-cat .dv-lede{order:1}body .cm-cat .dv-card{order:2;position:relative;top:auto;margin-top:clamp(22px,4vw,32px)}body .cm-cat .dv-get,body .cm-cat .dv-trust{order:3}body .cm-cat .dv-title{max-width:18ch}body .cm-cat .dv-obj-grid{grid-template-columns:1fr 1fr}body .cm-cat .dv-o-lead{grid-row:auto;grid-column:span 2;min-height:0}body .cm-cat .dv-alt-box{grid-template-columns:1fr}}@media (max-width:760px){body .cm-cat .dv-flow{grid-template-columns:1fr}body .cm-cat .dv-flow li:not(:last-child)::after{display:none}body .cm-cat .dv-quotes{grid-template-columns:1fr}}@media (max-width:640px){body .cm-cat .dv-title{font-size:clamp(32px,9vw,40px)}body .cm-cat .dv-get{gap:14px}body .cm-cat .dv-card{padding:20px;border-radius:24px;margin-inline:-4px}body .cm-cat .dv-form .wpforms-field-name .wpforms-field-row{grid-template-columns:1fr}body .cm-cat .dv-obj-grid{grid-template-columns:1fr}body .cm-cat .dv-o-lead{grid-column:auto}body .cm-cat .dv-obj-grid>.dv-o:last-child{grid-column:auto}body .cm-cat .dv-alt-list{grid-template-columns:1fr}body .cm-cat .dv-sep{display:none}}body .cm-cat .dv-form .iti{display:block!important;width:100%!important}body .cm-cat .dv-form .iti input[type=tel]{padding-left:58px!important}body .cm-cat .dv-form .iti__flag-container,body .cm-cat .dv-form .iti__country-container{padding:0 0 0 6px}body .cm-cat .dv-form .iti__selected-flag,body .cm-cat .dv-form .iti__selected-country{border-radius:12px 0 0 12px;padding:0 6px 0 10px;background:0 0!important}body .cm-cat .dv-form .choices{width:100%!important;max-width:none!important;margin:0!important;font:400 15.5px\/1.4 var(--f-body)}body .cm-cat .dv-form .choices__inner{box-sizing:border-box;width:100%!important;max-width:none!important;min-height:50px!important;display:flex!important;align-items:center;background:var(--bg)!important;border:1px solid var(--line)!important;border-radius:14px!important;padding:8px 40px 8px 15px!important;font-size:15.5px!important;color:var(--ink)!important}body .cm-cat .dv-form .choices.is-focused .choices__inner,body .cm-cat .dv-form .choices.is-open .choices__inner{border-color:var(--teal)!important;background:var(--paper)!important;box-shadow:0 0 0 4px rgb(47 114 102\/.14)!important}body .cm-cat .dv-form .choices__list--single{padding:0!important}body .cm-cat .dv-form .choices__list--dropdown,body .cm-cat .dv-form .choices__list[aria-expanded]{border:1px solid var(--line)!important;border-radius:14px!important;box-shadow:0 18px 40px -18px rgb(var(--shade)\/.45)!important;margin-top:6px!important;overflow:hidden}body .cm-cat .dv-form .choices__list--dropdown .choices__item{font-size:15px!important;padding:12px 15px!important}body .cm-cat .dv-form .choices__list--dropdown .choices__item--selectable.is-highlighted{background:var(--mint)!important}body .cm-cat .dv-form .choices[data-type*=select-one]::after{border-color:var(--muted) transparent transparent!important;right:18px!important}body .cm-cat .dv-form .choices.wpforms-error .choices__inner,body .cm-cat .dv-form .choices.is-invalid .choices__inner{border-color:#d26a5f!important}body .cm-cat .dv-form ::placeholder{font-size:15px}body .cm-cat .fc-hero{padding-block:clamp(16px,2.4vw,36px) clamp(28px,3.5vw,48px);position:relative;overflow-x:clip}body .cm-cat .fc-hero::before{content:\"\";position:absolute;inset:-30%auto auto -18%;width:min(70vw,880px);aspect-ratio:1;background:radial-gradient(closest-side,var(--mint),transparent 70%);z-index:-1;pointer-events:none}body .cm-cat .fc-hero-grid{display:grid;grid-template-columns:minmax(0,1.08fr) minmax(0,.92fr);gap:clamp(28px,5vw,80px);align-items:center}body .cm-cat .fc-title{font-size:clamp(36px,4.3vw,62px);line-height:1.02;letter-spacing:-.045em;font-weight:680;max-width:15ch;text-wrap:balance}body .cm-cat .fc-title .tint{color:var(--teal)}body .cm-cat .fc-lede{margin-top:clamp(16px,1.8vw,24px);font-size:clamp(17px,1.35vw,19.5px);line-height:1.55;color:var(--muted);max-width:42ch}body .cm-cat .fc-cta{display:flex;flex-wrap:wrap;gap:12px 14px;margin-top:clamp(24px,2.8vw,34px)}body .cm-cat .btn.fc-ghost{--bg-b:transparent;--fg-b:var(--ink);background:0 0;box-shadow:inset 0 0 0 1.5px var(--line);padding:17px 24px}@media (hover:hover) and (pointer:fine){body .cm-cat .btn.fc-ghost:hover{box-shadow:inset 0 0 0 1.5px var(--teal);color:var(--teal)}}body .cm-cat .fc-hero-media{margin:0;position:relative;justify-self:end;width:100%;max-width:520px}body .cm-cat .fc-hero-media img{display:block;width:100%;height:auto;aspect-ratio:4\/5;max-height:min(74vh,660px);object-fit:cover;object-position:50% 35%;border-radius:var(--r-lg);background:var(--mint-2);box-shadow:0 40px 80px -48px rgb(var(--shade)\/.6)}body .cm-cat .fc-seal{position:absolute;left:clamp(-28px,-2vw,-12px);bottom:9%;display:flex;align-items:center;gap:12px;background:var(--paper);color:var(--muted);padding:12px 18px 12px 12px;border-radius:18px;font-size:12.5px;box-shadow:0 18px 40px -20px rgb(var(--shade)\/.45)}body .cm-cat .fc-seal .ico{width:38px;height:38px;padding:8px;border-radius:12px;background:var(--teal);color:var(--teal-ink)}body .cm-cat .fc-seal b{display:block;color:var(--ink);font:650 14px\/1.2 var(--f-display)}body .cm-cat .fc-pb-fact{font-size:14px;color:var(--muted)}body .cm-cat .fc-pb-fact b{color:var(--ink);font:700 16px\/1 var(--f-display)}@media (prefers-reduced-motion:no-preference){body .cm-cat .fc-title{animation:fcrise .9s var(--ease-out) both}body .cm-cat .fc-lede{animation:fcrise .9s var(--ease-out) .06s both}body .cm-cat .fc-cta{animation:fcrise .9s var(--ease-out) .12s both}body .cm-cat .fc-hero-media img{animation:fcclip 1.1s var(--ease-io) .05s both}body .cm-cat .fc-seal{animation:fcrise .8s var(--ease-out) .6s both}}@keyframes fcrise{0%{opacity:.001;transform:translateY(14px)}}@keyframes fcclip{0%{clip-path:inset(8% 6% 8% 6%round 28px);opacity:.4}to{clip-path:inset(0 0 0 0 round 0)}}body .cm-cat .fc-roles.section{padding-block:clamp(56px,7vw,104px) clamp(28px,3.5vw,48px)}body .cm-cat .fc-answer{margin-top:clamp(16px,2vw,24px);font:500 clamp(19px,1.6vw,23px)\/1.45 var(--f-display);letter-spacing:-.012em;color:var(--ink);max-width:52ch}body .cm-cat .fc-split{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:clamp(14px,1.6vw,20px);margin-top:clamp(28px,3.4vw,44px)}body .cm-cat .fc-col{border-radius:var(--r-lg);padding:clamp(24px,2.6vw,36px)}body .cm-cat .fc-col h3{margin-top:16px;font:650 clamp(20px,1.7vw,24px)\/1.2 var(--f-display);letter-spacing:-.02em}body .cm-cat .fc-col ul{list-style:none;margin:18px 0 0;padding:0;display:grid;gap:12px}body .cm-cat .fc-col li{position:relative;padding-left:30px;font-size:16px;line-height:1.45}body .cm-cat .fc-col li::before{content:\"\";position:absolute;left:0;top:2px;width:19px;height:19px;border-radius:50%;background:var(--mint-2)url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 24 24' fill='none' stroke='%232f7266' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 12.5l4 4L18 8'\/%3E%3C\/svg%3E\")center\/12px no-repeat}body .cm-cat .fc-col-ic{display:grid;place-items:center;width:44px;height:44px;border-radius:14px}body .cm-cat .fc-col-ic .ico{width:22px;height:22px}body .cm-cat .fc-you{background:var(--paper);box-shadow:0 0 0 1px var(--line)}body .cm-cat .fc-you .fc-col-ic{background:var(--mint);color:var(--teal)}body .cm-cat .fc-us{background:var(--deep);color:var(--deep-ink);background-image:radial-gradient(110% 80%at 100%0,rgb(255 255 255\/.08),transparent 60%)}body .cm-cat .fc-us h3{color:#fff}body .cm-cat .fc-us .fc-col-ic{background:rgb(255 255 255\/.1);color:#bfe3da}body .cm-cat .fc-us-list{grid-template-columns:1fr 1fr;column-gap:24px}body .cm-cat .fc-us li{color:var(--deep-ink)}body .cm-cat .fc-us li::before{background-color:rgb(255 255 255\/.12);background-image:url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 24 24' fill='none' stroke='%23bfe3da' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 12.5l4 4L18 8'\/%3E%3C\/svg%3E\")}body .cm-cat .fc-modes.section{padding-block:clamp(32px,4vw,64px)}body .cm-cat .fc-bento{display:grid;grid-template-columns:1.25fr 1fr 1fr;grid-template-rows:repeat(2,minmax(230px,auto));gap:clamp(12px,1.4vw,18px);margin-top:clamp(26px,3.4vw,44px)}body .cm-cat .fc-m1{grid-row:span 2}body .cm-cat .fc-m2{grid-column:span 2}body .cm-cat .fc-bento .tile{min-height:0}body .cm-cat .fc-cap{padding-block:clamp(40px,5vw,80px)}body .cm-cat .fc-cap-grid{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);gap:clamp(24px,4vw,64px);align-items:stretch;background:var(--mint);border-radius:clamp(28px,4vw,44px);padding:clamp(16px,2vw,24px)}body .cm-cat .fc-cap-media{margin:0;height:100%}body .cm-cat .fc-cap-media img{display:block;width:100%;height:100%;min-height:380px;object-fit:cover;border-radius:clamp(20px,3vw,32px)}body .cm-cat .fc-cap-copy{align-self:center;padding:clamp(8px,2vw,28px) clamp(8px,2vw,28px) clamp(8px,2vw,28px)0}body .cm-cat .fc-cap-copy>p{margin-top:14px;color:var(--muted);max-width:40ch}body .cm-cat .fc-chips{display:grid;gap:18px;margin-top:24px}body .cm-cat .fc-chips h3{font:600 12.5px\/1 var(--f-body);text-transform:uppercase;letter-spacing:.07em;color:var(--teal)}body .cm-cat .fc-chips ul{list-style:none;margin:10px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:8px}body .cm-cat .fc-chips li{padding:8px 14px;border-radius:99px;background:var(--paper);font-size:14.5px;color:var(--ink);box-shadow:0 0 0 1px var(--line)}body .cm-cat .fc-link{display:inline-flex;align-items:center;gap:8px;margin-top:24px;font:600 15px\/1.3 var(--f-body);color:var(--teal);text-decoration:none}body .cm-cat .fc-link .ico{width:16px;height:16px;transition:transform .2s var(--ease-out)}@media (hover:hover) and (pointer:fine){body .cm-cat .fc-link:hover .ico{transform:translateX(4px)}}body .cm-cat .fc-why.section{padding-block:clamp(40px,5vw,80px)}body .cm-cat .fc-why .h2{max-width:18ch}body .cm-cat .fc-why-grid{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr) minmax(0,1fr);grid-template-rows:auto auto;gap:clamp(14px,1.6vw,20px);margin-top:clamp(26px,3.4vw,44px)}body .cm-cat .fc-w{display:flex;flex-direction:column;gap:10px;padding:clamp(22px,2.4vw,30px);border-radius:var(--r-lg);background:var(--paper);box-shadow:0 0 0 1px var(--line)}body .cm-cat .fc-w .ico{width:26px;height:26px;color:var(--teal)}body .cm-cat .fc-w h3{font:650 clamp(18px,1.5vw,21px)\/1.25 var(--f-display);letter-spacing:-.02em}body .cm-cat .fc-w p{color:var(--muted);font-size:15.5px;line-height:1.55}body .cm-cat .fc-w-lead{grid-row:span 2;justify-content:flex-end;background:var(--deep);box-shadow:none;min-height:320px;background-image:radial-gradient(120% 80%at 100%0,rgb(255 255 255\/.08),transparent 60%)}body .cm-cat .fc-w-lead .ico{color:#bfe3da;width:32px;height:32px}body .cm-cat .fc-w-lead h3{color:#fff;font-size:clamp(22px,2vw,28px)}body .cm-cat .fc-w-lead p{color:var(--deep-muted);font-size:16.5px}body .cm-cat .fc-why-grid>.fc-w:last-child{grid-column:span 2}body .cm-cat .fc-rev.section{padding-block:clamp(40px,5vw,80px)}@media (max-width:1020px){body .cm-cat .fc-hero-grid{grid-template-columns:1fr}body .cm-cat .fc-hero-media{justify-self:start;max-width:560px}body .cm-cat .fc-split{grid-template-columns:1fr}body .cm-cat .fc-bento{grid-template-columns:1fr 1fr;grid-template-rows:none;grid-auto-rows:minmax(240px,auto)}body .cm-cat .fc-m1{grid-row:auto;grid-column:span 2}body .cm-cat .fc-m2{grid-column:auto}body .cm-cat .fc-cap-grid{grid-template-columns:1fr}body .cm-cat .fc-cap-copy{align-self:center;padding:8px 12px 16px}body .cm-cat .fc-why-grid{grid-template-columns:1fr 1fr}body .cm-cat .fc-w-lead{grid-row:auto;grid-column:span 2;min-height:0}body .cm-cat .fc-why-grid>.fc-w:last-child{grid-column:span 2}}@media (max-width:640px){body .cm-cat .fc-title{font-size:clamp(32px,9vw,40px)}body .cm-cat .fc-hero-media img{aspect-ratio:1\/1;max-height:none}body .cm-cat .fc-seal{left:12px;bottom:12px}body .cm-cat .fc-us-list{grid-template-columns:1fr}body .cm-cat .fc-bento{grid-template-columns:1fr;grid-auto-rows:minmax(220px,auto)}body .cm-cat .fc-m1{grid-column:auto}body .cm-cat .fc-cap-media img{min-height:0;aspect-ratio:4\/3}body .cm-cat .fc-why-grid{grid-template-columns:1fr}body .cm-cat .fc-w-lead,body .cm-cat .fc-why-grid>.fc-w:last-child{grid-column:auto}}body .cm-cat .fc-eu{flex:none;border-radius:6px}body .cm-cat .fc-eu-lg{width:66px;height:44px;box-shadow:0 0 0 1px rgb(255 255 255\/.18)}body .cm-cat .fc-seal .fc-eu{width:54px;height:36px;box-shadow:0 0 0 1px rgb(0 51 153\/.15)}body .cm-cat .pk-hero-media img{object-position:58% 40%}body .cm-cat .pk-ex.section{padding-block:clamp(40px,5vw,80px)}body .cm-cat .pk-ex-head{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,.8fr);gap:clamp(16px,4vw,56px);align-items:end}body .cm-cat .pk-ex-sub{color:var(--muted);font-size:17px;line-height:1.55;max-width:44ch}body .cm-cat .pk-ex-ui{display:grid;grid-template-columns:260px minmax(0,1fr);gap:clamp(16px,2.4vw,32px);margin-top:clamp(26px,3.4vw,44px);align-items:start}body .cm-cat .pk-tabs{position:relative;display:flex;flex-direction:column;gap:4px;padding:6px;border-radius:22px;background:var(--mint)}body .cm-cat .pk-tab{position:relative;z-index:1;display:grid;gap:3px;text-align:left;padding:14px 16px;border:0;border-radius:16px;background:0 0;color:var(--ink);cursor:pointer;font:inherit;line-height:1.2;text-transform:none;letter-spacing:normal;box-shadow:none;min-height:0;transition:color .2s ease}body .cm-cat .pk-tab b{font:650 16px\/1.2 var(--f-display);letter-spacing:-.01em}body .cm-cat .pk-tab small{font-size:13.5px;color:var(--muted)}body .cm-cat .pk-tab:focus-visible{outline:2px solid var(--teal);outline-offset:2px}body .cm-cat .pk-tab[aria-selected=false]:hover{color:var(--teal)}body .cm-cat .pk-ind{position:absolute;left:0;top:0;z-index:0;border-radius:16px;background:var(--paper);box-shadow:0 1px 0 rgb(var(--shade)\/.04),0 10px 24px -14px rgb(var(--shade)\/.45);pointer-events:none}body .cm-cat .pk-tabs.ready .pk-ind{transition:transform .32s var(--ease-out),width .32s var(--ease-out),height .32s var(--ease-out)}body .cm-cat .pk-panels{min-width:0}body .cm-cat .pk-p{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);border-radius:var(--r-lg);overflow:hidden;background:var(--paper);box-shadow:0 0 0 1px var(--line)}body .cm-cat .pk-p[hidden]{display:none}body .cm-cat .pk-p img{display:block;width:100%;height:100%;min-height:340px;object-fit:cover}body .cm-cat .pk-p.on img{animation:pkin .45s var(--ease-out) both}body .cm-cat .pk-p.on .pk-fiche{animation:pkfade .4s var(--ease-out) .05s both}@keyframes pkin{0%{opacity:.4;transform:scale(1.03)}to{opacity:1;transform:none}}@keyframes pkfade{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}body .cm-cat .pk-fiche{display:flex;flex-direction:column;gap:16px;padding:clamp(22px,2.6vw,34px)}body .cm-cat .pk-fiche h3{font:680 clamp(24px,2.2vw,30px)\/1.1 var(--f-display);letter-spacing:-.03em}body .cm-cat .pk-fiche dl{margin:0;display:grid;gap:12px}body .cm-cat .pk-fiche dl>div{display:grid;gap:3px;padding-bottom:12px;border-bottom:1px solid var(--line)}body .cm-cat .pk-fiche dt{font:500 11.5px\/1 var(--f-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}body .cm-cat .pk-fiche dd{margin:0;font-size:15.5px;line-height:1.45;font-weight:500}body .cm-cat .pk-tip{margin-top:auto;padding:14px 16px;border-radius:14px;background:var(--mint);font-size:14.5px;line-height:1.5;color:var(--ink)}body .cm-cat .pk-tip b{display:block;margin-bottom:2px;color:var(--teal);font-size:13px}body .cm-cat .pk-layers.section{padding-block:clamp(40px,5vw,72px)}body .cm-cat .pk-layers .h2{max-width:22ch}body .cm-cat .pk-lay-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(12px,1.4vw,18px);margin-top:clamp(26px,3.4vw,44px);counter-reset:l}body .cm-cat .pk-l{position:relative;display:flex;flex-direction:column;gap:10px;padding:clamp(20px,2vw,26px);border-radius:var(--r-lg);background:var(--paper);box-shadow:0 0 0 1px var(--line);overflow:hidden}body .cm-cat .pk-l::before{content:\"\";position:absolute;left:0;right:0;top:0;height:6px;background:var(--c,var(--teal))}body .cm-cat .pk-l1{--c:#cfe6df}body .cm-cat .pk-l2{--c:#9fcdbf}body .cm-cat .pk-l3{--c:#5ea595}body .cm-cat .pk-l4{--c:var(--teal)}body .cm-cat .pk-l .mono{font-size:12px;color:var(--teal)}body .cm-cat .pk-l h3{font:650 clamp(19px,1.6vw,22px)\/1.2 var(--f-display);letter-spacing:-.02em}body .cm-cat .pk-l p{color:var(--muted);font-size:15px;line-height:1.55}body .cm-cat .pk-label.section{padding-block:clamp(40px,5vw,80px)}body .cm-cat .pk-label-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(28px,5vw,80px);align-items:center}body .cm-cat .pk-label-copy>p{margin-top:16px;color:var(--muted);font-size:17px;line-height:1.6;max-width:50ch}body .cm-cat .pk-mentions{list-style:none;margin:22px 0 0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:10px 18px}body .cm-cat .pk-mentions li{display:grid;grid-template-columns:26px minmax(0,1fr);column-gap:10px;font-size:14px;line-height:1.4;color:var(--muted)}body .cm-cat .pk-mentions li b{display:block;color:var(--ink);font-size:15px}body .cm-cat .pk-mentions span,body .cm-cat .pk-lbl i{display:inline-grid;place-items:center;width:22px;height:22px;border-radius:50%;background:var(--teal);color:#fff;font:700 11.5px\/1 var(--f-body);font-style:normal;grid-row:span 2}body .cm-cat .pk-lbl{margin:0}body .cm-cat .pk-lbl-card{display:grid;grid-template-columns:1fr 1fr;border-radius:20px;overflow:hidden;box-shadow:0 0 0 1px var(--line),0 40px 70px -44px rgb(var(--shade)\/.55);background:var(--paper);transform:rotate(-1.2deg)}body .cm-cat .pk-lbl-front{display:flex;flex-direction:column;justify-content:space-between;gap:12px;padding:24px;background:linear-gradient(160deg,#eaf4f1,#d7eae4);min-height:300px}body .cm-cat .pk-lbl-brand{font:700 13px\/1 var(--f-mono);letter-spacing:.24em;color:var(--deep)}body .cm-cat .pk-lbl-name{font:680 26px\/1.05 var(--f-display);letter-spacing:-.03em;color:var(--deep)}body .cm-cat .pk-lbl-fn,body .cm-cat .pk-lbl-qty{display:flex;align-items:center;gap:8px;font-size:14px;color:var(--deep)}body .cm-cat .pk-lbl-qty{font:700 18px\/1 var(--f-display)}body .cm-cat .pk-lbl-back{display:flex;flex-direction:column;gap:10px;padding:20px;font-size:11.5px;line-height:1.45;color:var(--muted)}body .cm-cat .pk-lbl-back p{margin:0}body .cm-cat .pk-lbl-back i{width:18px;height:18px;font-size:10px;vertical-align:middle;margin-left:4px}body .cm-cat .pk-lbl-inci b{color:var(--ink)}body .cm-cat .pk-lbl-row{display:flex;align-items:center;gap:6px;margin-top:auto}body .cm-cat .pk-pao{display:inline-grid;place-items:center;width:30px;height:26px;border:1.5px solid var(--ink);border-radius:4px 4px 7px 7px;font:700 9.5px\/1 var(--f-body);color:var(--ink)}body .cm-cat .pk-lbl-row .mono{margin-left:10px;font-size:11px;color:var(--ink)}body .cm-cat .pk-lbl-rp{padding-top:8px;border-top:1px dashed var(--line)}body .cm-cat .pk-lbl figcaption{margin-top:14px;font-size:12px;color:var(--muted);text-align:center}body .cm-cat .pk-why-list{list-style:none;margin:22px 0 0;padding:0;display:grid;gap:14px}body .cm-cat .pk-why-list li{display:grid;gap:3px;padding-left:16px;border-left:2px solid rgb(255 255 255\/.2)}body .cm-cat .pk-why-list b{color:#fff;font-size:16px}body .cm-cat .pk-why-list span{color:var(--deep-muted);font-size:14.5px;line-height:1.5}body .cm-cat .pk-why-media img{aspect-ratio:4\/3;object-position:40% 50%}body .cm-cat .pk-ppwr{padding-block:clamp(32px,4vw,56px)0}body .cm-cat .pk-ppwr-box{position:relative;display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,.7fr);gap:clamp(18px,3vw,40px);align-items:center;padding:clamp(24px,3vw,36px) clamp(24px,3vw,40px);border-radius:var(--r-lg);background:var(--mint);color:var(--ink);text-decoration:none;overflow:hidden;isolation:isolate}body .cm-cat .pk-ppwr-box::after{content:\"\";position:absolute;right:-60px;top:-60px;width:240px;height:240px;border-radius:50%;background:radial-gradient(closest-side,rgb(47 114 102\/.18),transparent);z-index:-1}body .cm-cat .pk-ppwr-tx{display:grid;gap:8px}body .cm-cat .pk-ppwr-box img{display:block;width:100%;height:auto;aspect-ratio:16\/10;object-fit:cover;border-radius:18px}body .cm-cat .pk-ppwr-box .mono{font-size:12px;color:var(--teal)}body .cm-cat .pk-ppwr-box h2{font:680 clamp(22px,2.4vw,30px)\/1.15 var(--f-display);letter-spacing:-.03em;max-width:30ch}body .cm-cat .pk-ppwr-box p{color:var(--muted);max-width:60ch}body .cm-cat .pk-ppwr-cta{display:inline-flex;align-items:center;gap:8px;margin-top:6px;font-weight:700;color:var(--teal)}body .cm-cat .pk-ppwr-cta .ico{transition:transform .2s var(--ease-out)}@media (hover:hover) and (pointer:fine){body .cm-cat .pk-ppwr-box:hover .pk-ppwr-cta .ico{transform:translateX(4px)}}@media (max-width:1020px){body .cm-cat .pk-ex-head,body .cm-cat .pk-label-grid{grid-template-columns:1fr}body .cm-cat .pk-ex-ui{grid-template-columns:1fr}body .cm-cat .pk-tabs{flex-direction:row;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;margin-inline:calc(-1*clamp(16px,4vw,48px));border-radius:0;padding:6px clamp(16px,4vw,48px);background:0 0}body .cm-cat .pk-tabs::-webkit-scrollbar{display:none}body .cm-cat .pk-tab{flex:none;scroll-snap-align:center;background:var(--mint);padding:12px 16px}body .cm-cat .pk-tab[aria-selected=true]{background:0 0}body .cm-cat .pk-lay-grid{grid-template-columns:repeat(2,minmax(0,1fr))}body .cm-cat .pk-why-media img{aspect-ratio:16\/9}body .cm-cat .pk-ppwr-box{grid-template-columns:1fr}}@media (max-width:640px){body .cm-cat .pk-p{grid-template-columns:1fr}body .cm-cat .pk-p img{min-height:0;aspect-ratio:4\/3;height:auto}body .cm-cat .pk-lay-grid,body .cm-cat .pk-mentions{grid-template-columns:1fr}body .cm-cat .pk-lbl-card{grid-template-columns:1fr;transform:none}body .cm-cat .pk-lbl-front{min-height:200px}}@media (prefers-reduced-motion:reduce){body .cm-cat .pk-p.on img,body .cm-cat .pk-p.on .pk-fiche{animation:none}body .cm-cat .pk-tabs.ready .pk-ind{transition:none}}body .cm-cat .ip{--ing:#c9902e;--ing2:#f3c46a;--glow:255 196 92}body .cm-cat .ip-em{font-family:var(--f-body);font-style:italic;font-weight:500;letter-spacing:-.03em}body .cm-cat .ip-hero{position:relative;height:420vh;padding:clamp(8px,1.4vw,16px) clamp(8px,1.4vw,16px)0}body .cm-cat .ip-stage{position:sticky;top:calc(var(--hdr,0px) + clamp(8px,1.4vw,16px));height:calc(100svh - var(--hdr,0px) - var(--bm,0px) - 2*clamp(8px,1.4vw,16px));min-height:520px;border-radius:clamp(22px,3vw,36px);overflow:hidden;background:radial-gradient(90% 70%at 60% 45%,#f7f7f5 0,#e6e8e5 60%,#d9dcd8 100%);isolation:isolate}body .cm-cat .ip-stage::after{content:\"\";position:absolute;left:18%;right:18%;bottom:-60px;height:120px;border-radius:50%;background:radial-gradient(closest-side,rgb(var(--glow)\/.55),transparent);filter:blur(10px);z-index:-1}body .cm-cat .ip-canvas{position:absolute;inset:0;width:100%;height:100%}body .cm-cat .ip-ui{position:absolute;inset:0;display:grid;grid-template-columns:1fr auto;grid-template-rows:auto 1fr auto;padding:clamp(20px,3vw,40px);pointer-events:none}body .cm-cat .ip-ui a,body .cm-cat .ip-ui button{pointer-events:auto}body .cm-cat .ip-tl{display:flex;flex-direction:column;gap:12px}body .cm-cat .ip-crumbs{font:500 12.5px\/1 var(--f-mono);color:#59625f}body .cm-cat .ip-crumbs a{color:#59625f;text-decoration:none}body .cm-cat .ip-brand{font:600 14px\/1 var(--f-mono);letter-spacing:.04em;color:#1c2422}body .cm-cat .ip-tr{display:grid;gap:8px;justify-items:end;font:500 12.5px\/1.3 var(--f-mono);color:#3b4441;text-align:right}body .cm-cat .ip-tr b{color:#1c2422}body .cm-cat .ip-ma{display:inline-flex;align-items:center;gap:7px;padding:6px 10px;border-radius:99px;background:#c1272d;color:#fff;font:600 12px\/1 var(--f-body)}body .cm-cat .ip-ma svg{width:14px;height:14px}body .cm-cat .ip-chap{grid-column:1;grid-row:2;align-self:end;max-width:720px}body .cm-cat .ip-h1{margin:0;font:720 clamp(52px,8vw,128px)\/.9 var(--f-display);letter-spacing:-.055em;color:#141b19}body .cm-cat .ip-lines{position:relative;min-height:2.6em;margin-top:clamp(12px,1.6vw,20px);font-size:clamp(20px,2.2vw,32px);line-height:1.2;max-width:24ch}body .cm-cat .ip-ch{position:absolute;left:0;top:0;margin:0;opacity:0;transform:translateY(16px);filter:blur(6px);transition:opacity .5s var(--ease-out),transform .6s var(--ease-out),filter .5s ease}body .cm-cat .ip-ch.on{opacity:1;transform:none;filter:none}body .cm-cat .ip-ch b{font:700 1em\/1.2 var(--f-display);letter-spacing:-.03em;color:#141b19}body .cm-cat .ip-ch .ip-em{color:var(--ing)}body .cm-cat .ip-mark{grid-column:2;grid-row:2;align-self:center;font:500 15px\/1 var(--f-mono);color:#1c2422;letter-spacing:.2em}body .cm-cat .ip-bl{grid-column:1\/-1;grid-row:3;display:flex;justify-content:space-between;align-items:flex-end;gap:16px;margin-top:22px}body .cm-cat .ip-inci{font:600 13px\/1.3 var(--f-mono);letter-spacing:.08em;color:#3b4441}body .cm-cat .ip-scroll{display:inline-flex;align-items:center;gap:10px;font:500 12px\/1 var(--f-mono);color:#59625f}body .cm-cat .ip-scroll i{position:relative;width:1px;height:34px;background:#b9bfbb;overflow:hidden}body .cm-cat .ip-scroll i::after{content:\"\";position:absolute;left:0;top:-40%;width:1px;height:40%;background:#1c2422;animation:ipline 1.8s var(--ease-out) infinite}@keyframes ipline{to{top:100%}}body .cm-cat .ip-prog{position:absolute;left:clamp(20px,3vw,40px);right:clamp(20px,3vw,40px);bottom:12px;height:2px;border-radius:2px;background:rgb(0 0 0\/.08);overflow:hidden}body .cm-cat .ip-prog i{position:absolute;inset:0;background:var(--ing);transform-origin:0 50%;transform:scaleX(0)}body .cm-cat .ip-id{padding-block:clamp(28px,4vw,56px)0}body .cm-cat .ip-id dl{margin:0;display:grid;grid-template-columns:repeat(6,minmax(0,1fr));border-block:1px solid var(--line)}body .cm-cat .ip-id dl>div{display:grid;gap:8px;align-content:start;padding:clamp(16px,2vw,24px) clamp(10px,1.4vw,18px);border-left:1px solid var(--line)}body .cm-cat .ip-id dl>div:first-child{border-left:0;padding-left:0}body .cm-cat .ip-id dt{font:500 11.5px\/1 var(--f-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}body .cm-cat .ip-id dd{margin:0;font-size:15px;line-height:1.4;font-weight:600}body .cm-cat .ip-id dd.mono{font:600 13px\/1.4 var(--f-mono);color:var(--teal);word-break:break-word}body .cm-cat .ip-sec{padding-block:clamp(48px,6vw,96px)}body .cm-cat .ip-k{display:flex;align-items:center;gap:12px;font:500 13px\/1 var(--f-mono);letter-spacing:.14em;color:var(--muted)}body .cm-cat .ip-k b{color:var(--ing);font-weight:600}body .cm-cat .ip-k::after{content:\"\";flex:1;height:1px;background:var(--line);max-width:120px}body .cm-cat .ip-sec .h2{margin-top:14px;max-width:18ch}body .cm-cat .ip-what{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:clamp(28px,5vw,80px);align-items:start}body .cm-cat .ip-what .fc-answer{max-width:none}body .cm-cat .ip-comp{margin-top:28px;display:grid;gap:14px}body .cm-cat .ip-bar{display:grid;grid-template-columns:minmax(0,170px) minmax(0,1fr) 52px;gap:14px;align-items:center}body .cm-cat .ip-bar span{font-size:14.5px;font-weight:600}body .cm-cat .ip-bar small{display:block;font:500 11.5px\/1.3 var(--f-mono);color:var(--muted)}body .cm-cat .ip-bar .t{position:relative;height:10px;border-radius:99px;background:var(--mint);overflow:hidden}body .cm-cat .ip-bar .t i{position:absolute;inset:0;border-radius:inherit;background:linear-gradient(90deg,var(--ing),var(--ing2));transform-origin:0 50%;transform:scaleX(var(--v));transition:transform 1.1s var(--ease-out)}body .cm-cat .ip-bar b{font:600 14px\/1 var(--f-mono);text-align:right}body .cm-cat .ip-note{margin-top:14px;font-size:12.5px;color:var(--muted);line-height:1.5}body .cm-cat .ip-photo{margin:0;position:relative;border-radius:var(--r-lg);overflow:hidden;box-shadow:0 40px 80px -48px rgb(var(--shade)\/.6)}body .cm-cat .ip-photo img{display:block;width:100%;height:auto;aspect-ratio:4\/5;object-fit:cover;object-position:62% 50%}body .cm-cat .ip-photo figcaption{position:absolute;left:14px;bottom:14px;padding:8px 12px;border-radius:99px;background:rgb(255 255 255\/.92);font:500 12px\/1 var(--f-mono);color:var(--ink)}body .cm-cat .ip-ben{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(12px,1.4vw,18px);margin-top:clamp(26px,3.4vw,44px)}body .cm-cat .ip-b{position:relative;display:flex;flex-direction:column;gap:10px;padding:clamp(22px,2.4vw,30px);border-radius:var(--r-lg);background:var(--paper);box-shadow:0 0 0 1px var(--line);overflow:hidden}body .cm-cat .ip-b::before{content:\"\";position:absolute;right:-50px;top:-50px;width:150px;height:150px;border-radius:50%;background:radial-gradient(closest-side,rgb(var(--glow)\/.35),transparent)}body .cm-cat .ip-b .mono{font-size:12px;color:var(--ing)}body .cm-cat .ip-b h3{font:680 clamp(20px,1.8vw,24px)\/1.15 var(--f-display);letter-spacing:-.025em}body .cm-cat .ip-b p{color:var(--muted);font-size:15.5px;line-height:1.55}body .cm-cat .ip-prods{background:#141b19;color:#e9efec;border-radius:clamp(28px,4vw,44px);margin-inline:clamp(8px,1.4vw,16px);padding-block:clamp(48px,6vw,88px)}body .cm-cat .ip-prods .ip-k{color:rgb(233 239 236\/.6)}body .cm-cat .ip-prods .ip-k::after{background:rgb(255 255 255\/.15)}body .cm-cat .ip-prods .h2{color:#fff}body .cm-cat .ip-prods-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:end;gap:18px}body .cm-cat .ip-prods-head p{max-width:42ch;color:rgb(233 239 236\/.7)}body .cm-cat .ip-pgrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(12px,1.4vw,18px);margin-top:clamp(26px,3.4vw,40px)}body .cm-cat .ip-p{position:relative;display:block;aspect-ratio:4\/3;border-radius:22px;overflow:hidden;color:#fff;text-decoration:none;isolation:isolate}body .cm-cat .ip-p img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-2;transition:transform .7s var(--ease-out)}body .cm-cat .ip-p::after{content:\"\";position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,rgb(10 16 14\/0) 40%,rgb(10 16 14\/.82))}body .cm-cat .ip-p span{position:absolute;left:18px;right:18px;bottom:16px;display:flex;justify-content:space-between;align-items:center;gap:10px;font:650 19px\/1.2 var(--f-display);letter-spacing:-.015em}body .cm-cat .ip-p .ico{flex:none;width:36px;height:36px;padding:10px;border-radius:50%;background:rgb(255 255 255\/.16);backdrop-filter:blur(6px);transition:background-color .2s ease,transform .25s var(--ease-out)}@media (hover:hover) and (pointer:fine){body .cm-cat .ip-p:hover img{transform:scale(1.05)}body .cm-cat .ip-p:hover .ico{background:var(--ing);transform:translateX(3px)}}body .cm-cat .ip-notes{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:clamp(28px,5vw,80px);align-items:start}body .cm-cat .ip-nl{list-style:none;margin:0;padding:0;display:grid}body .cm-cat .ip-nl li{display:grid;grid-template-columns:52px minmax(0,1fr);gap:4px 14px;padding:20px 0;border-top:1px solid var(--line)}body .cm-cat .ip-nl li:last-child{border-bottom:1px solid var(--line)}body .cm-cat .ip-nl .mono{grid-row:span 2;font:600 14px\/1.5 var(--f-mono);color:var(--ing)}body .cm-cat .ip-nl b{font:650 18px\/1.3 var(--f-display);letter-spacing:-.015em}body .cm-cat .ip-nl p{color:var(--muted);font-size:15.5px;line-height:1.55}body .cm-cat .ip-pairs{display:flex;flex-wrap:wrap;gap:10px;margin-top:26px}body .cm-cat .ip-pair{display:inline-flex;align-items:center;gap:10px;padding:12px 16px;border-radius:99px;background:var(--paper);box-shadow:0 0 0 1px var(--line);color:var(--ink);text-decoration:none;font-weight:600;font-size:14.5px;transition:box-shadow .2s ease}body .cm-cat .ip-pair i{width:10px;height:10px;border-radius:50%;background:var(--ing)}@media (hover:hover) and (pointer:fine){body .cm-cat a.ip-pair:hover{box-shadow:0 0 0 1.5px var(--ing)}body .cm-cat span.ip-pair{cursor:default}}@media (max-width:1020px){body .cm-cat .ip-id dl{grid-template-columns:repeat(3,minmax(0,1fr))}body .cm-cat .ip-id dl>div:nth-child(4){border-left:0;padding-left:0}body .cm-cat .ip-id dl>div:nth-child(n+4){border-top:1px solid var(--line)}body .cm-cat .ip-what,body .cm-cat .ip-notes{grid-template-columns:1fr}body .cm-cat .ip-ben,body .cm-cat .ip-pgrid{grid-template-columns:repeat(2,minmax(0,1fr))}body .cm-cat .ip-photo img{aspect-ratio:16\/10}}@media (max-width:640px){body .cm-cat .ip-hero{height:340vh}body .cm-cat .ip-ui{grid-template-columns:1fr}body .cm-cat .ip-tr,body .cm-cat .ip-mark{display:none}body .cm-cat .ip-id dl{grid-template-columns:1fr 1fr}body .cm-cat .ip-id dl>div{border-left:0!important;padding-left:0!important;border-top:1px solid var(--line)}body .cm-cat .ip-ben,body .cm-cat .ip-pgrid{grid-template-columns:1fr}body .cm-cat .ip-bar{grid-template-columns:1fr 44px;gap:6px 10px}body .cm-cat .ip-bar .t{grid-column:1\/-1;grid-row:2}}@media (prefers-reduced-motion:reduce){body .cm-cat .ip-hero{height:auto}body .cm-cat .ip-stage{position:relative;height:88svh}body .cm-cat .ip-scroll i::after{animation:none}body .cm-cat .ip-ch{transition:none}}body .cm-cat .ip-hcta{pointer-events:auto;display:inline-flex;align-items:center;gap:8px;padding:12px 16px;border-radius:99px;background:#141b19;color:#fff!important;font:600 14px\/1 var(--f-body);text-decoration:none;transition:background-color .2s ease,transform .16s var(--ease-out)}body .cm-cat .ip-hcta .ico{width:16px;height:16px}@media (hover:hover) and (pointer:fine){body .cm-cat .ip-hcta:hover{background:var(--ing)}}body .cm-cat .ip-hcta:active{transform:scale(.97)}body .cm-cat .ip-bl{align-items:center}body .cm-cat .ip-bl .ip-scroll{margin-left:auto}body .cm-cat .ip-tldr{padding-top:clamp(24px,3vw,40px)}body .cm-cat .ip-tldr-box{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:clamp(20px,4vw,56px);padding:clamp(24px,3vw,40px);border-radius:var(--r-lg);background:var(--paper);box-shadow:0 0 0 1px var(--line);border-left:4px solid var(--ing)}body .cm-cat .ip-tldr-box h2{margin-top:10px;font:680 clamp(24px,2.4vw,32px)\/1.1 var(--f-display);letter-spacing:-.03em}body .cm-cat .ip-by{margin-top:12px;font-size:12px;color:var(--muted)}body .cm-cat .ip-tldr-box ul{list-style:none;margin:0;padding:0;display:grid}body .cm-cat .ip-tldr-box li{display:grid;grid-template-columns:150px minmax(0,1fr);gap:12px;padding:11px 0;border-top:1px solid var(--line);font-size:15.5px}body .cm-cat .ip-tldr-box li:first-child{border-top:0;padding-top:0}body .cm-cat .ip-tldr-box li b{font-weight:650}body .cm-cat .ip-h3{margin-top:30px;font:680 clamp(19px,1.6vw,22px)\/1.2 var(--f-display);letter-spacing:-.02em}body .cm-cat .ip-vsg{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:14px}body .cm-cat .ip-vs{padding:16px;border-radius:16px;background:var(--mint);font-size:14.5px}body .cm-cat .ip-vs.on{background:color-mix(in srgb,var(--ing) 9%,#fff);box-shadow:inset 0 0 0 1.5px var(--ing)}body .cm-cat .ip-vs b{display:block;margin-bottom:6px}body .cm-cat .ip-vs p{color:var(--muted);line-height:1.5}body .cm-cat .ip-use ul{list-style:none;margin:14px 0 0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}body .cm-cat .ip-use li{padding:18px;border-radius:18px;background:var(--mint)}body .cm-cat .ip-use .mono{font-size:12px;color:var(--ing);letter-spacing:.06em;text-transform:uppercase}body .cm-cat .ip-use p{margin-top:6px;font-size:15px;line-height:1.5}body .cm-cat .ip-know{padding-block:0 clamp(40px,5vw,72px)}body .cm-cat .ip-know-box{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:clamp(20px,4vw,56px);align-items:center;padding:clamp(26px,3.4vw,46px);border-radius:clamp(28px,4vw,44px);background:linear-gradient(135deg,color-mix(in srgb,var(--ing) 8%,#fff),color-mix(in srgb,var(--ing) 16%,#fff))}body .cm-cat .ip-know-box h2{margin-top:10px;font:680 clamp(24px,2.6vw,34px)\/1.1 var(--f-display);letter-spacing:-.03em}body .cm-cat .ip-know-box ol{list-style:none;margin:0;padding:0;display:grid;gap:14px}body .cm-cat .ip-know-box li{display:grid;gap:6px;padding-top:14px;border-top:1px solid color-mix(in srgb,var(--ing) 22%,transparent)}body .cm-cat .ip-know-box li:first-child{padding-top:0;border-top:0}body .cm-cat .ip-know-box li b{font:720 clamp(22px,2.2vw,28px)\/1.1 var(--f-display);overflow-wrap:anywhere;letter-spacing:-.04em;color:var(--ing)}body .cm-cat .ip-know-box li p{font-size:15.5px;line-height:1.5}body .cm-cat .ip-src{padding-bottom:clamp(28px,3vw,40px)}body .cm-cat .ip-src h2{font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}body .cm-cat .ip-src ol{margin:10px 0 0;padding-left:18px;display:grid;gap:6px;font-size:13.5px;color:var(--muted)}body .cm-cat .ip-src a{color:var(--muted);text-underline-offset:3px}@media (max-width:1020px){body .cm-cat .ip-tldr-box,body .cm-cat .ip-know-box{grid-template-columns:1fr}body .cm-cat .ip-use ul{grid-template-columns:1fr}}@media (max-width:640px){body .cm-cat .ip-vsg{grid-template-columns:1fr}body .cm-cat .ip-tldr-box li{grid-template-columns:1fr;gap:2px}body .cm-cat .ip-hcta{display:none}}body .cm-cat .ip-vsg3{grid-template-columns:repeat(3,1fr)}body .cm-cat .ip-vs.warn{background:#fff;box-shadow:inset 0 0 0 1.5px #c1272d33}body .cm-cat .ip-vs.warn b{color:#a4232a}@media (max-width:1180px){body .cm-cat .ip-vsg3{grid-template-columns:1fr}}@media (min-width:1021px){body .cm-cat .ip-pgrid[data-n=\"4\"]{grid-template-columns:repeat(4,minmax(0,1fr))}body .cm-cat .ip-pgrid[data-n=\"5\"]{grid-template-columns:repeat(6,minmax(0,1fr))}body .cm-cat .ip-pgrid[data-n=\"5\"] .ip-p{grid-column:span 2}body .cm-cat .ip-pgrid[data-n=\"5\"] .ip-p:nth-child(n+4){grid-column:span 3;aspect-ratio:2\/1}}@media (min-width:641px) and (max-width:1020px){body .cm-cat .ip-pgrid[data-n=\"5\"] .ip-p:last-child{grid-column:span 2;aspect-ratio:2\/1}}body .cm-cat button{text-transform:none;letter-spacing:normal;line-height:1.2;box-shadow:none;min-height:0}body .cm-cat .copy:focus,body .cm-cat .copy:hover{background:rgb(255 255 255\/.1);color:var(--deep-ink)}body .cm-cat blockquote{border:0;padding:0;margin:0;font-style:normal;background:none;quotes:none}body .cm-cat blockquote::before,body .cm-cat blockquote::after{content:none}body .cm-cat img{max-width:100%}body .cm-cat a:hover{text-decoration:none}body .cm-cat{font-size:16.5px;line-height:1.6}body .cm-cat h1,body .cm-cat h2,body .cm-cat h3{text-transform:none}body .cm-cat .rv-reel:hover,body .cm-cat .rv-reel:focus,body .cm-cat .ob-tab:hover,body .cm-cat .ob-tab:focus,body .cm-cat .sv-ic:hover,body .cm-cat .rv-btn:hover,body .cm-cat .pod-btn:hover,body .cm-cat .hx-pause:hover{background-color:inherit}body .cm-cat .rv-reel{background:#10292a}body .cm-cat .ob-tab{background:transparent}body .cm-cat .rv-btn{background:var(--paper)}body .cm-cat .sv-ic{background:rgb(0 0 0\/.28)}body .cm-cat .bl-pod-btn{background:#0f3a35}body .cm-cat .hx-pause{background:rgb(255 255 255\/.55)}@media (max-width:640px){body .cm-cat .tray{margin-bottom:calc(var(--bm,0px) + 10px + env(safe-area-inset-bottom,0px))}body .cm-cat .toast{bottom:calc(var(--bm,0px) + 92px)}}<\/style><style>body .cm-cat .ip-ch .ip-em,body .cm-cat .ip-k b,body .cm-cat .ip-b .mono,body .cm-cat .ip-nl .mono,body .cm-cat .ip-use .mono,body .cm-cat .ip-know-box li b{color:var(--ingt,var(--ing))}body .cm-cat .ip-pairs-h{margin:26px 0 0;font:600 14px\/1.3 var(--f-body);color:var(--muted)}body .cm-cat .ip-pairs-h+.ip-pairs{margin-top:12px}body .cm-cat .ip-lite .ip-hero{height:auto}body .cm-cat .ip-lite .ip-stage{position:relative;top:auto;height:min(80svh,780px);min-height:540px}body .cm-cat .ip-lite .ip-stage{background:#f1f2ef}body .cm-cat .ip-lite .ip-hero-img{position:absolute;top:0;right:0;bottom:0;left:auto;width:62%;height:100%;object-fit:cover;object-position:50% 50%;z-index:-2}body .cm-cat .ip-lite .ip-stage::before{content:\"\";position:absolute;inset:0;z-index:-1;background:linear-gradient(90deg,#f1f2ef 0,#f1f2ef 38%,rgb(241 242 239\/0) 54%)}body .cm-cat .ip-lite .ip-stage::after{display:none}body .cm-cat .ip-lite .ip-lines{min-height:0}body .cm-cat .ip-lite .ip-ch{position:relative;opacity:1;transform:none;filter:none}body .cm-cat .ip-lite .ip-what{grid-template-columns:minmax(0,1fr);max-width:880px}body .cm-cat .ip-lite .ip-chap{max-width:min(560px,40%)}body .cm-cat .ip-lite .ip-h1{font-size:clamp(46px,5.4vw,84px);text-wrap:balance}body .cm-cat .ip-lite .ip-bl{justify-content:flex-start;flex-wrap:wrap;gap:14px 22px}body .cm-cat .ip-h1.ip-h1-long{font-size:clamp(42px,5.6vw,88px);max-width:12ch;text-wrap:balance}body .cm-cat .ip-chap{max-width:min(720px,48%)}@media (max-width:640px){body .cm-cat .ip-chap{max-width:none}}@media (max-width:640px){body .cm-cat .ip-lite .ip-stage{height:auto;min-height:0;aspect-ratio:auto}body .cm-cat .ip-lite .ip-ui{position:relative;padding-top:clamp(240px,62vw,320px)}body .cm-cat .ip-lite .ip-chap{max-width:none}body .cm-cat .ip-lite .ip-hero-img{width:100%;height:clamp(220px,60vw,300px);bottom:auto;object-position:50% 50%}body .cm-cat .ip-lite .ip-stage::before{background:linear-gradient(180deg,rgb(241 242 239\/0) 0,rgb(241 242 239\/0) clamp(170px,48vw,240px),#f1f2ef clamp(220px,60vw,300px))}}<\/style>\n<div class=\"cm-cat\"><div lang=\"en\"><svg width=\"0\" height=\"0\" style=\"position:absolute\" aria-hidden=\"true\"><symbol id=\"i-arrow\" viewBox=\"0 0 24 24\"><path d=\"M5 12h14M13 6l6 6-6 6\"\/><\/symbol><symbol id=\"i-chat\" viewBox=\"0 0 24 24\"><path d=\"M4 19.5l1.2-3.6A8 8 0 1 1 8.3 19z\"\/><path d=\"M9 10.5h6M9 13.5h4\"\/><\/symbol><\/svg>\n<div class=\"ip\" data-shape=\"safran\" style=\"--ing:#c2331f;--ingt:#c2331f;--ing2:#f2b84b;--glow:194 51 31\">\n<section class=\"ip-hero\" aria-label=\"Saffron\"><div class=\"ip-stage\"><canvas class=\"ip-canvas\" aria-hidden=\"true\"><\/canvas><div class=\"ip-ui\"><div class=\"ip-tl\"><nav class=\"ip-crumbs\" aria-label=\"Breadcrumb\"><a href=\"https:\/\/carmelcosmeticslabs.com\/en\/\">Home<\/a> \/ <a href=\"https:\/\/carmelcosmeticslabs.com\/en\/glossary-cosmetic-ingredients\/\">Glossary<\/a> \/ <span aria-current=\"page\">Saffron<\/span><\/nav><\/div><div class=\"ip-tr\"><span><b>Plant extract<\/b><\/span><span class=\"ip-ma\"><svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M12.00 3.60 L17.29 19.88 L3.44 9.82 L20.56 9.82 L6.71 19.88 Z\" fill=\"none\" stroke=\"#fff\" stroke-width=\"4.2\" stroke-linejoin=\"round\"\/><path d=\"M12.00 3.60 L17.29 19.88 L3.44 9.82 L20.56 9.82 L6.71 19.88 Z\" fill=\"none\" stroke=\"#006233\" stroke-width=\"2\" stroke-linejoin=\"round\"\/><\/svg>Moroccan heritage<\/span><\/div><div class=\"ip-chap\"><h1 class=\"ip-h1\">Saffron<\/h1><div class=\"ip-lines\"><p class=\"ip-ch on\"><b>The crocus<\/b> <span class=\"ip-em\">a purple flower that opens in early autumn.<\/span><\/p><p class=\"ip-ch\"><b>Three threads<\/b> <span class=\"ip-em\">bright red, the precious heart of every flower.<\/span><\/p><p class=\"ip-ch\"><b>The harvest<\/b> <span class=\"ip-em\">flower by flower, by hand, in October and November.<\/span><\/p><p class=\"ip-ch\"><b>Red gold<\/b> <span class=\"ip-em\">once dried, it releases its aroma and golden hue.<\/span><\/p><\/div><\/div><span class=\"ip-mark\" aria-hidden=\"true\">( A )<\/span><div class=\"ip-bl\"><span class=\"ip-inci\">INCI \u00b7 CROCUS SATIVUS FLOWER EXTRACT<\/span><a class=\"ip-hcta\" href=\"https:\/\/carmelcosmeticslabs.com\/en\/request-a-quote\/\">Build my saffron range <svg class=\"ico\"><use href=\"#i-arrow\"\/><\/svg><\/a><span class=\"ip-scroll\" aria-hidden=\"true\"><i><\/i>Scroll<\/span><\/div><\/div><div class=\"ip-prog\" aria-hidden=\"true\"><i><\/i><\/div><\/div><\/section>\n<section class=\"ip-id wrap\" aria-label=\"Identity card\"><dl><div><dt>INCI name<\/dt><dd class=\"mono\">CROCUS SATIVUS FLOWER EXTRACT<\/dd><\/div><div><dt>Other names<\/dt><dd>Saffron, zaafrane, crocus flower extract<\/dd><\/div><div><dt>Family<\/dt><dd>Plant extract (Iridaceae family)<\/dd><\/div><div><dt>Origin<\/dt><dd>Crocus sativus; in Morocco, the Taliouine and Taznakht regions<\/dd><\/div><div><dt>Part used<\/dt><dd>Crocus flowers (the spice itself is the dried stigmas)<\/dd><\/div><div><dt>Areas of use<\/dt><dd>Face, body, hammam<\/dd><\/div><\/dl><\/section>\n<section class=\"wrap ip-tldr\" aria-labelledby=\"ip-tl\"><div class=\"ip-tldr-box\"><div><span class=\"ip-k\"><b>In brief<\/b><\/span><h2 id=\"ip-tl\">Saffron in 30 seconds<\/h2><p class=\"ip-by mono\">By the Carmel Cosmetics Labs R&amp;D team \u00b7 updated October 18, 2026<\/p><\/div><ul><li><b>INCI name<\/b><span>CROCUS SATIVUS FLOWER EXTRACT (crocus flower extract)<\/span><\/li><li><b>What it is<\/b><span>the extract of the flower that gives saffron, a hand-picked spice<\/span><\/li><li><b>For skin<\/b><span>a radiance-care active, studied for its antioxidant carotenoids such as crocin<\/span><\/li><li><b>For the ritual<\/b><span>a warm aroma and a golden hue, from serum to black soap<\/span><\/li><li><b>Origin<\/b><span>a Moroccan crop tied to Taliouine, a protected designation of origin since 2010<\/span><\/li><\/ul><\/div><\/section>\n<section class=\"ip-sec\" aria-labelledby=\"ip-a\"><div class=\"wrap ip-what\"><div><span class=\"ip-k\"><b>( A )<\/b>WHAT IT IS<\/span><h2 class=\"h2\" id=\"ip-a\">What is saffron?<\/h2><p class=\"fc-answer\">Saffron is the spice made from the dried stigmas of the saffron crocus (Crocus sativus): three red threads at the heart of a purple flower that opens in autumn. Its color comes from crocin, its taste from picrocrocin and its aroma from safranal. In cosmetics, crocus flower extract is declared as CROCUS SATIVUS FLOWER EXTRACT; the European CosIng database lists a perfuming function for it. In Morocco, its cultivation is tied to Taliouine, whose saffron has carried a designation of origin since 2010.<\/p><h3 class=\"ip-h3\">Saffron spice, flower extract or turmeric: the difference<\/h3><div class=\"ip-vsg ip-vsg3\"><div class=\"ip-vs on\"><b>Saffron (spice)<\/b><p>The dried stigmas of the crocus, picked by hand. This is the kitchen spice. In cosmetics, its extract is declared as CROCUS SATIVUS STIGMA EXTRACT.<\/p><\/div><div class=\"ip-vs\"><b>Crocus flower extract<\/b><p>An extract of the whole flowers of the saffron crocus, declared as CROCUS SATIVUS FLOWER EXTRACT. The CosIng database lists a perfuming function for it. This is the INCI name we use in our saffron formulas.<\/p><\/div><div class=\"ip-vs\"><b>Turmeric<\/b><p>The root of a different plant, whose yellow pigment is curcumin. It colors and scents differently, and does not replace saffron in an INCI list.<\/p><\/div><\/div><\/div><figure class=\"ip-photo\"><img loading=\"lazy\" src=\"https:\/\/carmelcosmeticslabs.com\/wp-content\/uploads\/2026\/10\/safran-ingredient-cosmetique-carmel.webp\" width=\"1600\" height=\"894\" srcset=\"https:\/\/carmelcosmeticslabs.com\/wp-content\/uploads\/2026\/10\/safran-ingredient-cosmetique-carmel-300x168.webp 300w, https:\/\/carmelcosmeticslabs.com\/wp-content\/uploads\/2026\/10\/safran-ingredient-cosmetique-carmel-441x246.webp 441w, https:\/\/carmelcosmeticslabs.com\/wp-content\/uploads\/2026\/10\/safran-ingredient-cosmetique-carmel-768x429.webp 768w, https:\/\/carmelcosmeticslabs.com\/wp-content\/uploads\/2026\/10\/safran-ingredient-cosmetique-carmel-990x553.webp 990w, https:\/\/carmelcosmeticslabs.com\/wp-content\/uploads\/2026\/10\/safran-ingredient-cosmetique-carmel-1024x572.webp 1024w, https:\/\/carmelcosmeticslabs.com\/wp-content\/uploads\/2026\/10\/safran-ingredient-cosmetique-carmel-1536x858.webp 1536w, https:\/\/carmelcosmeticslabs.com\/wp-content\/uploads\/2026\/10\/safran-ingredient-cosmetique-carmel.webp 1600w, https:\/\/carmelcosmeticslabs.com\/wp-content\/uploads\/2026\/10\/safran-ingredient-cosmetique-carmel.webp 1600w\" sizes=\"auto, (max-width:1020px) 92vw, 50vw\" alt=\"Saffron for skin and face: purple crocus flowers, dried red threads and a golden infusion on a Moroccan table\" loading=\"lazy\" decoding=\"async\" title=\"| Carmel Cosmetics Labs\"><figcaption>Saffron \u00b7 Taliouine, Morocco<\/figcaption><\/figure><\/div><\/section>\n<section class=\"ip-sec\" aria-labelledby=\"ip-b\" style=\"padding-top:0\"><div class=\"wrap\"><span class=\"ip-k\"><b>( B )<\/b>ITS BENEFITS<\/span><h2 class=\"h2\" id=\"ip-b\">Saffron in skincare: benefits for skin and beauty rituals<\/h2><div class=\"ip-ben\"><article class=\"ip-b\"><span class=\"mono\">01<\/span><h3>For skin<\/h3><p>In a serum or cream, saffron fits into a radiance routine. Its petals and stigmas contain crocin and kaempferol, antioxidant compounds studied as sources of actives for cosmetic formulas.<\/p><\/article><article class=\"ip-b\"><span class=\"mono\">02<\/span><h3>For the ritual<\/h3><p>In a black soap or scrub, it adds a warm aroma and a golden note that recall the Moroccan hammam, while the formula base cleanses and softens the skin.<\/p><\/article><article class=\"ip-b\"><span class=\"mono\">03<\/span><h3>For the formula<\/h3><p>It gives the range a strong identity that is easy to tell: a rare spice, picked by hand, tied to the Taliouine terroir. The CosIng database lists a perfuming function for crocus flower extract.<\/p><\/article><\/div><div class=\"ip-use\"><h3 class=\"ip-h3\">How do you use saffron?<\/h3><ul><li><span class=\"mono\">Face<\/span><p>As a serum, a few drops on clean skin, morning or evening, before the cream. The serum can be layered with other radiance care.<\/p><\/li><li><span class=\"mono\">Scrub<\/span><p>A saffron face scrub is massaged gently onto damp skin in small circles, avoiding the eye area, then rinsed off with lukewarm water.<\/p><\/li><li><span class=\"mono\">Hammam<\/span><p>Saffron black soap is applied to damp skin after the steam. Leave it on for a few minutes, then exfoliate with a kessa glove before rinsing.<\/p><\/li><\/ul><\/div><\/div><\/section>\n<section class=\"ip-prods\" aria-labelledby=\"ip-c\"><div class=\"wrap\"><div class=\"ip-prods-head\"><div><span class=\"ip-k\"><b>( C )<\/b>IN OUR PRODUCTS<\/span><h2 class=\"h2\" id=\"ip-c\">Launch your saffron range<\/h2><\/div><p>We add it to serums, face scrubs, creams and black soaps ready to carry your brand. Pick a category to see the formulas.<\/p><\/div><div class=\"ip-pgrid\" data-n=\"4\"><a class=\"ip-p\" href=\"https:\/\/carmelcosmeticslabs.com\/en\/personalized-cosmetics-products-catalog\/white-label-face-serums\/\"><img src=\"https:\/\/carmelcosmeticslabs.com\/wp-content\/uploads\/2026\/10\/serums-visage-marque-blanche-carmel-cosmetics-labs.webp\" alt=\"| Carmel Cosmetics Labs\" loading=\"lazy\" decoding=\"async\" title=\"| Carmel Cosmetics Labs\"><span>Face serums<svg class=\"ico\"><use href=\"#i-arrow\"\/><\/svg><\/span><\/a><a class=\"ip-p\" href=\"https:\/\/carmelcosmeticslabs.com\/en\/personalized-cosmetics-products-catalog\/white-label-face-scrubs\/\"><img src=\"https:\/\/carmelcosmeticslabs.com\/wp-content\/uploads\/2026\/10\/gommages-visage-marque-blanche-carmel-cosmetics-labs.webp\" alt=\"| Carmel Cosmetics Labs\" loading=\"lazy\" decoding=\"async\" title=\"| Carmel Cosmetics Labs\"><span>Face scrubs<svg class=\"ico\"><use href=\"#i-arrow\"\/><\/svg><\/span><\/a><a class=\"ip-p\" href=\"https:\/\/carmelcosmeticslabs.com\/en\/personalized-cosmetics-products-catalog\/white-label-face-creams\/\"><img src=\"https:\/\/carmelcosmeticslabs.com\/wp-content\/uploads\/2026\/09\/soin-visage-marque-blanche-application-creme.webp\" alt=\"| Carmel Cosmetics Labs\" loading=\"lazy\" decoding=\"async\" title=\"| Carmel Cosmetics Labs\"><span>Face creams<svg class=\"ico\"><use href=\"#i-arrow\"\/><\/svg><\/span><\/a><a class=\"ip-p\" href=\"https:\/\/carmelcosmeticslabs.com\/en\/personalized-cosmetics-products-catalog\/white-label-black-soap\/\"><img src=\"https:\/\/carmelcosmeticslabs.com\/wp-content\/uploads\/2026\/09\/cosmetiques-spa-hammam-savon-noir-marque-blanche.webp\" alt=\"| Carmel Cosmetics Labs\" loading=\"lazy\" decoding=\"async\" title=\"| Carmel Cosmetics Labs\"><span>Hammam and black soap<svg class=\"ico\"><use href=\"#i-arrow\"\/><\/svg><\/span><\/a><\/div><div class=\"ip-catprods\"><p class=\"ip-cp-h\">Catalog products with saffron<\/p><ul><li><a href=\"https:\/\/carmelcosmeticslabs.com\/en\/personalized-cosmetics-products-catalog\/white-label-face-serums\/prickly-pear-saffron-serum\/\">Prickly pear seed oil and saffron serum<\/a><\/li><li><a href=\"https:\/\/carmelcosmeticslabs.com\/en\/personalized-cosmetics-products-catalog\/white-label-face-scrubs\/saffron-face-scrub\/\">Saffron face scrub<\/a><\/li><li><a href=\"https:\/\/carmelcosmeticslabs.com\/en\/personalized-cosmetics-products-catalog\/white-label-black-soap\/saffron-black-soap\/\">Saffron black soap<\/a><\/li><\/ul><\/div><\/div><\/section>\n<style>.ip-catprods{margin-top:clamp(2.2rem,4vw,3.2rem);padding-top:clamp(1.6rem,3vw,2.2rem);border-top:1px solid color-mix(in srgb,currentColor 16%,transparent);color:inherit}.ip-catprods .ip-cp-h{font-size:clamp(1.15rem,1.6vw,1.4rem);font-weight:600;letter-spacing:-.01em;margin:0 0 1.1rem;color:inherit}.ip-catprods ul{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:.6rem}.ip-catprods a{display:inline-flex;align-items:center;gap:.5rem;padding:.62rem 1.05rem;border-radius:999px;border:1px solid color-mix(in srgb,currentColor 26%,transparent);color:inherit;text-decoration:none;font-size:.95rem;line-height:1.2;transition:background .2s,border-color .2s}.ip-catprods a:hover,.ip-catprods a:focus-visible{background:color-mix(in srgb,currentColor 10%,transparent);border-color:color-mix(in srgb,currentColor 50%,transparent)}.ip-catprods a::after{content:\"\\2192\";opacity:.7}html[dir=rtl] .ip-catprods a::after{content:\"\\2190\"}<\/style>\n<section class=\"ip-sec\" aria-labelledby=\"ip-d\"><div class=\"wrap ip-notes\"><div><span class=\"ip-k\"><b>( D )<\/b>FORMULATOR NOTES<\/span><h2 class=\"h2\" id=\"ip-d\">How we use it<\/h2><p class=\"pk-ex-sub\" style=\"margin-top:14px\">What our formulators take into account when saffron goes into your product.<\/p><p class=\"ip-pairs-h\">Often paired with<\/p><div class=\"ip-pairs\" aria-label=\"Commonly paired ingredients\"><a class=\"ip-pair\" href=\"https:\/\/carmelcosmeticslabs.com\/en\/glossary-cosmetic-ingredients\/argan-oil\/\" title=\"Two symbols of southern Morocco: argan oil nourishes the skin, while saffron brings the aroma and the story, from black soap to serum.\"><i><\/i>Argan oil<\/a><span class=\"ip-pair\" title=\"The golden duo of radiance care: they share a warm color palette and complement each other in masks and serums.\"><i><\/i>Turmeric<\/span><span class=\"ip-pair\" title=\"A classic of radiance formulas, often paired with saffron in serums for a more even-looking complexion.\"><i><\/i>Licorice extract<\/span><span class=\"ip-pair\" title=\"A well-tolerated active that anchors radiance serums and creams, and leaves saffron the role of Moroccan signature.\"><i><\/i>Niacinamide<\/span><a class=\"ip-pair\" href=\"https:\/\/carmelcosmeticslabs.com\/en\/glossary-cosmetic-ingredients\/orange-blossom-water\/\" title=\"A Moroccan floral note that accompanies saffron in lotions and replaces part of the water in the formula.\"><i><\/i>Orange blossom water<\/a><span class=\"ip-pair\" title=\"It protects the oils in the formula from oxidation, useful in oil serums and saffron soaps.\"><i><\/i>Vitamin E<\/span><\/div><\/div><ol class=\"ip-nl\"><li><span class=\"mono\">01<\/span><b>The right INCI name<\/b><p>\u201cSaffron\u201d names the spice, but the INCI list depends on the part extracted: CROCUS SATIVUS FLOWER EXTRACT for the flower, CROCUS SATIVUS STIGMA EXTRACT for the stigmas. We use exactly the name on the supplier&#x27;s data sheet.<\/p><\/li><li><span class=\"mono\">02<\/span><b>A hue to control<\/b><p>Crocin, a water-soluble yellow-orange pigment, can color the formula. We adjust the shade and check color stability in the final packaging.<\/p><\/li><li><span class=\"mono\">03<\/span><b>Fragrance and allergens<\/b><p>The flower extract has a perfuming function. We check the supplier&#x27;s allergen declaration and list on the label those in Annex III of Regulation (EC) No 1223\/2009 that exceed the thresholds.<\/p><\/li><li><span class=\"mono\">04<\/span><b>Origin and claims<\/b><p>The \u201cTaliouine saffron\u201d mention is reserved for material documented by the supplier. Traditional medicinal uses remain a tradition: your claims talk about radiance, softness and fragrance.<\/p><\/li><\/ol><\/div><\/section>\n<section class=\"ip-know\" aria-labelledby=\"ip-kn\"><div class=\"wrap\"><div class=\"ip-know-box\"><div><span class=\"ip-k\"><b>Did you know?<\/b><\/span><h2 id=\"ip-kn\">The red gold of southern Morocco<\/h2><\/div><ol><li><b>Taliouine<\/b><p>An order of the Ministry of Agriculture (no. 1355-10 of April 30, 2010) recognized the designation of origin \u201cSafran de Taliouine\u201d; it was amended in 2018.<\/p><\/li><li><b>150,000 flowers<\/b><p>According to a review published in 2019, it takes 150,000 to 200,000 flowers and about 400 hours of work to produce one kilogram of saffron.<\/p><\/li><li><b>Safranal<\/b><p>Safranal, the molecule behind saffron&#x27;s aroma, is almost absent from the fresh stigma: it forms during drying, which Moroccan producers traditionally do in the sun or in the shade.<\/p><\/li><\/ol><\/div><\/div><\/section>\n<section class=\"section\" aria-labelledby=\"ip-faq\" style=\"padding-top:0\"><div class=\"wrap faq-grid\"><div class=\"sticky\"><h2 class=\"h2\" id=\"ip-faq\">Saffron for skin and face: your questions<\/h2><div class=\"faq-help\"><b>A project with this ingredient?<\/b><span>Our product specialist answers you on WhatsApp.<\/span><a class=\"btn btn-wa-s\" href=\"https:\/\/wa.me\/212761511711\" target=\"_blank\" rel=\"noopener\"><svg class=\"ico\"><use href=\"#i-chat\"\/><\/svg>Message us on WhatsApp<\/a><\/div><\/div><div><details class=\"qa\" open><summary><h3>What are the benefits of saffron for skin?<\/h3><span class=\"pm\" aria-hidden=\"true\"><\/span><\/summary><div class=\"ans\"><p>In cosmetics, saffron first brings a warm aroma and a strong identity. Its petals and stigmas contain crocin and kaempferol, antioxidant compounds studied for skincare formulas. In a serum or cream, it supports a radiance routine alongside actives such as niacinamide or licorice extract.<\/p><\/div><\/details>\n<details class=\"qa\"><summary><h3>How do you use saffron on the face?<\/h3><span class=\"pm\" aria-hidden=\"true\"><\/span><\/summary><div class=\"ans\"><p>The simplest way is a formulated product: a few drops of serum on clean skin before the cream, or a gentle scrub massaged onto damp skin and rinsed off. Homemade recipes steep threads in oil or milk, but they are neither dosed nor preserved. Always patch test on a small area first.<\/p><\/div><\/details>\n<details class=\"qa\"><summary><h3>What is the INCI name of saffron in cosmetics?<\/h3><span class=\"pm\" aria-hidden=\"true\"><\/span><\/summary><div class=\"ans\"><p>It depends on the part of the plant. Crocus flower extract is declared as CROCUS SATIVUS FLOWER EXTRACT, and the stigma extract, meaning the spice, as CROCUS SATIVUS STIGMA EXTRACT. The European CosIng database lists a perfuming function for the first, and antioxidant and skin conditioning functions for the second.<\/p><\/div><\/details>\n<details class=\"qa\"><summary><h3>Why is saffron so expensive?<\/h3><span class=\"pm\" aria-hidden=\"true\"><\/span><\/summary><div class=\"ans\"><p>Each flower carries only three red threads, separated by hand. According to a scientific review published in 2019, it takes 150,000 to 200,000 flowers and about 400 hours of work to obtain one kilogram of saffron. The harvest, in October and November, relies mostly on female labor.<\/p><\/div><\/details>\n<details class=\"qa\"><summary><h3>Where does Moroccan saffron come from?<\/h3><span class=\"pm\" aria-hidden=\"true\"><\/span><\/summary><div class=\"ans\"><p>Its cultivation is historically tied to Taliouine and Taznakht, in the south of the country. In 2010, order no. 1355-10 of the Ministry of Agriculture recognized the designation of origin \u201cSafran de Taliouine\u201d, amended in 2018. Cultivation has also spread to other areas, such as the Haouz, Oulm\u00e8s or Chefchaouen.<\/p><\/div><\/details>\n<details class=\"qa\"><summary><h3>Can you put pure saffron on the face?<\/h3><span class=\"pm\" aria-hidden=\"true\"><\/span><\/summary><div class=\"ans\"><p>Infused threads appear in traditional recipes, but their concentration varies from one preparation to the next and crocin can stain skin or linen yellow. For a product on sale, a declared extract is preferred, built into a preserved and tested formula. If in doubt, patch test on a small area.<\/p><\/div><\/details>\n<details class=\"qa\"><summary><h3>Can you create a saffron range with Carmel Cosmetics Labs?<\/h3><span class=\"pm\" aria-hidden=\"true\"><\/span><\/summary><div class=\"ans\"><p>Yes. We add it to white label serums, face scrubs, creams and black soaps, or to an exclusive private label formula, made in our ISO 22716 factory in Morocco. Send your brief: the consultation is free and the formula selection comes with no commitment.<\/p><\/div><\/details><\/div><\/div><\/section>\n<section class=\"wrap ip-src\" aria-labelledby=\"ip-sr\"><h2 id=\"ip-sr\" class=\"mono\">Sources<\/h2><ol><li><a href=\"https:\/\/ec.europa.eu\/growth\/tools-databases\/cosing\/details\/55522\" target=\"_blank\" rel=\"noopener\">European Commission, CosIng database: CROCUS SATIVUS FLOWER EXTRACT<\/a><\/li><li><a href=\"https:\/\/ec.europa.eu\/growth\/tools-databases\/cosing\/details\/87503\" target=\"_blank\" rel=\"noopener\">European Commission, CosIng database: CROCUS SATIVUS STIGMA EXTRACT<\/a><\/li><li><a href=\"https:\/\/www.onssa.gov.ma\/related-regulations\/distinctive-signs-of-origin-and-quality\/designations-of-origin\/?lang=en\" target=\"_blank\" rel=\"noopener\">ONSSA, Recognized designations of origin: order no. 1355-10 (2010) \u201cSafran de Taliouine\u201d and amending order no. 3698-18 (2018)<\/a><\/li><li><a href=\"https:\/\/doi.org\/10.3390\/cosmetics6040063\" target=\"_blank\" rel=\"noopener\">Mzabri I., Addi M., Berrichi A., Traditional and Modern Uses of Saffron (Crocus Sativus), Cosmetics 6(4):63 (2019)<\/a><\/li><li><a href=\"https:\/\/pmc.ncbi.nlm.nih.gov\/articles\/PMC10478662\/\" target=\"_blank\" rel=\"noopener\">Aissa R. et al., Phytochemistry, quality control and medicinal uses of Saffron (Crocus sativus L.): an updated review, Journal of Medicine and Life 16(6) (2023)<\/a><\/li><\/ol><\/section>\n<section style=\"padding-bottom:clamp(40px,6vw,80px)\"><div class=\"wrap\"><div class=\"final\"><div><h2>Your saffron range, made in Morocco<\/h2><p>Send your brief: we formulate and manufacture in our ISO 22716 factory in A\u00eft Melloul. Free consultation and formula selection, no commitment.<\/p><\/div><div class=\"actions\"><a class=\"btn\" href=\"https:\/\/carmelcosmeticslabs.com\/en\/request-a-quote\/\">Free consultation <span class=\"knob\"><svg class=\"ico\"><use href=\"#i-arrow\"\/><\/svg><\/span><\/a><a class=\"btn btn-wa\" href=\"https:\/\/carmelcosmeticslabs.com\/en\/personalized-cosmetics-products-catalog\/\"><span>View the catalog<\/span><span class=\"knob\"><svg class=\"ico\"><use href=\"#i-arrow\"\/><\/svg><\/span><\/a><\/div><\/div><\/div><\/section>\n<script type=\"application\/ld+json\">{\"@context\": \"https:\/\/schema.org\", \"@graph\": [{\"@type\": \"DefinedTerm\", \"@id\": \"https:\/\/carmelcosmeticslabs.com\/en\/glossary-cosmetic-ingredients\/saffron\/#term\", \"name\": \"Saffron\", \"alternateName\": \"CROCUS SATIVUS FLOWER EXTRACT\", \"termCode\": \"CROCUS SATIVUS FLOWER EXTRACT\", \"description\": \"Saffron is the spice made from the dried stigmas of the saffron crocus (Crocus sativus): three red threads at the heart of a purple flower that opens in autumn. Its color comes from crocin, its taste from picrocrocin and its aroma from safranal. In cosmetics, crocus flower extract is declared as CROCUS SATIVUS FLOWER EXTRACT; the European CosIng database lists a perfuming function for it. In Morocco, its cultivation is tied to Taliouine, whose saffron has carried a designation of origin since 2010.\", \"url\": \"https:\/\/carmelcosmeticslabs.com\/en\/glossary-cosmetic-ingredients\/saffron\/\", \"inDefinedTermSet\": \"https:\/\/carmelcosmeticslabs.com\/en\/glossary-cosmetic-ingredients\/#glossaire\"}, {\"@type\": \"WebPage\", \"@id\": \"https:\/\/carmelcosmeticslabs.com\/en\/glossary-cosmetic-ingredients\/saffron\/\", \"url\": \"https:\/\/carmelcosmeticslabs.com\/en\/glossary-cosmetic-ingredients\/saffron\/\", \"name\": \"Saffron in Skincare: Benefits and Uses | Carmel\", \"description\": \"Saffron in cosmetics (INCI CROCUS SATIVUS FLOWER EXTRACT): skin and face benefits, uses, Taliouine saffron. Build your range.\", \"inLanguage\": \"en\", \"dateModified\": \"2026-10-18\", \"isPartOf\": {\"@id\": \"https:\/\/carmelcosmeticslabs.com\/en\/#website\"}, \"about\": {\"@id\": \"https:\/\/carmelcosmeticslabs.com\/en\/glossary-cosmetic-ingredients\/saffron\/#term\"}, \"author\": {\"@type\": \"Organization\", \"name\": \"Carmel Cosmetics Labs R&D team\", \"url\": \"https:\/\/carmelcosmeticslabs.com\/en\/cosmetic-formulation-lab\/\"}, \"publisher\": {\"@id\": \"https:\/\/carmelcosmeticslabs.com\/en\/#organization\"}, \"citation\": [\"https:\/\/ec.europa.eu\/growth\/tools-databases\/cosing\/details\/55522\", \"https:\/\/ec.europa.eu\/growth\/tools-databases\/cosing\/details\/87503\", \"https:\/\/www.onssa.gov.ma\/related-regulations\/distinctive-signs-of-origin-and-quality\/designations-of-origin\/?lang=en\", \"https:\/\/doi.org\/10.3390\/cosmetics6040063\", \"https:\/\/pmc.ncbi.nlm.nih.gov\/articles\/PMC10478662\/\"]}, {\"@type\": \"FAQPage\", \"mainEntity\": [{\"@type\": \"Question\", \"name\": \"What are the benefits of saffron for skin?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"In cosmetics, saffron first brings a warm aroma and a strong identity. Its petals and stigmas contain crocin and kaempferol, antioxidant compounds studied for skincare formulas. In a serum or cream, it supports a radiance routine alongside actives such as niacinamide or licorice extract.\"}}, {\"@type\": \"Question\", \"name\": \"How do you use saffron on the face?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"The simplest way is a formulated product: a few drops of serum on clean skin before the cream, or a gentle scrub massaged onto damp skin and rinsed off. Homemade recipes steep threads in oil or milk, but they are neither dosed nor preserved. Always patch test on a small area first.\"}}, {\"@type\": \"Question\", \"name\": \"What is the INCI name of saffron in cosmetics?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"It depends on the part of the plant. Crocus flower extract is declared as CROCUS SATIVUS FLOWER EXTRACT, and the stigma extract, meaning the spice, as CROCUS SATIVUS STIGMA EXTRACT. The European CosIng database lists a perfuming function for the first, and antioxidant and skin conditioning functions for the second.\"}}, {\"@type\": \"Question\", \"name\": \"Why is saffron so expensive?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"Each flower carries only three red threads, separated by hand. According to a scientific review published in 2019, it takes 150,000 to 200,000 flowers and about 400 hours of work to obtain one kilogram of saffron. The harvest, in October and November, relies mostly on female labor.\"}}, {\"@type\": \"Question\", \"name\": \"Where does Moroccan saffron come from?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"Its cultivation is historically tied to Taliouine and Taznakht, in the south of the country. In 2010, order no. 1355-10 of the Ministry of Agriculture recognized the designation of origin \u201cSafran de Taliouine\u201d, amended in 2018. Cultivation has also spread to other areas, such as the Haouz, Oulm\u00e8s or Chefchaouen.\"}}, {\"@type\": \"Question\", \"name\": \"Can you put pure saffron on the face?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"Infused threads appear in traditional recipes, but their concentration varies from one preparation to the next and crocin can stain skin or linen yellow. For a product on sale, a declared extract is preferred, built into a preserved and tested formula. If in doubt, patch test on a small area.\"}}, {\"@type\": \"Question\", \"name\": \"Can you create a saffron range with Carmel Cosmetics Labs?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"Yes. We add it to white label serums, face scrubs, creams and black soaps, or to an exclusive private label formula, made in our ISO 22716 factory in Morocco. Send your brief: the consultation is free and the formula selection comes with no commitment.\"}}]}]}<\/script>\n<script>\n(function(){\n  document.documentElement.classList.add('ip-js');\n  [].forEach.call(document.querySelectorAll('details.qa'),function(d,i){d.open=i===0;});\n  var comp=document.querySelector('.ip-comp');\n  if(comp&&'IntersectionObserver' in window){new IntersectionObserver(function(es,o){es.forEach(function(e){if(e.isIntersecting){comp.classList.add('in');o.disconnect();}});},{threshold:.35}).observe(comp);}else if(comp){comp.classList.add('in');}\n  \/* ---------- HERO: particle story, one shape per chapter (ingredient-specific) ---------- *\/\n  var hero=document.querySelector('.ip-hero'),cv=document.querySelector('.ip-canvas');if(!hero||!cv)return;\n  var ipr=document.querySelector('.ip');function chrome(){var h=0,b=0,hd=document.querySelector('.elementor-location-header'),bm=document.querySelector('.wp-bottom-menu');if(hd&&\/sticky|fixed\/.test(getComputedStyle(hd).position))h=hd.getBoundingClientRect().height;if(bm){var cs=getComputedStyle(bm);if(cs.display!=='none'&&cs.visibility!=='hidden')b=bm.getBoundingClientRect().height;}ipr.style.setProperty('--hdr',h+'px');ipr.style.setProperty('--bm',b+'px');}\n  chrome();setTimeout(function(){chrome();build();},1200);\n  var ctx=cv.getContext('2d'),reduce=window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n  var chs=[].slice.call(document.querySelectorAll('.ip-ch')),mark=document.querySelector('.ip-mark'),bar=document.querySelector('.ip-prog i'),L='ABCD';\n  \/* Shape library: each draws in a 400x400 box with real colours (sampled as particle colours). *\/\n  function leaf(c,x,y,len,w,ang,col){c.save();c.translate(x,y);c.rotate(ang);c.fillStyle=col;c.beginPath();c.moveTo(0,0);c.quadraticCurveTo(len*.5,-w,len,0);c.quadraticCurveTo(len*.5,w,0,0);c.fill();c.restore();}\n  function almond(c,x,y,rx,ry,ang,col){c.save();c.translate(x,y);c.rotate(ang);c.fillStyle=col;c.beginPath();c.moveTo(0,-ry);c.bezierCurveTo(rx*1.1,-ry*.55,rx*1.1,ry*.55,0,ry);c.bezierCurveTo(-rx*1.1,ry*.55,-rx*1.1,-ry*.55,0,-ry);c.fill();c.restore();}\n  var SHAPES={argan:[\n    function tree(c){ \/\/ short wide canopy, gnarled twisted trunk, golden fruits\n      c.fillStyle='#6a4a2b';c.beginPath();c.moveTo(186,390);c.bezierCurveTo(176,330,206,300,180,250);c.lineTo(150,205);c.lineTo(162,198);c.lineTo(196,240);c.bezierCurveTo(200,220,214,212,226,196);c.lineTo(238,202);c.bezierCurveTo(224,226,216,262,232,300);c.bezierCurveTo(240,330,226,360,232,390);c.closePath();c.fill();\n      var g=['#4f6a2a','#6b8636','#8aa142','#5d7a30'];var blobs=[[200,150,120,62],[110,175,70,42],[292,170,78,44],[160,118,66,40],[250,112,72,42],[205,92,60,34],[70,196,40,24],[332,194,44,26]];\n      blobs.forEach(function(b,i){c.fillStyle=g[i%4];c.beginPath();c.ellipse(b[0],b[1],b[2],b[3],0,0,6.283);c.fill();});\n      c.fillStyle='#d9a43a';[[150,150],[240,140],[290,180],[120,190],[210,110],[180,180],[262,200]].forEach(function(p){c.beginPath();c.arc(p[0],p[1],6,0,6.283);c.fill();});\n    },\n    function fruit(c){ \/\/ olive-like argan fruit with stem and two leaves\n      leaf(c,206,92,120,24,-2.5,'#5d7a30');leaf(c,212,96,110,22,-.55,'#7b9638');\n      c.strokeStyle='#6a4a2b';c.lineWidth=7;c.beginPath();c.moveTo(208,96);c.lineTo(205,128);c.stroke();\n      var gr=c.createRadialGradient(178,190,10,200,230,120);gr.addColorStop(0,'#f3c46a');gr.addColorStop(.55,'#d79a32');gr.addColorStop(1,'#9c6a1f');\n      c.fillStyle=gr;c.beginPath();c.ellipse(204,240,92,112,.12,0,6.283);c.fill();\n      c.fillStyle='rgba(255,236,190,.95)';c.beginPath();c.ellipse(172,196,18,30,-.4,0,6.283);c.fill();\n    },\n    function nut(c){ \/\/ cracked nut: two shell halves apart, three kernels inside\n      c.fillStyle='#7a5432';\n      c.beginPath();c.ellipse(118,220,62,112,-.2,Math.PI*.5,Math.PI*1.5);c.fill();\n      c.beginPath();c.ellipse(290,214,62,112,.2,-Math.PI*.5,Math.PI*.5);c.fill();\n      c.fillStyle='#9a6c3e';c.beginPath();c.ellipse(126,220,40,94,-.2,Math.PI*.5,Math.PI*1.5);c.fill();c.beginPath();c.ellipse(282,214,40,94,.2,-Math.PI*.5,Math.PI*.5);c.fill();\n      almond(c,170,226,30,62,-.18,'#f2dfb4');almond(c,208,212,32,68,0,'#ead1a0');almond(c,246,226,30,62,.2,'#f2dfb4');\n    },\n    function drop(c){ \/\/ golden oil drop + ripple\n      var gr=c.createLinearGradient(140,60,260,330);gr.addColorStop(0,'#ffd27a');gr.addColorStop(.6,'#d99a2e');gr.addColorStop(1,'#a8701d');\n      c.fillStyle=gr;c.beginPath();c.moveTo(200,40);c.bezierCurveTo(232,110,292,170,292,236);c.bezierCurveTo(292,290,250,330,200,330);c.bezierCurveTo(150,330,108,290,108,236);c.bezierCurveTo(108,170,168,110,200,40);c.fill();\n      c.fillStyle='rgba(255,246,220,.95)';c.beginPath();c.ellipse(160,222,14,36,.28,0,6.283);c.fill();\n      c.strokeStyle='#d9a43a';c.lineWidth=5;[[110,22],[150,30],[188,38]].forEach(function(r,i){c.globalAlpha=1-i*.25;c.beginPath();c.ellipse(200,372,r[0],r[1]*.5,0,0,6.283);c.stroke();});c.globalAlpha=1;\n    }\n  ]};\n  var CP=CanvasRenderingContext2D.prototype;if(!CP.roundRect)CP.roundRect=function(x,y,w,h,r){r=Math.min(Array.isArray(r)?r[0]:r,w\/2,h\/2);this.moveTo(x+r,y);this.arcTo(x+w,y,x+w,y+h,r);this.arcTo(x+w,y+h,x,y+h,r);this.arcTo(x,y+h,x,y,r);this.arcTo(x,y,x+w,y,r);this.closePath();};\n  function drop(c,cx,top,bot,hw,c1,c2,c3,hl){var gr=c.createLinearGradient(cx-hw,top,cx+hw,bot);gr.addColorStop(0,c1);gr.addColorStop(.6,c2);gr.addColorStop(1,c3);c.fillStyle=gr;var mid=bot-hw;c.beginPath();c.moveTo(cx,top);c.bezierCurveTo(cx+hw*.35,top+(mid-top)*.45,cx+hw,mid-hw*.7,cx+hw,mid);c.bezierCurveTo(cx+hw,mid+hw*.6,cx+hw*.55,bot,cx,bot);c.bezierCurveTo(cx-hw*.55,bot,cx-hw,mid+hw*.6,cx-hw,mid);c.bezierCurveTo(cx-hw,mid-hw*.7,cx-hw*.35,top+(mid-top)*.45,cx,top);c.fill();c.fillStyle=hl;c.beginPath();c.ellipse(cx-hw*.45,mid-hw*.1,hw*.15,hw*.4,.28,0,6.283);c.fill();}\n  function ripple(c,cx,y,col){c.strokeStyle=col;c.lineWidth=5;[[110,22],[150,30],[188,38]].forEach(function(r,i){c.globalAlpha=1-i*.25;c.beginPath();c.ellipse(cx,y,r[0],r[1]*.5,0,0,6.283);c.stroke();});c.globalAlpha=1;}\n  function poly(c,pts,col){c.fillStyle=col;c.beginPath();c.moveTo(pts[0][0],pts[0][1]);for(var i=1;i<pts.length;i++)c.lineTo(pts[i][0],pts[i][1]);c.closePath();c.fill();}\n  function rr(c,x,y,w,h,r,col){c.fillStyle=col;c.beginPath();c.roundRect(x,y,w,h,r);c.fill();}\n  SHAPES.nigelle=[\n    function flower(c){ \/\/ Nigella sativa: 5 pale petals with blue tips, green ovary + horn styles, feathery leaves\n      c.strokeStyle='#6f8a3a';c.lineWidth=7;c.beginPath();c.moveTo(200,390);c.bezierCurveTo(196,330,206,280,200,232);c.stroke();\n      c.lineWidth=4;[[-1,330],[1,300],[-1,270]].forEach(function(f){var y=f[1];for(var k=0;k<3;k++){c.beginPath();c.moveTo(200,y);c.quadraticCurveTo(200+f[0]*(40+k*18),y-20-k*10,200+f[0]*(70+k*26),y-60+k*14);c.stroke();}});\n      for(var i=0;i<5;i++){var a=-Math.PI\/2+i*Math.PI*2\/5;c.save();c.translate(200,170);c.rotate(a);var g=c.createLinearGradient(0,0,108,0);g.addColorStop(0,'#eef2fa');g.addColorStop(.6,'#cbd7f0');g.addColorStop(1,'#6f8fd0');c.fillStyle=g;c.beginPath();c.moveTo(0,0);c.bezierCurveTo(30,-50,96,-46,110,0);c.bezierCurveTo(96,46,30,50,0,0);c.fill();c.strokeStyle='#9fb3e0';c.lineWidth=3;c.beginPath();c.moveTo(14,0);c.lineTo(92,0);c.stroke();c.restore();}\n      c.fillStyle='#3a3550';for(var j=0;j<22;j++){var b=j\/22*6.283;c.beginPath();c.arc(200+Math.cos(b)*30,170+Math.sin(b)*30,4.5,0,6.283);c.fill();}\n      c.fillStyle='#7f9b45';c.beginPath();c.arc(200,170,20,0,6.283);c.fill();\n      c.strokeStyle='#5d7a30';c.lineWidth=4;for(var h=0;h<5;h++){var t=-Math.PI\/2+h*1.2566;c.beginPath();c.moveTo(200,170);c.quadraticCurveTo(200+Math.cos(t)*30,170+Math.sin(t)*30,200+Math.cos(t+.5)*44,170+Math.sin(t+.5)*44);c.stroke();}\n    },\n    function capsule(c){ \/\/ inflated 5-chambered seed pod with horn-like styles\n      c.strokeStyle='#6f8a3a';c.lineWidth=8;c.beginPath();c.moveTo(200,392);c.quadraticCurveTo(190,350,200,312);c.stroke();\n      var g=c.createRadialGradient(170,200,10,200,220,130);g.addColorStop(0,'#d9dc9a');g.addColorStop(.6,'#a8b062');g.addColorStop(1,'#6f7a38');c.fillStyle=g;\n      c.beginPath();c.moveTo(200,312);c.bezierCurveTo(90,300,92,150,140,112);c.lineTo(260,112);c.bezierCurveTo(308,150,310,300,200,312);c.fill();\n      c.strokeStyle='#6a7434';c.lineWidth=4;[[150,110],[176,108],[200,106],[224,108],[250,110]].forEach(function(p,i){c.beginPath();c.moveTo(200,312);c.quadraticCurveTo(p[0]+(p[0]-200)*.9,220,p[0],p[1]);c.stroke();});\n      c.strokeStyle='#5d6a2c';c.lineWidth=6;[[140,112,-1],[170,110,-.5],[200,108,0],[230,110,.5],[260,112,1]].forEach(function(p){c.beginPath();c.moveTo(p[0],p[1]);c.quadraticCurveTo(p[0]+p[2]*20,p[1]-40,p[0]+p[2]*44,p[1]-62);c.stroke();});\n      c.fillStyle='#24222b';[[150,330],[168,348],[236,340],[252,326]].forEach(function(p,i){c.save();c.translate(p[0],p[1]);c.rotate(i);c.beginPath();c.moveTo(-6,5);c.lineTo(0,-7);c.lineTo(7,5);c.closePath();c.fill();c.restore();});\n    },\n    function seeds(c){ \/\/ heap of matte black angular seeds\n      var R=rng(5),cols=['#1c1b21','#2a2830','#34323c','#46434f'];\n      for(var n=0;n<520;n++){var u=R()*2-1,h=Math.pow(1-u*u,.8)*230,x=200+u*135,y=360-R()*h;if(R()<.07){x=70+R()*260;y=362+R()*24;}c.save();c.translate(x,y);c.rotate(R()*6.28);c.fillStyle=cols[(R()*4)|0];c.beginPath();c.moveTo(-6,5);c.lineTo(-1,-7);c.lineTo(7,4);c.closePath();c.fill();c.restore();}\n      c.fillStyle='#6a6676';for(var m=0;m<40;m++){c.beginPath();c.arc(120+R()*160,220+R()*120,1.6,0,6.283);c.fill();}\n    },\n    function oil(c){drop(c,200,40,330,92,'#f2c25e','#c98a22','#8a5410','rgba(255,240,205,.95)');ripple(c,200,372,'#c98a22');}\n  ];\n  SHAPES.henne=[\n    function shrub(c){ \/\/ multi-stem henna bush with cream flower clusters\n      c.strokeStyle='#6a4a2b';c.lineCap='round';[[200,392,200,250,9],[200,320,140,220,6],[200,300,262,214,6],[200,270,176,176,5],[200,262,236,170,5]].forEach(function(b){c.lineWidth=b[4];c.beginPath();c.moveTo(b[0],b[1]);c.quadraticCurveTo((b[0]+b[2])\/2+8,(b[1]+b[3])\/2,b[2],b[3]);c.stroke();});\n      var R=rng(9),g=['#4c6a26','#5f7f2e','#78963a','#8aa84a'];\n      for(var n=0;n<260;n++){var a=R()*6.283,r=Math.sqrt(R()),x=200+Math.cos(a)*r*150,y=180+Math.sin(a)*r*92;leaf(c,x,y,22,7,R()*6.28,g[(R()*4)|0]);}\n      c.fillStyle='#f3e6c8';[[130,140],[262,128],[200,104],[300,190],[100,196],[226,170]].forEach(function(p){for(var k=0;k<7;k++){c.beginPath();c.arc(p[0]+Math.cos(k)*9,p[1]+Math.sin(k*1.7)*7,4.5,0,6.283);c.fill();}});\n    },\n    function leaves(c){ \/\/ branch with opposite elliptic leaves\n      c.strokeStyle='#6a4a2b';c.lineWidth=6;c.lineCap='round';c.beginPath();c.moveTo(110,370);c.bezierCurveTo(170,290,220,170,290,40);c.stroke();\n      var g=['#4f6e28','#6b8a33','#86a442'];for(var i=0;i<8;i++){var t=i\/8,x=110+t*(180),y=370-t*330,s=1-t*.35;leaf(c,x,y,74*s,22*s,-1.07-.95,g[i%3]);leaf(c,x,y,74*s,22*s,-1.07+.95,g[(i+1)%3]);}\n      leaf(c,290,40,50,16,-1.1,'#86a442');\n    },\n    function powder(c){ \/\/ terracotta bowl with a mound of green henna powder\n      c.fillStyle='#7d8a3c';c.beginPath();c.moveTo(70,220);c.bezierCurveTo(110,120,290,120,330,220);c.closePath();c.fill();\n      var R=rng(3);c.fillStyle='#93a04c';for(var n=0;n<300;n++){var a=R()*3.14,r=R();c.beginPath();c.arc(200-Math.cos(a)*r*120,212-Math.sin(a)*r*76,2.2,0,6.283);c.fill();}\n      var g=c.createLinearGradient(0,220,0,350);g.addColorStop(0,'#c46a3a');g.addColorStop(1,'#8a3f1d');c.fillStyle=g;c.beginPath();c.moveTo(56,214);c.lineTo(344,214);c.bezierCurveTo(338,300,280,350,200,350);c.bezierCurveTo(120,350,62,300,56,214);c.fill();\n      c.fillStyle='#e0956a';c.fillRect(56,212,288,8);\n      c.fillStyle='#7d8a3c';for(var m=0;m<90;m++){c.beginPath();c.arc(90+R()*230,362+R()*22,2.2,0,6.283);c.fill();}\n    },\n    function hand(c){ \/\/ open hand with a festive henna motif\n      var sk='#e5b48a';rr(c,128,188,148,170,46,sk);[[132,72,34,150],[172,44,36,170],[214,52,36,160],[254,86,32,130]].forEach(function(f){rr(c,f[0],f[1],f[2],f[3],17,sk);});\n      c.save();c.translate(132,292);c.rotate(-.75);rr(c,-18,-96,36,110,17,sk);c.restore();rr(c,150,330,104,70,20,sk);\n      var hn='#8a3517';c.strokeStyle=hn;c.fillStyle=hn;c.lineCap='round';\n      for(var p=0;p<8;p++){c.save();c.translate(202,264);c.rotate(p*.785);c.beginPath();c.ellipse(0,-34,11,22,0,0,6.283);c.fill();c.restore();}\n      c.fillStyle=sk;c.beginPath();c.arc(202,264,20,0,6.283);c.fill();c.fillStyle=hn;c.beginPath();c.arc(202,264,11,0,6.283);c.fill();\n      c.lineWidth=7;c.beginPath();c.arc(202,264,72,Math.PI*1.1,Math.PI*1.9);c.stroke();\n      [[149,72],[190,44],[232,52],[270,86]].forEach(function(f){c.beginPath();c.roundRect(f[0]-17,f[1],34,34,[17,17,4,4]);c.fill();c.lineWidth=6;c.beginPath();c.moveTo(f[0],f[1]+48);c.lineTo(f[0],f[1]+112);c.stroke();for(var d=0;d<3;d++){c.beginPath();c.ellipse(f[0]+(d%2?9:-9),f[1]+58+d*20,6,9,d%2?.6:-.6,0,6.283);c.fill();}});\n      c.lineWidth=7;c.beginPath();for(var w=0;w<5;w++){c.moveTo(160+w*21+8,362);c.arc(160+w*21,362,8,0,Math.PI,true);}c.stroke();\n      c.beginPath();c.moveTo(150,384);c.lineTo(254,384);c.stroke();\n    }\n  ];\n  SHAPES.alun=[\n    function ore(c){ \/\/ rough grey rock bristling with pale octahedral crystal points\n      poly(c,[[50,330],[90,250],[160,226],[250,232],[330,262],[360,330],[300,372],[110,374]],'#8d8ba0');poly(c,[[90,250],[160,226],[200,300],[110,330]],'#a3a1b6');poly(c,[[250,232],[330,262],[300,330],[220,300]],'#77758c');\n      [[140,240,40,96,-.25],[200,236,52,136,0],[262,244,40,104,.3],[100,270,28,64,-.6],[312,272,26,60,.6]].forEach(function(k){c.save();c.translate(k[0],k[1]);c.rotate(k[4]);var w=k[2],h=k[3];poly(c,[[0,-h],[-w,0],[0,w*.3]],'#cfcce6');poly(c,[[0,-h],[w,0],[0,w*.3]],'#9f9cc9');c.strokeStyle='#6c69a0';c.lineWidth=3;c.beginPath();c.moveTo(0,-h);c.lineTo(0,w*.3);c.stroke();c.restore();});\n    },\n    function crystal(c){ \/\/ perfect octahedron, the natural habit of potassium alum\n      var T=[200,30],B=[200,370],L=[52,214],Rr=[348,186],F=[222,236],K=[178,166];\n      poly(c,[T,L,K],'#b9b6db');poly(c,[T,K,Rr],'#a09dcc');poly(c,[B,K,L],'#8f8cbf');poly(c,[B,Rr,K],'#7a77ad');\n      poly(c,[T,L,F],'#dcdaf0');poly(c,[T,F,Rr],'#b3b0d8');poly(c,[B,L,F],'#a7a4d2');poly(c,[B,F,Rr],'#8582b8');\n      c.strokeStyle='#5d5a92';c.lineWidth=3;[[T,F],[B,F],[L,F],[Rr,F],[T,L],[T,Rr],[B,L],[B,Rr]].forEach(function(e){c.beginPath();c.moveTo(e[0][0],e[0][1]);c.lineTo(e[1][0],e[1][1]);c.stroke();});\n    },\n    function stone(c){ \/\/ cut and polished alum stone: rounded block seen in 3\/4, flat polished top\n      var g=c.createLinearGradient(80,0,320,0);g.addColorStop(0,'#a9a6d2');g.addColorStop(.35,'#dcdaf0');g.addColorStop(1,'#7f7cb2');c.fillStyle=g;\n      c.beginPath();c.moveTo(84,150);c.lineTo(84,300);c.bezierCurveTo(84,350,316,350,316,300);c.lineTo(316,150);c.closePath();c.fill();\n      c.fillStyle='#ebeaf7';c.beginPath();c.ellipse(200,150,116,46,0,0,6.283);c.fill();\n      c.strokeStyle='#7f7cb2';c.lineWidth=4;c.beginPath();c.ellipse(200,150,116,46,0,0,6.283);c.stroke();\n      c.fillStyle='#fff';c.beginPath();c.ellipse(160,140,40,10,-.15,0,6.283);c.fill();c.fillRect(112,190,14,110);\n      c.strokeStyle='#9895c6';c.lineWidth=3;c.beginPath();c.moveTo(150,220);c.quadraticCurveTo(200,236,262,212);c.moveTo(170,270);c.quadraticCurveTo(220,282,280,262);c.stroke();\n    },\n    function stick(c){ \/\/ moistened alum stick in its holder, with a water drop\n      rr(c,148,226,104,150,16,'#7d7fa6');rr(c,140,214,120,26,8,'#666893');\n      var g=c.createLinearGradient(152,0,248,0);g.addColorStop(0,'#c9c7e2');g.addColorStop(.45,'#f3f2fa');g.addColorStop(1,'#a9a7cf');c.fillStyle=g;c.beginPath();c.moveTo(156,216);c.lineTo(156,130);c.bezierCurveTo(156,96,244,96,244,130);c.lineTo(244,216);c.fill();\n      c.fillStyle='rgba(255,255,255,.95)';c.fillRect(174,120,10,90);\n      drop(c,200,8,92,30,'#e2ecf8','#a9c2e6','#7d9cd0','rgba(255,255,255,.95)');\n    }\n  ];\n  SHAPES.aker=[\n    function poppy(c){ \/\/ corn poppies in a spring field: hairy stems, four crinkled scarlet petals, black blotch and stamens, a drooping bud\n      var R=rng(41),g=['#5f8a3a','#4f7a30','#76a048','#3f6b2c'];\n      for(var n=0;n<120;n++){var x=24+R()*352,h=40+R()*70;c.strokeStyle=g[(R()*4)|0];c.lineWidth=3+R()*2;c.lineCap='round';c.beginPath();c.moveTo(x,380);c.quadraticCurveTo(x+(R()-.5)*30,380-h*.6,x+(R()-.5)*40,380-h);c.stroke();}\n      function stem(x0,x1,y1){c.strokeStyle='#5f8a3a';c.lineWidth=6;c.beginPath();c.moveTo(x0,380);c.bezierCurveTo(x0+6,320,x1-12,y1+60,x1,y1);c.stroke();}\n      function flower(x,y,s,rot){c.save();c.translate(x,y);c.rotate(rot);\n        var p=[['#a8141f',-.78],['#a8141f',2.36],['#d8232f',.78],['#d8232f',-2.36]];\n        p.forEach(function(q){c.fillStyle=q[0];c.beginPath();c.ellipse(Math.cos(q[1])*s*.42,Math.sin(q[1])*s*.42,s*.62,s*.54,q[1],0,6.283);c.fill();});\n        c.fillStyle='#ef4a4f';c.beginPath();c.ellipse(-s*.18,-s*.28,s*.3,s*.14,-.5,0,6.283);c.fill();\n        c.fillStyle='#1c1416';c.beginPath();c.arc(0,0,s*.24,0,6.283);c.fill();\n        c.strokeStyle='#2a1e22';c.lineWidth=2;for(var k=0;k<14;k++){var a=k*.449;c.beginPath();c.moveTo(Math.cos(a)*s*.14,Math.sin(a)*s*.14);c.lineTo(Math.cos(a)*s*.34,Math.sin(a)*s*.34);c.stroke();}\n        c.fillStyle='#7d8f4a';c.beginPath();c.arc(0,0,s*.11,0,6.283);c.fill();c.restore();}\n      stem(120,110,170);stem(214,236,108);stem(300,310,200);stem(64,58,250);\n      flower(110,160,70,.2);flower(236,100,82,-.3);flower(312,192,60,.5);flower(58,244,40,.1);\n      c.strokeStyle='#5f8a3a';c.lineWidth=5;c.beginPath();c.moveTo(170,380);c.bezierCurveTo(176,300,196,270,180,246);c.stroke();\n      almond(c,176,236,11,18,.6,'#6f9a42');c.fillStyle='#c41e2a';c.beginPath();c.ellipse(170,232,4,9,.6,0,6.283);c.fill();\n    },\n    function grenade(c){ \/\/ whole pomegranate with its crown, a halved fruit full of ruby arils, curled strips of drying rind\n      var g=c.createRadialGradient(140,150,20,160,180,120);g.addColorStop(0,'#e0604a');g.addColorStop(.6,'#b8322a');g.addColorStop(1,'#7a1a1c');c.fillStyle=g;\n      c.beginPath();c.arc(160,180,108,0,6.283);c.fill();\n      poly(c,[[138,80],[146,52],[156,74],[166,48],[174,74],[186,54],[184,84]],'#8a2a22');\n      c.fillStyle='rgba(255,220,200,.75)';c.beginPath();c.ellipse(118,140,26,12,-.6,0,6.283);c.fill();\n      c.save();c.translate(282,270);\n      c.fillStyle='#9a2a24';c.beginPath();c.ellipse(0,0,92,80,0,0,6.283);c.fill();\n      c.fillStyle='#f3dcc0';c.beginPath();c.ellipse(0,-4,80,68,0,0,6.283);c.fill();\n      var R=rng(9),ar=['#c41e3a','#e0344f','#a01430','#f0607a'];\n      for(var n=0;n<150;n++){var a=R()*6.283,r=Math.sqrt(R());var x=Math.cos(a)*r*70,y=Math.sin(a)*r*58-4;if(Math.abs(x)<5||Math.abs(y+4)<4)continue;c.fillStyle=ar[(R()*4)|0];c.beginPath();c.ellipse(x,y,5.5,7,a,0,6.283);c.fill();}\n      c.strokeStyle='#f3dcc0';c.lineWidth=5;c.beginPath();c.moveTo(-78,-4);c.lineTo(78,-4);c.moveTo(0,-70);c.lineTo(0,62);c.stroke();\n      c.restore();\n      function strip(x,y,rot,col){c.save();c.translate(x,y);c.rotate(rot);c.fillStyle=col;c.beginPath();c.moveTo(-34,-6);c.quadraticCurveTo(0,-20,34,-6);c.lineTo(34,6);c.quadraticCurveTo(0,-6,-34,6);c.closePath();c.fill();c.restore();}\n      strip(70,330,.2,'#8a2a22');strip(130,356,-.3,'#a8452e');strip(60,372,.05,'#c2603a');strip(150,320,.6,'#7a1f1c');\n    },\n    function zlafa(c){ \/\/ small unglazed terracotta bowl coated inside with red aker fassi, a moistened fingertip, a heap of crimson powder\n      c.fillStyle='rgba(120,70,50,.25)';c.beginPath();c.ellipse(190,350,150,24,0,0,6.283);c.fill();\n      var g=c.createLinearGradient(50,0,330,0);g.addColorStop(0,'#9a4e2c');g.addColorStop(.45,'#d98a5a');g.addColorStop(1,'#8a4424');c.fillStyle=g;\n      c.beginPath();c.moveTo(48,226);c.lineTo(332,226);c.bezierCurveTo(324,300,262,346,190,346);c.bezierCurveTo(118,346,56,300,48,226);c.fill();\n      c.fillStyle='#e7a073';c.beginPath();c.ellipse(190,226,144,40,0,0,6.283);c.fill();\n      var r=c.createRadialGradient(170,226,10,190,232,130);r.addColorStop(0,'#e0303c');r.addColorStop(.7,'#b01e2a');r.addColorStop(1,'#7e1420');c.fillStyle=r;\n      c.beginPath();c.ellipse(190,230,128,32,0,0,6.283);c.fill();\n      c.fillStyle='rgba(255,170,160,.85)';c.beginPath();c.ellipse(152,224,34,6,-.05,0,6.283);c.fill();\n      c.strokeStyle='#b8693f';c.lineWidth=3;c.beginPath();c.moveTo(70,262);c.bezierCurveTo(130,292,250,292,310,262);c.stroke();\n      var R=rng(13);for(var n=0;n<160;n++){var u=R()*2-1,h=Math.pow(1-u*u,1.5)*36,x=330+u*44,y=360-R()*h;c.fillStyle=['#c41e2a','#9a1622','#e04450'][(R()*3)|0];c.beginPath();c.arc(x,y,2.2,0,6.283);c.fill();}\n      c.save();c.translate(250,150);c.rotate(.5);\n      rr(c,-30,-140,60,160,30,'#e9b896');c.fillStyle='#f4d0b4';c.beginPath();c.ellipse(-10,-70,9,50,0,0,6.283);c.fill();\n      c.strokeStyle='#c98f6c';c.lineWidth=3;[-104,-96,-54].forEach(function(y){c.beginPath();c.moveTo(-18,y);c.quadraticCurveTo(0,y+5,18,y);c.stroke();});\n      rr(c,-17,-26,34,36,14,'#f7dccb');c.fillStyle='rgba(255,255,255,.7)';c.beginPath();c.ellipse(-6,-12,4,10,0,0,6.283);c.fill();\n      c.fillStyle='#c41e2a';c.beginPath();c.ellipse(0,16,24,9,0,0,6.283);c.fill();c.restore();\n    },\n    function lips(c){ \/\/ the result: full lips tinted poppy red with a gloss highlight, a soft blush swatch and scattered petals\n      var g=c.createLinearGradient(0,150,0,290);g.addColorStop(0,'#d8232f');g.addColorStop(1,'#9a1622');c.fillStyle=g;\n      c.beginPath();c.moveTo(50,214);c.bezierCurveTo(90,170,140,140,176,164);c.bezierCurveTo(188,172,194,176,200,176);c.bezierCurveTo(206,176,212,172,224,164);c.bezierCurveTo(260,140,310,170,350,214);\n      c.bezierCurveTo(300,212,240,206,200,214);c.bezierCurveTo(160,206,100,212,50,214);c.closePath();c.fill();\n      c.fillStyle='#b81c28';c.beginPath();c.moveTo(50,218);c.bezierCurveTo(100,220,160,214,200,222);c.bezierCurveTo(240,214,300,220,350,218);c.bezierCurveTo(310,284,250,300,200,300);c.bezierCurveTo(150,300,90,284,50,218);c.closePath();c.fill();\n      c.strokeStyle='#6e0e18';c.lineWidth=9;c.beginPath();c.moveTo(56,216);c.bezierCurveTo(110,214,160,210,200,218);c.bezierCurveTo(240,210,290,214,344,216);c.stroke();\n      c.fillStyle='rgba(255,200,200,.9)';c.beginPath();c.ellipse(170,256,40,10,-.08,0,6.283);c.fill();c.beginPath();c.ellipse(244,190,20,6,-.3,0,6.283);c.fill();\n      var b=c.createRadialGradient(200,80,6,200,80,70);b.addColorStop(0,'rgba(232,96,106,.95)');b.addColorStop(1,'rgba(232,96,106,0)');c.fillStyle=b;c.beginPath();c.arc(200,80,70,0,6.283);c.fill();\n      almond(c,70,330,12,22,1.1,'#c41e2a');almond(c,320,340,11,20,-1,'#e04450');almond(c,200,352,10,18,.2,'#a8141f');\n    }\n  ];\n  SHAPES.cedre=[\n    function forest(c){ \/\/ Middle Atlas cedar forest: snow-capped ridges, stands of flat-tiered Atlas cedars on the slope\n      poly(c,[[20,230],[90,120],[140,170],[210,80],[280,160],[330,110],[380,190],[380,250],[20,250]],'#8fa3b4');\n      poly(c,[[90,120],[110,150],[98,146],[84,156],[74,146]],'#f4f8fb');poly(c,[[210,80],[236,118],[220,112],[204,124],[190,108]],'#f4f8fb');poly(c,[[330,110],[350,140],[334,134],[320,142]],'#f4f8fb');\n      c.fillStyle='#6f8a5a';c.beginPath();c.moveTo(20,250);c.bezierCurveTo(120,226,260,232,380,244);c.lineTo(380,380);c.lineTo(20,380);c.closePath();c.fill();\n      c.fillStyle='#5b7548';c.beginPath();c.moveTo(20,320);c.bezierCurveTo(140,300,260,310,380,300);c.lineTo(380,380);c.lineTo(20,380);c.closePath();c.fill();\n      function cedar(x,base,s){var R=rng((x*7+base)|0);c.fillStyle='#5a3d28';c.fillRect(x-4*s,base-60*s,8*s,60*s);\n        var w=[1,.92,.78,.6,.4],cols=['#2f5a52','#3d6b63','#2f5a52','#4a7a70','#3d6b63'];\n        for(var k=0;k<5;k++){var y=base-40*s-k*22*s,hw=58*s*w[k];c.fillStyle='#24463f';c.beginPath();c.ellipse(x,y+4*s,hw,8*s,0,0,6.283);c.fill();\n          c.fillStyle=cols[k];for(var j=0;j<6;j++){var bx=x-hw+(j+.5)*hw*2\/6;c.beginPath();c.ellipse(bx,y-R()*4*s,hw\/3.2,7*s,0,0,6.283);c.fill();}}}\n      [[70,300,.8],[160,290,1],[260,296,.9],[330,302,.7],[115,372,1.1],[225,376,1.2],[318,372,.95]].forEach(function(t){cedar(t[0],t[1],t[2]);});\n    },\n    function tree(c){ \/\/ one majestic Atlas cedar: thick trunk, horizontal branches, flat glaucous tiers, upright barrel cones\n      c.fillStyle='#5a3d28';c.beginPath();c.moveTo(184,380);c.bezierCurveTo(190,300,192,200,196,96);c.lineTo(206,96);c.bezierCurveTo(210,200,212,300,220,380);c.closePath();c.fill();\n      c.fillStyle='#7a5638';c.fillRect(196,150,6,220);\n      c.strokeStyle='#5a3d28';c.lineCap='round';[[200,300,60,286,9],[200,300,340,282,9],[200,246,82,232,7],[200,246,320,228,7],[200,192,110,180,6],[200,192,292,176,6],[200,142,140,130,5],[200,142,262,128,5]].forEach(function(b){c.lineWidth=b[4];c.beginPath();c.moveTo(b[0],b[1]);c.quadraticCurveTo((b[0]+b[2])\/2,b[1]-10,b[2],b[3]);c.stroke();});\n      var R=rng(53),tiers=[[200,290,160],[200,236,136],[200,182,110],[200,130,84],[200,86,52]],g=['#2f5a52','#3d6b63','#5b8a80','#7fa9a0'];\n      tiers.forEach(function(t){var cx=t[0],y=t[1],hw=t[2];c.fillStyle='#24463f';c.beginPath();c.ellipse(cx,y+8,hw,13,0,0,6.283);c.fill();\n        for(var n=0;n<70;n++){var u=R()*2-1,x=cx+u*hw*.96,yy=y-R()*14*(1-Math.abs(u)*.5);c.fillStyle=g[(R()*4)|0];c.beginPath();c.ellipse(x,yy,9+R()*8,5+R()*3,0,0,6.283);c.fill();}});\n      [[150,262],[262,208],[168,158],[230,112],[118,214]].forEach(function(p){var gr=c.createLinearGradient(p[0]-8,0,p[0]+8,0);gr.addColorStop(0,'#8a6236');gr.addColorStop(.5,'#c79a5c');gr.addColorStop(1,'#7a5430');c.fillStyle=gr;c.beginPath();c.ellipse(p[0],p[1]-14,9,15,0,0,6.283);c.fill();c.fillStyle='#6b4a2a';c.beginPath();c.ellipse(p[0],p[1]-28,5,3,0,0,6.283);c.fill();});\n    },\n    function wood(c){ \/\/ cedar log cut across: bark, sapwood, reddish heartwood and growth rings; curled shavings and a heap of sawdust\n      rr(c,150,96,210,128,20,'#6e4a30');c.fillStyle='#8a5e3c';for(var k=0;k<6;k++){c.fillRect(170+k*32,100,6,120);}\n      c.fillStyle='#5a3a24';c.beginPath();c.ellipse(150,160,72,66,0,0,6.283);c.fill();\n      c.fillStyle='#e2b47a';c.beginPath();c.ellipse(150,160,62,57,0,0,6.283);c.fill();\n      c.fillStyle='#c27a44';c.beginPath();c.ellipse(152,162,46,42,0,0,6.283);c.fill();\n      c.strokeStyle='#9a5a30';c.lineWidth=2.4;[38,30,22,14,7].forEach(function(r){c.beginPath();c.ellipse(153,163,r*1.08,r,0,0,6.283);c.stroke();});\n      c.strokeStyle='#8a4e28';c.lineWidth=2;c.beginPath();c.moveTo(153,163);c.lineTo(196,140);c.stroke();\n      var R=rng(61),cols=['#e8c08a','#d6a467','#c08a4e','#f0d3a2'];\n      c.fillStyle='#d6a467';c.beginPath();c.moveTo(150,374);c.bezierCurveTo(200,370,230,262,270,258);c.bezierCurveTo(310,262,336,366,376,374);c.closePath();c.fill();\n      for(var n=0;n<300;n++){var u=R()*2-1,h=Math.pow(1-u*u,1.3)*112,x=266+u*106,y=374-R()*h;c.fillStyle=cols[(R()*4)|0];c.beginPath();c.arc(x,y,1.6+R()*1.6,0,6.283);c.fill();}\n      c.lineCap='round';[[70,300,26,'#e2b47a'],[112,338,22,'#d6a467'],[60,352,18,'#f0d3a2'],[150,300,16,'#c08a4e']].forEach(function(s){c.strokeStyle=s[3];c.lineWidth=9;c.beginPath();c.arc(s[0],s[1],s[2],.3,4.6);c.stroke();c.lineWidth=5;c.beginPath();c.arc(s[0]+3,s[1]+2,s[2]*.5,.6,4.2);c.stroke();});\n    },\n    function oil(c){ \/\/ amber drop of cedarwood oil, a sprig of blue-green needle tufts and a cone beside its ripple\n      drop(c,200,40,320,92,'#f6dca0','#d9a14a','#9a5f22','rgba(255,246,220,.95)');\n      ripple(c,200,368,'#d9a14a');\n      function tuft(x,y,r,col){c.strokeStyle=col;c.lineWidth=3;c.lineCap='round';for(var i=0;i<16;i++){var a=-Math.PI*.95+i*Math.PI*.9\/15;c.beginPath();c.moveTo(x,y);c.lineTo(x+Math.cos(a)*r,y+Math.sin(a)*r);c.stroke();}}\n      c.strokeStyle='#6b4a2a';c.lineWidth=5;c.beginPath();c.moveTo(40,360);c.quadraticCurveTo(80,330,124,318);c.stroke();\n      tuft(66,346,24,'#3d6b63');tuft(96,330,22,'#5b8a80');tuft(124,318,20,'#3d6b63');\n      var gr=c.createLinearGradient(310,0,342,0);gr.addColorStop(0,'#8a6236');gr.addColorStop(.5,'#c79a5c');gr.addColorStop(1,'#7a5430');c.fillStyle=gr;c.beginPath();c.ellipse(326,334,15,24,0,0,6.283);c.fill();\n      c.strokeStyle='#6b4a2a';c.lineWidth=2;for(var k=0;k<4;k++){c.beginPath();c.moveTo(312,320+k*9);c.lineTo(340,320+k*9);c.stroke();}\n    }\n  ];\n  SHAPES.figue=[\n    function cactus(c){ \/\/ Opuntia ficus-indica: stacked oval pads (raquettes) with areoles, crowned with ripe figs\n      function pad(x,y,rx,ry,a,c1,c2){c.save();c.translate(x,y);c.rotate(a);var g=c.createLinearGradient(-rx,-ry,rx,ry);g.addColorStop(0,c1);g.addColorStop(1,c2);c.fillStyle=g;c.beginPath();c.ellipse(0,0,rx,ry,0,0,6.283);c.fill();\n        c.fillStyle='#e6edc4';for(var i=-2;i<=2;i++)for(var j=-3;j<=3;j++){if((i+j)%2)continue;var px=i*rx*.32,py=j*ry*.24;if(px*px\/(rx*rx)+py*py\/(ry*ry)<.72){c.beginPath();c.arc(px,py,3.2,0,6.283);c.fill();}}c.restore();}\n      function fig(x,y,a,col){c.save();c.translate(x,y);c.rotate(a);c.fillStyle=col;c.beginPath();c.ellipse(0,0,13,19,0,0,6.283);c.fill();c.fillStyle='#5a3a1e';c.beginPath();c.ellipse(0,-17,7,3,0,0,6.283);c.fill();c.fillStyle='rgba(255,220,200,.9)';c.beginPath();c.arc(-4,-4,3,0,6.283);c.fill();c.restore();}\n      pad(200,316,54,60,0,'#5f8a3a','#3f6a2a');\n      pad(138,236,46,60,-.45,'#6f9a44','#4a742e');pad(266,230,46,60,.4,'#6a9440','#456e2c');\n      pad(98,146,38,50,-.7,'#7aa64c','#507a32');pad(196,150,40,54,-.05,'#76a24a','#4d7830');pad(302,140,38,50,.6,'#7aa64c','#507a32');\n      [[70,96,-.9,'#c2185b'],[96,90,-.5,'#e0566e'],[178,94,-.2,'#d83a5e'],[208,92,.1,'#f08a3c'],[230,100,.35,'#c2185b'],[318,90,.6,'#e0566e'],[340,104,.9,'#f08a3c']].forEach(function(f){fig(f[0],f[1],f[2],f[3]);});\n    },\n    function fruit(c){ \/\/ a whole prickly pear and a halved one: magenta pulp full of seeds\n      c.save();c.translate(122,196);c.rotate(-.32);var g=c.createLinearGradient(-70,-100,70,100);g.addColorStop(0,'#f29a4a');g.addColorStop(.55,'#e0566e');g.addColorStop(1,'#a3174f');c.fillStyle=g;\n      c.beginPath();c.ellipse(0,0,66,96,0,0,6.283);c.fill();c.fillStyle='#6b4a2a';c.beginPath();c.ellipse(0,-92,20,8,0,0,6.283);c.fill();\n      c.fillStyle='#f7dcae';for(var i=0;i<14;i++){var a=i*2.4,r=.25+(i%4)*.18;c.beginPath();c.arc(Math.cos(a)*44*r*1.6,Math.sin(a)*70*r*1.4,3,0,6.283);c.fill();}c.restore();\n      c.save();c.translate(256,232);c.rotate(.12);\n      c.fillStyle='#e8743a';c.beginPath();c.ellipse(0,0,104,132,0,0,6.283);c.fill();\n      c.fillStyle='#8aa64a';c.beginPath();c.ellipse(0,0,94,122,0,0,6.283);c.fill();\n      var f=c.createRadialGradient(-20,-30,10,0,0,120);f.addColorStop(0,'#f0558c');f.addColorStop(.6,'#c2185b');f.addColorStop(1,'#8e1146');c.fillStyle=f;c.beginPath();c.ellipse(0,0,86,114,0,0,6.283);c.fill();\n      var R=rng(21);c.fillStyle='#3b2418';for(var n=0;n<70;n++){var t=R()*6.283,q=Math.sqrt(R());c.save();c.translate(Math.cos(t)*q*58,Math.sin(t)*q*80);c.rotate(R()*6.28);c.beginPath();c.ellipse(0,0,5,3.4,0,0,6.283);c.fill();c.restore();}\n      c.fillStyle='rgba(255,210,226,.9)';c.beginPath();c.ellipse(-46,-60,12,24,-.4,0,6.283);c.fill();c.restore();\n    },\n    function seeds(c){ \/\/ heap of hard, flat, light-brown prickly pear seeds\n      var R=rng(13),cols=['#d8b884','#c9a06a','#b08450','#8e6a3e'];\n      for(var n=0;n<460;n++){var u=R()*2-1,h=Math.pow(1-u*u,.8)*230,x=200+u*140,y=360-R()*h;if(R()<.06){x=70+R()*260;y=362+R()*16;}\n        c.save();c.translate(x,y);c.rotate(R()*6.28);c.fillStyle=cols[(R()*4)|0];c.beginPath();c.ellipse(0,0,7.5,5.5,0,0,6.283);c.fill();c.fillStyle='#6e4f2c';c.beginPath();c.arc(5,0,1.6,0,6.283);c.fill();c.restore();}\n      c.fillStyle='#f0dcb4';for(var m=0;m<36;m++){c.beginPath();c.ellipse(120+R()*160,220+R()*120,2.4,1.4,R()*3,0,6.283);c.fill();}\n    },\n    function oil(c){drop(c,200,40,330,92,'#f4dc7a','#cdb23a','#8a7a1e','rgba(255,248,214,.95)');ripple(c,200,372,'#cdb23a');}\n  ];\n  SHAPES.ghassoul=[\n    function atlas(c){ \/\/ Middle Atlas: stratified clay mountains cut by the Moulouya gorge, warm sun\n      c.fillStyle='#f0c27a';c.beginPath();c.arc(318,86,30,0,6.283);c.fill();\n      poly(c,[[20,250],[80,150],[130,190],[190,110],[250,170],[300,130],[380,220],[380,260],[20,260]],'#c9ad98');\n      c.save();c.beginPath();c.moveTo(20,370);c.lineTo(20,270);c.lineTo(90,190);c.lineTo(150,240);c.lineTo(178,214);c.lineTo(200,300);c.lineTo(222,214);c.lineTo(260,180);c.lineTo(320,230);c.lineTo(380,200);c.lineTo(380,370);c.closePath();c.clip();\n      var band=['#a8735a','#8a5a44','#c08f70','#6f4a3a','#b07e62','#7d5240','#c79a7c'];\n      for(var i=0;i<12;i++){c.fillStyle=band[i%band.length];c.beginPath();c.moveTo(20,180+i*17);c.bezierCurveTo(120,170+i*17,260,196+i*17,380,182+i*17);c.lineTo(380,204+i*17);c.bezierCurveTo(260,218+i*17,120,192+i*17,20,202+i*17);c.closePath();c.fill();}\n      c.restore();\n      c.fillStyle='#5f8fbf';c.beginPath();c.moveTo(196,300);c.lineTo(204,300);c.bezierCurveTo(214,330,250,350,262,372);c.lineTo(138,372);c.bezierCurveTo(150,350,186,330,196,300);c.fill();\n      c.fillStyle='#9cc3e4';c.beginPath();c.moveTo(199,312);c.bezierCurveTo(206,336,226,352,232,368);c.lineTo(212,368);c.bezierCurveTo(206,350,200,334,199,312);c.fill();\n    },\n    function slabs(c){ \/\/ raw ghassoul: stacked flat laminated brown clay plates\n      function slab(x,y,w,h,d,sk,top,side,line){c.save();c.translate(x,y);c.rotate(sk);\n        poly(c,[[0,0],[w,0],[w+d,-d*.6],[d,-d*.6]],top);poly(c,[[0,0],[w,0],[w,h],[0,h]],side);poly(c,[[w,0],[w+d,-d*.6],[w+d,h-d*.6],[w,h]],line);\n        c.strokeStyle='rgba(70,46,34,.55)';c.lineWidth=2;for(var k=1;k<4;k++){c.beginPath();c.moveTo(2,h*k\/4);c.lineTo(w-2,h*k\/4+(k%2?2:-2));c.stroke();}\n        c.restore();}\n      slab(60,300,230,48,40,.02,'#b48a70','#8a6250','#6e4c3c');\n      slab(90,248,190,44,36,-.06,'#c09a80','#946a56','#734f3f');\n      slab(120,196,150,40,32,.08,'#ab8068','#82594a','#664535');\n      slab(150,148,100,34,26,-.1,'#c7a288','#9a705b','#7a5442');\n      var R=rng(4);c.fillStyle='#8a6250';for(var n=0;n<14;n++){c.save();c.translate(60+R()*290,362+R()*14);c.rotate(R()*.8-.4);c.beginPath();c.moveTo(-9,0);c.lineTo(-3,-5);c.lineTo(8,-3);c.lineTo(10,2);c.lineTo(-2,5);c.closePath();c.fill();c.restore();}\n    },\n    function powder(c){ \/\/ heap of fine taupe ghassoul powder with a wooden scoop\n      var g=c.createLinearGradient(0,120,0,370);g.addColorStop(0,'#c49c80');g.addColorStop(1,'#8e6650');c.fillStyle=g;\n      c.beginPath();c.moveTo(40,370);c.bezierCurveTo(110,360,150,140,210,130);c.bezierCurveTo(260,140,300,350,360,370);c.closePath();c.fill();\n      var R=rng(7),cols=['#d6b398','#a37b63','#7e5b48','#b8907a'];for(var n=0;n<420;n++){var u=R()*2-1,h=Math.pow(1-u*u,1.4)*230,x=205+u*150,y=370-R()*h;c.fillStyle=cols[(R()*4)|0];c.beginPath();c.arc(x,y,1.8+R()*1.4,0,6.283);c.fill();}\n      c.save();c.translate(300,150);c.rotate(.55);rr(c,-10,-110,20,120,8,'#c8a070');c.fillStyle='#b48a5c';c.beginPath();c.ellipse(0,30,40,28,0,0,6.283);c.fill();c.fillStyle='#b8907a';c.beginPath();c.ellipse(0,24,32,18,0,0,6.283);c.fill();c.restore();\n    },\n    function tassa(c){ \/\/ engraved brass hammam bowl full of silky paste, wooden spatula lifting a ribbon\n      var g=c.createLinearGradient(50,0,350,0);g.addColorStop(0,'#a87422');g.addColorStop(.4,'#efc66a');g.addColorStop(1,'#9a661c');c.fillStyle=g;\n      c.beginPath();c.moveTo(46,220);c.lineTo(354,220);c.bezierCurveTo(346,310,280,356,200,356);c.bezierCurveTo(120,356,54,310,46,220);c.fill();\n      rr(c,150,350,100,22,8,'#a87422');\n      c.fillStyle='#7d5418';for(var i=0;i<14;i++){var a=Math.PI*(.08+i*.06),x=200-Math.cos(a)*130,y=262+Math.sin(a)*52;c.beginPath();c.arc(x,y,4.5,0,6.283);c.fill();}\n      c.strokeStyle='#7d5418';c.lineWidth=3;c.beginPath();c.moveTo(70,250);c.bezierCurveTo(130,282,270,282,330,250);c.stroke();\n      c.fillStyle='#e9bd62';c.beginPath();c.ellipse(200,220,156,34,0,0,6.283);c.fill();\n      var p=c.createLinearGradient(0,196,0,244);p.addColorStop(0,'#a8735a');p.addColorStop(1,'#7d5240');c.fillStyle=p;c.beginPath();c.ellipse(200,222,140,26,0,0,6.283);c.fill();\n      c.fillStyle='rgba(240,214,190,.9)';c.beginPath();c.ellipse(150,214,44,7,-.05,0,6.283);c.fill();\n      c.fillStyle='#8a5c46';c.beginPath();c.moveTo(232,214);c.bezierCurveTo(236,180,252,150,250,128);c.lineTo(272,128);c.bezierCurveTo(272,156,256,184,252,214);c.closePath();c.fill();\n      c.save();c.translate(262,120);c.rotate(.42);rr(c,-6,-104,12,60,6,'#b08654');rr(c,-16,-50,32,62,10,'#c8a070');c.restore();\n      c.fillStyle='#8a5c46';c.beginPath();c.ellipse(258,130,22,12,.4,0,6.283);c.fill();\n    }\n  ];\n  SHAPES.nila=[\n    function plant(c){ \/\/ indigo plant (Indigofera): woody stems, pinnate leaves of small paired oval leaflets, pink-violet pea-flower spikes, slender pods\n      c.strokeStyle='#6b4f2e';c.lineCap='round';\n      [[200,384,200,96,8],[200,340,104,170,5],[200,320,300,160,5],[200,270,138,110,4],[200,262,268,104,4],[200,226,200,70,3]].forEach(function(b){c.lineWidth=b[4];c.beginPath();c.moveTo(b[0],b[1]);c.quadraticCurveTo((b[0]+b[2])\/2+8,(b[1]+b[3])\/2,b[2],b[3]);c.stroke();});\n      function pinnate(x,y,ang,n,col1,col2){c.save();c.translate(x,y);c.rotate(ang);c.strokeStyle='#4e6b2a';c.lineWidth=2.4;c.beginPath();c.moveTo(0,0);c.lineTo(n*15+10,0);c.stroke();\n        for(var i=0;i<n;i++){var px=12+i*15;c.fillStyle=i%2?col1:col2;c.beginPath();c.ellipse(px,-8,6,10,-.35,0,6.283);c.fill();c.beginPath();c.ellipse(px,8,6,10,.35,0,6.283);c.fill();}\n        c.fillStyle=col1;c.beginPath();c.ellipse(n*15+16,0,10,6,0,0,6.283);c.fill();c.restore();}\n      var R=rng(31),G=[['#4f8a34','#3d7029'],['#5f9a3e','#477d2f'],['#6aa548','#4f8a34']];\n      [[200,300,-2.6],[200,300,-.5],[160,236,-2.3],[240,230,-.8],[130,190,-2.9],[272,180,-.2],[200,190,-1.9],[200,180,-1.2],[118,148,-2.2],[284,140,-.9],[170,130,-2.6],[232,124,-.6],[200,120,-1.57]].forEach(function(p){var g=G[(R()*3)|0];pinnate(p[0],p[1],p[2]+(R()-.5)*.2,3+((R()*3)|0),g[0],g[1]);});\n      function spike(x,y,len,ang){c.save();c.translate(x,y);c.rotate(ang);c.strokeStyle='#7a5a3a';c.lineWidth=2;c.beginPath();c.moveTo(0,0);c.lineTo(0,-len);c.stroke();\n        for(var k=0;k<7;k++){var yy=-len+k*len\/7,s=5.5-k*.3,side=k%2?1:-1;c.fillStyle=k<3?'#c45a9a':'#d97fb5';c.beginPath();c.ellipse(side*5,yy,s,s*1.2,side*.4,0,6.283);c.fill();c.fillStyle='#8e3a7a';c.beginPath();c.arc(side*5,yy+2,2,0,6.283);c.fill();}\n        c.restore();}\n      spike(104,170,48,-.5);spike(300,160,46,.5);spike(200,74,44,0);spike(138,110,40,-.3);spike(268,104,40,.35);\n      c.strokeStyle='#8a6a3a';c.lineWidth=4;[[150,262,120,300],[256,250,290,286],[176,318,146,350]].forEach(function(p){c.beginPath();c.moveTo(p[0],p[1]);c.quadraticCurveTo(p[2]+12,(p[1]+p[3])\/2,p[2],p[3]);c.stroke();});\n    },\n    function vat(c){ \/\/ fermentation: terracotta vat of deep-blue indigo bath with coppery bloom (fleur\u00e9e), floating leaves, wooden stirring paddle\n      var g=c.createLinearGradient(60,0,340,0);g.addColorStop(0,'#9a4f2a');g.addColorStop(.45,'#d0784a');g.addColorStop(1,'#8a4424');c.fillStyle=g;\n      c.beginPath();c.moveTo(70,170);c.bezierCurveTo(40,250,70,350,140,372);c.lineTo(260,372);c.bezierCurveTo(330,350,360,250,330,170);c.closePath();c.fill();\n      c.strokeStyle='#7a3a1c';c.lineWidth=4;[230,290,340].forEach(function(y,i){c.beginPath();c.moveTo(62+i*8,y);c.bezierCurveTo(140,y+16,260,y+16,338-i*8,y);c.stroke();});\n      c.fillStyle='#b8643a';c.beginPath();c.ellipse(200,170,140,34,0,0,6.283);c.fill();\n      var b=c.createRadialGradient(180,166,10,200,170,130);b.addColorStop(0,'#2c4fb0');b.addColorStop(.6,'#1d3486');b.addColorStop(1,'#142463');c.fillStyle=b;c.beginPath();c.ellipse(200,172,124,26,0,0,6.283);c.fill();\n      var R=rng(12);for(var n=0;n<40;n++){var a=R()*6.283,r=Math.sqrt(R()),x=196+Math.cos(a)*r*60,y=170+Math.sin(a)*r*12;c.fillStyle=R()<.5?'#b07a4a':'#8a6a9e';c.beginPath();c.arc(x,y,3+R()*4,0,6.283);c.fill();}\n      c.fillStyle='rgba(205,150,90,.95)';c.beginPath();c.ellipse(196,170,34,7,0,0,6.283);c.fill();\n      leaf(c,110,176,30,8,-.2,'#3f7a2e');leaf(c,268,178,28,8,3.3,'#4f8a34');leaf(c,300,166,22,7,2.6,'#3f7a2e');\n      c.save();c.translate(256,150);c.rotate(.5);rr(c,-7,-138,14,138,6,'#c8a070');rr(c,-22,-6,44,40,10,'#b08654');c.restore();\n      c.fillStyle='#1d3486';c.beginPath();c.moveTo(322,40);c.bezierCurveTo(326,52,330,58,330,64);c.bezierCurveTo(330,72,314,72,314,64);c.bezierCurveTo(314,58,318,52,322,40);c.fill();\n    },\n    function nila(c){ \/\/ nila: rough indigo rock-like lumps beside a heap of fine deep-blue powder\n      var g=c.createLinearGradient(0,170,0,372);g.addColorStop(0,'#3d5fc8');g.addColorStop(1,'#1c2f80');c.fillStyle=g;\n      c.beginPath();c.moveTo(150,372);c.bezierCurveTo(200,362,236,190,284,178);c.bezierCurveTo(326,190,350,352,380,370);c.closePath();c.fill();\n      var R=rng(9),cols=['#5a7ad8','#2a44a8','#1a2a70','#3f5fc4','#7f98e6'];for(var n=0;n<300;n++){var u=R()*2-1,h=Math.pow(1-u*u,1.4)*186,x=272+u*104,y=370-R()*h;c.fillStyle=cols[(R()*5)|0];c.beginPath();c.arc(x,y,1.6+R()*1.6,0,6.283);c.fill();}\n      function lump(x,y,s,ang,top,side,dark){c.save();c.translate(x,y);c.rotate(ang);\n        poly(c,[[-s,-s*.2],[-s*.5,-s*.85],[s*.35,-s*.95],[s,-s*.3],[s*.8,s*.5],[-s*.2,s*.75],[-s*.9,s*.45]],side);\n        poly(c,[[-s*.5,-s*.85],[s*.35,-s*.95],[s,-s*.3],[s*.1,-s*.15],[-s,-s*.2]],top);\n        poly(c,[[s*.1,-s*.15],[s,-s*.3],[s*.8,s*.5],[-s*.2,s*.75]],dark);\n        c.fillStyle='rgba(170,190,245,.8)';c.beginPath();c.arc(-s*.2,-s*.55,s*.12,0,6.283);c.fill();c.restore();}\n      lump(96,300,56,.1,'#4b6cd0','#2b46a6','#1a2c74');\n      lump(170,236,40,-.3,'#5576d6','#3150b0','#1d3080');\n      lump(66,200,32,.4,'#4565cc','#2a43a2','#192a6e');\n      lump(190,330,30,.7,'#5070d2','#2e4aaa','#1b2e78');\n      lump(130,150,24,-.5,'#5a7ad8','#3554b4','#1f3384');\n      c.fillStyle='#2a44a8';for(var k=0;k<16;k++){c.beginPath();c.arc(40+R()*200,362+R()*12,2+R()*3,0,6.283);c.fill();}\n    },\n    function ritual(c){ \/\/ hammam ritual: terracotta bowl of amber savon noir marbled with blue nila, kessa glove beside\n      var g=c.createLinearGradient(40,0,300,0);g.addColorStop(0,'#a8522c');g.addColorStop(.45,'#d9804e');g.addColorStop(1,'#984624');c.fillStyle=g;\n      c.beginPath();c.moveTo(36,200);c.lineTo(300,200);c.bezierCurveTo(294,290,236,340,168,340);c.bezierCurveTo(100,340,42,290,36,200);c.fill();\n      rr(c,118,334,100,20,8,'#984624');\n      c.fillStyle='#f2e3c8';for(var i=0;i<9;i++){var x=62+i*27;poly(c,[[x,250],[x+9,240],[x+18,250],[x+9,260]],'#f2e3c8');}\n      c.fillStyle='#c46a3e';c.beginPath();c.ellipse(168,200,132,30,0,0,6.283);c.fill();\n      var s=c.createLinearGradient(0,180,0,226);s.addColorStop(0,'#7a4a18');s.addColorStop(1,'#4e2e0e');c.fillStyle=s;c.beginPath();c.ellipse(168,202,118,23,0,0,6.283);c.fill();\n      c.save();c.beginPath();c.ellipse(168,202,118,23,0,0,6.283);c.clip();\n      c.strokeStyle='#2c4fb8';c.lineWidth=14;c.lineCap='round';c.beginPath();c.moveTo(80,204);c.bezierCurveTo(120,186,150,224,190,200);c.bezierCurveTo(222,182,246,214,268,198);c.stroke();\n      c.strokeStyle='#5f80e0';c.lineWidth=6;c.beginPath();c.moveTo(104,212);c.bezierCurveTo(140,200,170,220,206,208);c.stroke();\n      c.fillStyle='#1f378e';c.beginPath();c.arc(150,196,8,0,6.283);c.fill();c.restore();\n      c.fillStyle='rgba(255,230,190,.6)';c.beginPath();c.ellipse(120,196,26,4,-.05,0,6.283);c.fill();\n      c.save();c.translate(312,250);c.rotate(-.35);rr(c,-38,-70,76,140,22,'#5a5a52');rr(c,-38,52,76,22,6,'#7a3a2a');\n      c.strokeStyle='#44443e';c.lineWidth=2;for(var r=-60;r<48;r+=9){c.beginPath();c.moveTo(-34,r);c.lineTo(34,r+4);c.stroke();}\n      rr(c,-46,-44,18,40,9,'#5a5a52');c.restore();\n    }\n  ];\n  SHAPES.oranger=[\n    function branch(c){ \/\/ bitter orange branch: glossy dark leaves, clusters of white blossoms, one bitter orange\n      function bl(x,y,r,a){c.save();c.translate(x,y);c.rotate(a);for(var i=0;i<5;i++){c.save();c.rotate(i*1.2566);var g=c.createLinearGradient(0,0,0,-r);g.addColorStop(0,'#e3cd9c');g.addColorStop(1,'#f6ead0');c.fillStyle=g;c.beginPath();c.moveTo(0,0);c.bezierCurveTo(r*.55,-r*.3,r*.45,-r,0,-r);c.bezierCurveTo(-r*.45,-r,-r*.55,-r*.3,0,0);c.fill();c.strokeStyle='#b89a62';c.lineWidth=1.6;c.stroke();c.restore();}c.fillStyle='#e9b92c';c.beginPath();c.arc(0,0,r*.28,0,6.283);c.fill();c.fillStyle='#8fae3c';c.beginPath();c.arc(0,0,r*.12,0,6.283);c.fill();c.restore();}\n      function bud(x,y,a){c.save();c.translate(x,y);c.rotate(a);c.fillStyle='#efdfbc';c.beginPath();c.ellipse(0,0,7,13,0,0,6.283);c.fill();c.strokeStyle='#b89a62';c.lineWidth=1.6;c.stroke();c.fillStyle='#6f8a3a';c.beginPath();c.arc(0,10,5,0,6.283);c.fill();c.restore();}\n      c.strokeStyle='#6a4a2b';c.lineCap='round';c.lineWidth=10;c.beginPath();c.moveTo(34,370);c.bezierCurveTo(120,300,220,190,360,60);c.stroke();\n      c.lineWidth=6;[[110,306,70,210],[190,232,250,300],[250,176,206,92],[300,118,350,170]].forEach(function(b){c.beginPath();c.moveTo(b[0],b[1]);c.quadraticCurveTo((b[0]+b[2])\/2+10,(b[1]+b[3])\/2-10,b[2],b[3]);c.stroke();});\n      var g=['#2f5a22','#3d6e2a','#4f8233'];\n      [[74,344,-.6],[96,318,-2.4],[150,272,-.4],[150,272,-2.7],[214,214,-.2],[214,214,-2.9],[282,150,-.1],[282,150,-2.6],[70,210,-2.2],[250,300,.6],[206,92,-1.9],[350,170,.7],[330,90,-.5]].forEach(function(l,i){leaf(c,l[0],l[1],74,24,l[2],g[i%3]);});\n      var o=c.createRadialGradient(236,304,6,250,318,46);o.addColorStop(0,'#ffc067');o.addColorStop(.6,'#ec8a1e');o.addColorStop(1,'#b85d0f');c.fillStyle=o;c.beginPath();c.arc(252,320,44,0,6.283);c.fill();\n      c.fillStyle='rgba(255,235,200,.9)';c.beginPath();c.ellipse(236,302,9,14,-.5,0,6.283);c.fill();c.fillStyle='#4f8233';c.beginPath();c.arc(252,278,6,0,6.283);c.fill();\n      [[70,196,22,.2],[44,232,18,1],[206,74,22,.5],[234,62,17,1.4],[352,184,20,.9],[330,206,16,.1],[176,170,18,.7]].forEach(function(b){bl(b[0],b[1],b[2],b[3]);});\n      [[92,186,.4],[186,96,-.3],[372,160,.8],[160,190,.2]].forEach(function(b){bud(b[0],b[1],b[2]);});\n    },\n    function flower(c){ \/\/ one open orange blossom: 5 thick waxy petals, ring of yellow stamens, two buds and leaves\n      leaf(c,200,210,170,46,-2.55,'#3d6e2a');leaf(c,200,210,160,44,-.45,'#2f5a22');leaf(c,200,210,150,40,1.6,'#4f8233');\n      [[96,92,-.5],[316,96,.5]].forEach(function(b){c.save();c.translate(b[0],b[1]);c.rotate(b[2]);c.fillStyle='#efdfbc';c.beginPath();c.ellipse(0,0,18,32,0,0,6.283);c.fill();c.strokeStyle='#b89a62';c.lineWidth=3;c.stroke();c.fillStyle='#6f8a3a';c.beginPath();c.ellipse(0,28,13,9,0,0,6.283);c.fill();c.restore();});\n      for(var i=0;i<5;i++){c.save();c.translate(200,200);c.rotate(-Math.PI\/2+i*1.2566);var g=c.createLinearGradient(0,0,150,0);g.addColorStop(0,'#d2b273');g.addColorStop(.4,'#e6d09e');g.addColorStop(1,'#efe0bb');c.fillStyle=g;c.beginPath();c.moveTo(0,0);c.bezierCurveTo(40,-58,130,-50,150,-6);c.quadraticCurveTo(156,6,146,14);c.bezierCurveTo(120,52,40,56,0,0);c.fill();c.strokeStyle='#b89a62';c.lineWidth=3;c.stroke();c.strokeStyle='#e2cfa2';c.lineWidth=2.5;c.beginPath();c.moveTo(20,0);c.quadraticCurveTo(80,-6,132,0);c.stroke();c.restore();}\n      c.strokeStyle='#f0dc8a';c.lineWidth=3;for(var s=0;s<16;s++){var a=s\/16*6.283;c.beginPath();c.moveTo(200,200);c.lineTo(200+Math.cos(a)*44,200+Math.sin(a)*44);c.stroke();}\n      c.fillStyle='#d99a14';for(var t=0;t<16;t++){var b=t\/16*6.283;c.beginPath();c.ellipse(200+Math.cos(b)*46,200+Math.sin(b)*46,5,8,b,0,6.283);c.fill();}\n      c.fillStyle='#8fae3c';c.beginPath();c.arc(200,200,17,0,6.283);c.fill();c.fillStyle='#c8d66a';c.beginPath();c.arc(200,200,8,0,6.283);c.fill();\n    },\n    function still(c){ \/\/ copper alembic on a brazier, swan neck to a cooling coil, dripping into a glass flask\n      rr(c,52,322,140,50,10,'#5b4a42');\n      var g=c.createRadialGradient(100,200,10,122,240,96);g.addColorStop(0,'#f2b27a');g.addColorStop(.55,'#c8692e');g.addColorStop(1,'#8a4219');c.fillStyle=g;c.beginPath();c.ellipse(122,248,82,74,0,0,6.283);c.fill();\n      c.fillStyle='#a8521f';rr(c,70,170,104,18,8,'#a8521f');c.beginPath();c.moveTo(80,172);c.bezierCurveTo(80,90,164,90,164,172);c.fill();\n      c.fillStyle='rgba(255,226,190,.9)';c.beginPath();c.ellipse(92,226,11,28,-.3,0,6.283);c.fill();c.fillStyle='#f08a2c';[[86,326],[122,324],[158,326]].forEach(function(p){c.beginPath();c.moveTo(p[0]-15,p[1]);c.quadraticCurveTo(p[0]-4,p[1]-22,p[0],p[1]-36);c.quadraticCurveTo(p[0]+6,p[1]-20,p[0]+15,p[1]);c.fill();});\n      c.strokeStyle='#b85d22';c.lineWidth=14;c.lineCap='round';c.beginPath();c.moveTo(150,112);c.bezierCurveTo(210,70,262,80,280,138);c.stroke();\n      var cg=c.createLinearGradient(240,0,340,0);cg.addColorStop(0,'#9aa7b0');cg.addColorStop(.5,'#d7dee3');cg.addColorStop(1,'#8b98a2');c.fillStyle=cg;c.beginPath();c.roundRect(240,130,92,120,14);c.fill();\n      c.strokeStyle='#b85d22';c.lineWidth=7;for(var k=0;k<4;k++){c.beginPath();c.ellipse(286,150+k*26,38,9,0,0,Math.PI);c.stroke();}\n      c.lineWidth=8;c.beginPath();c.moveTo(286,250);c.lineTo(286,272);c.stroke();\n      c.fillStyle='#8fbbe0';c.beginPath();c.ellipse(286,288,5,8,0,0,6.283);c.fill();\n      c.fillStyle='rgba(206,226,240,.95)';c.beginPath();c.moveTo(270,300);c.lineTo(302,300);c.lineTo(302,318);c.lineTo(344,374);c.lineTo(228,374);c.lineTo(270,318);c.closePath();c.fill();\n      c.fillStyle='#a9cdea';c.beginPath();c.moveTo(252,344);c.lineTo(320,344);c.lineTo(344,374);c.lineTo(228,374);c.closePath();c.fill();\n      c.strokeStyle='#7e9db5';c.lineWidth=3;c.beginPath();c.moveTo(270,300);c.lineTo(270,318);c.lineTo(228,374);c.lineTo(344,374);c.lineTo(302,318);c.lineTo(302,300);c.stroke();\n      [[196,346],[214,362]].forEach(function(p,i){c.save();c.translate(p[0],p[1]);for(var j=0;j<5;j++){c.save();c.rotate(j*1.2566+i);c.fillStyle='#f1e3c2';c.beginPath();c.ellipse(0,-9,5,9,0,0,6.283);c.fill();c.strokeStyle='#b89a62';c.lineWidth=1.5;c.stroke();c.restore();}c.fillStyle='#e0b02a';c.beginPath();c.arc(0,0,4,0,6.283);c.fill();c.restore();});\n    },\n    function mrach(c){ \/\/ Moroccan silver sprinkler (mrach) scattering drops of orange flower water\n      leaf(c,96,356,50,16,2.6,'#3d6e2a');leaf(c,306,358,46,14,.4,'#2f5a22');\n      var sg=c.createLinearGradient(130,0,270,0);sg.addColorStop(0,'#5f6a76');sg.addColorStop(.4,'#c3ccd4');sg.addColorStop(.7,'#929eaa');sg.addColorStop(1,'#535e6a');c.fillStyle=sg;\n      c.beginPath();c.moveTo(150,372);c.lineTo(250,372);c.lineTo(234,350);c.lineTo(166,350);c.closePath();c.fill();\n      c.beginPath();c.moveTo(186,350);c.bezierCurveTo(120,340,112,250,170,226);c.lineTo(230,226);c.bezierCurveTo(288,250,280,340,214,350);c.closePath();c.fill();\n      c.beginPath();c.moveTo(184,228);c.lineTo(192,96);c.lineTo(208,96);c.lineTo(216,228);c.closePath();c.fill();\n      c.beginPath();c.ellipse(200,96,16,8,0,0,6.283);c.fill();c.beginPath();c.moveTo(194,96);c.lineTo(197,62);c.lineTo(203,62);c.lineTo(206,96);c.closePath();c.fill();\n      c.beginPath();c.arc(200,58,9,0,6.283);c.fill();\n      c.strokeStyle='#434c56';c.lineWidth=3;c.beginPath();c.ellipse(200,288,58,14,0,0,Math.PI);c.stroke();c.beginPath();c.ellipse(200,262,50,10,0,0,Math.PI);c.stroke();\n      c.fillStyle='#434c56';for(var k=0;k<7;k++){var x=160+k*13.3;c.beginPath();c.moveTo(x,300);c.lineTo(x+6,312);c.lineTo(x,324);c.lineTo(x-6,312);c.closePath();c.fill();}\n      c.fillStyle='rgba(255,255,255,.95)';c.fillRect(160,250,8,70);c.fillRect(194,120,4,96);\n      [[150,30,.9],[120,52,.7],[250,30,.9],[280,52,.7],[200,18,1],[100,84,.6],[300,84,.6],[170,40,.8],[230,40,.8]].forEach(function(d){drop(c,d[0],d[1]-14*d[2],d[1]+14*d[2],8*d[2],'#a9cdea','#5f9bd0','#3d78b3','rgba(255,255,255,.9)');});\n      [[96,356,18,.3],[306,358,16,1.1]].forEach(function(b){c.save();c.translate(b[0],b[1]);c.rotate(b[3]);for(var j=0;j<5;j++){c.save();c.rotate(j*1.2566);c.fillStyle='#f1e3c2';c.beginPath();c.ellipse(0,-b[2]*.55,b[2]*.32,b[2]*.55,0,0,6.283);c.fill();c.strokeStyle='#b89a62';c.lineWidth=1.6;c.stroke();c.restore();}c.fillStyle='#e0b02a';c.beginPath();c.arc(0,0,b[2]*.25,0,6.283);c.fill();c.restore();});\n    }\n  ];\n  SHAPES.rose=[\n    function bush(c){ \/\/ Damask rosebush: woody stems, dense serrated foliage, pink blooms and buds\n      c.strokeStyle='#5e4a2c';c.lineCap='round';[[200,388,200,240,9],[200,350,130,200,6],[200,330,276,190,6],[196,290,160,150,5],[204,280,246,140,5],[200,250,200,120,5]].forEach(function(b){c.lineWidth=b[4];c.beginPath();c.moveTo(b[0],b[1]);c.quadraticCurveTo((b[0]+b[2])\/2-10,(b[1]+b[3])\/2,b[2],b[3]);c.stroke();});\n      var R=rng(21),g=['#3f6b2c','#4f7d34','#628f3e','#2f5a26'];\n      for(var n=0;n<230;n++){var a=R()*6.283,r=Math.sqrt(R()),x=200+Math.cos(a)*r*158,y=196+Math.sin(a)*r*104;leaf(c,x,y,24,9,R()*6.28,g[(R()*4)|0]);}\n      function bloom(x,y,s){var p=['#9e2f4f','#c4566f','#e07f98','#f4b3c3'];for(var k=0;k<4;k++){var rad=s*(1-k*.22);c.fillStyle=p[k];for(var j=0;j<6;j++){var t=j*1.047+k*.5;c.beginPath();c.ellipse(x+Math.cos(t)*rad*.35,y+Math.sin(t)*rad*.35,rad*.62,rad*.48,t,0,6.283);c.fill();}}c.fillStyle='#8a2443';c.beginPath();c.arc(x,y,s*.16,0,6.283);c.fill();}\n      [[128,160,30],[200,118,34],[278,150,30],[160,226,26],[250,232,28],[96,226,22],[318,214,22]].forEach(function(b){bloom(b[0],b[1],b[2]);});\n      [[150,112],[244,100],[330,170],[70,180]].forEach(function(p){almond(c,p[0],p[1],9,15,0,'#b8405e');leaf(c,p[0],p[1]+12,16,6,1.2,'#4f7d34');leaf(c,p[0],p[1]+12,16,6,1.9,'#4f7d34');});\n    },\n    function bloom(c){ \/\/ one open Damask rose: layered spiralling petals, sepals, stem and two leaves\n      c.strokeStyle='#4f7d34';c.lineWidth=9;c.lineCap='round';c.beginPath();c.moveTo(200,388);c.quadraticCurveTo(212,320,200,262);c.stroke();\n      leaf(c,204,340,92,30,-.55,'#4f7d34');leaf(c,200,312,86,28,-2.6,'#628f3e');\n      c.fillStyle='#3f6b2c';for(var s=0;s<5;s++){var a=Math.PI\/2+(s-2)*.42;leaf(c,200,250,70,12,a,'#3f6b2c');}\n      var rings=[[118,'#a83656',7],[96,'#c4566f',7],[74,'#d96a86',6],[54,'#e98aa2',5],[36,'#f4b3c3',5]];\n      rings.forEach(function(r,k){c.fillStyle=r[1];for(var j=0;j<r[2];j++){var t=j*6.283\/r[2]+k*.45;c.beginPath();c.ellipse(200+Math.cos(t)*r[0]*.42,170+Math.sin(t)*r[0]*.38,r[0]*.62,r[0]*.46,t,0,6.283);c.fill();}});\n      c.strokeStyle='#8a2443';c.lineWidth=4;c.beginPath();for(var i=0;i<60;i++){var th=i*.32,rr2=4+i*.55;var x=200+Math.cos(th)*rr2,y=170+Math.sin(th)*rr2*.9;if(i)c.lineTo(x,y);else c.moveTo(x,y);}c.stroke();\n      c.fillStyle='rgba(255,232,238,.95)';c.beginPath();c.ellipse(158,122,22,9,-.5,0,6.283);c.fill();\n    },\n    function still(c){ \/\/ copper alembic heaped with petals, swan-neck pipe, condenser coil, flask collecting rose water\n      c.fillStyle='#6b3f22';c.fillRect(70,350,170,18);rr(c,84,330,142,24,6,'#2f2a2a');\n      c.fillStyle='#f08a3a';[[110,336],[150,332],[190,336]].forEach(function(p){c.beginPath();c.moveTo(p[0]-12,348);c.quadraticCurveTo(p[0],p[1]-26,p[0]+12,348);c.fill();});\n      var g=c.createLinearGradient(60,0,250,0);g.addColorStop(0,'#8a4a22');g.addColorStop(.4,'#e09a5c');g.addColorStop(.7,'#c4733a');g.addColorStop(1,'#7a3f1c');c.fillStyle=g;\n      c.beginPath();c.moveTo(78,200);c.bezierCurveTo(60,300,96,334,155,334);c.bezierCurveTo(214,334,250,300,232,200);c.closePath();c.fill();\n      c.fillStyle='#b8652f';c.fillRect(74,192,162,14);\n      var R=rng(31),pc=['#c4566f','#e07f98','#a83656','#f4b3c3'];for(var n=0;n<46;n++){var x=88+R()*134,y=176+R()*22;almond(c,x,y,7,12,R()*6.28,pc[(R()*4)|0]);}\n      c.fillStyle=g;c.beginPath();c.moveTo(110,180);c.bezierCurveTo(110,120,200,120,200,180);c.closePath();c.fill();\n      c.fillStyle='#d98a4a';c.beginPath();c.ellipse(155,128,20,10,0,0,6.283);c.fill();\n      c.strokeStyle='#c4733a';c.lineWidth=12;c.lineCap='round';c.beginPath();c.moveTo(160,124);c.quadraticCurveTo(220,60,300,120);c.stroke();\n      rr(c,276,118,56,120,10,'#a95a2c');c.strokeStyle='#f0b27a';c.lineWidth=6;for(var k=0;k<5;k++){c.beginPath();c.moveTo(280,132+k*22);c.lineTo(328,142+k*22);c.stroke();}\n      c.strokeStyle='#c4733a';c.lineWidth=8;c.beginPath();c.moveTo(304,238);c.lineTo(304,272);c.stroke();\n      c.fillStyle='#d6e4ef';c.beginPath();c.moveTo(292,276);c.lineTo(316,276);c.lineTo(316,300);c.bezierCurveTo(362,316,362,378,304,378);c.bezierCurveTo(246,378,246,316,292,300);c.closePath();c.fill();\n      c.fillStyle='#f4b3c3';c.beginPath();c.moveTo(262,336);c.bezierCurveTo(262,380,346,380,346,336);c.closePath();c.fill();\n      c.fillStyle='#e98aa2';c.beginPath();c.arc(304,286,5,0,6.283);c.fill();\n    },\n    function water(c){ \/\/ drop of clear rose water with a petal floating on its ripple\n      drop(c,200,40,320,92,'#fde3ea','#f0a3b5','#c4566f','rgba(255,255,255,.95)');\n      ripple(c,200,368,'#e07f98');\n      almond(c,118,350,10,18,1.2,'#c4566f');almond(c,288,360,9,16,-1,'#e07f98');\n    }\n  ];\n  SHAPES.sidr=[\n    function shrub(c){ \/\/ wild jujube (sedra): dense thorny mound of zigzag branches, small oval leaves and red-brown fruits, on arid sandy ground under a warm sun\n      c.fillStyle='#f0c27a';c.beginPath();c.arc(320,78,28,0,6.283);c.fill();\n      var gr=c.createLinearGradient(0,300,0,380);gr.addColorStop(0,'#e2bf86');gr.addColorStop(1,'#c99a5c');c.fillStyle=gr;\n      c.beginPath();c.moveTo(20,380);c.lineTo(20,322);c.bezierCurveTo(90,300,150,292,200,290);c.bezierCurveTo(260,292,320,302,380,318);c.lineTo(380,380);c.closePath();c.fill();\n      c.fillStyle='#b8874c';c.beginPath();c.ellipse(200,312,150,22,0,0,6.283);c.fill();\n      var R=rng(11);c.strokeStyle='#6b5236';c.lineCap='round';c.lineJoin='round';\n      for(var b=0;b<16;b++){var x=200+(R()-.5)*60,y=308,a=-Math.PI\/2+(R()-.5)*2.4,len=70+R()*90;c.lineWidth=3+R()*3;c.beginPath();c.moveTo(x,y);\n        for(var s=0;s<5;s++){a+=(s%2?.5:-.5);x+=Math.cos(a)*len\/5;y+=Math.sin(a)*len\/5;c.lineTo(x,y);}c.stroke();}\n      var g=['#5f7a2e','#7a9440','#4d6a26','#8fa852'];\n      for(var n=0;n<300;n++){var t=R()*6.283,r=Math.sqrt(R()),lx=200+Math.cos(t)*r*150,ly=214+Math.sin(t)*r*92;if(ly>300)continue;almond(c,lx,ly,5,9,R()*6.28,g[(R()*4)|0]);}\n      c.strokeStyle='#8a6a44';c.lineWidth=2;for(var k=0;k<40;k++){var tx=200+(R()-.5)*290,ty=150+R()*150,ta=R()*6.28;c.beginPath();c.moveTo(tx,ty);c.lineTo(tx+Math.cos(ta)*9,ty+Math.sin(ta)*9);c.stroke();}\n      var f=['#a8442a','#c4612e','#8a3a24'];for(var m=0;m<16;m++){var t2=R()*6.283,r2=Math.sqrt(R())*.9,fx=200+Math.cos(t2)*r2*140,fy=210+Math.sin(t2)*r2*80;c.fillStyle=f[m%3];c.beginPath();c.arc(fx,fy,6,0,6.283);c.fill();c.fillStyle='rgba(255,220,190,.85)';c.beginPath();c.arc(fx-2,fy-2,1.8,0,6.283);c.fill();}\n    },\n    function branch(c){ \/\/ jujube twig: zigzag stem, paired thorns at each node (one straight, one hooked), alternate oval three-veined leaves, two small fruits\n      var pts=[[44,356],[110,300],[100,236],[172,190],[166,128],[246,92],[246,44],[330,30]];\n      c.strokeStyle='#7a5a3a';c.lineWidth=9;c.lineCap='round';c.lineJoin='round';c.beginPath();c.moveTo(pts[0][0],pts[0][1]);for(var i=1;i<pts.length;i++)c.lineTo(pts[i][0],pts[i][1]);c.stroke();\n      function vleaf(x,y,ang,L,W,col){c.save();c.translate(x,y);c.rotate(ang);c.fillStyle='#5f7a2e';c.fillRect(0,-2,14,4);c.translate(14,0);\n        c.fillStyle=col;c.beginPath();c.ellipse(L\/2,0,L\/2,W\/2,0,0,6.283);c.fill();\n        c.strokeStyle='rgba(225,236,190,.85)';c.lineWidth=2.2;c.beginPath();c.moveTo(2,0);c.lineTo(L-6,0);c.moveTo(4,0);c.quadraticCurveTo(L*.45,-W*.34,L-12,-W*.12);c.moveTo(4,0);c.quadraticCurveTo(L*.45,W*.34,L-12,W*.12);c.stroke();c.restore();}\n      function thorns(x,y,a){c.fillStyle='#a8875a';c.save();c.translate(x,y);c.rotate(a);c.beginPath();c.moveTo(-4,0);c.lineTo(4,0);c.lineTo(0,-32);c.closePath();c.fill();\n        c.beginPath();c.moveTo(-3,4);c.lineTo(3,4);c.quadraticCurveTo(14,18,4,24);c.quadraticCurveTo(8,14,-3,4);c.fill();c.restore();}\n      var cols=['#5f7a2e','#7a9440','#4d6a26','#6f8a36'];\n      [[110,300,-2.5,0],[100,236,.1,1],[172,190,-2.6,2],[166,128,.2,3],[246,92,-2.4,0],[246,44,.4,1]].forEach(function(n,k){thorns(n[0],n[1],k%2?.8:-.8);vleaf(n[0],n[1],n[2],78,48,cols[n[3]]);});\n      vleaf(77,328,-.9,64,40,'#7a9440');vleaf(206,110,-1.2,60,38,'#4d6a26');vleaf(290,40,.9,58,36,'#6f8a36');\n      [[136,276],[150,262]].forEach(function(p,k){c.strokeStyle='#5f7a2e';c.lineWidth=2;c.beginPath();c.moveTo(p[0]-20,p[1]-14);c.lineTo(p[0],p[1]);c.stroke();c.fillStyle=k?'#c4612e':'#a8442a';c.beginPath();c.arc(p[0],p[1],11,0,6.283);c.fill();c.fillStyle='rgba(255,220,190,.85)';c.beginPath();c.arc(p[0]-3,p[1]-4,3,0,6.283);c.fill();});\n    },\n    function powder(c){ \/\/ heap of fine olive-green sidr powder, dried leaves and a stone mortar with pestle\n      var g=c.createLinearGradient(0,140,0,370);g.addColorStop(0,'#a9b86a');g.addColorStop(1,'#6f7f3a');c.fillStyle=g;\n      c.beginPath();c.moveTo(30,370);c.bezierCurveTo(90,362,130,170,186,160);c.bezierCurveTo(236,170,270,352,320,370);c.closePath();c.fill();\n      var R=rng(5),cols=['#b9c67e','#8a9a4a','#5e6c30','#9fae60'];for(var n=0;n<380;n++){var u=R()*2-1,h=Math.pow(1-u*u,1.4)*200,x=178+u*140,y=370-R()*h;c.fillStyle=cols[(R()*4)|0];c.beginPath();c.arc(x,y,1.8+R()*1.3,0,6.283);c.fill();}\n      [[60,330,.4,'#8a8a3e'],[96,354,-.6,'#7a7a34'],[300,356,2.6,'#8f9244']].forEach(function(l){almond(c,l[0],l[1],10,18,l[2],l[3]);});\n      var m=c.createLinearGradient(260,0,370,0);m.addColorStop(0,'#8e8a80');m.addColorStop(.5,'#c9c4b8');m.addColorStop(1,'#7c776e');c.fillStyle=m;\n      c.beginPath();c.moveTo(262,262);c.lineTo(370,262);c.bezierCurveTo(366,320,348,344,316,344);c.bezierCurveTo(284,344,266,320,262,262);c.fill();\n      rr(c,288,340,56,14,5,'#7c776e');\n      c.fillStyle='#a8a296';c.beginPath();c.ellipse(316,262,54,13,0,0,6.283);c.fill();c.fillStyle='#7f8f40';c.beginPath();c.ellipse(316,264,44,8,0,0,6.283);c.fill();\n      c.save();c.translate(318,200);c.rotate(.45);rr(c,-11,-70,22,120,11,'#b3ad9f');c.fillStyle='#8e8a80';c.beginPath();c.ellipse(0,50,14,9,0,0,6.283);c.fill();c.restore();\n    },\n    function bowl(c){ \/\/ celadon ceramic bowl of smooth green sidr paste crowned with a light foam (saponins), a wooden spoon and a leaf\n      var g=c.createLinearGradient(50,0,350,0);g.addColorStop(0,'#7fa39a');g.addColorStop(.45,'#cfe2da');g.addColorStop(1,'#6e9389');c.fillStyle=g;\n      c.beginPath();c.moveTo(48,226);c.lineTo(352,226);c.bezierCurveTo(344,312,280,356,200,356);c.bezierCurveTo(120,356,56,312,48,226);c.fill();\n      rr(c,148,350,104,20,8,'#6e9389');\n      c.strokeStyle='#4f7a70';c.lineWidth=4;c.beginPath();c.moveTo(66,258);c.bezierCurveTo(130,290,270,290,334,258);c.stroke();\n      c.fillStyle='#e4efe9';c.beginPath();c.ellipse(200,226,154,32,0,0,6.283);c.fill();\n      var p=c.createLinearGradient(0,204,0,250);p.addColorStop(0,'#8a9a4a');p.addColorStop(1,'#5e6c30');c.fillStyle=p;c.beginPath();c.ellipse(200,228,138,24,0,0,6.283);c.fill();\n      var R=rng(9);for(var n=0;n<46;n++){var t=R()*6.283,r=Math.sqrt(R()),x=176+Math.cos(t)*r*86,y=222+Math.sin(t)*r*14,s=4+R()*9;c.fillStyle='#f3f6e6';c.beginPath();c.arc(x,y-s*.4,s,0,6.283);c.fill();c.strokeStyle='#c9d4a8';c.lineWidth=1.5;c.stroke();}\n      for(var k=0;k<7;k++){var bx=150+R()*90,by=150+R()*50,bs=5+R()*7;c.fillStyle='rgba(243,246,230,.95)';c.beginPath();c.arc(bx,by,bs,0,6.283);c.fill();c.strokeStyle='#b9c67e';c.lineWidth=2;c.stroke();}\n      c.save();c.translate(300,150);c.rotate(.5);rr(c,-7,-100,14,110,7,'#c8a070');c.fillStyle='#b48a5c';c.beginPath();c.ellipse(0,22,22,32,0,0,6.283);c.fill();c.fillStyle='#6f7f3a';c.beginPath();c.ellipse(0,26,16,22,0,0,6.283);c.fill();c.restore();\n      leaf(c,70,372,70,22,-.25,'#5f7a2e');leaf(c,330,376,60,18,3.3,'#7a9440');\n    }\n  ];\nSHAPES.safran=[\n    function crocus(c){ \/\/ saffron crocus field in autumn: narrow grassy leaves, violet goblet flowers, three red stigmas spilling over the tepals\n      var s=7;function R(){s=(s*16807)%2147483647;return s\/2147483647;}\n      c.fillStyle='#6b4a2e';c.beginPath();c.ellipse(200,372,190,26,0,0,6.283);c.fill();\n      c.lineCap='round';\n      for(var n=0;n<70;n++){var x=30+R()*340,h=70+R()*130,b=(R()-.5)*60;c.strokeStyle=['#3e6b2e','#4f7d34','#2f5a26'][(R()*3)|0];c.lineWidth=4+R()*2;c.beginPath();c.moveTo(x,372);c.quadraticCurveTo(x+b*.4,372-h*.6,x+b,372-h);c.stroke();}\n      function flower(x,y,k,rot){c.save();c.translate(x,y);c.rotate(rot);\n        c.fillStyle='#e6e1c8';c.fillRect(-k*.07,0,k*.14,k*1.6);\n        [-.62,0,.62].forEach(function(a){almond(c,Math.sin(a)*k*.48,-Math.cos(a)*k*.48,k*.22,k*.5,a,'#6a3a9c');});\n        c.strokeStyle='#c8261b';c.lineWidth=k*.07;[[-.55,-1.2],[.05,-1.32],[.6,-1.16]].forEach(function(t){c.beginPath();c.moveTo(0,-k*.3);c.quadraticCurveTo(t[0]*k*.3,-k*.95,t[0]*k,t[1]*k);c.stroke();almond(c,t[0]*k,t[1]*k,k*.07,k*.12,t[0],'#e0452c');});\n        [-.32,.32].forEach(function(a){almond(c,Math.sin(a)*k*.44,-Math.cos(a)*k*.44,k*.21,k*.46,a,'#9b6bd3');});\n        almond(c,0,-k*.42,k*.2,k*.44,0,'#8758c4');\n        c.fillStyle='#c9a8ee';[-.32,0,.32].forEach(function(a){c.save();c.rotate(a);c.beginPath();c.ellipse(0,-k*.5,k*.035,k*.3,0,0,6.283);c.fill();c.restore();});\n        almond(c,-k*.1,-k*.72,k*.04,k*.1,-.2,'#e8b62a');almond(c,k*.12,-k*.7,k*.04,k*.1,.25,'#e8b62a');\n        c.restore();}\n      flower(200,232,92,0);flower(96,270,62,-.25);flower(306,262,68,.22);flower(150,318,40,-.1);flower(266,322,38,.15);flower(352,318,34,.3);flower(46,326,32,-.3);\n    },\n    function stigmas(c){ \/\/ one open crocus seen from above: six violet tepals, yellow anthers, three long crimson stigma threads\n      var cx=200,cy=200;\n      for(var i=0;i<3;i++){var a=i*2.094-1.571;almond(c,cx+Math.cos(a)*82,cy+Math.sin(a)*82,50,92,a+1.571,'#6a3a9c');}\n      for(var j=0;j<3;j++){var b=j*2.094-.524;almond(c,cx+Math.cos(b)*76,cy+Math.sin(b)*76,46,84,b+1.571,'#9b6bd3');}\n      c.strokeStyle='#5b2d8a';c.lineWidth=2.5;\n      for(var v=0;v<6;v++){var t=v*1.047-1.571;c.beginPath();c.moveTo(cx+Math.cos(t)*24,cy+Math.sin(t)*24);c.lineTo(cx+Math.cos(t)*140,cy+Math.sin(t)*140);c.stroke();}\n      c.fillStyle='#f2e6b8';c.beginPath();c.arc(cx,cy,30,0,6.283);c.fill();\n      [-.9,1.2,3.3].forEach(function(a){almond(c,cx+Math.cos(a)*46,cy+Math.sin(a)*46,8,24,a+1.571,'#e8b62a');});\n      c.lineCap='round';\n      [[60,60,110,90],[350,96,300,120],[214,372,238,300]].forEach(function(p){\n        c.strokeStyle='#a51d15';c.lineWidth=12;c.beginPath();c.moveTo(cx,cy);c.quadraticCurveTo(p[2],p[3],p[0],p[1]);c.stroke();\n        c.strokeStyle='#d6301f';c.lineWidth=7;c.beginPath();c.moveTo(cx,cy);c.quadraticCurveTo(p[2],p[3],p[0],p[1]);c.stroke();\n        var ang=Math.atan2(p[1]-p[3],p[0]-p[2]);almond(c,p[0],p[1],11,18,ang+1.571,'#e0452c');});\n      c.fillStyle='#c8261b';c.beginPath();c.arc(cx,cy,9,0,6.283);c.fill();\n    },\n    function harvest(c){ \/\/ the hand harvest: a woven palm basket heaped with freshly picked crocus flowers, a few fallen on the ground\n      var s=19;function R(){s=(s*16807)%2147483647;return s\/2147483647;}\n      c.fillStyle='rgba(90,60,30,.35)';c.beginPath();c.ellipse(200,364,170,22,0,0,6.283);c.fill();\n      c.strokeStyle='#8a6230';c.lineWidth=12;c.lineCap='round';c.beginPath();c.moveTo(96,232);c.bezierCurveTo(100,70,300,70,304,232);c.stroke();\n      function top(x,y,k,rot){c.save();c.translate(x,y);c.rotate(rot);for(var i=0;i<6;i++){almond(c,Math.cos(i*1.047)*k*.5,Math.sin(i*1.047)*k*.5,k*.3,k*.55,i*1.047+1.571,i%2?'#9b6bd3':'#6a3a9c');}\n        c.fillStyle='#f2e6b8';c.beginPath();c.arc(0,0,k*.2,0,6.283);c.fill();c.strokeStyle='#c8261b';c.lineWidth=k*.1;c.lineCap='round';for(var j=0;j<3;j++){var a=j*2.094+rot;c.beginPath();c.moveTo(0,0);c.lineTo(Math.cos(a)*k*.75,Math.sin(a)*k*.75);c.stroke();}c.restore();}\n      for(var n=0;n<34;n++){var u=R()*2-1,x=200+u*118,y=232-Math.sqrt(1-u*u)*60*R()-6;top(x,y,22+R()*12,R()*6.28);}\n      var g=c.createLinearGradient(80,0,320,0);g.addColorStop(0,'#8a6230');g.addColorStop(.45,'#d9a964');g.addColorStop(1,'#7a5426');c.fillStyle=g;\n      c.beginPath();c.moveTo(78,234);c.lineTo(322,234);c.lineTo(292,352);c.quadraticCurveTo(200,368,108,352);c.closePath();c.fill();\n      c.strokeStyle='#6e4a20';c.lineWidth=3;for(var r=0;r<5;r++){var yy=256+r*22;c.beginPath();c.moveTo(84+r*6,yy);c.quadraticCurveTo(200,yy+10,316-r*6,yy);c.stroke();}\n      c.lineWidth=2;for(var q=0;q<14;q++){var xx=96+q*15;c.beginPath();c.moveTo(xx,238);c.lineTo(xx+(q-7)*2,350);c.stroke();}\n      c.fillStyle='#a8783e';c.beginPath();c.ellipse(200,234,124,14,0,0,6.283);c.fill();c.strokeStyle='#6e4a20';c.lineWidth=3;c.stroke();\n      top(58,352,26,.4);top(346,350,22,1.2);\n      c.strokeStyle='#c8261b';c.lineWidth=3;[[36,380,60,374],[330,382,356,378],[370,370,388,362]].forEach(function(l){c.beginPath();c.moveTo(l[0],l[1]);c.lineTo(l[2],l[3]);c.stroke();});\n    },\n    function infusion(c){ \/\/ the red gold: a mound of dried threads on a Moroccan ceramic plate and a tea glass of golden saffron infusion\n      var s=33;function R(){s=(s*16807)%2147483647;return s\/2147483647;}\n      c.fillStyle='#2f5d8a';c.beginPath();c.ellipse(140,322,118,36,0,0,6.283);c.fill();\n      c.fillStyle='#ece5d4';c.beginPath();c.ellipse(140,318,106,30,0,0,6.283);c.fill();\n      c.strokeStyle='#2f5d8a';c.lineWidth=3;c.beginPath();c.ellipse(140,318,74,19,0,0,6.283);c.stroke();\n      c.lineCap='round';\n      for(var n=0;n<260;n++){var u=R()*2-1,h=Math.pow(1-u*u,1.2)*70,x=140+u*78,y=318-R()*h,a=R()*6.283,l=7+R()*9;\n        c.strokeStyle=['#b3261e','#8f1d17','#c8361f','#a51d15'][(R()*4)|0];c.lineWidth=2.6+R()*1.4;\n        c.beginPath();c.moveTo(x,y);c.quadraticCurveTo(x+Math.cos(a+.6)*l*.6,y+Math.sin(a+.6)*l*.6,x+Math.cos(a)*l,y+Math.sin(a)*l);c.stroke();\n        if(R()<.3){c.fillStyle='#e0662a';c.beginPath();c.arc(x+Math.cos(a)*l,y+Math.sin(a)*l,1.8,0,6.283);c.fill();}}\n      c.fillStyle='rgba(120,80,40,.3)';c.beginPath();c.ellipse(290,356,62,10,0,0,6.283);c.fill();\n      c.fillStyle='#f3ead6';c.beginPath();c.moveTo(240,128);c.lineTo(340,128);c.lineTo(320,350);c.quadraticCurveTo(290,360,260,350);c.closePath();c.fill();\n      var g=c.createLinearGradient(0,170,0,350);g.addColorStop(0,'#f8cf5e');g.addColorStop(.6,'#e8951f');g.addColorStop(1,'#c46a12');c.fillStyle=g;\n      c.beginPath();c.moveTo(245,172);c.lineTo(335,172);c.lineTo(318,342);c.quadraticCurveTo(290,350,262,342);c.closePath();c.fill();\n      c.fillStyle='#fbe39a';c.beginPath();c.ellipse(290,172,45,7,0,0,6.283);c.fill();\n      c.fillStyle='#c9a24a';c.fillRect(242,142,96,9);c.fillRect(250,300,80,6);\n      c.fillStyle='rgba(255,255,255,.85)';c.beginPath();c.moveTo(252,180);c.lineTo(262,180);c.lineTo(270,330);c.lineTo(264,330);c.closePath();c.fill();\n      c.strokeStyle='#b3261e';c.lineWidth=3;[[284,214,296,230],[300,250,292,268],[276,282,288,292]].forEach(function(l){c.beginPath();c.moveTo(l[0],l[1]);c.lineTo(l[2],l[3]);c.stroke();});\n      almond(c,64,108,22,40,-.6,'#6a3a9c');almond(c,90,94,20,38,-.1,'#9b6bd3');almond(c,108,116,20,36,.5,'#8758c4');\n      c.strokeStyle='#c8261b';c.lineWidth=4;c.beginPath();c.moveTo(86,124);c.quadraticCurveTo(120,90,150,70);c.stroke();c.beginPath();c.moveTo(86,124);c.quadraticCurveTo(110,70,112,48);c.stroke();\n      c.strokeStyle='#e6e1c8';c.lineWidth=7;c.beginPath();c.moveTo(84,130);c.quadraticCurveTo(70,170,40,190);c.stroke();\n    }\n  ];\n\n  var key=document.querySelector('.ip').getAttribute('data-shape')||'argan',SH=SHAPES[key]||SHAPES.argan;\n  function rng(a){return function(){a|=0;a=a+0x6D2B79F5|0;var t=Math.imul(a^a>>>15,1|a);t=t+Math.imul(t^t>>>7,61|t)^t;return((t^t>>>14)>>>0)\/4294967296;};}\n  var W,H,D,N,P=[],G=[];\n  function sample(fn,R){\n    var o=document.createElement('canvas');o.width=o.height=400;var c=o.getContext('2d');fn(c);\n    var d=c.getImageData(0,0,400,400).data,pts=[];\n    for(var y=0;y<400;y+=3)for(var x=0;x<400;x+=3){var i=(y*400+x)*4;if(d[i+3]>140)pts.push([x+R()*3-1.5,y+R()*3-1.5,d[i],d[i+1],d[i+2]]);}\n    for(var k=pts.length-1;k>0;k--){var j=Math.floor(R()*(k+1)),t=pts[k];pts[k]=pts[j];pts[j]=t;}\n    var out=[];for(var n=0;n<N;n++)out.push(pts[n%pts.length]);return out;\n  }\n  function build(){\n    var r=cv.getBoundingClientRect();W=r.width;H=r.height;D=Math.min(window.devicePixelRatio||1,2);cv.width=W*D;cv.height=H*D;ctx.setTransform(D,0,0,D,0,0);\n    var mob=W<700;N=mob?1500:2800;var R=rng(11);\n    var size=mob?Math.min(W*.86,H*.5):Math.min(H*.78,W*.44),ox=(mob?W*.5:W*.66)-size\/2,oy=(mob?H*.36:H*.5)-size\/2,k=size\/400;\n    G=SH.map(function(fn){return sample(fn,R).map(function(p){return [ox+p[0]*k,oy+p[1]*k,p[2],p[3],p[4]];});});\n    P=[];for(var i=0;i<N;i++)P.push({d:R()*.25,sw:(R()-.5)*2,ph:R()*6.28,s:(mob?1.2:1.35)+R()*1.1});\n  }\n  function ez(t){return t<.5?4*t*t*t:1-Math.pow(-2*t+2,3)\/2;}\n  function cl(v){return v<0?0:v>1?1:v;}\n  var prog=reduce?1:0,cur=prog,vis=true,t0=performance.now(),lastT=t0;\n  function measure(){var r=hero.getBoundingClientRect(),span=hero.offsetHeight-window.innerHeight;prog=reduce?1:cl(-r.top\/Math.max(span,1));}\n  function draw(now){\n    measure();var dt=Math.min(.1,(now-lastT)\/1000);lastT=now;cur+=(prog-cur)*(1-Math.exp(-dt*7));var f=cur*(G.length-1),seg=Math.min(G.length-2,Math.floor(f)),lt=f-seg,time=(now-t0)\/1000;\n    ctx.clearRect(0,0,W,H);\n    var A=G[seg],B=G[seg+1],m=Math.min(W,H);\n    for(var i=0;i<N;i++){\n      var q=P[i],t=ez(cl((lt-.28-q.d*.6)\/.44)),a=A[i],b=B[i],sw=Math.sin(t*Math.PI)*m*.09*q.sw;\n      var x=a[0]+(b[0]-a[0])*t,y=a[1]+(b[1]-a[1])*t,dx=b[1]-a[1],dy=a[0]-b[0],dl=Math.sqrt(dx*dx+dy*dy)||1;\n      x+=dx\/dl*sw+Math.sin(time*1.4+q.ph)*.9;y+=dy\/dl*sw+Math.cos(time*1.2+q.ph)*.9;\n      var r=a[2]+(b[2]-a[2])*t|0,g=a[3]+(b[3]-a[3])*t|0,bl=a[4]+(b[4]-a[4])*t|0;\n      ctx.fillStyle='rgb('+r+','+g+','+bl+')';ctx.beginPath();ctx.arc(x,y,q.s,0,6.283);ctx.fill();\n    }\n    var k=Math.min(G.length-1,Math.round(f));chs.forEach(function(c,i){c.classList.toggle('on',i===k);});\n    if(mark)mark.textContent='( '+L[k]+' )';if(bar)bar.style.transform='scaleX('+cur.toFixed(3)+')';\n    if(vis&&!reduce)requestAnimationFrame(draw);\n  }\n  build();measure();cur=prog;\n  window.addEventListener('scroll',measure,{passive:true});\n  var rt;window.addEventListener('resize',function(){clearTimeout(rt);rt=setTimeout(function(){chrome();build();measure();if(reduce)draw(performance.now());},150);});\n  if('IntersectionObserver' in window){new IntersectionObserver(function(es){es.forEach(function(e){var was=vis;vis=e.isIntersecting;if(vis&&!was&&!reduce)requestAnimationFrame(draw);});}).observe(hero);}\n  requestAnimationFrame(draw);\n})();\n<\/script>\n<\/div>\n<\/div><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"","protected":false},"author":3,"featured_media":53705,"parent":20287,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-56574","page","type-page","status-publish","has-post-thumbnail","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/carmelcosmeticslabs.com\/en\/wp-json\/wp\/v2\/pages\/56574","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/carmelcosmeticslabs.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/carmelcosmeticslabs.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/carmelcosmeticslabs.com\/en\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/carmelcosmeticslabs.com\/en\/wp-json\/wp\/v2\/comments?post=56574"}],"version-history":[{"count":0,"href":"https:\/\/carmelcosmeticslabs.com\/en\/wp-json\/wp\/v2\/pages\/56574\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/carmelcosmeticslabs.com\/en\/wp-json\/wp\/v2\/pages\/20287"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/carmelcosmeticslabs.com\/en\/wp-json\/wp\/v2\/media\/53705"}],"wp:attachment":[{"href":"https:\/\/carmelcosmeticslabs.com\/en\/wp-json\/wp\/v2\/media?parent=56574"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}