{"title":"Summer Night","description":"","products":[{"product_id":"minuit-prive-extrait-de-parfum-for-women-men","title":"Minuit Privé Extrait de Parfum For Women \u0026 Men","description":"\u003cp style=\"text-align: left;\"\u003e\u003cspan\u003eWhen midnight descends, the world exhales its secrets — and Minuit Privé comes alive. A fragrance born from the stillness of the night, where mystery lingers in the air and desire takes form in shadow.\u003c\/span\u003e\u003cbr\u003e\u003cbr\u003e\u003cspan\u003eThe scent opens with the crisp clarity of Bergamot and the herbal intrigue of Artemisia, evoking the first whisper of darkness. At its heart, a solitary Rose blooms — elegant yet untamed — its petals brushed by the green bite of wormwood.\u003c\/span\u003e\u003cbr\u003e\u003cbr\u003e\u003cspan\u003eAs the night deepens, the fragrance unfurls into an intoxicating blend of Frankincense, Ambergris, and Labdanum, melting into a rich trail of Leather, Saffron, Patchouli, and Sandalwood. The dry-down is dark and magnetic — smoky resins and sacred woods wrapping the skin in an aura of quiet power and private seduction.\u003c\/span\u003e\u003cbr\u003e\u003cbr\u003e\u003cspan\u003eMinuit Privé captures the allure of midnight in its most private form—intimate, elegant, and dangerously irresistible. It is crafted for those who own the night, yet leave behind only whispers of their presence.\u003c\/span\u003e\u003cbr\u003e\u003cbr\u003e\u003cspan\u003eMinuit Privé is not for the many — it’s for the few who understand the language of the night. Private. Alluring. Eternal.\u003c\/span\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003csection class=\"perfume-profile\"\u003e\n\u003cdiv class=\"accords section-block\"\u003e\n\u003ch3\u003eMAIN ACCORDS\u003c\/h3\u003e\n\u003cdiv class=\"section-divider\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"accords-grid\"\u003e\n\u003cdiv style=\"--clr: #d8a47f;\" class=\"accord\"\u003eAmber\u003c\/div\u003e\n\u003cdiv style=\"--clr: #caa675;\" class=\"accord\"\u003eWoody\u003c\/div\u003e\n\u003cdiv style=\"--clr: #b87f4e;\" class=\"accord\"\u003eWarm Spicy\u003c\/div\u003e\n\u003cdiv style=\"--clr: #b3b3b3;\" class=\"accord\"\u003eSmoky\u003c\/div\u003e\n\u003cdiv style=\"--clr: #a9744f;\" class=\"accord\"\u003eLeathery\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pyramid section-block\"\u003e\n\u003ch3\u003eFRAGRANCE PYRAMID\u003c\/h3\u003e\n\u003cdiv class=\"section-divider\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"pyramid-column\"\u003e\n\u003ch4\u003eTOP\u003c\/h4\u003e\n\u003cdiv class=\"notes\"\u003e\n\u003cdiv class=\"note-item\"\u003e\n\u003cimg alt=\"Bergamot\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0672\/1647\/4186\/files\/Bergamot.jpg?v=1762166328\"\u003e\u003cspan\u003eBergamot\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"note-item\"\u003e\n\u003cimg alt=\"Artemisia\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0672\/1647\/4186\/files\/Artemisia.jpg?v=1762175259\"\u003e\u003cspan\u003eArtemisia\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pyramid-column\"\u003e\n\u003ch4\u003eMIDDLE\u003c\/h4\u003e\n\u003cdiv class=\"notes\"\u003e\n\u003cdiv class=\"note-item\"\u003e\n\u003cimg alt=\"May Rose\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0672\/1647\/4186\/files\/Rose.jpg?v=1762167907\"\u003e\u003cspan\u003eRose\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"note-item\"\u003e\n\u003cimg alt=\"Cistus\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0672\/1647\/4186\/files\/Artemisia.jpg?v=1762175259\"\u003e\u003cspan\u003eArtemisia\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pyramid-column\"\u003e\n\u003ch4\u003eBASE\u003c\/h4\u003e\n\u003cdiv class=\"notes\"\u003e\n\u003cdiv class=\"note-item\"\u003e\n\u003cimg alt=\"Frankincense\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0672\/1647\/4186\/files\/Frankincense.jpg?v=1762175662\"\u003e\u003cspan\u003eFrankincense\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"note-item\"\u003e\n\u003cimg alt=\"Ambergris\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0672\/1647\/4186\/files\/Ambergris.jpg?v=1762174551\"\u003e\u003cspan\u003eAmbergris\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"note-item\"\u003e\n\u003cimg alt=\"Labdanum\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0672\/1647\/4186\/files\/Labdanum.jpg?v=1762167154\"\u003e\u003cspan\u003eLabdanum\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"note-item\"\u003e\n\u003cimg alt=\"Styrax\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0672\/1647\/4186\/files\/Styrax.jpg?v=1762175746\"\u003e\u003cspan\u003eStyrax\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"note-item\"\u003e\n\u003cimg alt=\"Cumin\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0672\/1647\/4186\/files\/Cumin.jpg?v=1762174223\"\u003e\u003cspan\u003eCumin\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"note-item\"\u003e\n\u003cimg alt=\"Gaiac Wood\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0672\/1647\/4186\/files\/Gaiac_Wood.jpg?v=1762174683\"\u003e\u003cspan\u003eGaiac Wood\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"note-item\"\u003e\n\u003cimg alt=\"Leather\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0672\/1647\/4186\/files\/Leather.jpg?v=1762168209\"\u003e\u003cspan\u003eLeather\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"note-item\"\u003e\n\u003cimg alt=\"Saffron\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0672\/1647\/4186\/files\/Saffron.jpg?v=1762166720\"\u003e\u003cspan\u003eSaffron\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"note-item\"\u003e\n\u003cimg alt=\"Benzoin\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0672\/1647\/4186\/files\/Benzoin.jpg?v=1762156754\"\u003e\u003cspan\u003eBenzoin\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"note-item\"\u003e\n\u003cimg alt=\"Cardamom\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0672\/1647\/4186\/files\/Cardamom.jpg?v=1762166172\"\u003e\u003cspan\u003eCardamom\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"note-item\"\u003e\n\u003cimg alt=\"Cypriol\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0672\/1647\/4186\/files\/Cypriol.jpg?v=1762175912\"\u003e\u003cspan\u003eCypriol\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"note-item\"\u003e\n\u003cimg alt=\"Gurjum Balsam\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0672\/1647\/4186\/files\/Gurjum_Balsam.jpg?v=1762175980\"\u003e\u003cspan\u003eGurjum Balsam\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"note-item\"\u003e\n\u003cimg alt=\"Juniper\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0672\/1647\/4186\/files\/Juniper_Berry.jpg?v=1762167546\"\u003e\u003cspan\u003eJuniper\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"note-item\"\u003e\n\u003cimg alt=\"Patchouli\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0672\/1647\/4186\/files\/Patchouli.jpg?v=1762157539\"\u003e\u003cspan\u003ePatchouli\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"note-item\"\u003e\n\u003cimg alt=\"Sandalwood\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0672\/1647\/4186\/files\/Sandalwood.jpg?v=1762166620\"\u003e\u003cspan\u003eSandalwood\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"note-item\"\u003e\n\u003cimg alt=\"Cedarwood\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0672\/1647\/4186\/files\/Cedarwood.jpg?v=1762157030\"\u003e\u003cspan\u003eCedarwood\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"classification section-block\"\u003e\n\u003ch3\u003eCLASSIFICATION\u003c\/h3\u003e\n\u003cdiv class=\"section-divider\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"tabs\"\u003e\n\u003cbutton data-tab=\"type\" class=\"tab active\"\u003eTYPE\u003c\/button\u003e \u003cbutton data-tab=\"occasion\" class=\"tab\"\u003eOCCASION\u003c\/button\u003e \u003cbutton data-tab=\"season\" class=\"tab\"\u003eSEASON\u003c\/button\u003e \u003cbutton data-tab=\"audience\" class=\"tab\"\u003eAUDIENCE\u003c\/button\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"chart\"\u003e\u003ccanvas height=\"260\" width=\"260\" id=\"chartCanvas\"\u003e\u003c\/canvas\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/section\u003e\n\u003cstyle\u003e        \n.perfume-profile {        \n  background-color:#0d0d0c;        \n  color:#e8e3d5;        \n  font-family:'Touvlo Regular',sans-serif;        \n  text-transform:uppercase;        \n  padding:2rem 1.5rem;        \n  border-radius:16px;        \n  max-width:600px;        \n  margin:auto;        \n  box-shadow:0 0 20px rgba(255,255,255,0.02);        \n}        \nh3{font-size:1.1rem;font-weight:700;letter-spacing:1px;margin-bottom:0.7rem;opacity:0.95;text-align:left;}        \n.section-block{margin-bottom:2rem;}        \n.section-divider{height:1px;background:linear-gradient(to right,rgba(255,255,255,0.05),rgba(255,255,255,0.2),rgba(255,255,255,0.05));margin-bottom:1.2rem;border-radius:1px;}        \n.accords-grid{display:flex;flex-wrap:wrap;gap:0.5rem;}        \n.accord{background:var(--clr);color:#0d0d0c;border-radius:50px;padding:0.4rem 0.9rem;font-size:0.8rem;font-weight:600;letter-spacing:0.5px;transition:transform 0.2s ease;box-shadow:0 0 6px rgba(255,255,255,0.15);}        \n.accord:hover{transform:scale(1.05);}        \n.pyramid-column{margin-bottom:1.5rem;}        \n.pyramid-column h4{font-size:0.9rem;color:#b7b1a6;margin-bottom:0.5rem;font-weight:600;}        \n.notes{display:flex;flex-wrap:wrap;gap:0.8rem;justify-content:flex-start;align-items:center;}  \n.note-item{display:flex;flex-direction:column;align-items:center;text-align:center;gap:4px;}  \n.note-item img{width:48px;height:48px;border-radius:50%;object-fit:cover;border:1px solid #2a2a28;box-shadow:0 0 8px rgba(255,255,255,0.05);}  \n.note-item span{font-size:0.75rem;opacity:0.9;text-align:center;}  \n.classification{text-align:center;}\n.tabs{display:flex;justify-content:space-between;gap:0.4rem;margin-bottom:1rem;flex-wrap:nowrap;}\n.tab{flex:1;background:none;border:1px solid #3a3a3a;color:#e8e3d5;font-size:0.7rem;padding:0.5rem 0;border-radius:50px;cursor:pointer;transition:background 0.3s,color 0.3s;white-space:nowrap;}\n.tab.active{background:#e8e3d5;color:#0d0d0c;font-weight:600;}\n.chart{display:flex;justify-content:center;align-items:center;min-height:300px;position:relative;}\n.chart canvas{width:260px!important;height:260px!important;max-width:100%;display:block;}\n@media(max-width:480px){\n.perfume-profile{padding:1.5rem 1rem;}\nh3{font-size:1rem;}\n.tab{font-size:0.65rem;padding:0.45rem 0;}\n.chart{min-height:260px;}\n.chart canvas{width:220px!important;height:220px!important;}\n}\n\u003c\/style\u003e\n\u003cp\u003e\u003cscript src=\"https:\/\/cdn.jsdelivr.net\/npm\/chart.js\"\u003e\u003c\/script\u003e \u003cscript\u003e\nconst ctx=document.getElementById('chartCanvas');\nlet chart;\nconst chartData={\ntype:{\nlabels:['Woody','Oriental','Smoky','Spicy','Leathery'],\ndata:[10,6,4,2,2]\n},\noccasion:{\nlabels:['Evening','Leisure','Nightout','Daily','Business'],\ndata:[10,7,9,2,2]\n},\nseason:{\nlabels:['Winter','Fall','Spring','Summer','Rainy'],\ndata:[10,9,6,2,4]\n},\naudience:{\nlabels:['Masculine','Feminine','Classic','Modern','Bold'],\ndata:[10,7,7,3,6]\n}\n};\nfunction createChart(type){\nif(chart)chart.destroy();\nchart=new Chart(ctx,{\ntype:'radar',\ndata:{\nlabels:chartData[type].labels,\ndatasets:[{\ndata:chartData[type].data,\nborderColor:'#e8e3d5',\nbackgroundColor:'rgba(232,227,213,0.12)',\nborderWidth:1,\npointRadius:2\n}]\n},\noptions:{\nmaintainAspectRatio:false,\nscales:{r:{\nangleLines:{color:'#333'},\ngrid:{color:'#333'},\npointLabels:{color:'#e8e3d5',font:{size:10}},\nticks:{display:false},\nsuggestedMin:0,\nsuggestedMax:10\n}},\nplugins:{legend:{display:false}}\n}\n});\n}\ncreateChart('type');\ndocument.querySelectorAll('.tab').forEach(btn=\u003e{\nbtn.addEventListener('click',e=\u003e{\ndocument.querySelectorAll('.tab').forEach(b=\u003eb.classList.remove('active'));\ne.target.classList.add('active');\ncreateChart(e.target.dataset.tab);\nsetTimeout(()=\u003e{ Chart.helpers.each(Chart.instances, i =\u003e i.resize()); }, 200);\n});\n});\n\u003c\/script\u003e\u003c\/p\u003e","brand":"Verve \u0026 Vesper","offers":[{"title":"50 ML","offer_id":42685766729802,"sku":null,"price":2399.0,"currency_code":"INR","in_stock":true},{"title":"3 ML","offer_id":42685766697034,"sku":null,"price":299.0,"currency_code":"INR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0672\/1647\/4186\/files\/Minuit_Prive_S.png?v=1762967965"},{"product_id":"essence-discovery-collection","title":"Essence Discovery Collection","description":"\u003cdiv class=\"relative basis-auto flex-col -mb-(--composer-overlap-px) [--composer-overlap-px:28px] grow flex\"\u003e\n\u003cdiv class=\"flex flex-col text-sm pb-25\"\u003e\n\u003carticle data-turn=\"assistant\" data-scroll-anchor=\"true\" data-testid=\"conversation-turn-10\" data-turn-id=\"request-WEB:2292209e-0677-41d4-a5f0-571e0413ab66-4\" dir=\"auto\" class=\"text-token-text-primary w-full focus:outline-none [--shadow-height:45px] has-data-writing-block:pointer-events-none has-data-writing-block:-mt-(--shadow-height) has-data-writing-block:pt-(--shadow-height) [\u0026amp;:has([data-writing-block])\u0026gt;*]:pointer-events-auto scroll-mt-[calc(var(--header-height)+min(200px,max(70px,20svh)))]\" tabindex=\"-1\"\u003e\n\u003cdiv class=\"text-base my-auto mx-auto pb-10 [--thread-content-margin:--spacing(4)] @w-sm\/main:[--thread-content-margin:--spacing(6)] @w-lg\/main:[--thread-content-margin:--spacing(16)] px-(--thread-content-margin)\"\u003e\n\u003cdiv class=\"[--thread-content-max-width:40rem] @w-lg\/main:[--thread-content-max-width:48rem] mx-auto max-w-(--thread-content-max-width) flex-1 group\/turn-messages focus-visible:outline-hidden relative flex w-full min-w-0 flex-col agent-turn\" tabindex=\"-1\"\u003e\n\u003cdiv class=\"flex max-w-full flex-col grow\"\u003e\n\u003cdiv data-message-model-slug=\"gpt-5-2\" class=\"min-h-8 text-message relative flex w-full flex-col items-end gap-2 text-start break-words whitespace-normal [.text-message+\u0026amp;]:mt-1\" dir=\"auto\" data-message-id=\"823de774-e91b-42d4-919d-5d0c9dcbee16\" data-message-author-role=\"assistant\"\u003e\n\u003cdiv class=\"flex w-full flex-col gap-1 empty:hidden first:pt-[1px]\"\u003e\n\u003cdiv class=\"markdown prose dark:prose-invert w-full break-words light markdown-new-styling\"\u003e\n\u003cp data-end=\"304\" data-start=\"258\"\u003eAn invitation into the quieter side of luxury.\u003c\/p\u003e\n\u003cp data-end=\"537\" data-start=\"306\"\u003eThe Essence Discovery Collection by Verve \u0026amp; Vesper is a curated selection of our creations, designed for those who prefer discovery to declarations. Each essence unfolds gradually—revealing character, depth, and mood rather than demanding attention.\u003c\/p\u003e\n\u003cp data-end=\"748\" data-start=\"539\"\u003eEncased in our \u003cstrong data-end=\"578\" data-start=\"554\"\u003esignature wooden box\u003c\/strong\u003e, the collection feels intentional from the first touch. It’s made to be opened slowly, revisited often, and kept close—whether as a personal ritual or a considered gift.\u003c\/p\u003e\n\u003cp data-end=\"869\" data-start=\"750\"\u003eChoose between two formats:\u003cbr\u003e• \u003cstrong data-end=\"797\" data-start=\"780\"\u003e7 × 3ml Sample vials\u003c\/strong\u003e for a deeper journey\u003cbr data-end=\"821\" data-start=\"818\"\u003e• \u003cstrong data-end=\"840\" data-start=\"823\"\u003e4 × 3ml Sample vials\u003c\/strong\u003e for a refined introduction\u003c\/p\u003e\n\u003cp data-end=\"957\" data-start=\"871\"\u003eThis is not about choosing quickly.\u003cbr data-end=\"909\" data-start=\"906\"\u003eIt’s about letting the right fragrance find you\u003c\/p\u003e\n\u003chr data-end=\"962\" data-start=\"959\"\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"mt-3 w-full empty:hidden\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/article\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e","brand":"Verve \u0026 Vesper","offers":[{"title":"7 Vials (3 ML each) Summer Edition","offer_id":43182549499978,"sku":null,"price":1499.0,"currency_code":"INR","in_stock":true},{"title":"4 Vials (3 ML each) Summer Edition","offer_id":43182549532746,"sku":null,"price":999.0,"currency_code":"INR","in_stock":true},{"title":"7 Vials (3 ML each) Winter Edition","offer_id":43416541626442,"sku":null,"price":1499.0,"currency_code":"INR","in_stock":true},{"title":"4 Vials (3 ML each) Winter Edition","offer_id":43416541659210,"sku":null,"price":999.0,"currency_code":"INR","in_stock":true},{"title":"7 Vials (3 ML each) Summer\/Winter Mixed","offer_id":43416541691978,"sku":null,"price":1499.0,"currency_code":"INR","in_stock":true},{"title":"4 Vials (3 ML each) Summer\/Winter Mixed","offer_id":43416541724746,"sku":null,"price":999.0,"currency_code":"INR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0672\/1647\/4186\/files\/Untitled-design_20260320_191002_0000.png?v=1774014075"},{"product_id":"velvet-skyline-extrait-de-parfum-for-women-and-men","title":"Velvet Skyline Extrait De Parfum For Women And Men","description":"\u003cdiv id=\"pp-root\"\u003e\n\n\u003cstyle\u003e\n@import url('https:\/\/fonts.googleapis.com\/css2?family=Cormorant+Garamond:ital,wght@0,300;0,400;1,300;1,400\u0026family=Josefin+Sans:wght@200;300;400\u0026display=swap');\n*{box-sizing:border-box;margin:0;padding:0;}\n\n#pp-root{background:#F3EFE8;color:#2B2622;font-family:'Josefin Sans',sans-serif;box-sizing:border-box;}\n.pp-inner{padding:2rem 1.25rem;box-sizing:border-box;}\n.pp-label{font-size:11px;letter-spacing:4px;font-weight:400;color:#4B443D;text-transform:uppercase;margin-bottom:0.75rem;text-align:center;}\n.pp-rule{height:0.5px;background:#C8BAA8;margin-bottom:1.4rem;}\n.pp-section{margin-bottom:2.8rem;}\n\n.accord-row{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:0.5px solid #E8E0D4;}\n.accord-row:last-child{border-bottom:none;}\n.accord-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;}\n.accord-name{font-size:10px;letter-spacing:2px;font-weight:300;color:#2B2622;text-transform:uppercase;width:86px;flex-shrink:0;line-height:1.3;}\n.accord-track{flex:1;height:2px;border-radius:2px;overflow:hidden;}\n.accord-fill{height:100%;border-radius:2px;width:0%;transition:width 1.2s cubic-bezier(0.4,0,0.2,1);}\n\n.pyr-tier{margin-bottom:1.8rem;}\n.pyr-tier:last-child{margin-bottom:0;}\n.pyr-tier-label{font-size:10px;letter-spacing:4px;font-weight:300;color:#8A7458;text-transform:uppercase;margin-bottom:1rem;padding-bottom:0.5rem;border-bottom:0.5px solid #D8CEC2;text-align:center;}\n.pyr-notes{display:grid;gap:14px 0;}\n.note-chip{display:flex;flex-direction:column;align-items:center;gap:5px;}\n.note-icon{border-radius:50%;background:#EAE4DA;border:0.5px solid #D8CEC2;display:flex;align-items:center;justify-content:center;overflow:hidden;flex-shrink:0;}\n.note-icon img{width:100%;height:100%;object-fit:cover;border-radius:50%;}\n.note-name{font-weight:300;color:#4B443D;text-transform:uppercase;text-align:center;line-height:1.3;word-break:keep-all;overflow-wrap:normal;hyphens:none;}\n\n.class-tabs{display:flex;gap:4px;flex-wrap:nowrap;width:100%;margin-bottom:1.6rem;}\n.ctab{flex:1;min-width:0;font-weight:300;text-transform:uppercase;padding:9px 2px;border:0.5px solid #C8BAA8;border-radius:40px;color:#4B443D;background:none;cursor:pointer;transition:all 0.25s;font-family:'Josefin Sans',sans-serif;white-space:nowrap;-webkit-tap-highlight-color:transparent;text-align:center;overflow:hidden;letter-spacing:1px;}\n.ctab.active{background:#2B2622;color:#F3EFE8;border-color:#2B2622;}\n\n.descriptor-wrap{margin-bottom:1.2rem;min-height:68px;text-align:center;}\n.descriptor-compound{font-family:'Cormorant Garamond',serif;font-size:clamp(1.6rem,7vw,2.4rem);font-weight:300;font-style:italic;color:#2B2622;line-height:1.1;margin-bottom:0.35rem;transition:opacity 0.3s,transform 0.3s;}\n.descriptor-line{font-size:9px;letter-spacing:2px;font-weight:300;color:#8A7458;text-transform:uppercase;line-height:1.7;transition:opacity 0.3s;}\n.descriptor-compound.pp-fade{opacity:0;transform:translateY(4px);}\n.descriptor-line.pp-fade{opacity:0;}\n\n.spectrum-wrap{margin-bottom:1.2rem;min-height:68px;}\n.spectrum-label-row{display:flex;justify-content:space-between;margin-bottom:10px;}\n.spectrum-label-row span{font-size:9px;letter-spacing:2.5px;font-weight:300;color:#8A7458;text-transform:uppercase;}\n.spectrum-track-bar{position:relative;height:1.5px;background:#D8CEC2;border-radius:2px;margin-bottom:14px;}\n.spectrum-dot-marker{position:absolute;top:50%;width:10px;height:10px;background:#2B2622;border-radius:50%;transform:translate(-50%,-50%);}\n.spectrum-title{font-family:'Cormorant Garamond',serif;font-size:clamp(1.4rem,6vw,2rem);font-weight:300;font-style:italic;color:#2B2622;line-height:1.1;margin-bottom:0.3rem;text-align:center;}\n.spectrum-sub{font-size:9px;letter-spacing:2px;font-weight:300;color:#8A7458;text-transform:uppercase;line-height:1.7;text-align:center;}\n\n.radar-outer{display:flex;justify-content:center;width:100%;}\n.radar-outer canvas{display:block;margin:0 auto;touch-action:pan-y;}\n\n.pp-dots{display:flex;justify-content:center;align-items:center;gap:6px;padding-top:16px;}\n.pp-dot{width:5px;height:5px;border-radius:50%;background:#D8CEC2;transition:all 0.3s;flex-shrink:0;}\n.pp-dot.active{background:#2B2622;transform:scale(1.3);}\n\n.pp-swipe-hint{display:flex;align-items:center;justify-content:center;gap:8px;padding-top:12px;padding-bottom:4px;transition:opacity 0.6s;}\n.pp-swipe-hint.hidden{opacity:0;pointer-events:none;}\n.pp-swipe-arrow{font-size:12px;color:#B7A27A;display:inline-block;}\n.pp-swipe-arrow.left{animation:pp-arrow-left 1.6s ease-in-out infinite;}\n.pp-swipe-arrow.right{animation:pp-arrow-right 1.6s ease-in-out infinite;}\n.pp-swipe-text{font-size:9px;letter-spacing:3px;font-weight:300;color:#B7A27A;text-transform:uppercase;}\n@keyframes pp-arrow-left{0%,100%{transform:translateX(0);opacity:0.5;}50%{transform:translateX(-4px);opacity:1;}}\n@keyframes pp-arrow-right{0%,100%{transform:translateX(0);opacity:0.5;}50%{transform:translateX(4px);opacity:1;}}\n\n.pp-nav{display:none;align-items:center;justify-content:center;gap:16px;padding-top:14px;padding-bottom:4px;}\n.pp-nav-btn{width:32px;height:32px;border-radius:50%;border:0.5px solid #C8BAA8;background:none;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:16px;color:#4B443D;transition:all 0.2s;font-family:'Josefin Sans',sans-serif;-webkit-tap-highlight-color:transparent;}\n.pp-nav-btn:hover{background:#2B2622;color:#F3EFE8;border-color:#2B2622;}\n.pp-nav-btn:disabled{opacity:0.25;cursor:default;}\n.pp-nav-btn:disabled:hover{background:none;color:#4B443D;border-color:#C8BAA8;}\n.pp-nav-label{font-size:9px;letter-spacing:3px;font-weight:300;color:#B7A27A;text-transform:uppercase;}\n\n.si-ink-wrap{display:flex;justify-content:center;margin-bottom:1.4rem;}\n.si-char{text-align:center;margin-bottom:1.6rem;}\n.si-char-word{font-family:'Cormorant Garamond',serif;font-size:clamp(1.6rem,7vw,2.2rem);font-weight:300;font-style:italic;color:#2B2622;line-height:1.1;margin-bottom:0.4rem;}\n.si-char-sub{font-size:7px;letter-spacing:2px;font-weight:300;color:#9A845C;text-transform:uppercase;}\n.si-dims{display:flex;justify-content:center;gap:8px;margin-bottom:1.6rem;}\n.si-dim{display:flex;flex-direction:column;align-items:center;gap:8px;flex:1;min-width:0;max-width:100px;}\n.si-dim-name{font-size:8.5px;letter-spacing:2px;font-weight:300;color:#4B443D;text-transform:uppercase;text-align:center;}\n.si-dim-track{width:100%;height:2px;background:#EAE4DA;border-radius:2px;overflow:hidden;}\n.si-dim-fill{height:100%;border-radius:2px;width:0%;transition:width 1.4s cubic-bezier(0.4,0,0.2,1);}\n.si-dim-desc{font-size:7.5px;letter-spacing:1px;font-weight:300;color:#9A845C;text-transform:uppercase;text-align:center;line-height:1.5;}\n.si-overall-desc{text-align:center;font-family:'Cormorant Garamond',serif;font-size:1.05rem;font-style:italic;font-weight:300;color:#4B443D;line-height:1.6;}\n\n.ma-section{position:relative;overflow:hidden;background:#F8F3EB;padding:2.2rem 1.25rem 2.8rem;text-align:center;border-top:0.5px solid #E8E0D4;border-bottom:0.5px solid #E8E0D4;}\n.ma-canvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;}\n.ma-content{position:relative;z-index:2;}\n.ma-text{font-family:'Cormorant Garamond',serif;font-weight:300;font-style:italic;font-size:clamp(1.3rem,5vw,1.9rem);line-height:1.45;color:#2B2622;max-width:100%;padding:0 0.5rem;word-break:normal;overflow-wrap:break-word;}\n.ma-text span{opacity:0;transition:opacity 0.6s ease;}\n.ma-text span.show{opacity:1;}\n\n.mw-section{position:relative;overflow:hidden;}\n.mw-canvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;}\n.mw-inner{position:relative;z-index:2;padding:2.8rem 2rem 3.5rem;text-align:center;}\n.mw-label-el{font-family:'Josefin Sans',sans-serif;font-size:11px;letter-spacing:4px;font-weight:400;text-transform:uppercase;margin-bottom:0.75rem;}\n.mw-rule-el{height:0.5px;margin-bottom:2.2rem;}\n.mw-content{opacity:0;transition:opacity 1.2s;}\n.mw-content.visible{opacity:1;}\n.mw-season{font-family:'Josefin Sans',sans-serif;font-size:9px;letter-spacing:5px;font-weight:300;text-transform:uppercase;margin-bottom:1rem;}\n.mw-name{font-family:'Cormorant Garamond',serif;font-size:clamp(1.3rem,5vw,2rem);font-weight:300;font-style:italic;line-height:1.45;margin-bottom:0.9rem;}\n.mw-desc{font-family:'Josefin Sans',sans-serif;font-size:9px;letter-spacing:2.5px;font-weight:300;text-transform:uppercase;line-height:1.8;}\n\u003c\/style\u003e\n\n\u003cdiv class=\"ma-section\" id=\"pp-maSection\"\u003e\n  \u003ccanvas class=\"ma-canvas\" id=\"pp-maCanvas\"\u003e\u003c\/canvas\u003e\n  \u003cdiv class=\"ma-content\"\u003e\n    \u003cdiv class=\"pp-label\"\u003eMemory Anchor\u003c\/div\u003e\n    \u003cdiv class=\"pp-rule\"\u003e\u003c\/div\u003e\n    \u003cdiv class=\"ma-text\" id=\"pp-maText\"\u003e\u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003cdiv class=\"pp-inner\"\u003e\n  \u003cdiv class=\"pp-section\"\u003e\n    \u003cdiv class=\"pp-label\"\u003eMain Accords\u003c\/div\u003e\n    \u003cdiv class=\"pp-rule\"\u003e\u003c\/div\u003e\n    \u003cdiv id=\"pp-accordRows\"\u003e\u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"pp-section\"\u003e\n    \u003cdiv class=\"pp-label\"\u003eFragrance Pyramid\u003c\/div\u003e\n    \u003cdiv class=\"pp-rule\"\u003e\u003c\/div\u003e\n    \u003cdiv id=\"pp-pyramid\"\u003e\u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"pp-section\"\u003e\n    \u003cdiv class=\"pp-label\"\u003eClassification\u003c\/div\u003e\n    \u003cdiv class=\"pp-rule\"\u003e\u003c\/div\u003e\n    \u003cdiv class=\"class-tabs\" id=\"pp-classTabs\"\u003e\u003c\/div\u003e\n    \u003cdiv id=\"pp-descArea\"\u003e\u003c\/div\u003e\n    \u003cdiv class=\"radar-outer\"\u003e\u003ccanvas id=\"pp-rc\"\u003e\u003c\/canvas\u003e\u003c\/div\u003e\n    \u003cdiv class=\"pp-dots\" id=\"pp-dots\"\u003e\u003c\/div\u003e\n    \u003cdiv class=\"pp-swipe-hint\" id=\"pp-swipeHint\"\u003e\n      \u003cspan class=\"pp-swipe-arrow left\"\u003e‹\u003c\/span\u003e\n      \u003cspan class=\"pp-swipe-text\"\u003eswipe to explore\u003c\/span\u003e\n      \u003cspan class=\"pp-swipe-arrow right\"\u003e›\u003c\/span\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"pp-nav\" id=\"pp-nav\"\u003e\n      \u003cbutton class=\"pp-nav-btn\" id=\"pp-navPrev\"\u003e‹\u003c\/button\u003e\n      \u003cspan class=\"pp-nav-label\" id=\"pp-navLabel\"\u003eType\u003c\/span\u003e\n      \u003cbutton class=\"pp-nav-btn\" id=\"pp-navNext\"\u003e›\u003c\/button\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"pp-section\"\u003e\n    \u003cdiv class=\"pp-label\"\u003eScent Intensity\u003c\/div\u003e\n    \u003cdiv class=\"pp-rule\"\u003e\u003c\/div\u003e\n    \u003cdiv class=\"si-ink-wrap\"\u003e\u003ccanvas id=\"pp-siInk\"\u003e\u003c\/canvas\u003e\u003c\/div\u003e\n    \u003cdiv class=\"si-char\"\u003e\n      \u003cdiv class=\"si-char-word\" id=\"pp-siWord\"\u003e\u003c\/div\u003e\n      \u003cdiv class=\"si-char-sub\"\u003eIntensity Character\u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"si-dims\"\u003e\n      \u003cdiv class=\"si-dim\"\u003e\n        \u003ccanvas id=\"pp-siProj\"\u003e\u003c\/canvas\u003e\n        \u003cdiv class=\"si-dim-name\"\u003eProjection\u003c\/div\u003e\n        \u003cdiv class=\"si-dim-track\"\u003e\u003cdiv class=\"si-dim-fill\" id=\"pp-projBar\" style=\"background:#E85A20\"\u003e\u003c\/div\u003e\u003c\/div\u003e\n        \u003cdiv class=\"si-dim-desc\" id=\"pp-projDesc\"\u003e\u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"si-dim\"\u003e\n        \u003ccanvas id=\"pp-siRich\"\u003e\u003c\/canvas\u003e\n        \u003cdiv class=\"si-dim-name\"\u003eRichness\u003c\/div\u003e\n        \u003cdiv class=\"si-dim-track\"\u003e\u003cdiv class=\"si-dim-fill\" id=\"pp-richBar\" style=\"background:#A855F7\"\u003e\u003c\/div\u003e\u003c\/div\u003e\n        \u003cdiv class=\"si-dim-desc\" id=\"pp-richDesc\"\u003e\u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"si-dim\"\u003e\n        \u003ccanvas id=\"pp-siComp\"\u003e\u003c\/canvas\u003e\n        \u003cdiv class=\"si-dim-name\"\u003eComplexity\u003c\/div\u003e\n        \u003cdiv class=\"si-dim-track\"\u003e\u003cdiv class=\"si-dim-fill\" id=\"pp-compBar\" style=\"background:#FF6BC4\"\u003e\u003c\/div\u003e\u003c\/div\u003e\n        \u003cdiv class=\"si-dim-desc\" id=\"pp-compDesc\"\u003e\u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"si-overall-desc\" id=\"pp-siDesc\"\u003e\u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003cdiv class=\"mw-section\" id=\"pp-mwSection\"\u003e\n  \u003ccanvas class=\"mw-canvas\" id=\"pp-mwCanvas\"\u003e\u003c\/canvas\u003e\n  \u003cdiv class=\"mw-inner\"\u003e\n    \u003cdiv class=\"mw-label-el\" id=\"pp-mwLabel\"\u003eMood · Weather\u003c\/div\u003e\n    \u003cdiv class=\"mw-rule-el\" id=\"pp-mwRule\"\u003e\u003c\/div\u003e\n    \u003cdiv class=\"mw-content\" id=\"pp-mwContent\"\u003e\n      \u003cdiv class=\"mw-season\" id=\"pp-mwSeason\"\u003e\u003c\/div\u003e\n      \u003cdiv class=\"mw-name\" id=\"pp-mwName\"\u003e\u003c\/div\u003e\n      \u003cdiv class=\"mw-desc\" id=\"pp-mwDesc\"\u003e\u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c\/div\u003e\n\n\u003cscript\u003e\n(function(){\n\nvar MOBILE_BP=768;\nfunction isMobile(){return window.innerWidth\u003cMOBILE_BP;}\nvar DPR=window.devicePixelRatio||1;\n\nfunction applyFullBleed(){\n  var root=document.getElementById('pp-root');\n  if(!root)return;\n  if(!isMobile()){\n    root.style.marginLeft='';root.style.marginRight='';root.style.width='';root.style.maxWidth='';\n    var el=root.parentElement;var depth=0;\n    while(el\u0026\u0026el!==document.body\u0026\u0026depth\u003c15){\n      el.style.removeProperty('max-width');el.style.removeProperty('overflow-x');\n      el.style.removeProperty('padding-left');el.style.removeProperty('padding-right');\n      el=el.parentElement;depth++;\n    }\n    return;\n  }\n  root.style.marginLeft='';root.style.marginRight='';root.style.width='';root.style.maxWidth='none';\n  var el=root.parentElement;var depth=0;\n  while(el\u0026\u0026el!==document.body\u0026\u0026depth\u003c15){\n    el.style.setProperty('max-width','none','important');\n    el.style.setProperty('overflow-x','visible','important');\n    el.style.setProperty('padding-left','0','important');\n    el.style.setProperty('padding-right','0','important');\n    el=el.parentElement;depth++;\n  }\n  var rect=root.getBoundingClientRect();\n  var offsetLeft=rect.left+window.pageXOffset;\n  root.style.width=window.innerWidth+'px';\n  root.style.marginLeft=(-offsetLeft)+'px';\n}\napplyFullBleed();\nwindow.addEventListener('load',applyFullBleed);\nsetTimeout(applyFullBleed,100);setTimeout(applyFullBleed,500);setTimeout(applyFullBleed,1000);\n\nvar ACCORD_COLORS={\n  'sweet':        {dot:'#FF6B8A',track:'#FFCDD8',fill:'#FF6B8A'},\n  'floral':       {dot:'#FF6BC4',track:'#FFCCE9',fill:'#FF6BC4'},\n  'powdery':      {dot:'#A855F7',track:'#E2CCFF',fill:'#A855F7'},\n  'woody':        {dot:'#E8900A',track:'#FFE0B0',fill:'#E8900A'},\n  'warm spicy':   {dot:'#E85A20',track:'#FFCFB0',fill:'#E85A20'},\n  'citrus':       {dot:'#E8C000',track:'#FFF0A0',fill:'#E8C000'},\n  'oriental':     {dot:'#E8A000',track:'#FFE8B0',fill:'#E8A000'},\n  'smoky':        {dot:'#6868A8',track:'#D0D0E8',fill:'#6868A8'},\n  'musky':        {dot:'#C09060',track:'#F0E4D0',fill:'#C09060'},\n  'aquatic':      {dot:'#0090D8',track:'#B0E4FF',fill:'#0090D8'},\n  'gourmand':     {dot:'#E89040',track:'#FFE8C8',fill:'#E89040'},\n  'earthy':       {dot:'#70A830',track:'#D4E8B0',fill:'#70A830'},\n  'green':        {dot:'#40C040',track:'#C0F0C0',fill:'#40C040'},\n  'spicy':        {dot:'#E84020',track:'#FFCAB0',fill:'#E84020'},\n  'resinous':     {dot:'#A06800',track:'#E8CC99',fill:'#A06800'},\n  'fresh':        {dot:'#10C8A8',track:'#B0F4EC',fill:'#10C8A8'},\n  'amber':        {dot:'#E89000',track:'#FFE8B0',fill:'#E89000'},\n  'vanilla':      {dot:'#E8C040',track:'#FFF0B0',fill:'#E8C040'},\n  'leather':      {dot:'#906040',track:'#E0C8A8',fill:'#906040'},\n  'fruity':       {dot:'#E84060',track:'#FFBBC8',fill:'#E84060'},\n  'rose':         {dot:'#E85050',track:'#FFB8B8',fill:'#E85050'},\n  'oud':          {dot:'#906020',track:'#D8B888',fill:'#906020'},\n  'musk':         {dot:'#C08840',track:'#EED8A8',fill:'#C08840'},\n  'white floral': {dot:'#E8C860',track:'#FFF0C0',fill:'#E8C860'},\n  'animalic':     {dot:'#906040',track:'#D8C0A0',fill:'#906040'},\n};\nfunction getAccordColor(name){return ACCORD_COLORS[name.toLowerCase()]||{dot:'#9A845C',track:'#EAE4DA',fill:'#9A845C'};}\n\n\/* =====================================================\n   FRAGRANCE DATA — edit ONLY this block per product\n===================================================== *\/\nvar F={\n  accords:[\n    {name:'Fresh', strength:9},\n    {name:'Floral', strength:8},\n    {name:'Fruity', strength:8},\n    {name:'Musky', strength:7},\n    {name:'Sweet', strength:5}\n  ],\n  notes:{\n    top:[\n      {name:'Lychee', src:'https:\/\/cdn.shopify.com\/s\/files\/1\/0672\/1647\/4186\/files\/Lychee.jpg?v=1762177200'},\n      {name:'Cassis', src:'https:\/\/cdn.shopify.com\/s\/files\/1\/0672\/1647\/4186\/files\/Cassis.jpg?v=1773931895'},\n      {name:'Peach',src:'https:\/\/cdn.shopify.com\/s\/files\/1\/0672\/1647\/4186\/files\/Peach.jpg?v=1762173885'},\n      {name:'Tangerine',src:'https:\/\/cdn.shopify.com\/s\/files\/1\/0672\/1647\/4186\/files\/Orange.jpg?v=1762165932'}\n    ],\n    heart:[\n      {name:'Peony', src:'https:\/\/cdn.shopify.com\/s\/files\/1\/0672\/1647\/4186\/files\/Peony.jpg?v=1773932034'},\n      {name:'Water Lily',src:'https:\/\/cdn.shopify.com\/s\/files\/1\/0672\/1647\/4186\/files\/Water_Lily.jpg?v=1773932102'},\n      {name:'Jasmine', src:'https:\/\/cdn.shopify.com\/s\/files\/1\/0672\/1647\/4186\/files\/Jasmine.jpg?v=1762166951'}\n    ],\n    base:[\n      {name:'Ambroxan',src:'https:\/\/cdn.shopify.com\/s\/files\/1\/0672\/1647\/4186\/files\/Ambroxan.jpg?v=1767442320'},\n      {name:'Praline', src:'https:\/\/cdn.shopify.com\/s\/files\/1\/0672\/1647\/4186\/files\/Praline.jpg?v=1773932203'},\n      {name:'Vanilla', src:'https:\/\/cdn.shopify.com\/s\/files\/1\/0672\/1647\/4186\/files\/Vanilla.jpg?v=1762157792'},\n      {name:'Musk', src:'https:\/\/cdn.shopify.com\/s\/files\/1\/0672\/1647\/4186\/files\/Musk.png?v=1762157459'},\n      {name:'Oakmoss', src:'https:\/\/cdn.shopify.com\/s\/files\/1\/0672\/1647\/4186\/files\/Oakmoss.jpg?v=1762174144'}\n    ]\n  },\n  radar:{\n    type:{\n      labels:['Fruity','Sweet','Floral','Fresh','Gourmand'],\n      data:[8,6,6,5,4],\n      compound:'Fruity Sweet Floral',\n      line:'Lychee over jasmine over praline — the language of a city that never sleeps early'\n    },\n    occasion:{\n      labels:['Evening','Night Out','Leisure','Daily','Business'],\n      data:[8,8,6,5,3],\n      compound:'Evening · Night Out',\n      line:'Made for the kind of night you will still be describing years later'\n    },\n    season:{\n      labels:['Winter','Fall','Spring','Summer','Rainy'],\n      data:[2,3,7,9,5],\n      compound:'Summer · Spring',\n      line:'It belongs to warm nights and open rooftops — the city at its most electric and alive'\n    },\n    audience:{\n      labels:['Masculine','Feminine','Classic','Modern','Bold'],\n      data:[6,7,4,7,6],\n      position:65,\n      title:'Wears Like a New York Night',\n      line:'The Village never asked permission — and neither should the person wearing this'\n    },\n    character:{\n      labels:['Magnetic','Intimate','Grounded','Fluid','Commanding'],\n      data:[9,7,3,8,5],\n      compound:'Magnetic · Fluid',\n      line:'Draws people in without a word — then lingers like a conversation worth continuing'\n    }\n  },\n  intensity:{\n    character:'Luminous',\n    inkColors:['#C05080','#A03060','#D07090','#801840','#E090A8'],\n    projection:{pct:78,desc:'Glows without demanding attention'},\n    richness: {pct:82,desc:'Sweet and beautifully layered'},\n    complexity:{pct:76,desc:'Keeps revealing new facets'},\n    desc:'Like the skyline at dusk — lit from within, layered, impossible to look away from'\n  },\n  anchor:{\n    line1:'The rooftop after midnight. Your laugh in someone else\\'s memory.',\n    line2:'The city kept going. So did you.'\n  },\n  weather:{\n    season:'Summer Night in the City',\n    name:'Warm lights rising\\nthrough the dark above the rooftops',\n    desc:'Luminous · Alive · The city at its best',\n    bg:['#0C0810','#140C1A','#080610'],\n    labelColor:'rgba(220,160,200,0.65)',\n    nameColor:'#F5E0F0',\n    descColor:'rgba(200,140,180,0.6)',\n    ruleColor:'rgba(200,120,180,0.2)',\n    particles:{count:38,type:'fireflies',color:[220,160,210],speed:0.35,size:[1.5,3],drift:0.5},\n    glow:{color:'rgba(160,40,140,0.25)',x:0.5,y:0.3,r:0.75}\n  }\n};\n\/* ===================================================== *\/\n\nvar TABS=[\n  {key:'type',     label:'Type'},\n  {key:'occasion', label:'Occasion'},\n  {key:'season',   label:'Season'},\n  {key:'audience', label:'Audience'},\n  {key:'character',label:'Character'}\n];\nvar TAB_KEYS=TABS.map(function(t){return t.key;});\n\nvar accordRowsEl=document.getElementById('pp-accordRows');\nF.accords.forEach(function(a){\n  var c=getAccordColor(a.name);\n  accordRowsEl.innerHTML+='\u003cdiv class=\"accord-row\"\u003e\u003cdiv class=\"accord-dot\" style=\"background:'+c.dot+';\"\u003e\u003c\/div\u003e\u003cdiv class=\"accord-name\"\u003e'+a.name+'\u003c\/div\u003e\u003cdiv class=\"accord-track\" style=\"background:'+c.track+';\"\u003e\u003cdiv class=\"accord-fill\" data-pct=\"'+(a.strength*10)+'\" style=\"background:'+c.fill+';\"\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e';\n});\nsetTimeout(function(){document.querySelectorAll('.accord-fill').forEach(function(f){f.style.width=f.dataset.pct+'%';});},200);\n\nfunction buildPyramid(){\n  var inner=document.querySelector('.pp-inner');\n  var availW=inner?inner.offsetWidth-40:window.innerWidth-40;\n  var perRow=5;var gap=8;\n  var iconSize=Math.floor((availW-(gap*(perRow-1)))\/perRow);\n  iconSize=Math.min(iconSize,56);\n  var nameFontSize=Math.max(7,Math.min(8,Math.floor(iconSize*0.15)));\n  var nameMaxW=Math.round(iconSize*1.15);\n  var pyramidEl=document.getElementById('pp-pyramid');\n  pyramidEl.innerHTML='';\n  [{k:'top',l:'Top Notes'},{k:'heart',l:'Heart Notes'},{k:'base',l:'Base Notes'}].forEach(function(t){\n    var chips=F.notes[t.k].map(function(n){\n      return '\u003cdiv class=\"note-chip\" style=\"width:'+iconSize+'px;\"\u003e\u003cdiv class=\"note-icon\" style=\"width:'+iconSize+'px;height:'+iconSize+'px;\"\u003e\u003cimg src=\"'+n.src+'\" alt=\"\" onerror=\"this.style.display=\\'none\\'\"\u003e\u003c\/div\u003e\u003cdiv class=\"note-name\" style=\"font-size:'+nameFontSize+'px;max-width:'+nameMaxW+'px;letter-spacing:0.8px;\"\u003e'+n.name+'\u003c\/div\u003e\u003c\/div\u003e';\n    }).join('');\n    var tier=document.createElement('div');\n    tier.className='pyr-tier';\n    tier.innerHTML='\u003cdiv class=\"pyr-tier-label\"\u003e'+t.l+'\u003c\/div\u003e\u003cdiv class=\"pyr-notes\" style=\"grid-template-columns:repeat('+perRow+','+iconSize+'px);justify-content:center;gap:14px '+gap+'px;\"\u003e'+chips+'\u003c\/div\u003e';\n    pyramidEl.appendChild(tier);\n  });\n}\nbuildPyramid();\n\nfunction buildTabs(){\n  var inner=document.querySelector('.pp-inner');\n  var availW=inner?inner.offsetWidth-40:window.innerWidth-40;\n  var tabW=Math.floor((availW-(4*4))\/5);\n  var tc=document.createElement('canvas');var tcx=tc.getContext('2d');\n  var fontSize=11;\n  while(fontSize\u003e6){\n    tcx.font='300 '+fontSize+'px \"Josefin Sans\",sans-serif';\n    var maxW=0;\n    TABS.forEach(function(t){var w=tcx.measureText(t.label.toUpperCase()).width;if(w\u003emaxW)maxW=w;});\n    if(maxW\u003c=tabW-10)break;\n    fontSize-=0.5;\n  }\n  fontSize=Math.floor(fontSize);\n  var tabsEl=document.getElementById('pp-classTabs');\n  tabsEl.innerHTML='';\n  TABS.forEach(function(t,i){\n    var btn=document.createElement('button');\n    btn.className='ctab'+(i===0?' active':'');\n    btn.dataset.k=t.key;btn.textContent=t.label;\n    btn.style.fontSize=fontSize+'px';btn.style.letterSpacing='1px';\n    tabsEl.appendChild(btn);\n    btn.addEventListener('click',function(){switchTab(t.key);});\n  });\n}\nbuildTabs();\n\nfunction buildDots(){\n  var dotsEl=document.getElementById('pp-dots');dotsEl.innerHTML='';\n  TABS.forEach(function(t,i){\n    var d=document.createElement('div');\n    d.className='pp-dot'+(i===0?' active':'');\n    d.dataset.k=t.key;dotsEl.appendChild(d);\n  });\n}\nbuildDots();\nfunction updateDots(key){document.querySelectorAll('.pp-dot').forEach(function(d){d.classList.toggle('active',d.dataset.k===key);});}\n\nvar swipeHintEl=document.getElementById('pp-swipeHint');\nvar navEl=document.getElementById('pp-nav');\nvar navPrevBtn=document.getElementById('pp-navPrev');\nvar navNextBtn=document.getElementById('pp-navNext');\nvar navLabelEl=document.getElementById('pp-navLabel');\nvar swipeHintDismissed=false;\n\nfunction updateNavVisibility(){\n  if(isMobile()){if(swipeHintEl)swipeHintEl.style.display='flex';if(navEl)navEl.style.display='none';}\n  else{if(swipeHintEl)swipeHintEl.style.display='none';if(navEl)navEl.style.display='flex';}\n}\nupdateNavVisibility();\nfunction updateNavButtons(){\n  var idx=TAB_KEYS.indexOf(currentKey);\n  if(navPrevBtn)navPrevBtn.disabled=(idx===0);\n  if(navNextBtn)navNextBtn.disabled=(idx===TAB_KEYS.length-1);\n  if(navLabelEl)navLabelEl.textContent=TABS[idx].label;\n}\nif(navPrevBtn)navPrevBtn.addEventListener('click',function(){var idx=TAB_KEYS.indexOf(currentKey);if(idx\u003e0)switchTab(TAB_KEYS[idx-1]);});\nif(navNextBtn)navNextBtn.addEventListener('click',function(){var idx=TAB_KEYS.indexOf(currentKey);if(idx\u003cTAB_KEYS.length-1)switchTab(TAB_KEYS[idx+1]);});\nfunction dismissSwipeHint(){if(swipeHintDismissed)return;swipeHintDismissed=true;if(swipeHintEl)swipeHintEl.classList.add('hidden');}\n\nvar radarCanvas=document.getElementById('pp-rc');\nvar radarCtx=radarCanvas.getContext('2d');\nvar LABEL_FONT_SIZE,LABEL_GAP,RINGS=5,MAX=10;\nvar RADIUS,CSS_W,CSS_H,CX,CY;\n\nfunction initRadarCanvas(){\n  var inner=document.querySelector('.pp-inner');\n  var hpad=20;\n  var availW=(inner?inner.offsetWidth:window.innerWidth)-(hpad*2);\n  if(availW\u003c200)availW=window.innerWidth-(hpad*2);\n  LABEL_FONT_SIZE=Math.max(9,Math.min(11,Math.round(availW*0.028)));\n  LABEL_GAP=Math.max(10,Math.round(availW*0.032));\n  radarCtx.setTransform(1,0,0,1,0,0);\n  radarCtx.font='300 '+LABEL_FONT_SIZE+'px \"Josefin Sans\",sans-serif';\n  var padL=0,padR=0,padT=LABEL_FONT_SIZE+6,padB=LABEL_FONT_SIZE+6;\n  Object.values(F.radar).forEach(function(tab){\n    var n=tab.labels.length;\n    tab.labels.forEach(function(l,i){\n      var a=(Math.PI*2*(i\/n))-(Math.PI\/2);var cos=Math.cos(a);\n      var w=radarCtx.measureText(l.toUpperCase()).width;\n      if(cos\u003e0.15){if(w+LABEL_GAP+6\u003epadR)padR=w+LABEL_GAP+6;}\n      else if(cos\u003c-0.15){if(w+LABEL_GAP+6\u003epadL)padL=w+LABEL_GAP+6;}\n      else{if(w\/2+LABEL_GAP+6\u003epadT)padT=w\/2+LABEL_GAP+6;if(w\/2+LABEL_GAP+6\u003epadB)padB=w\/2+LABEL_GAP+6;}\n    });\n  });\n  var padSide=Math.max(padL,padR);\n  RADIUS=(availW-(padSide*2))\/2;\n  CSS_W=Math.ceil(padSide*2+RADIUS*2);CSS_H=Math.ceil(padT+RADIUS*2+padB);\n  CX=CSS_W\/2;CY=padT+RADIUS;\n  radarCanvas.style.width=CSS_W+'px';radarCanvas.style.height=CSS_H+'px';\n  radarCanvas.width=Math.ceil(CSS_W*DPR);radarCanvas.height=Math.ceil(CSS_H*DPR);\n  radarCtx.scale(DPR,DPR);\n}\n\nvar currentKey='type';\nvar currentData=F.radar.type.data.slice(),targetData=F.radar.type.data.slice();\nvar currentLabels=F.radar.type.labels.slice();\nvar animStart=null,rafId=null,ANIM_DUR=550;\nfunction easeInOut(t){return t\u003c0.5?2*t*t:1-Math.pow(-2*t+2,2)\/2;}\nfunction lerp(a,b,t){return a+(b-a)*t;}\n\nfunction drawRadarFrame(data,labels){\n  radarCtx.clearRect(0,0,CSS_W,CSS_H);\n  var n=labels.length;\n  function ang(i){return(Math.PI*2*(i\/n))-(Math.PI\/2);}\n  function pt(i,val){var a=ang(i),r=RADIUS*(val\/MAX);return{x:CX+r*Math.cos(a),y:CY+r*Math.sin(a)};}\n  for(var ring=1;ring\u003c=RINGS;ring++){\n    var r=RADIUS*(ring\/RINGS);radarCtx.beginPath();\n    for(var i=0;i\u003cn;i++){var a=ang(i);i===0?radarCtx.moveTo(CX+r*Math.cos(a),CY+r*Math.sin(a)):radarCtx.lineTo(CX+r*Math.cos(a),CY+r*Math.sin(a));}\n    radarCtx.closePath();radarCtx.strokeStyle='rgba(184,166,140,0.28)';radarCtx.lineWidth=0.5;radarCtx.stroke();\n  }\n  for(var i=0;i\u003cn;i++){\n    var a=ang(i);radarCtx.beginPath();radarCtx.moveTo(CX,CY);\n    radarCtx.lineTo(CX+RADIUS*Math.cos(a),CY+RADIUS*Math.sin(a));\n    radarCtx.strokeStyle='rgba(184,166,140,0.2)';radarCtx.lineWidth=0.5;radarCtx.stroke();\n  }\n  radarCtx.beginPath();\n  for(var i=0;i\u003cn;i++){var p=pt(i,data[i]);i===0?radarCtx.moveTo(p.x,p.y):radarCtx.lineTo(p.x,p.y);}\n  radarCtx.closePath();radarCtx.fillStyle='rgba(154,132,92,0.10)';radarCtx.fill();\n  radarCtx.strokeStyle='#9A845C';radarCtx.lineWidth=1.5;radarCtx.stroke();\n  for(var i=0;i\u003cn;i++){\n    var p=pt(i,data[i]);\n    radarCtx.beginPath();radarCtx.arc(p.x,p.y,3.5,0,Math.PI*2);\n    radarCtx.fillStyle='#9A845C';radarCtx.fill();radarCtx.strokeStyle='#F3EFE8';radarCtx.lineWidth=1.5;radarCtx.stroke();\n  }\n  radarCtx.font='300 '+LABEL_FONT_SIZE+'px \"Josefin Sans\",sans-serif';\n  radarCtx.fillStyle='#4B443D';radarCtx.textBaseline='middle';\n  for(var i=0;i\u003cn;i++){\n    var a=ang(i),cos=Math.cos(a);\n    var lx=CX+(RADIUS+LABEL_GAP)*Math.cos(a),ly=CY+(RADIUS+LABEL_GAP)*Math.sin(a);\n    if(cos\u003e0.15)radarCtx.textAlign='left';else if(cos\u003c-0.15)radarCtx.textAlign='right';else radarCtx.textAlign='center';\n    radarCtx.fillText(labels[i].toUpperCase(),lx,ly);\n  }\n}\n\nfunction radarAnimLoop(ts){\n  if(!animStart)animStart=ts;\n  var t=Math.min((ts-animStart)\/ANIM_DUR,1);\n  var ease=easeInOut(t);\n  drawRadarFrame(currentData.map(function(v,i){return lerp(v,targetData[i],ease);}),currentLabels);\n  if(t\u003c1){rafId=requestAnimationFrame(radarAnimLoop);}\n  else{currentData=targetData.slice();animStart=null;rafId=null;}\n}\n\nfunction setRadar(key,anim){\n  if(rafId){cancelAnimationFrame(rafId);rafId=null;animStart=null;}\n  currentKey=key;currentLabels=F.radar[key].labels.slice();\n  if(anim){targetData=F.radar[key].data.slice();rafId=requestAnimationFrame(radarAnimLoop);}\n  else{currentData=F.radar[key].data.slice();targetData=currentData.slice();drawRadarFrame(currentData,currentLabels);}\n}\n\nvar descArea=document.getElementById('pp-descArea');\nfunction setDescriptor(key,anim){\n  var d=F.radar[key];\n  if(key==='audience'){\n    var html='\u003cdiv class=\"spectrum-wrap\"\u003e\u003cdiv class=\"spectrum-label-row\"\u003e\u003cspan\u003eMasculine\u003c\/span\u003e\u003cspan\u003eUnisex\u003c\/span\u003e\u003cspan\u003eFeminine\u003c\/span\u003e\u003c\/div\u003e\u003cdiv class=\"spectrum-track-bar\"\u003e\u003cdiv class=\"spectrum-dot-marker\" style=\"left:'+d.position+'%\"\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"spectrum-title\"\u003e'+d.title+'\u003c\/div\u003e\u003cdiv class=\"spectrum-sub\"\u003e'+d.line+'\u003c\/div\u003e\u003c\/div\u003e';\n    descArea.style.transition='opacity 0.3s';descArea.style.opacity='0';\n    setTimeout(function(){descArea.innerHTML=html;descArea.style.opacity='1';},300);return;\n  }\n  var hasDesc=descArea.querySelector('.descriptor-wrap');\n  if(!hasDesc){\n    var html='\u003cdiv class=\"descriptor-wrap\"\u003e\u003cdiv class=\"descriptor-compound\" id=\"pp-dComp\"\u003e'+d.compound+'\u003c\/div\u003e\u003cdiv class=\"descriptor-line\" id=\"pp-dLine\"\u003e'+d.line+'\u003c\/div\u003e\u003c\/div\u003e';\n    descArea.style.transition='opacity 0.3s';descArea.style.opacity='0';\n    setTimeout(function(){descArea.innerHTML=html;descArea.style.opacity='1';},300);\n  } else {\n    var comp=document.getElementById('pp-dComp'),line=document.getElementById('pp-dLine');\n    if(comp\u0026\u0026line){\n      comp.classList.add('pp-fade');line.classList.add('pp-fade');\n      setTimeout(function(){comp.textContent=d.compound;line.textContent=d.line;comp.classList.remove('pp-fade');line.classList.remove('pp-fade');},320);\n    }\n  }\n}\n\nfunction switchTab(key){\n  if(key===currentKey)return;\n  currentKey=key;\n  document.querySelectorAll('.ctab').forEach(function(x){x.classList.toggle('active',x.dataset.k===key);});\n  updateDots(key);updateNavButtons();\n  setDescriptor(key,true);setRadar(key,true);\n}\n\nvar swipeStartX=0,swipeStartY=0;\nradarCanvas.addEventListener('touchstart',function(e){swipeStartX=e.touches[0].clientX;swipeStartY=e.touches[0].clientY;},{passive:true});\nradarCanvas.addEventListener('touchend',function(e){\n  var dx=e.changedTouches[0].clientX-swipeStartX;\n  var dy=e.changedTouches[0].clientY-swipeStartY;\n  if(Math.abs(dx)\u003e40\u0026\u0026Math.abs(dx)\u003eMath.abs(dy)*1.5){\n    var idx=TAB_KEYS.indexOf(currentKey);var switched=false;\n    if(dx\u003c0\u0026\u0026idx\u003cTAB_KEYS.length-1){switchTab(TAB_KEYS[idx+1]);switched=true;}\n    else if(dx\u003e0\u0026\u0026idx\u003e0){switchTab(TAB_KEYS[idx-1]);switched=true;}\n    if(switched)dismissSwipeHint();\n  }\n},{passive:true});\n\nvar siT=0;\nvar INK_SIZE=160;\nvar inkC=document.getElementById('pp-siInk');\nvar inkCtx=inkC.getContext('2d');\ninkC.width=INK_SIZE*DPR;inkC.height=INK_SIZE*DPR;\ninkC.style.width=INK_SIZE+'px';inkC.style.height=INK_SIZE+'px';\ninkCtx.scale(DPR,DPR);\n\ndocument.getElementById('pp-siWord').textContent=F.intensity.character;\ndocument.getElementById('pp-siDesc').textContent=F.intensity.desc;\ndocument.getElementById('pp-projDesc').textContent=F.intensity.projection.desc;\ndocument.getElementById('pp-richDesc').textContent=F.intensity.richness.desc;\ndocument.getElementById('pp-compDesc').textContent=F.intensity.complexity.desc;\nsetTimeout(function(){\n  document.getElementById('pp-projBar').style.width=F.intensity.projection.pct+'%';\n  document.getElementById('pp-richBar').style.width=F.intensity.richness.pct+'%';\n  document.getElementById('pp-compBar').style.width=F.intensity.complexity.pct+'%';\n},600);\n\nvar INTENSITY=(F.intensity.projection.pct+F.intensity.richness.pct+F.intensity.complexity.pct)\/(3*100);\nvar inkDrops=[];\n\nfunction spawnInkDrop(){\n  var angle=Math.random()*Math.PI*2;\n  var dist=Math.random()*8*INTENSITY;\n  var cx=INK_SIZE\/2;\n  inkDrops.push({\n    x:cx+Math.cos(angle)*dist,\n    y:cx+Math.sin(angle)*dist,\n    r:0,\n    maxR:8+Math.random()*62*INTENSITY,\n    speed:0.06+Math.random()*0.1*INTENSITY,\n    alpha:0.5+Math.random()*0.38,\n    color:F.intensity.inkColors[Math.floor(Math.random()*F.intensity.inkColors.length)],\n    age:0\n  });\n}\nfor(var ii=0;ii\u003c8;ii++){\n  spawnInkDrop();\n  inkDrops[ii].r=inkDrops[ii].maxR*(0.2+Math.random()*0.6);\n  inkDrops[ii].age=60+Math.random()*140;\n}\n\nfunction drawInkWater(){\n  var cx=INK_SIZE\/2,maxR=INK_SIZE\/2-6;\n  inkCtx.clearRect(0,0,INK_SIZE,INK_SIZE);\n  var pool=inkCtx.createRadialGradient(cx,cx,0,cx,cx,maxR);\n  pool.addColorStop(0,'rgba(225,208,168,0.28)');\n  pool.addColorStop(0.65,'rgba(215,195,150,0.1)');\n  pool.addColorStop(1,'rgba(243,239,232,0)');\n  inkCtx.fillStyle=pool;inkCtx.beginPath();inkCtx.arc(cx,cx,maxR,0,Math.PI*2);inkCtx.fill();\n  if(siT%160===0)spawnInkDrop();\n  if(inkDrops.length\u003e14)inkDrops.shift();\n  inkDrops.forEach(function(d){\n    d.age++;\n    if(d.r\u003cd.maxR)d.r+=d.speed;\n    var lifeAlpha=d.alpha*(1-Math.max(0,(d.age-200)\/130));\n    if(lifeAlpha\u003c=0)return;\n    var wobble=Math.sin(siT*0.006+d.age*0.018)*1.8;\n    var halo=inkCtx.createRadialGradient(d.x+wobble*0.2,d.y,0,d.x,d.y,d.r*1.6);\n    halo.addColorStop(0,d.color+'00');\n    halo.addColorStop(0.4,d.color+(Math.round(lifeAlpha*18)).toString(16).padStart(2,'0'));\n    halo.addColorStop(1,d.color+'00');\n    inkCtx.beginPath();inkCtx.arc(d.x+wobble*0.2,d.y,d.r*1.6,0,Math.PI*2);\n    inkCtx.fillStyle=halo;inkCtx.fill();\n    var rWobble=d.r*(0.94+Math.sin(siT*0.005+d.age*0.025)*0.06);\n    var grad=inkCtx.createRadialGradient(d.x+wobble*0.15,d.y+wobble*0.1,0,d.x,d.y,rWobble);\n    grad.addColorStop(0,d.color+(Math.round(lifeAlpha*220)).toString(16).padStart(2,'0'));\n    grad.addColorStop(0.35,d.color+(Math.round(lifeAlpha*160)).toString(16).padStart(2,'0'));\n    grad.addColorStop(0.7,d.color+(Math.round(lifeAlpha*60)).toString(16).padStart(2,'0'));\n    grad.addColorStop(1,d.color+'00');\n    inkCtx.beginPath();inkCtx.arc(d.x+wobble*0.15,d.y+wobble*0.1,rWobble,0,Math.PI*2);\n    inkCtx.fillStyle=grad;inkCtx.fill();\n  });\n  var core=inkCtx.createRadialGradient(cx,cx,0,cx,cx,14);\n  core.addColorStop(0,'rgba(160,100,30,'+(0.45+0.12*Math.sin(siT*0.012))+')');\n  core.addColorStop(0.5,'rgba(140,80,20,0.2)');core.addColorStop(1,'rgba(120,60,10,0)');\n  inkCtx.fillStyle=core;inkCtx.beginPath();inkCtx.arc(cx,cx,14,0,Math.PI*2);inkCtx.fill();\n  inkCtx.beginPath();inkCtx.arc(cx,cx,maxR,0,Math.PI*2);\n  inkCtx.strokeStyle='rgba(154,132,92,0.1)';inkCtx.lineWidth=0.5;inkCtx.stroke();\n}\n\nvar DS=72;\nfunction setupDim(id){\n  var c=document.getElementById(id);var ctx=c.getContext('2d');\n  c.width=DS*DPR;c.height=DS*DPR;c.style.width=DS+'px';c.style.height=DS+'px';\n  ctx.scale(DPR,DPR);return{ctx:ctx,cx:DS\/2,cy:DS\/2,r:DS\/2-4};\n}\nvar proj=setupDim('pp-siProj');\nvar rich=setupDim('pp-siRich');\nvar comp=setupDim('pp-siComp');\n\nvar sonarRings=[];\nfunction spawnSonarRing(){sonarRings.push({r:3,alpha:0.6,speed:0.12+INTENSITY*0.08});}\nspawnSonarRing();\nvar sonarInterval=Math.round(210-INTENSITY*50);\n\nfunction drawProjection(){\n  var ctx=proj.ctx,cx=proj.cx,cy=proj.cy,maxR=proj.r;\n  ctx.clearRect(0,0,DS,DS);\n  if(siT%sonarInterval===0)spawnSonarRing();\n  if(sonarRings.length\u003e5)sonarRings.shift();\n  ctx.beginPath();ctx.arc(cx,cy,maxR,0,Math.PI*2);\n  ctx.strokeStyle='rgba(232,90,32,0.07)';ctx.lineWidth=0.5;ctx.stroke();\n  sonarRings=sonarRings.filter(function(ring){\n    ring.r+=ring.speed;ring.alpha*=0.988;\n    if(ring.r\u003e=maxR||ring.alpha\u003c0.015)return false;\n    var progress=ring.r\/maxR;\n    ctx.beginPath();ctx.arc(cx,cy,ring.r,0,Math.PI*2);\n    ctx.strokeStyle='rgba(232,90,32,'+(ring.alpha*(1-progress*0.35))+')';\n    ctx.lineWidth=1-progress*0.4;ctx.stroke();\n    return true;\n  });\n  var src=ctx.createRadialGradient(cx,cy,0,cx,cy,6);\n  src.addColorStop(0,'rgba(232,90,32,0.85)');src.addColorStop(1,'rgba(232,90,32,0)');\n  ctx.fillStyle=src;ctx.beginPath();ctx.arc(cx,cy,6,0,Math.PI*2);ctx.fill();\n}\n\nfunction drawRichness(){\n  var ctx=rich.ctx,cx=rich.cx,cy=rich.cy,maxR=rich.r;\n  ctx.clearRect(0,0,DS,DS);\n  var val=F.intensity.richness.pct\/100;\n  var layerCount=Math.round(4+val*6);\n  for(var i=layerCount;i\u003e=1;i--){\n    var frac=i\/layerCount;var layerR=maxR*frac;\n    var wobX=Math.sin(siT*0.005+i*0.9)*1.0;\n    var wobY=Math.cos(siT*0.004+i*1.1)*0.8;\n    var alpha=(0.1+val*0.13*(1-frac*0.4))*(0.85+0.15*Math.sin(siT*0.008+i*0.7));\n    var r2=Math.round(120+frac*80),g2=Math.round(50+frac*30),b2=Math.round(80+frac*40);\n    var g=ctx.createRadialGradient(cx+wobX,cy+wobY,0,cx,cy,layerR);\n    g.addColorStop(0,'rgba('+r2+','+g2+','+b2+','+(alpha*2)+')');\n    g.addColorStop(0.5,'rgba('+r2+','+g2+','+b2+','+alpha+')');\n    g.addColorStop(1,'rgba('+r2+','+g2+','+b2+',0)');\n    ctx.beginPath();ctx.arc(cx+wobX*0.4,cy+wobY*0.4,layerR,0,Math.PI*2);ctx.fillStyle=g;ctx.fill();\n  }\n  var core=ctx.createRadialGradient(cx,cy,0,cx,cy,maxR*0.3);\n  core.addColorStop(0,'rgba(168,85,247,'+(0.75+0.15*Math.sin(siT*0.012))+')');\n  core.addColorStop(0.5,'rgba(140,60,200,0.35)');core.addColorStop(1,'rgba(100,30,160,0)');\n  ctx.fillStyle=core;ctx.beginPath();ctx.arc(cx,cy,maxR*0.3,0,Math.PI*2);ctx.fill();\n}\n\nfunction drawComplexity(){\n  var ctx=comp.ctx,cx=comp.cx,cy=comp.cy,maxR=comp.r;\n  ctx.clearRect(0,0,DS,DS);\n  var val=F.intensity.complexity.pct\/100;\n  var blobCount=Math.round(2+val*4);\n  for(var b=0;b\u003cblobCount;b++){\n    var bPhase=siT*0.008+b*1.3;\n    var bR=maxR*(0.3+val*0.25+0.08*Math.sin(bPhase));\n    var bX=cx+Math.sin(bPhase*0.7+b)*maxR*(0.14+val*0.14);\n    var bY=cy+Math.cos(bPhase*0.5+b*1.2)*maxR*(0.11+val*0.11);\n    var alpha=(0.07+val*0.09)*(0.7+0.3*Math.sin(bPhase));\n    ctx.save();ctx.translate(bX,bY);ctx.beginPath();\n    for(var i=0;i\u003c=6;i++){\n      var angle=(Math.PI*2*i\/6)-Math.PI\/2;\n      var rVar=bR*(0.86+0.14*Math.sin(siT*0.012*val*2+i*1.3+b));\n      var px=Math.cos(angle)*rVar,py=Math.sin(angle)*rVar;\n      i===0?ctx.moveTo(px,py):ctx.lineTo(px,py);\n    }\n    ctx.closePath();ctx.fillStyle='rgba(255,107,196,'+alpha+')';ctx.fill();ctx.restore();\n  }\n  ctx.beginPath();ctx.arc(cx,cy,maxR,0,Math.PI*2);\n  ctx.strokeStyle='rgba(255,107,196,0.07)';ctx.lineWidth=0.5;ctx.stroke();\n}\n\nfunction siLoop(){\n  drawInkWater();drawProjection();drawRichness();drawComplexity();\n  siT++;requestAnimationFrame(siLoop);\n}\n\nvar maCanvas=document.getElementById('pp-maCanvas');\nvar maCtx=maCanvas.getContext('2d');\nvar maW=0,maH=0,maParticles=[],maRaf=null;\n\nfunction maResize(){\n  var section=document.getElementById('pp-maSection');\n  maW=section.offsetWidth||window.innerWidth;\n  maH=section.scrollHeight||200;\n  maCanvas.width=Math.ceil(maW*DPR);maCanvas.height=Math.ceil(maH*DPR);\n  maCanvas.style.width=maW+'px';maCanvas.style.height=maH+'px';\n  maCtx.setTransform(1,0,0,1,0,0);maCtx.scale(DPR,DPR);\n  maParticles=[];\n  for(var i=0;i\u003c20;i++){\n    maParticles.push({\n      x:Math.random()*maW,y:maH*0.4+Math.random()*maH*0.6,\n      vy:-(0.08+Math.random()*0.18),vx:(Math.random()-0.5)*0.12,\n      size:Math.random()*32+10,alpha:Math.random()*0.07+0.02,\n      phase:Math.random()*Math.PI*2\n    });\n  }\n}\n\nfunction maDraw(){\n  if(!maW||!maH){maRaf=requestAnimationFrame(maDraw);return;}\n  maCtx.clearRect(0,0,maW,maH);\n  maParticles.forEach(function(p){\n    p.phase+=0.007;\n    p.x+=p.vx+Math.sin(p.phase)*0.12;p.y+=p.vy;\n    if(p.y\u003c-70){p.y=maH+10;p.x=Math.random()*maW;}\n    var a=p.alpha*(0.55+0.45*Math.sin(p.phase));\n    maCtx.beginPath();maCtx.arc(p.x,p.y,p.size,0,Math.PI*2);\n    maCtx.fillStyle='rgba(154,132,92,'+a+')';maCtx.fill();\n  });\n  maRaf=requestAnimationFrame(maDraw);\n}\n\nfunction initAnchor(){\n  var textEl=document.getElementById('pp-maText');\n  var words1=F.anchor.line1.split(' ');\n  var words2=F.anchor.line2.split(' ');\n  var html='';\n  words1.forEach(function(w){html+='\u003cspan\u003e'+w+'\u0026nbsp;\u003c\/span\u003e';});\n  html+='\u003cbr\u003e';\n  words2.forEach(function(w){html+='\u003cspan\u003e'+w+'\u0026nbsp;\u003c\/span\u003e';});\n  textEl.innerHTML=html;\n  var spans=textEl.querySelectorAll('span');\n  spans.forEach(function(s,i){setTimeout(function(){s.classList.add('show');},400+i*230);});\n  requestAnimationFrame(function(){requestAnimationFrame(function(){maResize();maDraw();});});\n}\n\nvar mwCanvas=document.getElementById('pp-mwCanvas');\nvar mwCtx=mwCanvas.getContext('2d');\nvar mwW=0,mwH=0,mwParticles=[],mwRaf=null;\n\nfunction mwResize(){\n  var section=document.getElementById('pp-mwSection');\n  mwW=section.offsetWidth||window.innerWidth;\n  mwH=section.scrollHeight||300;\n  mwCanvas.width=Math.ceil(mwW*DPR);mwCanvas.height=Math.ceil(mwH*DPR);\n  mwCanvas.style.width=mwW+'px';mwCanvas.style.height=mwH+'px';\n  mwCtx.setTransform(1,0,0,1,0,0);mwCtx.scale(DPR,DPR);\n  mwSpawnParticles();\n}\n\nfunction mwSpawnParticles(){\n  if(!mwW||!mwH)return;\n  var p=F.weather.particles;mwParticles=[];\n  for(var i=0;i\u003cp.count;i++){\n    var s=p.size[0]+Math.random()*(p.size[1]-p.size[0]);\n    mwParticles.push({\n      x:Math.random()*mwW,y:Math.random()*mwH,\n      vx:(Math.random()-0.5)*p.drift,\n      vy:p.type==='rain'?p.speed*(0.6+Math.random()*0.4):-(p.speed*(0.4+Math.random()*0.6)),\n      size:s,alpha:0.08+Math.random()*0.55,phase:Math.random()*Math.PI*2\n    });\n  }\n}\n\nfunction mwDraw(){\n  if(!mwW||!mwH){mwRaf=requestAnimationFrame(mwDraw);return;}\n  mwCtx.clearRect(0,0,mwW,mwH);\n  var w=F.weather;var p=w.particles;var c=p.color;\n  var bg=mwCtx.createLinearGradient(0,0,0,mwH);\n  bg.addColorStop(0,w.bg[0]);bg.addColorStop(0.5,w.bg[1]);bg.addColorStop(1,w.bg[2]);\n  mwCtx.fillStyle=bg;mwCtx.fillRect(0,0,mwW,mwH);\n  var g=w.glow;\n  var glow=mwCtx.createRadialGradient(mwW*g.x,mwH*g.y,0,mwW*g.x,mwH*g.y,mwW*g.r);\n  glow.addColorStop(0,g.color);glow.addColorStop(1,'rgba(0,0,0,0)');\n  mwCtx.fillStyle=glow;mwCtx.fillRect(0,0,mwW,mwH);\n  mwParticles.forEach(function(pt){\n    pt.phase+=0.012;\n    if(p.type==='snow'||p.type==='shimmer'||p.type==='dust'){\n      pt.x+=Math.sin(pt.phase)*0.4+pt.vx;pt.y+=pt.vy;\n      if(pt.y\u003c-10){pt.y=mwH+10;pt.x=Math.random()*mwW;}\n    } else if(p.type==='rain'){\n      pt.x+=pt.vx*0.4;pt.y+=p.speed*0.5;\n      if(pt.y\u003emwH+10){pt.y=-10;pt.x=Math.random()*mwW;}\n    } else if(p.type==='petals'){\n      pt.x+=Math.sin(pt.phase)*pt.vx*0.6+0.25;pt.y+=p.speed*0.5*(0.5+Math.sin(pt.phase*0.5)*0.3);\n      if(pt.y\u003emwH+20){pt.y=-20;pt.x=Math.random()*mwW;}\n    } else if(p.type==='fireflies'){\n      pt.x+=Math.sin(pt.phase*0.5)*0.8+pt.vx*0.5;pt.y+=Math.cos(pt.phase*0.4)*0.5;\n      if(pt.x\u003c0)pt.x=mwW;if(pt.x\u003emwW)pt.x=0;\n      if(pt.y\u003c0)pt.y=mwH;if(pt.y\u003emwH)pt.y=0;\n    } else if(p.type==='spray'){\n      pt.x+=Math.sin(pt.phase*1.2)*pt.vx*1.2;pt.y+=pt.vy*0.7;\n      if(pt.y\u003c-10){pt.y=mwH*0.5+Math.random()*mwH*0.5;pt.x=Math.random()*mwW;}\n    }\n    var a=pt.alpha*(0.5+0.5*Math.sin(pt.phase));\n    mwCtx.beginPath();\n    if(p.type==='rain'){\n      mwCtx.strokeStyle='rgba('+c[0]+','+c[1]+','+c[2]+','+a+')';\n      mwCtx.lineWidth=pt.size*0.4;\n      mwCtx.moveTo(pt.x,pt.y);mwCtx.lineTo(pt.x+pt.vx*1.2,pt.y+5);mwCtx.stroke();\n    } else if(p.type==='fireflies'){\n      var gf=mwCtx.createRadialGradient(pt.x,pt.y,0,pt.x,pt.y,pt.size*3);\n      gf.addColorStop(0,'rgba('+c[0]+','+c[1]+','+c[2]+','+a+')');\n      gf.addColorStop(1,'rgba('+c[0]+','+c[1]+','+c[2]+',0)');\n      mwCtx.fillStyle=gf;mwCtx.arc(pt.x,pt.y,pt.size*3,0,Math.PI*2);mwCtx.fill();\n    } else {\n      mwCtx.fillStyle='rgba('+c[0]+','+c[1]+','+c[2]+','+a+')';\n      mwCtx.arc(pt.x,pt.y,pt.size,0,Math.PI*2);mwCtx.fill();\n    }\n    mwCtx.beginPath();\n  });\n  mwRaf=requestAnimationFrame(mwDraw);\n}\n\nfunction initWeather(){\n  var w=F.weather;\n  var labelEl=document.getElementById('pp-mwLabel');\n  var ruleEl=document.getElementById('pp-mwRule');\n  if(labelEl)labelEl.style.color=w.labelColor;\n  if(ruleEl)ruleEl.style.background=w.ruleColor;\n  document.getElementById('pp-mwSeason').textContent=w.season;\n  document.getElementById('pp-mwSeason').style.color=w.labelColor;\n  var nameEl=document.getElementById('pp-mwName');\n  nameEl.innerHTML=w.name.replace('\\n','\u003cbr\u003e');nameEl.style.color=w.nameColor;\n  var descEl=document.getElementById('pp-mwDesc');\n  descEl.textContent=w.desc;descEl.style.color=w.descColor;\n  requestAnimationFrame(function(){requestAnimationFrame(function(){\n    mwResize();mwDraw();\n    setTimeout(function(){document.getElementById('pp-mwContent').classList.add('visible');},1000);\n  });});\n}\n\nfunction init(){\n  initRadarCanvas();\n  setDescriptor('type',false);setRadar('type',false);\n  updateNavButtons();\n  siLoop();\n  initAnchor();\n  initWeather();\n}\n\nvar lastW=window.innerWidth;\nwindow.addEventListener('resize',function(){\n  var newW=window.innerWidth;if(Math.abs(newW-lastW)\u003c10)return;lastW=newW;\n  applyFullBleed();buildPyramid();buildTabs();updateNavVisibility();\n  if(rafId){cancelAnimationFrame(rafId);rafId=null;}animStart=null;\n  initRadarCanvas();setDescriptor(currentKey,false);setRadar(currentKey,false);\n  if(maRaf){cancelAnimationFrame(maRaf);maRaf=null;}\n  if(mwRaf){cancelAnimationFrame(mwRaf);mwRaf=null;}\n  requestAnimationFrame(function(){requestAnimationFrame(function(){maResize();maDraw();mwResize();mwDraw();});});\n});\n\nif(document.fonts\u0026\u0026document.fonts.ready){document.fonts.ready.then(init);}\nelse{setTimeout(init,500);}\n\n})();\n\u003c\/script\u003e","brand":"Verve \u0026 Vesper","offers":[{"title":"50 ML","offer_id":43416504959050,"sku":null,"price":2299.0,"currency_code":"INR","in_stock":false},{"title":"3 ML","offer_id":43416504991818,"sku":null,"price":279.0,"currency_code":"INR","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0672\/1647\/4186\/files\/Untitled-design_20260320_180405_0000.png?v=1774010108"}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0672\/1647\/4186\/collections\/file_0000000095f871fa9430ca06f2bdc1fb.png?v=1772868614","url":"https:\/\/perfumalink.com\/collections\/summer-night.oembed","provider":"PerfumaLink","version":"1.0","type":"link"}